diff --git a/lms/nladmin-system/doc/wms.xls b/lms/nladmin-system/doc/wms.xls index dc41488..03b9b3c 100644 Binary files a/lms/nladmin-system/doc/wms.xls and b/lms/nladmin-system/doc/wms.xls differ diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/controller/MdBaseBrickInfoController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/controller/MdBaseBrickInfoController.java new file mode 100644 index 0000000..a4df162 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/controller/MdBaseBrickInfoController.java @@ -0,0 +1,66 @@ +package org.nl.wms.database.brick.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; +import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** +* @author lyd +* @date 2023-07-19 +**/ +@Slf4j +@RestController +@Api(tags = "每块砖的信息记录管理") +@RequestMapping("/api/mdBaseBrickInfo") +public class MdBaseBrickInfoController { + + @Autowired + private IMdBaseBrickInfoService mdBaseBrickInfoService; + + @GetMapping + @Log("查询每块砖的信息记录") + @ApiOperation("查询每块砖的信息记录") + //@SaCheckPermission("@el.check('mdBaseBrickInfo:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(mdBaseBrickInfoService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增每块砖的信息记录") + @ApiOperation("新增每块砖的信息记录") + //@SaCheckPermission("@el.check('mdBaseBrickInfo:add')") + public ResponseEntity create(@Validated @RequestBody MdBaseBrickInfo entity){ + mdBaseBrickInfoService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改每块砖的信息记录") + @ApiOperation("修改每块砖的信息记录") + //@SaCheckPermission("@el.check('mdBaseBrickInfo:edit')") + public ResponseEntity update(@Validated @RequestBody MdBaseBrickInfo entity){ + mdBaseBrickInfoService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除每块砖的信息记录") + @ApiOperation("删除每块砖的信息记录") + //@SaCheckPermission("@el.check('mdBaseBrickInfo:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + mdBaseBrickInfoService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/IMdBaseBrickInfoService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/IMdBaseBrickInfoService.java new file mode 100644 index 0000000..c2964c3 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/IMdBaseBrickInfoService.java @@ -0,0 +1,56 @@ +package org.nl.wms.database.brick.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; +import org.nl.wms.ext.acs.service.dto.BrickInfoDto; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-07-19 +**/ +public interface IMdBaseBrickInfoService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(MdBaseBrickInfo entity); + + /** + * 编辑 + * @param entity / + */ + void update(MdBaseBrickInfo entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 添加每块砖信息记录 + * @param dto + */ + void addBrickInfo(BrickInfoDto dto); + + /** + * 将所有当前位置的砖块设置组盘标识 + * @param deviceCode : 放砖位置-压制对接位 + */ + void setGroupByCurrentAllBrick(String deviceCode, String groupId); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java new file mode 100644 index 0000000..1cd2125 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java @@ -0,0 +1,79 @@ +package org.nl.wms.database.brick.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-19 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_base_brick_info") +public class MdBaseBrickInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "brick_id", type = IdType.NONE) + @ApiModelProperty(value = "砖块标识") + private String brick_id; + + @ApiModelProperty(value = "当前抓取工位") + private String get_station; + + @ApiModelProperty(value = "当前放置工位") + private String put_station; + + @ApiModelProperty(value = "是否合格") + private Boolean is_qualified; + + @ApiModelProperty(value = "激光标刻码") + private String laser_marking_code; + + @ApiModelProperty(value = "碾次") + private String grinding_number; + + @ApiModelProperty(value = "高度1") + private String height1; + + @ApiModelProperty(value = "高度2") + private String height2; + + @ApiModelProperty(value = "高度3") + private String height3; + + @ApiModelProperty(value = "高度4") + private String height4; + + @ApiModelProperty(value = "宽度1") + private String width1; + + @ApiModelProperty(value = "宽度2") + private String width2; + + @ApiModelProperty(value = "长度") + private String len; + + @ApiModelProperty(value = "体积") + private String volume; + + @ApiModelProperty(value = "平面度") + private String flatness; + + @ApiModelProperty(value = "缺陷个数") + private String unqualified_qty; + + @ApiModelProperty(value = "组盘标识") + private String group_id; + + @ApiModelProperty(value = "是否组盘") + private Boolean is_group; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java new file mode 100644 index 0000000..da08666 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.brick.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; + +/** +* @author lyd +* @date 2023-07-19 +**/ +public interface MdBaseBrickInfoMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.xml new file mode 100644 index 0000000..af568a1 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoDto.java new file mode 100644 index 0000000..e6cbe0c --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoDto.java @@ -0,0 +1,67 @@ +package org.nl.wms.database.brick.service.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-19 +**/ +@Data +public class MdBaseBrickInfoDto implements Serializable { + + /** 砖块标识 */ + private String brick_id; + + /** 当前抓取工位 */ + private String get_station; + + /** 当前放置工位 */ + private String put_station; + + /** 是否合格 */ + private Boolean is_qualified; + + /** 激光标刻码 */ + private String laser_marking_code; + + /** 碾次 */ + private String grinding_number; + + /** 高度1 */ + private String height1; + + /** 高度2 */ + private String height2; + + /** 高度3 */ + private String height3; + + /** 高度4 */ + private String height4; + + /** 宽度1 */ + private String width1; + + /** 宽度2 */ + private String width2; + + /** 长度 */ + private String len; + + /** 体积 */ + private String volume; + + /** 平面度 */ + private String flatness; + + /** 缺陷个数 */ + private String unqualified_qty; + + /** 组盘标识 */ + private String group_id; + + /** 是否组盘 */ + private Boolean is_group; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoQuery.java new file mode 100644 index 0000000..d56a61b --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dto/MdBaseBrickInfoQuery.java @@ -0,0 +1,12 @@ +package org.nl.wms.database.brick.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; + +/** +* @author lyd +* @date 2023-07-19 +**/ +public class MdBaseBrickInfoQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java new file mode 100644 index 0000000..36b3867 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/impl/MdBaseBrickInfoServiceImpl.java @@ -0,0 +1,101 @@ +package org.nl.wms.database.brick.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; +import org.nl.wms.database.brick.service.dao.mapper.MdBaseBrickInfoMapper; +import org.nl.wms.database.brick.service.dao.MdBaseBrickInfo; +import org.nl.wms.ext.acs.service.dto.BrickInfoDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author lyd +* @date 2023-07-19 +**/ +@Slf4j +@Service +public class MdBaseBrickInfoServiceImpl extends ServiceImpl implements IMdBaseBrickInfoService { + + @Autowired + private MdBaseBrickInfoMapper mdBaseBrickInfoMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + mdBaseBrickInfoMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(MdBaseBrickInfo entity) { + entity.setBrick_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + mdBaseBrickInfoMapper.insert(entity); + } + + @Override + public void update(MdBaseBrickInfo entity) { + MdBaseBrickInfo dto = mdBaseBrickInfoMapper.selectById(entity.getBrick_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + mdBaseBrickInfoMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + mdBaseBrickInfoMapper.deleteBatchIds(ids); + } + + @Override + public void addBrickInfo(BrickInfoDto dto) { + MdBaseBrickInfo brickInfo = toBrickInfoMapper(dto); + mdBaseBrickInfoMapper.insert(brickInfo); + } + + @Override + public void setGroupByCurrentAllBrick(String deviceCode, String groupId) { + MdBaseBrickInfo brickInfo = new MdBaseBrickInfo(); + brickInfo.setIs_group(true); + brickInfo.setGroup_id(groupId); + this.update(brickInfo, new LambdaQueryWrapper() + .eq(MdBaseBrickInfo::getPut_station, deviceCode) + .eq(MdBaseBrickInfo::getIs_group, false)); + } + + private MdBaseBrickInfo toBrickInfoMapper(BrickInfoDto dto) { + MdBaseBrickInfo brickInfo = new MdBaseBrickInfo(); + brickInfo.setBrick_id(IdUtil.getSnowflake(1,1).nextIdStr()); + brickInfo.setGet_station(dto.getGet_station()); + brickInfo.setPut_station(dto.getPut_station()); + brickInfo.setIs_qualified(dto.getIs_qualified().equals("1")); + brickInfo.setLaser_marking_code(dto.getLaser_marking_code()); + brickInfo.setGrinding_number(dto.getGrinding_number()); + brickInfo.setHeight1(dto.getHeight1()); + brickInfo.setHeight2(dto.getHeight2()); + brickInfo.setHeight3(dto.getHeight3()); + brickInfo.setHeight4(dto.getHeight4()); + brickInfo.setWidth1(dto.getWidth1()); + brickInfo.setWidth2(dto.getWidth2()); + brickInfo.setLen(dto.getLen()); + brickInfo.setVolume(dto.getVolume()); + brickInfo.setFlatness(dto.getFlatness()); + brickInfo.setUnqualified_qty(dto.getUnqualified_qty()); + brickInfo.setIs_group(false); + return brickInfo; + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java index 7ec52ab..31e53dc 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java @@ -39,7 +39,7 @@ public class MdBaseMaterial implements Serializable { private String class_id; @ApiModelProperty(value = "静置时间(分钟)") - private BigDecimal standing_time; + private Integer standing_time; @ApiModelProperty(value = "车间编码") private String workshop_code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index ed45257..6e047dd 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -7,7 +7,6 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; import org.nl.wms.ext.acs.service.AcsToWmsService; -import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -27,56 +26,15 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j @SaIgnore public class AcsToWmsController { - @Autowired - private ISchBaseTaskService schBaseTaskService; @Autowired private AcsToWmsService acsToWmsService; @PostMapping("/apply") @Log("新增任务管理") @ApiOperation("新增任务管理") - //@SaCheckPermission("@el.check('schBaseTask:add')") @SaIgnore public ResponseEntity apply(@RequestBody JSONObject param) { return new ResponseEntity<>(acsToWmsService.acsApply(param), HttpStatus.OK); } - -// @PostMapping("/apply2") -// @Log("新增任务管理") -// @ApiOperation("新增任务管理") -// //@SaCheckPermission("@el.check('schBaseTask:add')") -// @SaIgnore -// public ResponseEntity apply2(@RequestBody Map param) { -// schBaseTaskService.apply(JSONObject.parseObject(JSON.toJSONString(param))); -// return new ResponseEntity<>(HttpStatus.CREATED); -// } - - @PostMapping("/status") - @Log("ACS给WMS反馈任务状态") - @ApiOperation("ACS给WMS反馈任务状态") - @SaIgnore - public ResponseEntity receiveTaskStatusAcs(@RequestBody String string) { - return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK); - } - - @PostMapping("/pressRequestMaterial") - @Log("压机要料请求") - @ApiOperation("压机要料请求") - //@SaCheckPermission("@el.check('schBaseTask:add')") - @SaIgnore - public ResponseEntity pressRequestMaterial(@RequestBody JSONObject param) { - return new ResponseEntity<>(acsToWmsService.pressRequestMaterial(param), HttpStatus.CREATED); - } - - @PostMapping("/getGroupInfo") - @Log("获取组盘信息") - @ApiOperation("获取组盘信息") - //@SaCheckPermission("@el.check('schBaseTask:add')") - @SaIgnore - public ResponseEntity getGroupInfo(@RequestBody JSONObject param) { - return new ResponseEntity<>(acsToWmsService.getVehicleInfo(param), HttpStatus.CREATED); - } - - } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 5fa6edb..e6e7f0c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -2,6 +2,8 @@ package org.nl.wms.ext.acs.service; import com.alibaba.fastjson.JSONObject; import org.nl.wms.ext.acs.service.vo.BaseResponse; +import org.nl.wms.ext.acs.service.vo.FeedBackTaskStatusResponse; +import org.nl.wms.ext.acs.service.vo.GetPalletizeResponse; /** * @Author: lyd @@ -9,18 +11,6 @@ import org.nl.wms.ext.acs.service.vo.BaseResponse; * @Date: 2023/6/26 */ public interface AcsToWmsService { - /** - * ACS请求压机要料 - * @param param - * @return - */ - BaseResponse pressRequestMaterial(JSONObject param); - - /** ACS反馈 */ - JSONObject receiveTaskStatusAcs(String string); - - /** 获取组盘信息 */ - JSONObject getVehicleInfo(JSONObject param); BaseResponse acsApply(JSONObject param); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ApplyTaskRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ApplyTaskRequest.java index 32bd0d7..75155d7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ApplyTaskRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/ApplyTaskRequest.java @@ -1,7 +1,12 @@ package org.nl.wms.ext.acs.service.dto; import lombok.Data; +import org.nl.wms.ext.acs.service.dto.BaseRequest; +import org.nl.wms.ext.acs.service.dto.PalletizeDto; +/** + * ACS 任务申请请求实体 + */ @Data public class ApplyTaskRequest extends BaseRequest { @@ -11,7 +16,7 @@ public class ApplyTaskRequest extends BaseRequest { private String vehicle_code; /** - * 载具号 + * 载具类型 */ private String vehicle_type; @@ -35,4 +40,9 @@ public class ApplyTaskRequest extends BaseRequest { */ private String qty; + /** + * 砖型 + */ + private PalletizeDto palletizeDto; + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BaseRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BaseRequest.java index 4926be6..89828df 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BaseRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BaseRequest.java @@ -1,11 +1,13 @@ package org.nl.wms.ext.acs.service.dto; -import com.alibaba.fastjson.JSONObject; import lombok.Data; import java.util.HashMap; import java.util.Map; +/** + * ACS请求基础实体 + */ @Data public class BaseRequest { @@ -30,34 +32,10 @@ public class BaseRequest { private String request_medthod_name; /** - * 请求设备 + * 设备号 */ private String device_code; - /** - * 载具号 - */ - private String vehicle_code; - - /** - * 重量 - */ - private String weight; - - /** - * 工单号 - */ - private String order_code; - - /** - * 物料 - */ - private String material_code; - - /** - * 数量 - */ - private String qty; /** * 系统编号 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java index 0f53e78..5428505 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/BrickInfoDto.java @@ -4,7 +4,7 @@ import lombok.Data; /** * @Author: lyd - * @Description: 砖信息 + * @Description: 砖信息实体 * @Date: 2023/7/18 */ @Data diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CancelTaskRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CancelTaskRequest.java new file mode 100644 index 0000000..020d2b4 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CancelTaskRequest.java @@ -0,0 +1,36 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +import java.util.Map; + +/** + * @Author: lyd + * @Description: 取消任务请求 + * @Date: 2023/7/26 + */ +@Data +public class CancelTaskRequest extends BaseRequest { + + /** + * 任务标识 + */ + private String ext_task_id; + + /** + * 任务编号 + */ + private String task_code; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 扩展属性 + */ + Map params; + +} + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CreateTaskRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CreateTaskRequest.java new file mode 100644 index 0000000..2f51739 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/CreateTaskRequest.java @@ -0,0 +1,130 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +import java.util.Map; + +/** + * @Author: lyd + * @Description: 下发任务实体类 + * @Date: 2023/7/26 + */ +@Data +public class CreateTaskRequest extends BaseRequest { + + /** + * 任务标识 + */ + private String ext_task_id; + + /** + * 任务编号 + */ + private String task_code; + + + /** + * 取货点1 + */ + String start_device_code; + + /** + * 放货点1 + */ + String next_device_code; + + /** + * 取货点2 + */ + String start_device_code2; + + /** + * 放货点2 + */ + String next_device_code2; + + /** + * 对接位 + */ + String put_device_code; + + /** + * 优先级 + */ + String priority; + + /** + * 载具号 + */ + String vehicle_code; + + /** + * 载具号2 + */ + String vehicle_code2; + + /** + * 载具类型 + */ + String vehicle_type; + + /** + * 路由方案 + */ + String route_plan_code; + + /** + * 任务类型 + */ + String task_type; + + /** + * 立库任务类型 + * + */ + String dtl_type; + + /** + * Agv系统类型 + * 1:1楼叉车系统 + * 2:2楼1区域AGV系统 + * 3:2楼2区域AGV系统 + */ + String agv_system_type; + + /** + * 备注 + */ + String remark; + + /** + * 烘箱时间 + */ + String oven_time; + + /** + * 烘箱温度 + */ + String temperature; + + /** + * agv取货高度 + */ + private String start_height; + + /** + * agv放货高度 + */ + private String next_height; + + /** + * 方向 1往左 2往右 + */ + private String direction; + + /** + * 扩展属性 + */ + Map params; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/FeedBackTaskStatusRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/FeedBackTaskStatusRequest.java new file mode 100644 index 0000000..55cc824 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/FeedBackTaskStatusRequest.java @@ -0,0 +1,47 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +/** + * ACS任务反馈请求实体 + */ +@Data +public class FeedBackTaskStatusRequest extends BaseRequest { + + /** + * 任务id + */ + private String task_id; + + /** + * 任务code + */ + private String task_code; + + /** + * 任务状态 + */ + private String task_status; + + /** + * 任务类型 + */ + private String task_type; + + /** + * 车号 + */ + private String car_no; + + /** + * 载具号 + */ + private String vehicle_code; + + /** + * 动作 1请求取货 2取货完成 3请求放货 4放货完成 + */ + private String action; + + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GetPalletizeRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GetPalletizeRequest.java new file mode 100644 index 0000000..0f8f6e7 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GetPalletizeRequest.java @@ -0,0 +1,11 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +@Data +public class GetPalletizeRequest extends BaseRequest { + /** + * 载具号 + */ + private String vehicle_code; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GrabRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GrabRequest.java index b6d44f8..80ad737 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GrabRequest.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/GrabRequest.java @@ -1,8 +1,10 @@ package org.nl.wms.ext.acs.service.dto; - import lombok.Data; +/** + * ACS抓取砖块记录信息实体 + */ @Data public class GrabRequest extends BaseRequest { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/PutActionRequest.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/PutActionRequest.java new file mode 100644 index 0000000..f356f38 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/PutActionRequest.java @@ -0,0 +1,22 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 提供设备信号 + * @Date: 2023/7/26 + */ +@Data +public class PutActionRequest extends BaseRequest { + + /** + * 设备号 + */ + private String device_code; + + private List list ; + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java new file mode 100644 index 0000000..9148f27 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java @@ -0,0 +1,18 @@ +package org.nl.wms.ext.acs.service.dto; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 信号:mode:'1', move:'0'之类 + * @Date: 2023/7/26 + */ +@Data +public class SignalData { + + private String code; + + private String value; + +} + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 9da141b..73073cf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -5,21 +5,28 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; +import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; +import org.nl.wms.database.material.service.IMdBaseMaterialService; +import org.nl.wms.database.material.service.dao.MdBaseMaterial; +import org.nl.wms.ext.acs.service.dto.*; import org.nl.wms.ext.acs.service.dto.ApplyTaskRequest; import org.nl.wms.ext.acs.service.vo.BaseResponse; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.ext.acs.service.vo.ApplyTaskResponse; +import org.nl.wms.ext.acs.service.vo.GetPalletizeResponse; import org.nl.wms.ext.record.service.ISysInteractRecordService; import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -65,16 +72,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired private TaskFactory taskFactory; - @Autowired - private TaskUtils taskUtils; + @Autowired private ISysNoticeService noticeService; @Autowired private ISysInteractRecordService interactRecordService; + @Autowired + private IMdBaseBrickInfoService baseBrickInfoService; + @Autowired + private IMdBaseMaterialService materialService; + @Autowired + private IPdmBdProductionProcessTrackingService processTrackingService; @Override public BaseResponse acsApply(JSONObject param) { - BaseResponse result = new BaseResponse(); + String requestNo = param.getString("requestNo"); + BaseResponse result = BaseResponse.build(requestNo); try { String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名 if (ObjectUtil.isEmpty(requestMethodCode)) { @@ -89,9 +102,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { log.error("ACS请求LMS出现错误: {}", message); result.setCode(HttpStatus.HTTP_BAD_REQUEST); result.setMessage(message); - result.setRequestNo(param.getString("requestNo")); + result.setRequestNo(requestNo); // 消息通知 - noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("requestNo"), + noticeService.createNotice("异常信息:" + message, "acsApply: " + requestNo, NoticeTypeEnum.EXCEPTION.getCode()); } // acs对接记录 @@ -164,12 +177,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } /** 申请强制取走满料盅托盘(强制入库) */ - public String applyForceTakeFullVehicle(JSONObject param) { + public ApplyTaskResponse applyForceTakeFullVehicle(JSONObject param) { + String deviceCode = param.getString("device_code"); + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } String requestNo = param.getString("requestNo"); - return requestNo; + String configCode = basePoint.getRegion_code() + "QZRKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + return ApplyTaskResponse.responseOk(requestNo); } - /** 申请强制满托入缓存 */ + /** 申请强制满托入缓存 todo: 暂时 */ public ApplyTaskResponse applyForceTakeFullVehicleInStorage(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); @@ -178,29 +200,47 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { throw new BadRequestException("点位错误!"); } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "CZRKTask"; + String configCode = basePoint.getRegion_code() + "SLHSTask"; // 组织参数 param.put("config_code", configCode); taskService.apply(param); return ApplyTaskResponse.responseOk(requestNo); } - /** 强制去包装位(半托) 记录不包装 */ + /** 强制去包装位(半托) 记录不包装 --- 业务不需要*/ public String forceNoPackage(JSONObject param) { String requestNo = param.getString("requestNo"); return requestNo; } /** 申请贴标 */ - public String applyLabelling(JSONObject param) { + public BaseResponse applyLabelling(JSONObject param) { + // 木托盘号##物料编码##数量##吨量(单重X数量)##生产日期##成型工单号(mes提供压制工单) String requestNo = param.getString("requestNo"); - return requestNo; + ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class); + if (baseRequest.getVehicle_code() == null) { + return BaseResponse.responseError(requestNo, "载具编码不能为空!"); + } + StringBuilder sb = new StringBuilder(); + SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), + GroupBindMaterialStatusEnum.UNBOUND.getValue()); + String materialId = groupInfo.getMaterial_id(); + MdBaseMaterial baseMaterial = materialService.getById(materialId); + // 组合 + sb.append(baseRequest.getVehicle_code()).append("##") + .append(baseMaterial.getMaterial_code()).append("##") + .append("吨量").append("##") + .append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd")); + return BaseResponse.responseOk(requestNo, MapOf.of("labelling", sb.toString())); } /** 单次放置完成 - 每块砖的信息 */ - public String applyOneGrab(JSONObject param) { + public BaseResponse applyOneGrab(JSONObject param) { String requestNo = param.getString("requestNo"); - return requestNo; + JSONObject brickInfo = param.getJSONObject("brick_info"); + BrickInfoDto brickInfoDto = brickInfo.toJavaObject(BrickInfoDto.class); + baseBrickInfoService.addBrickInfo(brickInfoDto); // 添加数据 + return BaseResponse.responseOk(requestNo); } /** 人工排产确认 */ @@ -236,40 +276,103 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { } /** 扫码成功申请 - 判断是否静置完成 */ - public BaseResponse barcodeSuccessApply(JSONObject param) { - String requestNo = param.getString("requestNo"); - BaseResponse standResponse = BaseResponse.build(requestNo); + public ApplyTaskResponse barcodeSuccessApply(JSONObject param) { ApplyTaskRequest baseRequest = param.toJavaObject(ApplyTaskRequest.class); + String deviceCode = baseRequest.getDevice_code(); + SchBasePoint basePoint = pointService.getById(deviceCode); // 获取点位实体 + switch (basePoint.getRegion_code()) { + case GeneralDefinition.LZKLX: // 如果是困料线位置就是判断是否静置完成 + return this.isStandingFinish(baseRequest); // 直接返回 + case GeneralDefinition.GZY: // 如果是入窑口就是记录数据 + return this.recordKilnTime(baseRequest); // 直接返回 + default: + return (ApplyTaskResponse) ApplyTaskResponse.responseError(baseRequest.getRequestNo(), + "参数错误"); + } + + } + + /** 扫码成功申请 - 判断是否静置完成 */ + public ApplyTaskResponse isStandingFinish(ApplyTaskRequest baseRequest) { + String requestNo = baseRequest.getRequestNo(); + ApplyTaskResponse taskResponse = ApplyTaskResponse.responseOk(requestNo); + SchBasePoint basePoint = pointService.getById(baseRequest.getDevice_code()); + if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) { + return (ApplyTaskResponse) ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!"); + } + if (ObjectUtil.isEmpty(baseRequest.getVehicle_type())) { + baseRequest.setVehicle_type(GeneralDefinition.STEEL_TRAY); + } + // 静置完成要把组盘改成以解绑 + SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), + baseRequest.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue()); + if (ObjectUtil.isEmpty(one)) { + // 返回400,物料不存在 + return (ApplyTaskResponse) ApplyTaskResponse.responseError(requestNo, "物料不存在!"); + } + String yjDeviceCode = basePoint.getParent_point_code(); // 压机设备编码 + // 获取当前工单 + PdmBdWorkorder productionTask = workorderService.getDeviceProductionTask(yjDeviceCode); + // 校验物料是否正确 + if (ObjectUtil.isEmpty(productionTask)) { + return (ApplyTaskResponse) ApplyTaskResponse.responseError(requestNo, + "压机" + yjDeviceCode + "工单不存在!"); + } + String rawMaterialCode = productionTask.getRaw_material_code(); + if (!rawMaterialCode.equals(baseRequest.getMaterial_code())) { + return (ApplyTaskResponse) ApplyTaskResponse.responseError(requestNo, "物料不一样!"); + } + + // 判断是否静置完成 + if (CommonUtils.isStandingFinish(one.getInstorage_time(), one.getStanding_time())) { + if (ObjectUtil.isNotEmpty(basePoint)) { + // 记录当前位置 + one.setPoint_code(basePoint.getPoint_code()); // 当前位置 + one.setPoint_name(basePoint.getPoint_name()); + one.setMove_way(one.getMove_way() + " -> " + basePoint.getPoint_code()); + } + one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + TaskUtils.setGroupUpdateByAcs(one); + vehiclematerialgroupService.updateById(one); + taskResponse.setIs_standing_finish(GeneralDefinition.YES); + taskResponse.setMessage("静置完成"); + return taskResponse; + } else { + taskResponse.setIs_standing_finish(GeneralDefinition.NO); + taskResponse.setMessage("静置未完成"); + return taskResponse; + } + } + + /** 扫码成功申请 - 入窑记录时间 */ + public ApplyTaskResponse recordKilnTime(ApplyTaskRequest baseRequest) { if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) { throw new BadRequestException("载具编码不能为空"); } if (ObjectUtil.isEmpty(baseRequest.getVehicle_type())) { - throw new BadRequestException("载具类型不能为空"); + baseRequest.setVehicle_type(GeneralDefinition.STEEL_TRAY); } - // 入库完成要把组盘改成以解绑 - SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper() - .eq(SchBaseVehiclematerialgroup::getVehicle_code, baseRequest.getVehicle_code()) - .eq(SchBaseVehiclematerialgroup::getVehicle_type, baseRequest.getVehicle_type()) - .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue()) - .eq(SchBaseVehiclematerialgroup::getIs_delete, false)); - if (ObjectUtil.isEmpty(one)) { - // 返回400,物料不存在 - standResponse.setCode(HttpStatus.HTTP_BAD_REQUEST); - standResponse.setMessage("物料不存在"); - return standResponse; + SchBasePoint basePoint = pointService.getById(baseRequest.getDevice_code()); + // 入窑记录时间 + SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), + baseRequest.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue()); + groupInfo.setInto_kiln_time(DateUtil.now()); + if (ObjectUtil.isNotEmpty(basePoint)) { + // 记录当前位置 + groupInfo.setPoint_code(basePoint.getPoint_code()); // 当前位置 + groupInfo.setPoint_name(basePoint.getPoint_name()); + groupInfo.setMove_way(groupInfo.getMove_way() + " -> " + basePoint.getPoint_code()); } - // 判断是否静置完成 - if (CommonUtils.isStandingFinish(one.getInstorage_time(), one.getStanding_time())) { - standResponse.setCode(HttpStatus.HTTP_OK); - standResponse.setMessage("静置完成"); - one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - taskUtils.setGroupUpdateByAcs(one); - vehiclematerialgroupService.updateById(one); - } else { - standResponse.setCode(HttpStatus.HTTP_BAD_REQUEST); - standResponse.setMessage("静置未完成"); - } - return standResponse; + TaskUtils.setGroupUpdateByAcs(groupInfo); + vehiclematerialgroupService.updateById(groupInfo); + // 插入生产过程跟踪表 + PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); + processTracking.setBuss_move_id(groupInfo.getBuss_move_id()); + processTracking.setProcess_action("送料到入窑口"); + processTracking.setProcess_location(baseRequest.getDevice_code()); + processTracking.setRecord_time(DateUtil.now()); + processTrackingService.create(processTracking); + return ApplyTaskResponse.responseOk(baseRequest.getRequestNo()); } /** @@ -277,7 +380,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * @param param * @return */ - @Override @Transactional(rollbackFor = Exception.class) public BaseResponse pressRequestMaterial(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置) String requestNo = param.getString("requestNo"); @@ -303,92 +405,79 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { requestMaterialRecord.setWorkorder_id(workOrder.getWorkorder_id()); requestMaterialRecord.setDevice_code(parentPointCode); requestMaterialRecord.setCreate_time(DateUtil.now()); + requestMaterialRecord.setIs_finish(false); requestMaterialRecordService.save(requestMaterialRecord); return BaseResponse.responseOk(requestNo); } - @Override - public JSONObject receiveTaskStatusAcs(String string) { - JSONArray array = JSONArray.parseArray(string); - //返回处理失败的任务 - JSONArray errArr = new JSONArray(); - for (int i = 0; i < array.size(); i++) { - JSONObject row = array.getJSONObject(i); - String taskCode = row.getString("task_code"); - if (ObjectUtil.isEmpty(taskCode)) { - throw new BadRequestException("任务编码不能为空!"); - } -// String taskId = row.getString("task_id"); - SchBaseTask taskObj = taskService.getById(taskCode); - if (ObjectUtil.isEmpty(taskObj)) { - throw new BadRequestException("未找到任务编码为 [" + taskCode + "] 的任务"); - } - // 任务处理类 - String processingClass = taskObj.getConfig_code(); - //1:执行中,2:完成 ,3:acs取消 - String acsTaskStatus = row.getString("task_status"); - String message = ""; - TaskStatus status = TaskStatus.APPLY; - switch (acsTaskStatus) { - case "1": - status = TaskStatus.EXECUTING; - break; - case "2": - status = TaskStatus.FINISHED; - break; - case "3": - status = TaskStatus.CANCELED; - break; - default: - break; - } - // 根据配置去工厂类获得类对象 - AbstractTask abstractTask = taskFactory.getTask(processingClass); - // 更新任务 - try { - abstractTask.updateTaskStatus(taskCode, status); - } catch (Exception e) { - log.error("任务状态更新失败:{}", message); - JSONObject json = new JSONObject(); - json.put("task_code", taskCode); - json.put("message", message); - errArr.add(json); - } + public BaseResponse receiveTaskStatusAcs(JSONObject param) { + // todo: action暂未维护 + String requestNo = param.getString("requestNo"); + FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class); + String taskCode = taskStatusRequest.getTask_code(); + if (ObjectUtil.isEmpty(taskCode)) { + throw new BadRequestException("任务编码不能为空!"); } - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.HTTP_OK); - result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - result.put("errArr", errArr); - return result; + SchBaseTask taskObj = taskService.getByCode(taskCode); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("未找到任务编码为 [" + taskCode + "] 的任务"); + } + // 任务处理类 + String processingClass = taskObj.getConfig_code(); + //1:执行中,2:完成 ,3:acs取消 + String acsTaskStatus = param.getString("task_status"); + String message = ""; + TaskStatus status = TaskStatus.APPLY; + switch (acsTaskStatus) { + case "1": + status = TaskStatus.EXECUTING; + break; + case "2": + status = TaskStatus.FINISHED; + break; + case "3": + status = TaskStatus.CANCELED; + break; + default: + break; + } + // 根据配置去工厂类获得类对象 + AbstractTask abstractTask = taskFactory.getTask(processingClass); + // 更新任务 + try { + abstractTask.updateTaskStatus(taskCode, status); + } catch (Exception e) { + log.error("任务状态更新失败:{}", message); + return BaseResponse.responseError(requestNo, "任务:[" + taskCode + "]状态更新失败," + message); + } + return BaseResponse.responseOk(requestNo, "任务状态反馈成功!"); } - @Override - public JSONObject getVehicleInfo(JSONObject param) { + public GetPalletizeResponse getVehicleInfo(JSONObject param) { // 校验组盘信息 - String vehicleCode = param.getString("vehicle_code"); - String vehicleType = param.getString("vehicle_type"); + GetPalletizeRequest palletizeRequest = param.toJavaObject(GetPalletizeRequest.class); + String vehicleCode = palletizeRequest.getVehicle_code(); + String vehicleType = GeneralDefinition.STEEL_TRAY; if (ObjectUtil.isEmpty(vehicleCode)) { throw new BadRequestException("载具编码为空!"); } // 根据载具编码查找组盘信息 -- 查找已绑定的数据 - SchBaseVehiclematerialgroup baseVehiclematerialgroup = vehiclematerialgroupService - .getOne(new LambdaQueryWrapper().eq( - SchBaseVehiclematerialgroup::getGroup_bind_material_status, - GroupBindMaterialStatusEnum.BOUND.getValue()) - .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) - .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)); - JSONObject result = new JSONObject(); - result.put("status", "200"); - result.put("message", "任务状态反馈成功!"); - result.put("data", baseVehiclematerialgroup); - return result; + SchBaseVehiclematerialgroup baseVehiclematerialgroup = vehiclematerialgroupService.getGroupInfo(vehicleCode, + vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); + String extData = baseVehiclematerialgroup.getExt_data(); + if (extData == null) { + return GetPalletizeResponse.responseOk(palletizeRequest.getRequestNo()); + } + // 转成实体 + PalletizeDto palletizeDto = CommonUtils.toJavaObject(extData, PalletizeDto.class); + return GetPalletizeResponse.responseOk(palletizeRequest.getRequestNo(), palletizeDto); } /** 实时修改点位状态 */ public BaseResponse realTimeSetPoint(JSONObject param) { String requestNo = param.getString("requestNo"); String deviceCode = param.getString("device_code"); + String vehicleType = param.getString("vehicle_type"); if (deviceCode == null) { return BaseResponse.responseError(requestNo, "设备编码不能为空"); } @@ -406,6 +495,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { && move.equals(PointStatusEnum.EMPTY_VEHICLE.getCode())) || (pointStatus.equals(move))) { // 不做操作 return BaseResponse.responseOk(requestNo); } + if (vehicleType != null) { + schBasePoint.setVehicle_type(vehicleType); + } schBasePoint.setPoint_status(move); PointUtils.setUpdateByAcs(schBasePoint); pointService.updateById(schBasePoint); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/ApplyTaskResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/ApplyTaskResponse.java index 14e2f6b..3b42721 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/ApplyTaskResponse.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/ApplyTaskResponse.java @@ -2,8 +2,20 @@ package org.nl.wms.ext.acs.service.vo; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpStatus; +import lombok.Data; +@Data public class ApplyTaskResponse extends BaseResponse { + /** + * 是否静置完成 1完成 + */ + private String is_standing_finish; + + /** + * 是否优先包装 + */ + private String is_package; + public static ApplyTaskResponse responseOk(String requestNo) { ApplyTaskResponse response = new ApplyTaskResponse(); response.setRequestNo(requestNo); @@ -12,4 +24,5 @@ public class ApplyTaskResponse extends BaseResponse { response.setCode(HttpStatus.HTTP_OK); return response; } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/BaseResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/BaseResponse.java index 71db999..7db5897 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/BaseResponse.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/BaseResponse.java @@ -59,6 +59,23 @@ public class BaseResponse implements Serializable { response.setResponseDate(DateUtil.now()); return response; } + public static BaseResponse responseOk(String requestNo, String message) { + BaseResponse response = new BaseResponse(); + response.setRequestNo(requestNo); + response.setCode(HttpStatus.HTTP_OK); + response.setMessage(message); + response.setResponseDate(DateUtil.now()); + return response; + } + public static BaseResponse responseOk(String requestNo, HashMap parameters) { + BaseResponse response = new BaseResponse(); + response.setRequestNo(requestNo); + response.setCode(HttpStatus.HTTP_OK); + response.setMessage("请求成功"); + response.setResponseDate(DateUtil.now()); + response.setParameters(parameters); + return response; + } public static BaseResponse responseError(String requestNo, String message) { BaseResponse response = new BaseResponse(); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CancelTaskResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CancelTaskResponse.java new file mode 100644 index 0000000..a9c5bcc --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CancelTaskResponse.java @@ -0,0 +1,13 @@ +package org.nl.wms.ext.acs.service.vo; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 取消任务 + * @Date: 2023/7/26 + */ +@Data +public class CancelTaskResponse extends BaseResponse { + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CreateTaskResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CreateTaskResponse.java new file mode 100644 index 0000000..60b88dc --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/CreateTaskResponse.java @@ -0,0 +1,14 @@ +package org.nl.wms.ext.acs.service.vo; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 下发任务acs的反馈数据 + * @Date: 2023/7/26 + */ +@Data +public class CreateTaskResponse extends BaseResponse { + +} + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/FeedBackTaskStatusResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/FeedBackTaskStatusResponse.java new file mode 100644 index 0000000..cde7a98 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/FeedBackTaskStatusResponse.java @@ -0,0 +1,4 @@ +package org.nl.wms.ext.acs.service.vo; + +public class FeedBackTaskStatusResponse extends BaseResponse { +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/GetPalletizeResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/GetPalletizeResponse.java new file mode 100644 index 0000000..15e24ea --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/GetPalletizeResponse.java @@ -0,0 +1,31 @@ +package org.nl.wms.ext.acs.service.vo; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpStatus; +import lombok.Data; +import org.nl.wms.ext.acs.service.dto.PalletizeDto; + +@Data +public class GetPalletizeResponse extends BaseResponse { + + private PalletizeDto palletizeDto; + + public static GetPalletizeResponse responseOk(String requestNo) { + GetPalletizeResponse response = new GetPalletizeResponse(); + response.setRequestNo(requestNo); + response.setCode(HttpStatus.HTTP_OK); + response.setMessage("请求成功"); + response.setResponseDate(DateUtil.now()); + return response; + } + + public static GetPalletizeResponse responseOk(String requestNo, PalletizeDto palletizeDto) { + GetPalletizeResponse response = new GetPalletizeResponse(); + response.setRequestNo(requestNo); + response.setCode(HttpStatus.HTTP_OK); + response.setMessage("请求成功"); + response.setPalletizeDto(palletizeDto); + response.setResponseDate(DateUtil.now()); + return response; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/PutActionResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/PutActionResponse.java new file mode 100644 index 0000000..8d11756 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/PutActionResponse.java @@ -0,0 +1,11 @@ +package org.nl.wms.ext.acs.service.vo; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/7/26 + */ +public class PutActionResponse extends BaseResponse { + +} + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/Resp.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/Resp.java new file mode 100644 index 0000000..9523d21 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/vo/Resp.java @@ -0,0 +1,32 @@ +package org.nl.wms.ext.acs.service.vo; + +import lombok.Data; + +/** + * 调用立库接口统一返回参数类 + * + * @author: geng by + * @createDate: 2022/11/24 + */ +@Data +public class Resp { + /** + * 成功返回true,失败返回false + */ + public String result; + + /** + * 错误码(0表示成功)1代表入库目的位置有货,其他更多情况待定 + */ + public String code; + + /** + * 错误信息,如果成功则为null + */ + public String comment; + + /** + * 报文携带的数据 + */ + public T data; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java index 450e4b5..c326b40 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java @@ -40,4 +40,10 @@ public interface IPdmBdRequestMaterialRecordService extends IService ids); + + /** + * 叫料完成 + * @param recordId + */ + void callMaterialFinish(String recordId); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java index 84d5dad..71cec91 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/PdmBdRequestMaterialRecord.java @@ -36,5 +36,9 @@ public class PdmBdRequestMaterialRecord implements Serializable { @ApiModelProperty(value = "叫料时间") private String create_time; + @ApiModelProperty(value = "是否上料成功") + private Boolean is_finish; + @ApiModelProperty(value = "上料时间") + private String update_time; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java index ae5228d..726d221 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dto/PdmBdRequestMaterialRecordDto.java @@ -1,5 +1,6 @@ package org.nl.wms.pdm.record.service.dto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -25,4 +26,11 @@ public class PdmBdRequestMaterialRecordDto implements Serializable { /** 叫料时间 */ private String create_time; + + /** 是否上料成功 */ + private Boolean is_finish; + + /** 上料时间 */ + private String update_time; + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java index 9c91033..23e4edf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java @@ -62,4 +62,12 @@ public class PdmBdRequestMaterialRecordServiceImpl extends ServiceImpl query(PdmBdProductionProcessTrackingQuery query, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(pdmBdProductionProcessTrackingService + .queryAll(query,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增生产过程跟踪表") + @ApiOperation("新增生产过程跟踪表") + //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:add')") + public ResponseEntity create(@Validated @RequestBody PdmBdProductionProcessTracking entity){ + pdmBdProductionProcessTrackingService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改生产过程跟踪表") + @ApiOperation("修改生产过程跟踪表") + //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:edit')") + public ResponseEntity update(@Validated @RequestBody PdmBdProductionProcessTracking entity){ + pdmBdProductionProcessTrackingService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除生产过程跟踪表") + @ApiOperation("删除生产过程跟踪表") + //@SaCheckPermission("@el.check('pdmBdProductionProcessTracking:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + pdmBdProductionProcessTrackingService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java new file mode 100644 index 0000000..7e23c06 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/IPdmBdProductionProcessTrackingService.java @@ -0,0 +1,44 @@ +package org.nl.wms.pdm.track.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-07-21 +**/ +public interface IPdmBdProductionProcessTrackingService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(PdmBdProductionProcessTrackingQuery whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(PdmBdProductionProcessTracking entity); + + /** + * 编辑 + * @param entity / + */ + void update(PdmBdProductionProcessTracking entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java new file mode 100644 index 0000000..9fb7e61 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/PdmBdProductionProcessTracking.java @@ -0,0 +1,44 @@ +package org.nl.wms.pdm.track.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-21 +**/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_bd_production_process_tracking") +public class PdmBdProductionProcessTracking implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "process_id", type = IdType.NONE) + @ApiModelProperty(value = "跟踪标识") + private String process_id; + + @ApiModelProperty(value = "记录时间") + private String record_time; + + @ApiModelProperty(value = "动作") + private String process_action; + + @ApiModelProperty(value = "地点") + private String process_location; + + @ApiModelProperty(value = "链路id") + private String buss_move_id; + @TableField(exist = false) + private String vehicle_code; + @TableField(exist = false) + private String point_name; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java new file mode 100644 index 0000000..ece735f --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.pdm.track.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; + +/** +* @author lyd +* @date 2023-07-21 +**/ +public interface PdmBdProductionProcessTrackingMapper extends BaseMapper { + + IPage selectPageLeftJoin(IPage pages, + PdmBdProductionProcessTrackingQuery query); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml new file mode 100644 index 0000000..3e33002 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dao/mapper/PdmBdProductionProcessTrackingMapper.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java new file mode 100644 index 0000000..9d246c5 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingDto.java @@ -0,0 +1,28 @@ +package org.nl.wms.pdm.track.service.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-07-21 +**/ +@Data +public class PdmBdProductionProcessTrackingDto implements Serializable { + + /** 跟踪标识 */ + private String process_id; + + /** 记录时间 */ + private String record_time; + + /** 动作 */ + private String process_action; + + /** 地点 */ + private String process_location; + + /** 链路id */ + private String buss_move_id; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java new file mode 100644 index 0000000..25e68fa --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/dto/PdmBdProductionProcessTrackingQuery.java @@ -0,0 +1,16 @@ +package org.nl.wms.pdm.track.service.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** +* @author lyd +* @date 2023-07-21 +**/ +@Data +public class PdmBdProductionProcessTrackingQuery implements Serializable { + private String buss_move_id; + private String begin_time; + private String end_time; +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java new file mode 100644 index 0000000..5cb4ae5 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/track/service/impl/PdmBdProductionProcessTrackingServiceImpl.java @@ -0,0 +1,67 @@ +package org.nl.wms.pdm.track.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; +import org.nl.wms.pdm.track.service.dao.mapper.PdmBdProductionProcessTrackingMapper; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.track.service.dto.PdmBdProductionProcessTrackingQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** +* @description 服务实现 +* @author lyd +* @date 2023-07-21 +**/ +@Slf4j +@Service +public class PdmBdProductionProcessTrackingServiceImpl extends ServiceImpl implements IPdmBdProductionProcessTrackingService { + + @Autowired + private PdmBdProductionProcessTrackingMapper pdmBdProductionProcessTrackingMapper; + + @Override + public IPage queryAll(PdmBdProductionProcessTrackingQuery query, PageQuery page){ + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pages = pdmBdProductionProcessTrackingMapper.selectPageLeftJoin(pages, query); + return pages; + } + + @Override + public void create(PdmBdProductionProcessTracking entity) { + entity.setProcess_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + pdmBdProductionProcessTrackingMapper.insert(entity); + } + + @Override + public void update(PdmBdProductionProcessTracking entity) { + PdmBdProductionProcessTracking dto = pdmBdProductionProcessTrackingMapper.selectById(entity.getProcess_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + pdmBdProductionProcessTrackingMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + pdmBdProductionProcessTrackingMapper.deleteBatchIds(ids); + } + +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/controller/PdmBdWorkorderController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java similarity index 90% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/controller/PdmBdWorkorderController.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java index a603c79..f3155b2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/controller/PdmBdWorkorderController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java @@ -1,4 +1,4 @@ -package org.nl.wms.pdm.controller; +package org.nl.wms.pdm.workorder.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -6,9 +6,9 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.base.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.logging.annotation.Log; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; -import org.nl.wms.pdm.service.dto.PdmBdWorkorderQuery; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/IPdmBdWorkorderService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java similarity index 71% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/IPdmBdWorkorderService.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java index f926f55..9ca5064 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/IPdmBdWorkorderService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java @@ -1,10 +1,10 @@ -package org.nl.wms.pdm.service; +package org.nl.wms.pdm.workorder.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; -import org.nl.wms.pdm.service.dto.PdmBdWorkorderQuery; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; import java.util.Set; @@ -40,4 +40,11 @@ public interface IPdmBdWorkorderService extends IService { * @param ids / */ void deleteAll(Set ids); + + /** + * 获取设备生产中的工单 + * @param deviceCode + * @return + */ + PdmBdWorkorder getDeviceProductionTask(String deviceCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java similarity index 98% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/PdmBdWorkorder.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java index b25018e..edca547 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/PdmBdWorkorder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java @@ -1,4 +1,4 @@ -package org.nl.wms.pdm.service.dao; +package org.nl.wms.pdm.workorder.service.dao; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java similarity index 65% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java index 10fd966..c6faca7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java @@ -1,9 +1,9 @@ -package org.nl.wms.pdm.service.dao.mapper; +package org.nl.wms.pdm.workorder.service.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; -import org.nl.wms.pdm.service.dto.PdmBdWorkorderQuery; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; /** * @author lyd diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml similarity index 89% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.xml rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml index db94dda..ee64c80 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dao/mapper/PdmBdWorkorderMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml @@ -1,7 +1,7 @@ - - SELECT wo.* ,ma.material_name ,ma.material_code diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderDto.java similarity index 97% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderDto.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderDto.java index 82fde9f..f878083 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderDto.java @@ -1,4 +1,4 @@ -package org.nl.wms.pdm.service.dto; +package org.nl.wms.pdm.workorder.service.dto; import lombok.Data; import java.io.Serializable; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderQuery.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderQuery.java similarity index 88% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderQuery.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderQuery.java index 375c115..1171d27 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/dto/PdmBdWorkorderQuery.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dto/PdmBdWorkorderQuery.java @@ -1,4 +1,4 @@ -package org.nl.wms.pdm.service.dto; +package org.nl.wms.pdm.workorder.service.dto; import lombok.Data; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java similarity index 73% rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/impl/PdmBdWorkorderServiceImpl.java rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java index 4ad5956..00ff6e2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/service/impl/PdmBdWorkorderServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java @@ -1,8 +1,9 @@ -package org.nl.wms.pdm.service.impl; +package org.nl.wms.pdm.workorder.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,14 +12,14 @@ import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; -import org.nl.wms.pdm.service.dao.mapper.PdmBdWorkorderMapper; -import org.nl.wms.pdm.service.dto.PdmBdWorkorderQuery; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.dao.mapper.PdmBdWorkorderMapper; +import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery; +import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Set; /** @@ -80,4 +81,13 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(PdmBdWorkorder::getPoint_code, deviceCode) + .eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode()); + return pdmBdWorkorderMapper.selectOne(lam); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java new file mode 100644 index 0000000..4fd8098 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/controller/ReportController.java @@ -0,0 +1,39 @@ +package org.nl.wms.report.controller; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.report.service.ReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: lyd + * @Description: 报表管理 + * @Date: 2023/7/21 + */ +@Slf4j +@RestController +@Api(tags = "报表管理") +@RequestMapping("/api/report/v1") +public class ReportController { + + @Autowired + private ReportService reportService; + + @PostMapping("/mudTransfer") + @Log("泥料转运记录表") + @ApiOperation("泥料转运记录表") + public ResponseEntity mudTransfer(JSONObject json, PageQuery page){ +// return new ResponseEntity<>(TableDataInfo.build(reportService.mudTransfer(json,page)), HttpStatus.OK); + return null; + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java new file mode 100644 index 0000000..8deb9dd --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/ReportService.java @@ -0,0 +1,15 @@ +package org.nl.wms.report.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/7/21 + */ +public interface ReportService { + +// IPage<> mudTransfer(JSONObject json, PageQuery page); +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java new file mode 100644 index 0000000..d1a69a3 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.java @@ -0,0 +1,9 @@ +package org.nl.wms.report.service.dao.mapper; + +/** + * @Author: lyd + * @Description: 报表mapper + * @Date: 2023/7/21 + */ +public interface ReportMapper { +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml new file mode 100644 index 0000000..2164a72 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/dao/mapper/ReportMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java new file mode 100644 index 0000000..f63d367 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/report/service/impl/ReportServiceImpl.java @@ -0,0 +1,15 @@ +package org.nl.wms.report.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.report.service.ReportService; +import org.springframework.stereotype.Service; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/7/21 + */ +@Slf4j +@Service +public class ReportServiceImpl implements ReportService { +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java index 725d580..9b03915 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/controller/SchBaseVehiclematerialgroupController.java @@ -36,7 +36,8 @@ public class SchBaseVehiclematerialgroupController { @ApiOperation("查询组盘信息管理") //@SaCheckPermission("@el.check('schBaseVehiclematerialgroup:list')") public ResponseEntity query(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page){ - return new ResponseEntity<>(TableDataInfo.build(schBaseVehiclematerialgroupService.queryAll(whereJson,page)),HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(schBaseVehiclematerialgroupService + .queryAll(whereJson,page)),HttpStatus.OK); } @PostMapping diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java index f4c154d..075cf3b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java @@ -6,6 +6,7 @@ import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery; +import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import java.util.Map; import java.util.Set; @@ -49,4 +50,31 @@ public interface ISchBaseVehiclematerialgroupService extends IService lambda = new QueryWrapper().lambda(); + lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) + .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) + .eq(SchBaseVehiclematerialgroup::getMaterial_id, materialId) + .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); + return selectOne; + } + + @Override + public SchBaseVehiclematerialgroup getGroupInfo(String vehicleCode, String vehicleType, String value) { + LambdaQueryWrapper lambda = new QueryWrapper().lambda(); + lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) + .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) + .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); + return selectOne; + } + + @Override + public SchBaseVehiclematerialgroup getGroupInfo(String vehicleCode, String value) { + LambdaQueryWrapper lambda = new QueryWrapper().lambda(); + lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) + .eq(SchBaseVehiclematerialgroup::getIs_delete, false); + SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); + return selectOne; + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java index d8cb4e6..ddbea58 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/region/service/impl/SchBaseRegionServiceImpl.java @@ -89,7 +89,8 @@ public class SchBaseRegionServiceImpl extends ServiceImpl getRegionList(SchBaseRegion region) { return schBaseRegionMapper.selectList(new LambdaQueryWrapper() - .eq(ObjectUtil.isNotEmpty(region), SchBaseRegion::getIs_has_workder, true)); + .eq(ObjectUtil.isNotEmpty(region), SchBaseRegion::getIs_has_workder, true) + .orderByAsc(SchBaseRegion::getOrder_seq)); } @Override diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java index 89a25e0..50ee40e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java @@ -100,4 +100,6 @@ public interface ISchBaseTaskService extends IService { * @param param */ void operation(Map param); + + SchBaseTask getByCode(String taskCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java index ec58783..781a239 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/SchBaseTask.java @@ -22,7 +22,10 @@ public class SchBaseTask implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "task_code", type = IdType.NONE) + @TableId(value = "task_id", type = IdType.NONE) + @ApiModelProperty(value = "任务标识") + private String task_id; + @ApiModelProperty(value = "任务编码") private String task_code; @@ -57,6 +60,8 @@ public class SchBaseTask implements Serializable { @ApiModelProperty(value = "载具编码") private String vehicle_code; + @ApiModelProperty(value = "载具编码2") + private String vehicle_code2; @ApiModelProperty(value = "处理状态") private String handle_status; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dto/SchBaseTaskDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dto/SchBaseTaskDto.java index 28a972f..8caae8d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dto/SchBaseTaskDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dto/SchBaseTaskDto.java @@ -14,6 +14,9 @@ import java.io.Serializable; @Data public class SchBaseTaskDto implements Serializable { + /** 任务标识 */ + private String task_id; + /** 任务编码 */ private String task_code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 9a722fb..e86f792 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -132,6 +133,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl findUnFinishTasksByTaskConfig(String config_code, String device_code, String direction) { Assert.notNull(config_code, "任务配置编码不能为空!"); + Assert.notNull(direction, "任务配置编置的方向不能为空!"); LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); lam.eq(SchBaseTask::getConfig_code, config_code) .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) @@ -161,6 +163,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(SchBaseTask::getTask_code, taskCode); + return this.getOne(lam); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index a67064d..0557ae5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -1,14 +1,14 @@ package org.nl.wms.sch.task_manage; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -42,8 +42,7 @@ public abstract class AbstractTask { private ISchBasePointService pointService; @Autowired private IPdmBdWorkorderService workorderService; - @Autowired - private TaskUtils taskUtils; + /** * 任务创建 @@ -78,16 +77,17 @@ public abstract class AbstractTask { List list = new ArrayList<>(); for (SchBaseTask task : taskList) { AcsTaskDto taskDto = new AcsTaskDto(); - taskDto.setExt_task_uuid(task.getTask_code()); + taskDto.setRequestNo(IdUtil.simpleUUID());// todo + taskDto.setRequestDate(DateUtil.now()); + taskDto.setExt_task_id(task.getTask_id()); taskDto.setTask_code(task.getTask_code()); - taskDto.setRoute_plan_code("normal"); taskDto.setStart_device_code(task.getPoint_code1()); taskDto.setNext_device_code(task.getPoint_code2()); + taskDto.setStart_device_code2(task.getPoint_code3()); + taskDto.setNext_device_code2(task.getPoint_code4()); taskDto.setVehicle_code(task.getVehicle_code()); - - taskDto.setParams(task.getResponse_param()); - + taskDto.setVehicle_code2(task.getVehicle_code2()); this.setTask(task.getConfig_code(), taskDto); list.add(taskDto); } @@ -183,6 +183,7 @@ public abstract class AbstractTask { String apply_point_code = param.getString("device_code"); // 请求点 String config_code = param.getString("config_code"); String requestNo = param.getString("requestNo"); + String vehicleType = param.getString("vehicle_type"); // 1、校验数据 SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, config_code)); @@ -213,7 +214,7 @@ public abstract class AbstractTask { } param.put("workorder_code", workorder.getWorkorder_code()); // 工单编码 // 设置任务数据 - task.setVehicle_type(workorder.getVehicle_type()); + vehicleType = workorder.getVehicle_type(); } // 校验是否需要自动agv if (!pointObj.getIs_auto()) { @@ -222,11 +223,13 @@ public abstract class AbstractTask { } // 2、创建申请任务 task.setAcs_trace_id(requestNo); + task.setTask_id(IdUtil.getSnowflake(1,1).nextIdStr()); task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); task.setConfig_code(config_code); task.setCreate_mode(GeneralDefinition.ACS_CREATION); task.setVehicle_code(param.getString("vehicle_code")); task.setVehicle_qty(param.getInteger("vehicle_qty")); + task.setVehicle_type(vehicleType); task.setTask_status(TaskStatus.APPLY.getCode()); task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 // 设置起/终点 @@ -234,7 +237,7 @@ public abstract class AbstractTask { // 设置组盘 - 需要的话由子类自行实现 task.setGroup_id(this.setGroupPlate(param)); task.setRequest_param(JSONObject.toJSONString(param)); - taskUtils.setCreateByAcs(task); // 设置创建人信息 + TaskUtils.setCreateByAcs(task); // 设置创建人信息 taskService.save(task); // 创建一条单点任务。 // 3、判断是否直接找点下发 if (taskConfig.getIs_immediate_create()) { diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java index 4b11d7d..6f7be06 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AcsTaskDto.java @@ -1,30 +1,9 @@ package org.nl.wms.sch.task_manage; import lombok.Data; +import org.nl.wms.ext.acs.service.dto.CreateTaskRequest; @Data -public class AcsTaskDto { - //任务标识 - private String ext_task_uuid; - //任务编码 - private String task_code; - //任务类型 - private String task_type; - //起点 - private String start_device_code; - //下一点 - private String next_device_code; - //载具号 - private String vehicle_code; - //载具类型 - private String vehicle_type; - //优先级 - private String priority; - //备注 - private String remark; - //扩展参数 - private String params; - //路由类型 - private String route_plan_code; +public class AcsTaskDto extends CreateTaskRequest { } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index adb02d0..11eb7bb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -6,17 +6,27 @@ package org.nl.wms.sch.task_manage; * @Date: 2023/7/13 */ public class GeneralDefinition { + // 统一编码定义 + /** 窑自动任务开启 */ + public static final String AUTO_KILN_CALL = "auto_kiln_call"; + // 是否 + /**是 */ + public static final String YES = "1"; + /** 否 */ + public static final String NO = "0"; // 载具类型 - /** 空料盅 */ + /** 料盅 */ public static final String MATERIAL_CUP = "1"; /** 钢托盘 */ public static final String STEEL_TRAY = "2"; // 账号定义 /** acs系统 */ public static final String ACS_ID = "2"; + /** acs系统 */ public static final String ACS_NAME = "ACS系统"; /** mes系统 */ public static final String MES_ID = "3"; + /** mes系统 */ public static final String MES_NAME = "MES系统"; // 点位类型 /** 设备位 */ @@ -42,4 +52,9 @@ public class GeneralDefinition { public static final String MES_LMS = "3"; /**LMS->MES**/ public static final String LMS_LMS = "4"; + // 区域定义 + /** 料盅睏料线区域 */ + public static final String LZKLX = "LZKLX"; + /** 干燥窑区域 */ + public static final String GZY = "GZY"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java index 1c87e13..c3999e7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; import org.nl.wms.sch.task_manage.AcsTaskDto; +import org.nl.wms.sch.task_manage.GeneralDefinition; import org.springframework.http.HttpStatus; import java.util.List; @@ -22,7 +23,7 @@ public class AcsUtil { //判断是否连接ACS系统 String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); JSONObject result = new JSONObject(); - if (StrUtil.equals("0", isConnect)) { + if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("message", "未连接ACS!"); result.put("data", new JSONObject()); @@ -42,14 +43,11 @@ public class AcsUtil { String msg = e.getMessage(); //ConnectException: Connection refused: connect //网络不通 - System.out.println(msg); + log.error("连接失败:{}", msg); result.put("status", HttpStatus.BAD_REQUEST); result.put("message", "网络不通,操作失败!"); result.put("data", new JSONObject()); } - //acs抛异常这里 - /* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value()))) - throw new BadRequestException(result.getString("message"));*/ return result; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java index 003c6c0..6ed6f1a 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/RYKQLTask.java @@ -1,54 +1,63 @@ -package org.nl.wms.sch.task_manage.task.tasks.auto; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.nl.common.exception.BadRequestException; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; -import org.nl.wms.sch.point.service.ISchBasePointService; -import org.nl.wms.sch.point.service.dao.SchBasePoint; -import org.nl.wms.sch.task.service.ISchBaseTaskService; -import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; -import org.nl.wms.sch.task.service.dao.SchBaseTask; -import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; -import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; -import org.nl.wms.sch.task_manage.task.TaskType; -import org.nl.wms.sch.task_manage.task.core.TaskStatus; -import org.nl.wms.util.PointUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * @Author: lyd - * @Description: 入窑口叫料 - * @Date: 2023/6/19 - */ -@Component -@TaskType("RYKQLTask") -public class RYKQLTask extends AbstractTask { - private static String TASK_CONFIG_CODE = "RYKQLTask"; - @Autowired - private ISchBasePointService pointService; - @Autowired - private ISchBaseTaskService taskService; - @Autowired - private ISchBaseTaskconfigService taskConfigService; - @Override - protected void create() throws BadRequestException { - - } - - @Override - @Transactional(rollbackFor = Exception.class) - protected void autoCreate() { +//package org.nl.wms.sch.task_manage.task.tasks.auto; +// +//import cn.hutool.core.util.ObjectUtil; +//import com.alibaba.fastjson.JSONObject; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import org.nl.common.exception.BadRequestException; +//import org.nl.system.service.param.ISysParamService; +//import org.nl.system.service.param.dao.Param; +//import org.nl.wms.pdm.service.IPdmBdWorkorderService; +//import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +//import org.nl.wms.sch.point.service.ISchBasePointService; +//import org.nl.wms.sch.point.service.dao.SchBasePoint; +//import org.nl.wms.sch.task.service.ISchBaseTaskService; +//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +//import org.nl.wms.sch.task.service.dao.SchBaseTask; +//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +//import org.nl.wms.sch.task_manage.AbstractTask; +//import org.nl.wms.sch.task_manage.GeneralDefinition; +//import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +//import org.nl.wms.sch.task_manage.task.TaskType; +//import org.nl.wms.sch.task_manage.task.core.TaskStatus; +//import org.nl.wms.util.PointUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +//import org.springframework.transaction.annotation.Transactional; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.stream.Collectors; +// +///** +// * @Author: lyd +// * @Description: 入窑口叫料 +// * @Date: 2023/6/19 +// */ +//@Component +//@TaskType("RYKQLTask") +//public class RYKQLTask extends AbstractTask { +// private static String TASK_CONFIG_CODE = "RYKQLTask"; +// @Autowired +// private ISchBasePointService pointService; +// @Autowired +// private ISchBaseTaskService taskService; +// @Autowired +// private ISchBaseTaskconfigService taskConfigService; +// @Autowired +// private ISysParamService paramService; +// @Override +// protected void create() throws BadRequestException { +// +// } +// +// @Override +// @Transactional(rollbackFor = Exception.class) +// protected void autoCreate() { // // 自动创建任务 +// Param autoKilnCall = paramService.findByCode(GeneralDefinition.AUTO_KILN_CALL); +// if (autoKilnCall.getValue().equals(GeneralDefinition.NO)) { +// return; +// } // // 判断当前点位有没有任务执行 // List unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(TASK_CONFIG_CODE); // if (unFinishTasksByTaskConfig.size() > 0) { @@ -62,7 +71,7 @@ public class RYKQLTask extends AbstractTask { // SchBaseTask task = new SchBaseTask(); // 任务实体 // // 2、创建申请任务 // task.setConfig_code(TASK_CONFIG_CODE); -// task.setCreate_mode("1"); +// task.setCreate_mode(GeneralDefinition.AUTO_CREATION); // task.setTask_status(TaskStatus.APPLY.getCode()); // task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 // // 设置起/终点 @@ -85,71 +94,71 @@ public class RYKQLTask extends AbstractTask { // taskService.create(task); // point.setIng_task_code(task.getTask_code()); // pointService.update(point); - //下发 -// this.renotifyAcs(task); - } - - private SchBasePoint findStartPoint(List startRegionStr) { - // 无需工单 - // 默认认为缓存线有东西 - LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); - lam.in(SchBasePoint::getRegion_code, startRegionStr) - .eq(SchBasePoint::getPoint_type, '2') // 点位类型是缓存输送线出口 - .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 - .or() - .eq(SchBasePoint::getIng_task_code, "")) - .eq(SchBasePoint::getIs_used, true); - List schBasePoints = pointService.list(lam); - return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; - } - - @Override - protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - } - taskService.update(taskObj); - } - - @Override - public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); - } - - @Override - public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); - } -} +// //下发 +//// this.renotifyAcs(task); +// } +// +// private SchBasePoint findStartPoint(List startRegionStr) { +// // 无需工单 +// // 默认认为缓存线有东西 +// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); +// lam.in(SchBasePoint::getRegion_code, startRegionStr) +// .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) // 点位类型是缓存输送线出口 +// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 +// .or() +// .eq(SchBasePoint::getIng_task_code, "")) +// .eq(SchBasePoint::getIs_used, true); +// List schBasePoints = pointService.list(lam); +// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; +// } +// +// @Override +// protected void updateStatus(String task_code, TaskStatus status) { +// // 校验任务 +// SchBaseTask taskObj = taskService.getByCode(task_code); +// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { +// throw new BadRequestException("该任务已完成!"); +// } +// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { +// throw new BadRequestException("该任务已取消!"); +// } +// // 获取参数 +// String startPoint = taskObj.getPoint_code1(); // 获取起点 +// SchBasePoint startPointObj = pointService.getById(startPoint); +// // 根据传来的类型去对任务进行操作 +// if (status.equals(TaskStatus.EXECUTING)) { // 执行中 +// taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); +// taskObj.setRemark("执行中"); +// } +// if (status.equals(TaskStatus.FINISHED)) { // 完成 +// // 起点解锁 +// if (ObjectUtil.isNotEmpty(startPointObj)) { +// startPointObj.setIng_task_code(""); +// pointService.update(startPointObj); +// } +// // 任务完成 +// taskObj.setTask_status(TaskStatus.FINISHED.getCode()); +// taskObj.setRemark("任务完成"); +// } +// if (status.equals(TaskStatus.CANCELED)) { // 取消 +// // 起点解锁 +// if (ObjectUtil.isNotEmpty(startPointObj)) { +// startPointObj.setIng_task_code(""); +// pointService.update(startPointObj); +// } +// taskObj.setRemark("任务取消"); +// taskObj.setTask_status(TaskStatus.CANCELED.getCode()); +// } +// taskService.update(taskObj); +// } +// +// @Override +// public void forceFinish(String task_code) { +// this.updateStatus(task_code, TaskStatus.FINISHED); +// } +// +// @Override +// public void cancel(String task_code) { +// this.updateStatus(task_code, TaskStatus.CANCELED); +// } +//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java index bf3c562..d929a0c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java @@ -87,8 +87,8 @@ public class CTQKTask extends AbstractTask { @Override protected void updateStatus(String task_code, TaskStatus status) { -// 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java index de485fb..2272bc8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java @@ -46,8 +46,7 @@ public class DTSKTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private DTKMapper dtkMapper; - @Autowired - private TaskUtils taskUtils; + @Override protected void create() throws BadRequestException { @@ -57,7 +56,7 @@ public class DTSKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); + TaskUtils.setUpdateByAcs(task); List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找终点 @@ -94,7 +93,7 @@ public class DTSKTask extends AbstractTask { @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -105,7 +104,7 @@ public class DTSKTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -118,7 +117,7 @@ public class DTSKTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -127,7 +126,7 @@ public class DTSKTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -155,7 +154,7 @@ public class DTSKTask extends AbstractTask { taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -173,7 +172,7 @@ public class DTSKTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java index c9aa21c..b449518 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java @@ -1,11 +1,17 @@ package org.nl.wms.sch.task_manage.task.tasks.fj; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.common.utils.CodeUtil; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -14,11 +20,12 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.*; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -44,6 +51,12 @@ public class FJMKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private IPdmBdWorkorderService workorderService; + @Autowired + private ISysNoticeService noticeService; + @Autowired + private FJMapper fjMapper; + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Override protected void create() throws BadRequestException { // 获取任务 @@ -52,42 +65,119 @@ public class FJMKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); + TaskUtils.setUpdateByAcs(task); + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + .collect(Collectors.toList()); String requestParam = task.getRequest_param();// 任务的其他数据 JSONObject jsonObject = JSONObject.parseObject(requestParam); // 找终点 SchBasePoint packagePoint = findNextPoint(nextRegionStr, jsonObject); if (ObjectUtil.isEmpty(packagePoint)) { task.setRemark("包装线不可用!"); - taskService.update(task); + taskService.updateById(task); // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); continue; } SchBasePoint LaminatePoint = findStartPoint(startRegionStr, jsonObject); if (ObjectUtil.isEmpty(LaminatePoint)) { task.setRemark("覆膜区不可用!"); - taskService.update(task); + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); + taskService.updateById(task); // 消息通知 continue; } + // 生产木托盘编码 + String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE"); // 设置终点并修改创建成功状态 task.setPoint_code2(packagePoint.getPoint_code()); - task.setPoint_code3(LaminatePoint.getPoint_code()); + task.setPoint_code3(LaminatePoint.getParent_point_code()); task.setPoint_code4(task.getPoint_code1()); + task.setVehicle_code2(vehicleCode); task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.update(task); + task.setRemark(""); + taskService.updateById(task); packagePoint.setIng_task_code(task.getTask_code()); - pointService.update(packagePoint); - LaminatePoint.setIng_task_code(task.getTask_code()); - pointService.update(LaminatePoint); + PointUtils.setUpdateByAcs(packagePoint); + pointService.updateById(packagePoint); + SchBasePoint basePoint = pointService.getById(LaminatePoint.getParent_point_code()); + basePoint.setIng_task_code(task.getTask_code()); + basePoint.setVehicle_code(vehicleCode); + PointUtils.setUpdateByAcs(basePoint); + pointService.updateById(basePoint); //下发 // this.renotifyAcs(task); } } + @Override + public String setGroupPlate(JSONObject param) { + // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 + String vehicleCode = param.getString("vehicle_code"); + if (vehicleCode == null) { + throw new BadRequestException("载具编码不能为空"); + } + String vehicleType = param.getString("vehicle_type"); + String workorderCode = param.getString("workorder_code"); + JSONObject stackParameters = param.getJSONObject("palletize"); + if (vehicleType == null) { + vehicleType = GeneralDefinition.STEEL_TRAY; + } + String deviceCode = param.getString("device_code"); + // 砖块数量 + Integer qty = param.getInteger("qty"); + SchBasePoint basePoint = pointService.getById(deviceCode); + PdmBdWorkorder workorderObject = ObjectUtil.isNotEmpty(workorderCode) + ? workorderService.getOne(new LambdaQueryWrapper() + .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) + : null; + // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 + SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, + GroupBindMaterialStatusEnum.BOUND.getValue(), workorderObject.getMaterial_id()); + if (groupObject != null) { + return groupObject.getGroup_id(); + } + // 要把数据存到组盘表 + SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); + groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getMaterial_id() + : ""); + groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getStanding_time() + : 0); + groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getWorkorder_code() + : ""); + groupEntity.setCreate_id(GeneralDefinition.ACS_ID); + groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); + groupEntity.setCreate_time(DateUtil.now()); + groupEntity.setVehicle_code(vehicleCode); + groupEntity.setVehicle_type(vehicleType); + groupEntity.setMaterial_qty(qty); + groupEntity.setExt_data(JSONObject.toJSONString(stackParameters)); // 垛型参数 + groupEntity.setPoint_code(basePoint.getPoint_code()); // 对接位 + groupEntity.setPoint_name(basePoint.getPoint_name()); + groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); + groupEntity.setMove_way(basePoint.getPoint_code()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); // todo: ??? + groupEntity.setInstorage_time(DateUtil.now()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 + groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 + groupEntity.setIs_delete(false); + vehiclematerialgroupService.save(groupEntity); + // 将所有当前位置的砖块设置组盘标识 +// baseBrickInfoService.setGroupByCurrentAllBrick(deviceCode, groupEntity.getGroup_id()); + // 返回组盘id记录任务中 + return groupEntity.getGroup_id(); + } + /** * 从覆膜区找个空木托盘 * @param startRegionStr @@ -105,11 +195,12 @@ public class FJMKTask extends AbstractTask { throw new BadRequestException("工单不能为空!"); } String vehicleType = one.getVehicle_type(); - // todo: 向ACS请求所需木托盘在那个栈拆盘机? + // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 + SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() + .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); // todo: 请求ACS释放一个木托盘 // 这个点的父点位为起点 - SchBasePoint point = pointService.getById("FMADJW"); - return point; + return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } /** @@ -135,15 +226,50 @@ public class FJMKTask extends AbstractTask { @Override @Transactional protected void updateStatus(String task_code, TaskStatus status) { - // todo: 任务完成需要组盘,包装线解锁,覆膜对接位清空,分拣拆垛对接位设置空盘 + // 任务完成需要组盘,包装线解锁,覆膜对接位清空,分拣拆垛对接位设置空盘 // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } + + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { // 执行中 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { // 完成 + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { // 取消 + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 String bzxPoint = taskObj.getPoint_code2(); // 获取终点1 String fmPoint = taskObj.getPoint_code3(); // 获取起点2 @@ -151,40 +277,53 @@ public class FJMKTask extends AbstractTask { SchBasePoint bzxPointObj = pointService.getById(bzxPoint); SchBasePoint fmPointObj = pointService.getById(fmPoint); SchBasePoint fjcPointObj = pointService.getById(fjcPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 + if (ObjectUtil.isNotEmpty(bzxPointObj)) { + // 包装位: 解锁 PointUtils.clearPoint(bzxPointObj); + // 覆膜位: 解锁 . 清空 PointUtils.clearPoint(fmPointObj); + // 机械手对接位: 赋值 fjcPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); fjcPointObj.setVehicle_qty(1); fjcPointObj.setVehicle_type(taskObj.getVehicle_type()); - pointService.update(fjcPointObj); - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); + PointUtils.setUpdateByType(fjcPointObj, taskFinishedType); + pointService.updateById(fjcPointObj); + // 组盘设置已经解绑 + SchBaseVehiclematerialgroup vehicleMaterialGroupObj = + vehiclematerialgroupService.getById(taskObj.getGroup_id()); + vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code()); + vehicleMaterialGroupObj.setPoint_code(bzxPointObj.getPoint_code()); // 当前位置 + vehicleMaterialGroupObj.setPoint_name(bzxPointObj.getPoint_name()); + vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + bzxPointObj.getPoint_code()); + TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); + vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); } - if (status.equals(TaskStatus.CANCELED)) { // 取消 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String bzxPoint = taskObj.getPoint_code2(); // 获取终点1 + String fmPoint = taskObj.getPoint_code3(); // 获取起点2 + SchBasePoint bzxPointObj = pointService.getById(bzxPoint); + SchBasePoint fmPointObj = pointService.getById(fmPoint); + if (ObjectUtil.isNotEmpty(bzxPointObj)) { // 释放点位 fmPointObj.setIng_task_code(""); bzxPointObj.setIng_task_code(""); - pointService.update(fmPointObj); - pointService.update(bzxPointObj); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark("任务取消"); + PointUtils.setUpdateByType(fmPointObj, taskFinishedType); + PointUtils.setUpdateByType(bzxPointObj, taskFinishedType); + pointService.updateById(fmPointObj); + pointService.updateById(bzxPointObj); } - taskService.update(taskObj); - } - - @Override - public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); - } - - @Override - public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("任务取消"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java index 69aadac..f7a7a16 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java @@ -4,9 +4,10 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; -import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.common.utils.CodeUtil; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -14,9 +15,15 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -26,7 +33,7 @@ import java.util.stream.Collectors; /** * @Author: lyd - * @Description: 分拣呼叫空托盘任务 - 2点 + * @Description: 分拣呼叫空木托盘任务 - 2点 * @Date: 2023/6/21 */ @Component @@ -40,9 +47,12 @@ public class FJQKTask extends AbstractTask { @Autowired private ISchBaseTaskconfigService taskConfigService; @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired private IPdmBdWorkorderService workorderService; + + @Autowired + private ISysNoticeService noticeService; + @Autowired + private FJMapper fjMapper; @Override protected void create() throws BadRequestException { // 获取任务 @@ -51,34 +61,51 @@ public class FJQKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); + TaskUtils.setUpdateByAcs(task); + List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + .collect(Collectors.toList()); // 找起点 - String extGroupDataStr = task.getExt_group_data(); - JSONObject extGroupData = JSONObject.parseObject(extGroupDataStr); + String requestParam = task.getRequest_param(); + JSONObject extGroupData = JSONObject.parseObject(requestParam); SchBasePoint point = findStartPoint(startRegionStr, extGroupData); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); - taskService.update(task); + taskService.updateById(task); // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); continue; } // 设置起点并修改创建成功状态 - task.setPoint_code1(point.getPoint_code()); + task.setPoint_code1(point.getParent_point_code()); task.setTask_status(TaskStatus.CREATED.getCode()); - task.setVehicle_code(point.getVehicle_code()); + // 生产木托盘编码 + String vehicleCode = CodeUtil.getNewCode("VEHICLE_CODE"); + task.setVehicle_code(vehicleCode); + task.setRemark(""); task.setGroup_id(point.getGroup_id()); - taskService.update(task); + taskService.updateById(task); - point.setIng_task_code(task.getTask_code()); - pointService.update(point); + // 父点位锁住 + SchBasePoint basePoint = pointService.getById(point.getParent_point_code()); + basePoint.setIng_task_code(task.getTask_code()); + basePoint.setVehicle_code(vehicleCode); + PointUtils.setUpdateByAcs(basePoint); + pointService.updateById(basePoint); //下发 // this.renotifyAcs(task); } } + /** + * 找到的是覆膜机设备位置,父位才是对接位 + * @param startRegionStr + * @param extGroupData + * @return + */ private SchBasePoint findStartPoint(List startRegionStr, JSONObject extGroupData) { - // 当前设备的工单 + // 当前设备的工单: 工单的载具是木托盘 String workorderCode = extGroupData.getString("workorder_code"); PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) ? workorderService.getOne(new LambdaQueryWrapper() @@ -88,59 +115,99 @@ public class FJQKTask extends AbstractTask { throw new BadRequestException("工单不能为空!"); } String vehicleType = one.getVehicle_type(); - // todo: 向ACS请求所需木托盘在那个栈拆盘机? + // 向ACS请求所需木托盘在那个栈拆盘机?已经实时更新,故只需要自己查询即可 + SchBasePoint endPointObj = fjMapper.findPointForFJQK(startRegionStr, new JSONObject() + .fluentPut("vehicleType", vehicleType).fluentPut("pointType", GeneralDefinition.DEVICE_POINT)); // todo: 请求ACS释放一个木托盘 // 这个点的父点位为起点 - SchBasePoint point = pointService.getById("FMADJW"); - return point; + return ObjectUtil.isNotEmpty(endPointObj) ? endPointObj : null; } @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 载具编码:前面需要根据任务判断,没有载具不能生成任务 - String vehicle_code = taskObj.getVehicle_code(); - String startPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); + // 根据传来的类型去对任务进行操作 if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 终点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } - taskService.update(taskObj); } @Override public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); } @Override public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 载具编码:前面需要根据任务判断,没有载具不能生成任务 + String vehicleCode = taskObj.getVehicle_code(); + String vehicleType = taskObj.getVehicle_type(); + String startPoint = taskObj.getPoint_code1(); // 获取终点 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + if (ObjectUtil.isNotEmpty(startPointObj)) { + PointUtils.clearPoint(startPointObj); + + // 终点设置值 + // 记录库存并解锁 + endPointObj.setIng_task_code(""); + endPointObj.setVehicle_code(vehicleCode); + endPointObj.setVehicle_qty(1); + endPointObj.setVehicle_type(vehicleType); + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 载具编码:前面需要根据任务判断,没有载具不能生成任务 + String startPoint = taskObj.getPoint_code1(); // 获取终点 + SchBasePoint startPointObj = pointService.getById(startPoint); + // 终点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + taskObj.setRemark("任务取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java index f6e553e..e9ba3bf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java @@ -1,13 +1,16 @@ package org.nl.wms.sch.task_manage.task.tasks.fj; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -17,7 +20,6 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; -import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; @@ -55,8 +57,9 @@ public class FJQLTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private FJMapper fjMapper; + @Autowired - private TaskUtils taskUtils; + private IPdmBdProductionProcessTrackingService processTrackingService; @Override protected void create() throws BadRequestException { // 获取任务 @@ -65,7 +68,7 @@ public class FJQLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); + TaskUtils.setUpdateByAcs(task); List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 @@ -114,14 +117,14 @@ public class FJQLTask extends AbstractTask { : null; Assert.notNull(workOrder, "工单不能为空!"); // 从所选区域中,选择满料位、无锁、可用的点位 - List points = fjMapper.findPointForFJQL(startRegionStr, workOrder.getMaterial_id()); + List points = fjMapper.findPointForFJQL(startRegionStr, workOrder.getRaw_material_id()); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -132,7 +135,7 @@ public class FJQLTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -145,7 +148,7 @@ public class FJQLTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -154,7 +157,7 @@ public class FJQLTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -163,7 +166,9 @@ public class FJQLTask extends AbstractTask { public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { String startPoint = taskObj.getPoint_code1(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取起点 SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); // 除了解锁需要将组盘表中的物料绑定载具设置为已解绑 // 起点设置空位 if (ObjectUtil.isNotEmpty(startPointObj)) { @@ -171,15 +176,27 @@ public class FJQLTask extends AbstractTask { PointUtils.clearPoint(startPointObj); SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id()); - vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); - taskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); + // 等到变成空盘才能解除 +// vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); + vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code()); + vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); + TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); + // 插入生产过程跟踪表 + PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); + processTracking.setBuss_move_id(vehicleMaterialGroupObj.getBuss_move_id()); + processTracking.setProcess_action("钢托盘缓存位到分拣"); + processTracking.setProcess_location(endPoint); + processTracking.setRecord_time(DateUtil.now()); + processTrackingService.create(processTracking); } // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -195,7 +212,7 @@ public class FJQLTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java index d1bd220..4b0e979 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java @@ -1,9 +1,16 @@ package org.nl.wms.sch.task_manage.task.tasks.fj; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -12,10 +19,11 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; -import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; -import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.*; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -38,6 +46,13 @@ public class FJRKTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; + @Autowired + private ISysNoticeService noticeService; + + @Autowired + private IPdmBdWorkorderService workorderService; + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Override protected void create() throws BadRequestException { // 最后一坨不需要呼叫空盘 @@ -47,21 +62,27 @@ public class FJRKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); // 找终点 SchBasePoint point = findNextPoint(nextRegionStr); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); - taskService.update(task); + taskService.updateById(task); + // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); continue; } // 设置终点并修改创建成功状态 task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.update(task); + task.setRemark(""); + taskService.updateById(task); point.setIng_task_code(task.getTask_code()); - pointService.update(point); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); //下发 // this.renotifyAcs(task); @@ -88,60 +109,155 @@ public class FJRKTask extends AbstractTask { @Override public String setGroupPlate(JSONObject param) { // 强制入库组盘 - return super.setGroupPlate(param); + // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 + String vehicleCode = param.getString("vehicle_code"); + if (vehicleCode == null) { + throw new BadRequestException("载具编码不能为空"); + } + String vehicleType = param.getString("vehicle_type"); + String workorderCode = param.getString("workorder_code"); + JSONObject stackParameters = param.getJSONObject("palletize"); + if (vehicleType == null) { + vehicleType = GeneralDefinition.STEEL_TRAY; + } + String deviceCode = param.getString("device_code"); + // 砖块数量 + Integer qty = param.getInteger("qty"); + SchBasePoint basePoint = pointService.getById(deviceCode); + PdmBdWorkorder workorderObject = ObjectUtil.isNotEmpty(workorderCode) + ? workorderService.getOne(new LambdaQueryWrapper() + .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) + : null; + // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 + SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, + GroupBindMaterialStatusEnum.BOUND.getValue(), workorderObject.getMaterial_id()); + if (groupObject != null) { + return groupObject.getGroup_id(); + } + // 要把数据存到组盘表 + SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); + groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getMaterial_id() + : ""); + groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getStanding_time() + : 0); + groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderObject) + ? workorderObject.getWorkorder_code() + : ""); + groupEntity.setCreate_id(GeneralDefinition.ACS_ID); + groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); + groupEntity.setCreate_time(DateUtil.now()); + groupEntity.setVehicle_code(vehicleCode); + groupEntity.setVehicle_type(vehicleType); + groupEntity.setMaterial_qty(qty); + groupEntity.setExt_data(JSONObject.toJSONString(stackParameters)); // 垛型参数 + groupEntity.setPoint_code(basePoint.getPoint_code()); // 对接位 + groupEntity.setPoint_name(basePoint.getPoint_name()); + groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); + groupEntity.setMove_way(basePoint.getPoint_code()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); // todo: ??? + groupEntity.setInstorage_time(DateUtil.now()); + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 + groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 + groupEntity.setIs_delete(false); + vehiclematerialgroupService.save(groupEntity); + // 将所有当前位置的砖块设置组盘标识 +// baseBrickInfoService.setGroupByCurrentAllBrick(deviceCode, groupEntity.getGroup_id()); + // 返回组盘id记录任务中 + return groupEntity.getGroup_id(); } @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 获取参数 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - String vehicleType = ObjectUtil.isNotEmpty(taskObj.getVehicle_type()) ? taskObj.getVehicle_type() : ""; - // 获取外部参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - SchBasePoint endPointObj = pointService.getById(endPoint); + // 根据传来的类型去对任务进行操作 if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 设置载具类型、点位状态、释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 释放点位 - if (ObjectUtil.isNotEmpty(endPoint)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - taskObj.setRemark("任务取消"); + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } - taskService.update(taskObj); } @Override public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); } @Override public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + String startPoint = taskObj.getPoint_code1(); // 获取终点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + // 设置载具类型、点位状态、释放点位 + if (ObjectUtil.isNotEmpty(endPoint)) { + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + + // 组盘设置已经解绑 + SchBaseVehiclematerialgroup vehicleMaterialGroupObj = + vehiclematerialgroupService.getById(taskObj.getGroup_id()); + vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name()); + vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code()); + TaskUtils.setGroupUpdateByType(vehicleMaterialGroupObj, taskFinishedType); + vehiclematerialgroupService.updateById(vehicleMaterialGroupObj); + } + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + PointUtils.clearPoint(startPointObj); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint endPointObj = pointService.getById(endPoint); + // 释放点位 + if (ObjectUtil.isNotEmpty(endPoint)) { + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("任务取消"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java index 1433a1e..56c2c06 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java @@ -5,8 +5,8 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -15,6 +15,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; @@ -47,10 +48,11 @@ public class FJSKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private FJMapper fjMapper; - @Autowired - private TaskUtils taskUtils; + @Autowired private ISysNoticeService noticeService; + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Override protected void create() throws BadRequestException { @@ -60,7 +62,7 @@ public class FJSKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); + TaskUtils.setUpdateByAcs(task); List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); // 找终点 SchBasePoint point = findNextPoint(nextRegionStr); @@ -101,7 +103,7 @@ public class FJSKTask extends AbstractTask { @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -112,7 +114,7 @@ public class FJSKTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -123,9 +125,22 @@ public class FJSKTask extends AbstractTask { } } + @Override + public String setGroupPlate(JSONObject param) { + // 查找组盘表信息,不做修改 + String vehicleCode = param.getString("vehicle_code"); + String vehicleType = param.getString("vehicle_type"); + if (vehicleType == null) { + vehicleType = GeneralDefinition.STEEL_TRAY; + } + SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(vehicleCode, + vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); + return ObjectUtil.isNotEmpty(one) ? one.getGroup_id() : ""; + } + @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -134,7 +149,7 @@ public class FJSKTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -153,11 +168,21 @@ public class FJSKTask extends AbstractTask { endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); + + // 将组盘解绑并设置当前位置 + // 组盘表数据改成已绑定 + SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); + TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); + vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); + vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); + vehiclematerialgroupService.updateById(vehiclematerialgroup); } taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { @@ -174,7 +199,7 @@ public class FJSKTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java new file mode 100644 index 0000000..50e7641 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java @@ -0,0 +1,234 @@ +package org.nl.wms.sch.task_manage.task.tasks.fj; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; +import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +import org.nl.wms.sch.task_manage.task.TaskType; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: lyd + * @Description: 分拣回收剩料 + * @Date: 2023/7/20 + */ +@Component +@TaskType("FJSLHSTask") +public class FJSLTask extends AbstractTask { + private static String TASK_CONFIG_CODE = "FJSLHSTask"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + @Autowired + private IPdmBdWorkorderService workorderService; + @Autowired + private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; + + @Autowired + private ISysNoticeService noticeService; + @Override + protected void create() throws BadRequestException { +// 获取任务 + List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); // 修改修改者 + List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) + .collect(Collectors.toList()); + // 找终点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); + if (ObjectUtil.isEmpty(point)) { + task.setRemark("分拣机械手[" + task.getPoint_code1() + "]未找到所需点位!"); + taskService.updateById(task); + // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); + continue; + } + // 设置终点并修改创建成功状态 + task.setPoint_code2(point.getPoint_code()); + task.setTask_status(TaskStatus.CREATED.getCode()); + task.setRemark(""); + TaskUtils.setUpdateByAcs(task); + taskService.updateById(task); + + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + + //下发 +// this.renotifyAcs(task); + } + } + + private SchBasePoint findNextPoint(List nextRegionStr, JSONObject jsonObject) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.in(SchBasePoint::getRegion_code, nextRegionStr) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderByAsc(SchBasePoint::getIn_order_seq) + .orderByAsc(SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + } + + @Override + public String setGroupPlate(JSONObject param) { + // 组盘,返回组盘标识,设置待绑定,搬运结束就设置已绑定 + // 查找 + String vehicleCode = param.getString("vehicle_code"); + if (vehicleCode == null) { + throw new BadRequestException("载具编码不能为空"); + } + String vehicleType = param.getString("vehicle_type"); + JSONObject stackParameters = param.getJSONObject("palletize"); // 参数 + if (vehicleType == null) { + vehicleType = GeneralDefinition.STEEL_TRAY; + } + // 修改参数 + SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, + GroupBindMaterialStatusEnum.BOUND.getValue()); + if (ObjectUtil.isEmpty(groupObject)) { + throw new BadRequestException("找不到组盘信息"); + } + groupObject.setIs_full(false); + groupObject.setExt_data(JSONObject.toJSONString(stackParameters)); + TaskUtils.setGroupUpdateByAcs(groupObject); + vehiclematerialgroupService.updateById(groupObject); + return groupObject.getGroup_id(); + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { // 执行中 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { // 完成 + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { // 取消 + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + String vehicleCode = taskObj.getVehicle_code(); + String vehicleType = taskObj.getVehicle_type(); + String startPoint = taskObj.getPoint_code1(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + if (ObjectUtil.isNotEmpty(endPointObj)) { + // 终点解锁 + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + // 记录库存并解锁 + endPointObj.setIng_task_code(""); + endPointObj.setVehicle_code(vehicleCode); + endPointObj.setVehicle_qty(1); + endPointObj.setVehicle_type(vehicleType); + endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + // 组盘表数据改成已绑定 + SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); + TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); + vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); + vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); + vehiclematerialgroupService.updateById(vehiclematerialgroup); + } + // 起点清空 + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + PointUtils.clearPoint(startPointObj); + + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String endPoint = taskObj.getPoint_code2(); // 获取终点 + SchBasePoint endPointObj = pointService.getById(endPoint); + // 终点解锁 + if (ObjectUtil.isNotEmpty(endPointObj)) { + endPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + taskObj.setRemark("任务取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java index 5bd2bdc..73cc238 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.java @@ -1,5 +1,7 @@ package org.nl.wms.sch.task_manage.task.tasks.fj.mapper; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; import org.nl.wms.sch.point.service.dao.SchBasePoint; import java.util.List; @@ -12,4 +14,6 @@ import java.util.List; public interface FJMapper { List findPointForFJQL(List regionCode, String materialId); List findPointForFJSK(List regionCode); + + SchBasePoint findPointForFJQK(List regionCode, @Param("fluentPut") JSONObject fluentPut); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml index d52d09d..1b85661 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml @@ -31,4 +31,17 @@ #{code} + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java index 67f004b..a6d6819 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java @@ -6,16 +6,13 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import lombok.Data; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.database.material.service.IMdBaseMaterialService; import org.nl.wms.database.material.service.dao.MdBaseMaterial; import org.nl.wms.pdm.record.service.IPdmBdRequestMaterialRecordService; -import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; -import org.nl.wms.pdm.record.service.dto.PdmBdRequestMaterialRecordDto; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -69,14 +66,13 @@ public class HNMLTask extends AbstractTask { private IMdBaseMaterialService materialService; @Autowired private HNMapper hnMapper; - @Autowired - private TaskUtils taskUtils; + @Override @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -86,7 +82,7 @@ public class HNMLTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } else if (status.equals(TaskStatus.FINISHED)) { // 完成 this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); @@ -107,7 +103,7 @@ public class HNMLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); // 修改修改者 + TaskUtils.setUpdateByAcs(task); // 修改修改者 List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); String requestParam = task.getRequest_param();// 任务的其他数据 JSONObject jsonObject = JSONObject.parseObject(requestParam); @@ -120,25 +116,25 @@ public class HNMLTask extends AbstractTask { noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); continue; } - // 将找到的要料数据删除 - // todo: 可能出现事务问题 - requestMaterialRecordService.removeById(point.getRecord_id()); + // 叫料完成 + requestMaterialRecordService.callMaterialFinish(point.getRecord_id());// todo: 加个组盘标识 // 设置终点并修改创建成功状态 task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); - task.setVehicle_type(GeneralDefinition.STEEL_TRAY); + task.setVehicle_type(GeneralDefinition.MATERIAL_CUP); + // 告知acs去左边右边 + String deviceCode = point.getDevice_code(); + int number = Integer.parseInt(deviceCode.replaceAll("[^0-9]", "")); + // 1左边2右边 + number = (number % 2) == 0 ? 2 : (number % 2); + task.setResponse_param(new JSONObject().fluentPut("direction", number).toJSONString()); taskService.updateById(task); point.setIng_task_code(task.getTask_code()); PointUtils.setUpdateByAcs(point); pointService.updateById(point); - // 告知acs去左边右边 - String deviceCode = point.getDevice_code(); - int number = Integer.parseInt(deviceCode.replaceAll("[^0-9]", "")); - // 1右边2左边 - task.setResponse_param(new JSONObject().fluentPut("direction", (number % 2) + 1).toJSONString()); //下发 // this.renotifyAcs(task); } @@ -157,7 +153,7 @@ public class HNMLTask extends AbstractTask { String materialCode = requestParam.getString("material_code"); Assert.notNull(materialCode, "物料编码不能为空!"); MdBaseMaterial baseMaterialObj = materialService.findByCode(materialCode); - Assert.notNull(materialCode, "物料: "+ materialCode + "未找到!"); + Assert.notNull(materialCode, "物料: " + materialCode + "未找到!"); // 根据工单物料标识寻找点位 List points = hnMapper.findPointForHNML(nextRegionStr, baseMaterialObj.getMaterial_id()); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; @@ -165,7 +161,7 @@ public class HNMLTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -174,7 +170,7 @@ public class HNMLTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -183,46 +179,63 @@ public class HNMLTask extends AbstractTask { public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 - String vehicleType = taskObj.getVehicle_type(); - if (vehicleType == null) { - vehicleType = GeneralDefinition.MATERIAL_CUP; - } String startPoint = taskObj.getPoint_code1(); // 起点 String endPoint = taskObj.getPoint_code2(); // 终点 - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() : IdUtil.getSnowflake(1, 1).nextIdStr(); SchBasePoint startPointObj = pointService.getById(startPoint); SchBasePoint endPointObj = pointService.getById(endPoint); - // 要把数据存到组盘表 + String responseParam = taskObj.getResponse_param(); + JSONObject responseObj = JSONObject.parseObject(responseParam); + // 要把数据存到组盘表。压制工单放进去, SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne( new LambdaQueryWrapper() - .eq(SchBaseVehiclematerialgroup::getGroup_id, taskObj.getGroup_id())); + .eq(SchBaseVehiclematerialgroup::getGroup_id, taskObj.getGroup_id())); if (ObjectUtil.isEmpty(groupEntity)) { // 找不到组盘信息 throw new BadRequestException("找不到组盘信息"); } - // 跟新组盘数据 - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); - taskUtils.setGroupUpdateByType(groupEntity, taskFinishedType); - vehiclematerialgroupService.updateById(groupEntity); - // 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量 if (ObjectUtil.isNotEmpty(endPointObj)) { endPointObj.setIng_task_code(""); // endPointObj.setVehicle_code(vehicle_code); // endPointObj.setVehicle_type(vehicleType); - endPointObj.setVehicle_qty(1); // endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode()); // 有料 + endPointObj.setVehicle_qty(1); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); + // 终点为公用点位,需要获取左右方向 + String parentPointCode = endPointObj.getParent_point_code(); + String[] split = parentPointCode.split(","); + if (split.length > 1) { + parentPointCode = split[responseObj.getInteger("direction") - 1]; + } + // 找到父点位 + SchBasePoint serviceOne = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getPoint_code, parentPointCode)); + // 找压机工单 + PdmBdWorkorder one = workorderService.getOne(new LambdaQueryWrapper() + .eq(serviceOne != null, PdmBdWorkorder::getPoint_code, serviceOne.getPoint_code()) + .eq(PdmBdWorkorder::getWorkorder_status, WorkOrderStatusEnum.PRODUCING.getCode())); + if (ObjectUtil.isNotEmpty(one)) { + // 给组盘数据设置批次:压制工单+混砂机号+碾次 + groupEntity.setWorkorder_code(one.getWorkorder_code()); + StringBuilder pcsn = new StringBuilder(); + pcsn.append(one.getWorkorder_code()).append(groupEntity.getPoint_code()).append(groupEntity.getMix_times()); + groupEntity.setPcsn(pcsn.toString()); + groupEntity.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + groupEntity.setPoint_name(endPointObj.getPoint_name()); + groupEntity.setMove_way(groupEntity.getMove_way() + " -> " + endPointObj.getPoint_code()); + } } + // 更新组盘数据 + groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); + TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType); + vehiclematerialgroupService.updateById(groupEntity); // 起点清空 PointUtils.clearPoint(startPointObj); taskObj.setRemark("任务完成"); taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -240,16 +253,20 @@ public class HNMLTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } // 组盘 @Override public String setGroupPlate(JSONObject param) { + // 吨袋号(泥料号+2位年+月日时分+设备号+碾次)x + // LMS组盘时生成混料批次:压制工单+混砂机号+碾次 String vehicleCode = param.getString("vehicle_code"); String vehicleType = param.getString("vehicle_type"); - String workorderCode = param.getString("workorder_code"); + String materialCode = param.getString("material_code"); + String mixTimes = param.getString("bag_number"); // 碾次 + if (vehicleType == null) { vehicleType = GeneralDefinition.MATERIAL_CUP; } @@ -261,30 +278,35 @@ public class HNMLTask extends AbstractTask { if (vehicleCode == null) { throw new BadRequestException("载具编码不能为空"); } - PdmBdWorkorder workorderObject = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; + MdBaseMaterial material = materialService.findByCode(materialCode); + if (ObjectUtil.isEmpty(material)) { + throw new BadRequestException("物料[" + materialCode + "]不存在"); + } + // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 + SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, + GroupBindMaterialStatusEnum.WAIT_BIND.getValue(), material.getMaterial_id()); + if (groupObject != null) { + return groupObject.getGroup_id(); + } // 要把数据存到组盘表 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderObject) - ? workorderObject.getMaterial_id() + groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(material) + ? material.getMaterial_id() : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderObject) - ? workorderObject.getStanding_time() + groupEntity.setStanding_time(ObjectUtil.isNotEmpty(material) // 静置时间维护到物料 + ? material.getStanding_time() : 0); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderObject) - ? workorderObject.getWorkorder_code() - : ""); groupEntity.setCreate_id(GeneralDefinition.ACS_ID); groupEntity.setCreate_name(GeneralDefinition.ACS_NAME); groupEntity.setCreate_time(DateUtil.now()); groupEntity.setVehicle_code(vehicleCode); groupEntity.setVehicle_type(vehicleType); - groupEntity.setPoint_code(basePoint.getPoint_code()); // 哪台混料机 + groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); + groupEntity.setPoint_code(basePoint.getPoint_code()); // 当前位置 groupEntity.setPoint_name(basePoint.getPoint_name()); - groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); + groupEntity.setMove_way(basePoint.getPoint_code()); // 头次 + groupEntity.setMix_times(mixTimes); // 碾次 groupEntity.setInstorage_time(DateUtil.now()); groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)// 重量 ? weight diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java index e7108b3..c3ab19b 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNQKTask.java @@ -109,7 +109,7 @@ // @Transactional(rollbackFor = Exception.class) // protected void updateStatus(String task_code, TaskStatus status) { // // 校验任务 -// SchBaseTask taskObj = taskService.getById(task_code); +// SchBaseTask taskObj = taskService.getByCode(task_code); // if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { // throw new BadRequestException("该任务已完成!"); // } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml index d797619..91a5a3e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/mapper/HNMapper.xml @@ -9,7 +9,7 @@ r.record_id FROM `sch_base_point` p - LEFT JOIN pdm_bd_request_material_record r ON r.material_id = #{materialId} + LEFT JOIN pdm_bd_request_material_record r ON r.material_id = #{materialId} AND r.is_finish = false WHERE p.point_type = '5' AND p.point_status = '1' AND p.parent_point_code LIKE CONCAT('%', r.device_code, '%') diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java index 8419584..d6341ce 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java @@ -1,11 +1,14 @@ package org.nl.wms.sch.task_manage.task.tasks.yao; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -48,12 +51,14 @@ public class CYZCTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; - @Autowired - private TaskUtils taskUtils; + @Autowired private ISysNoticeService noticeService; @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; + @Autowired + private IPdmBdProductionProcessTrackingService processTrackingService; + @Override @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { @@ -81,7 +86,7 @@ public class CYZCTask extends AbstractTask { task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); - taskUtils.setUpdateByAcs(task); + TaskUtils.setUpdateByAcs(task); taskService.updateById(task); point.setIng_task_code(task.getTask_code()); @@ -94,8 +99,22 @@ public class CYZCTask extends AbstractTask { } + @Override + public String setGroupPlate(JSONObject param) { + // 查找组盘表信息,不做修改 + String vehicleCode = param.getString("vehicle_code"); + String vehicleType = param.getString("vehicle_type"); + if (vehicleCode == null) { + vehicleType = GeneralDefinition.STEEL_TRAY; + } + SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroupInfo(vehicleCode, + vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); + return ObjectUtil.isNotEmpty(one) ? one.getGroup_id() : ""; + } + /** * 找终点:到钢托盘缓存区中获取一个空位 + * * @param nextRegionStr * @param extData * @return @@ -117,7 +136,7 @@ public class CYZCTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -129,7 +148,7 @@ public class CYZCTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -142,7 +161,7 @@ public class CYZCTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -151,7 +170,7 @@ public class CYZCTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -176,9 +195,21 @@ public class CYZCTask extends AbstractTask { .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue()) .eq(SchBaseVehiclematerialgroup::getIs_firing, false)); + one.setTask_code(taskObj.getTask_code()); + one.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + one.setPoint_name(endPointObj.getPoint_name()); + one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code()); one.setIs_firing(true); - taskUtils.setGroupUpdateByType(one, taskFinishedType); + one.setOut_kiln_time(DateUtil.now()); + TaskUtils.setGroupUpdateByType(one, taskFinishedType); vehiclematerialgroupService.updateById(one); + // 插入生产过程跟踪表 + PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); + processTracking.setBuss_move_id(one.getBuss_move_id()); + processTracking.setProcess_action("出窑到钢托盘缓存位"); + processTracking.setProcess_location(endPoint); + processTracking.setRecord_time(DateUtil.now()); + processTrackingService.create(processTracking); // 记录库存并解锁 endPointObj.setIng_task_code(""); endPointObj.setVehicle_code(vehicle_code); @@ -192,7 +223,7 @@ public class CYZCTask extends AbstractTask { taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -207,7 +238,7 @@ public class CYZCTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java new file mode 100644 index 0000000..118cdfd --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java @@ -0,0 +1,181 @@ +package org.nl.wms.sch.task_manage.task.tasks.yao; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; +import org.nl.wms.sch.task_manage.task.TaskType; +import org.nl.wms.sch.task_manage.task.core.TaskStatus; +import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author: lyd + * @Description: 入窑口任务 + * @Date: 2023/7/20 + */ +@Slf4j +@Component +@TaskType("GZYQLTask") +public class GZYQLTask extends AbstractTask { + private static String TASK_CONFIG_CODE = "GZYQLTask"; + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBaseTaskconfigService taskConfigService; + + @Autowired + private ISysNoticeService noticeService; + @Override + protected void create() throws BadRequestException { + // 获取任务 + List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); + // 配置信息 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); + for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); // 修改修改者 + List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) + .collect(Collectors.toList()); + // 找起点 + String requestParam = task.getRequest_param(); + JSONObject jsonObject = JSONObject.parseObject(requestParam); + SchBasePoint point = findStartPoint(startRegionStr, jsonObject); + if (ObjectUtil.isEmpty(point)) { + task.setRemark("入窑口[" + task.getPoint_code1() + "]未找到所需点位!"); + taskService.updateById(task); + // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), + NoticeTypeEnum.WARN.getCode()); + continue; + } + // 设置终点并修改创建成功状态 + task.setPoint_code1(point.getPoint_code()); + task.setTask_status(TaskStatus.CREATED.getCode()); + task.setRemark(""); + TaskUtils.setUpdateByAcs(task); + taskService.updateById(task); + + point.setIng_task_code(task.getTask_code()); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); + + //下发 +// this.renotifyAcs(task); + } + } + + private SchBasePoint findStartPoint(List startRegionStr, JSONObject jsonObject) { + // 无需工单 + // 默认认为缓存线有东西 + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.in(SchBasePoint::getRegion_code, startRegionStr) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.EXIT) // 点位类型是缓存输送线出口 + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode()) + .eq(SchBasePoint::getIs_used, true); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { +// 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { // 执行中 + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { // 完成 + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + if (status.equals(TaskStatus.CANCELED)) { // 取消 + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + taskObj.setRemark("任务取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java index 1bb3f6d..9691a82 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java @@ -15,6 +15,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; @@ -46,8 +47,7 @@ public class YZQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; - @Autowired - private TaskUtils taskUtils; + @Override @Transactional(rollbackFor = Exception.class) protected void create() { @@ -57,7 +57,7 @@ public class YZQKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); // 修改修改者 + TaskUtils.setUpdateByAcs(task); // 修改修改者 List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")) .collect(Collectors.toList()); // 找起点 @@ -108,7 +108,7 @@ public class YZQKTask extends AbstractTask { @Override protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -119,7 +119,7 @@ public class YZQKTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -132,7 +132,7 @@ public class YZQKTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -141,7 +141,7 @@ public class YZQKTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -151,24 +151,24 @@ public class YZQKTask extends AbstractTask { public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { // 获取参数 String startPoint = taskObj.getPoint_code1(); // 获取起点 -// String endPoint = taskObj.getPoint_code2(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取起点 SchBasePoint startPointObj = pointService.getById(startPoint); -// SchBasePoint endPointObj = pointService.getById(endPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); // 起点清空 if (ObjectUtil.isNotEmpty(startPointObj)) { PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); -// endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); -// endPointObj.setVehicle_type("2"); -// endPointObj.setVehicle_qty(1); -// PointUtils.setUpdateByType(endPointObj, taskFinishedType); -// pointService.update(endPointObj); + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setVehicle_type("2"); + endPointObj.setVehicle_qty(1); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.update(endPointObj); } // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -184,7 +184,7 @@ public class YZQKTask extends AbstractTask { } taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java index d34d7b9..6ceb28c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQLTask.java @@ -113,7 +113,7 @@ // @Override // protected void updateStatus(String task_code, TaskStatus status) { // // 校验任务 -// SchBaseTask taskObj = taskService.getById(task_code); +// SchBaseTask taskObj = taskService.getByCode(task_code); // if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { // throw new BadRequestException("该任务已完成!"); // } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java index e32fa2d..6e096d6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java @@ -48,11 +48,8 @@ public class YZSKTask extends AbstractTask { @Autowired private ISchBaseTaskconfigService taskConfigService; @Autowired - private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; - @Autowired private ISysNoticeService noticeService; - @Autowired - private TaskUtils taskUtils; + @Override @Transactional(rollbackFor = Exception.class) @@ -63,7 +60,7 @@ public class YZSKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); // 修改修改者 + TaskUtils.setUpdateByAcs(task); // 修改修改者 List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找终点 @@ -127,7 +124,7 @@ public class YZSKTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -138,7 +135,7 @@ public class YZSKTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -151,7 +148,7 @@ public class YZSKTask extends AbstractTask { @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -160,7 +157,7 @@ public class YZSKTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -181,12 +178,13 @@ public class YZSKTask extends AbstractTask { endPointObj.setVehicle_qty(1); endPointObj.setVehicle_code(taskObj.getVehicle_code()); endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - pointService.update(endPointObj); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); } taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); // 区分完成者 + TaskUtils.setUpdateByType(taskObj, taskFinishedType); // 区分完成者 taskService.updateById(taskObj); } @@ -203,7 +201,7 @@ public class YZSKTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java index 2134715..61b587e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java @@ -9,8 +9,11 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; -import org.nl.wms.pdm.service.IPdmBdWorkorderService; -import org.nl.wms.pdm.service.dao.PdmBdWorkorder; +import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; +import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; +import org.nl.wms.pdm.track.service.dao.PdmBdProductionProcessTracking; +import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService; +import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -31,7 +34,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -58,10 +60,13 @@ public class YZSLTask extends AbstractTask { private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired private YZMapper yzMapper; - @Autowired - private TaskUtils taskUtils; + @Autowired private ISysNoticeService noticeService; + @Autowired + private IMdBaseBrickInfoService baseBrickInfoService; + @Autowired + private IPdmBdProductionProcessTrackingService processTrackingService; @Override @Transactional(rollbackFor = Exception.class) @@ -72,7 +77,7 @@ public class YZSLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - taskUtils.setUpdateByAcs(task); // 修改修改者 + TaskUtils.setUpdateByAcs(task); // 修改修改者 List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")) .collect(Collectors.toList()); // 找终点 @@ -91,7 +96,7 @@ public class YZSLTask extends AbstractTask { task.setPoint_code2(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); - taskUtils.setUpdateByAcs(task); + TaskUtils.setUpdateByAcs(task); taskService.updateById(task); point.setIng_task_code(task.getTask_code()); @@ -128,7 +133,17 @@ public class YZSLTask extends AbstractTask { // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 if (one.getIs_urgent()) { regionCode = nextRegionStr.get(1); // 去窑区 + // 判断窑区是否可用 + SchBasePoint basePoint = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code, regionCode) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) + .eq(SchBasePoint::getIs_used, true)); + // 如果窑口不能用,还是去双层输送线 + if (ObjectUtil.isEmpty(basePoint)) { + regionCode = nextRegionStr.get(0); + } } + // todo: 双层缓存货架的一上一下的区分 List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( MapOf.of("regionCode", regionCode, "pointType", GeneralDefinition.ENTRANCE))); return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; @@ -138,7 +153,7 @@ public class YZSLTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { throw new BadRequestException("该任务已完成!"); } @@ -149,7 +164,7 @@ public class YZSLTask extends AbstractTask { if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); - taskUtils.setUpdateByAcs(taskObj); + TaskUtils.setUpdateByAcs(taskObj); taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 @@ -169,20 +184,24 @@ public class YZSLTask extends AbstractTask { } String vehicleType = param.getString("vehicle_type"); String workorderCode = param.getString("workorder_code"); - JSONObject stackParameters = param.getJSONObject("PalletizeDto"); + JSONObject stackParameters = param.getJSONObject("palletize"); if (vehicleType == null) { vehicleType = GeneralDefinition.STEEL_TRAY; } String deviceCode = param.getString("device_code"); // 砖块数量 Integer qty = param.getInteger("qty"); - SchBasePoint basePoint = pointService.getOne(new LambdaQueryWrapper() - .eq(SchBasePoint::getPoint_code, deviceCode) - .eq(SchBasePoint::getIs_used, true)); + SchBasePoint basePoint = pointService.getById(deviceCode); PdmBdWorkorder workorderObject = ObjectUtil.isNotEmpty(workorderCode) ? workorderService.getOne(new LambdaQueryWrapper() .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) : null; + // 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入 + SchBaseVehiclematerialgroup groupObject = vehiclematerialgroupService.getGroupInfo(vehicleCode, vehicleType, + GroupBindMaterialStatusEnum.WAIT_BIND.getValue(), workorderObject.getMaterial_id()); + if (groupObject != null) { + return groupObject.getGroup_id(); + } // 要把数据存到组盘表 SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr()); @@ -201,22 +220,27 @@ public class YZSLTask extends AbstractTask { groupEntity.setVehicle_code(vehicleCode); groupEntity.setVehicle_type(vehicleType); groupEntity.setMaterial_qty(qty); - groupEntity.setExt_data(JSONObject.toJSONString(stackParameters)); + groupEntity.setExt_data(JSONObject.toJSONString(stackParameters)); // 垛型参数 groupEntity.setPoint_code(basePoint.getPoint_code()); // 对接位 groupEntity.setPoint_name(basePoint.getPoint_name()); - groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); + groupEntity.setSource_vehicle_code(basePoint.getPoint_code()); + groupEntity.setMove_way(basePoint.getPoint_code()); + groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd")); // todo: ??? groupEntity.setInstorage_time(DateUtil.now()); groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.WAIT_BIND.getValue()); // 待绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); vehiclematerialgroupService.save(groupEntity); + // 将所有当前位置的砖块设置组盘标识 + baseBrickInfoService.setGroupByCurrentAllBrick(deviceCode, groupEntity.getGroup_id()); + // 返回组盘id记录任务中 return groupEntity.getGroup_id(); } @Override public void forceFinish(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -225,7 +249,7 @@ public class YZSLTask extends AbstractTask { @Override public void cancel(String task_code) { - SchBaseTask taskObj = taskService.getById(task_code); + SchBaseTask taskObj = taskService.getByCode(task_code); if (ObjectUtil.isEmpty(taskObj)) { throw new BadRequestException("该任务不存在"); } @@ -233,16 +257,6 @@ public class YZSLTask extends AbstractTask { } public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { - // 获取参数 - JSONObject extGroupData = JSONObject.parseObject(taskObj.getRequest_param()); - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; String startPoint = taskObj.getPoint_code1(); // 获取起点 String endPoint = taskObj.getPoint_code2(); // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); @@ -252,20 +266,32 @@ public class YZSLTask extends AbstractTask { endPointObj.setIng_task_code(""); PointUtils.setUpdateByType(endPointObj, taskFinishedType); pointService.updateById(endPointObj); + // 组盘表数据改成已绑定 + SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); + TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); + vehiclematerialgroup.setTask_code(taskObj.getTask_code()); // 当前任务 + vehiclematerialgroup.setBuss_move_id(taskObj.getTask_code()); // 设置链路id,使用任务编码 + vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); + vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name()); + vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code()); + vehiclematerialgroupService.updateById(vehiclematerialgroup); + // 插入生产过程跟踪表 + PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking(); + processTracking.setBuss_move_id(vehiclematerialgroup.getBuss_move_id()); + processTracking.setProcess_action("压制送料入双层缓存线"); + processTracking.setProcess_location(endPoint); + processTracking.setRecord_time(DateUtil.now()); + processTrackingService.create(processTracking); } // 起点清空 PointUtils.setUpdateByType(startPointObj, taskFinishedType); PointUtils.clearPoint(startPointObj); - // 组盘表数据改成已绑定 - SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id()); - taskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType); - vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); - vehiclematerialgroupService.updateById(vehiclematerialgroup); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setRemark("任务完成"); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } @@ -282,7 +308,7 @@ public class YZSLTask extends AbstractTask { taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); taskObj.setFinished_type(taskFinishedType.getCode()); - taskUtils.setUpdateByType(taskObj, taskFinishedType); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java index 77f1e10..2939914 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/CommonUtils.java @@ -1,5 +1,8 @@ package org.nl.wms.util; +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.ext.acs.service.dto.PalletizeDto; + import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -24,4 +27,10 @@ public class CommonUtils { LocalDateTime expiryTime = inStorageDateTime.plus(standingDuration); return currentTime.isAfter(expiryTime); } + + public static T toJavaObject(String objectString, Class clazz) { + JSONObject jsonObject = JSONObject.parseObject(objectString); + return jsonObject.toJavaObject(clazz); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java index c6ee9df..70c5017 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java @@ -23,43 +23,40 @@ import java.util.function.Consumer; * @Description: 任务修改抽取的公用方法 * @Date: 2023/6/13 */ -@Component public class TaskUtils { - @Autowired - private ISchBaseTaskService taskService; - public void setCreateByAcs(SchBaseTask taskObj) { + public static void setCreateByAcs(SchBaseTask taskObj) { taskObj.setCreate_id(GeneralDefinition.ACS_ID); taskObj.setCreate_name(GeneralDefinition.ACS_NAME); taskObj.setCreate_time(DateUtil.now()); } - public void setUpdateByAcs(SchBaseTask taskObj) { + public static void setUpdateByAcs(SchBaseTask taskObj) { taskObj.setUpdate_id(GeneralDefinition.ACS_ID); taskObj.setUpdate_name(GeneralDefinition.ACS_NAME); taskObj.setUpdate_time(DateUtil.now()); } - public void setUpdateByPC(SchBaseTask taskObj) { + public static void setUpdateByPC(SchBaseTask taskObj) { taskObj.setUpdate_id(SecurityUtils.getCurrentUserId()); taskObj.setUpdate_name(SecurityUtils.getCurrentNickName()); taskObj.setUpdate_time(DateUtil.now()); } - public void setGroupUpdateByAcs(SchBaseVehiclematerialgroup groupEntity) { + public static void setGroupUpdateByAcs(SchBaseVehiclematerialgroup groupEntity) { groupEntity.setUpdate_id(GeneralDefinition.ACS_ID); groupEntity.setUpdate_name(GeneralDefinition.ACS_NAME); groupEntity.setUpdate_time(DateUtil.now()); } - public void setGroupUpdateByPC(SchBaseVehiclematerialgroup groupEntity) { + public static void setGroupUpdateByPC(SchBaseVehiclematerialgroup groupEntity) { groupEntity.setUpdate_id(SecurityUtils.getCurrentUserId()); groupEntity.setUpdate_name(SecurityUtils.getCurrentNickName()); groupEntity.setUpdate_time(DateUtil.now()); } // 根据类型去判断谁修改的 - public void setGroupUpdateByType(SchBaseVehiclematerialgroup groupEntity, TaskFinishedTypeEnum taskFinishedType) { + public static void setGroupUpdateByType(SchBaseVehiclematerialgroup groupEntity, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setGroupUpdateByAcs(groupEntity); } else { @@ -68,7 +65,7 @@ public class TaskUtils { } - public void setUpdateAuto(SchBaseTask taskObj) { + public static void setUpdateAuto(SchBaseTask taskObj) { String currentUserId = ObjectUtil.isNotEmpty(SecurityUtils.getCurrentUserId()) ? SecurityUtils.getCurrentUserId() : "2"; @@ -81,7 +78,7 @@ public class TaskUtils { } // 根据类型去判断谁修改的 - public void setUpdateByType(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + public static void setUpdateByType(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { setUpdateByAcs(taskObj); } else { @@ -92,7 +89,8 @@ public class TaskUtils { /** * 校验是否有起点终点的任务 */ - public Boolean hasTaskAll(String pointCode) { + public static Boolean hasTaskAll(String pointCode) { + ISchBaseTaskService taskService = SpringContextHolder.getBean(ISchBaseTaskService.class); final String code = pointCode; List list = taskService.list(new LambdaQueryWrapper() .lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java index 4d6c9ca..41c98c7 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/point/PointCreate.java @@ -108,9 +108,9 @@ public class PointCreate { void test04() { // 缓存库位区域 List pointList = new ArrayList<>(); int count = 1; - for (int i = 1; i <= 2; i++) { - for (int j = 1; j <= 29; j++) { - for (int k = 1; k <= 3; k++) { + for (int i = 1; i <= 2; i++) { // 排 + for (int j = 1; j <= 3; j++) { // 层 + for (int k = 1; k <= 29; k++) { // 列 String code = "HCHJ"; String name = "缓存货架"; if (count < 10) { @@ -124,6 +124,11 @@ public class PointCreate { name = name + count; } SchBasePoint point = new SchBasePoint(); + if (j == 3) { + point.setPoint_type("1"); + } else { + point.setPoint_type("2"); + } point.setPoint_code(code); point.setPoint_name(name); point.setRegion_code("GTPHC"); @@ -133,8 +138,8 @@ public class PointCreate { point.setVehicle_max_qty(1); point.setBlock_num(1); point.setRow_num(i); - point.setCol_num(j); - point.setLayer_num(k); + point.setCol_num(k); + point.setLayer_num(j); point.setIn_order_seq(count); point.setOut_order_seq(count); point.setIn_empty_seq(count); diff --git a/lms/nladmin-ui/src/views/tools/codeGen/codeDetail.vue b/lms/nladmin-ui/src/views/tools/codeGen/codeDetail.vue index 14ad525..da8ee82 100644 --- a/lms/nladmin-ui/src/views/tools/codeGen/codeDetail.vue +++ b/lms/nladmin-ui/src/views/tools/codeGen/codeDetail.vue @@ -154,7 +154,7 @@ export default { presenter(), header(), form(function() { - return Object.assign({ dict: { id: this.dictId }}, defaultForm) + return Object.assign({ code_rule_id: this.dictId }, defaultForm) })], data() { return { diff --git a/lms/nladmin-ui/src/views/wms/basedata/brick/index.vue b/lms/nladmin-ui/src/views/wms/basedata/brick/index.vue new file mode 100644 index 0000000..c50340c --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/brick/index.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/wms/basedata/brick/mdBaseBrickInfo.js b/lms/nladmin-ui/src/views/wms/basedata/brick/mdBaseBrickInfo.js new file mode 100644 index 0000000..fd94630 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/basedata/brick/mdBaseBrickInfo.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/mdBaseBrickInfo', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/mdBaseBrickInfo/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/mdBaseBrickInfo', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/views/wms/pdm/record/index.vue b/lms/nladmin-ui/src/views/wms/pdm/record/index.vue index c7e2d94..279206c 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/record/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/record/index.vue @@ -10,10 +10,10 @@ - + - + @@ -29,9 +29,14 @@ - - + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/pdm/track/pdmBdProductionProcessTracking.js b/lms/nladmin-ui/src/views/wms/pdm/track/pdmBdProductionProcessTracking.js new file mode 100644 index 0000000..9224888 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/pdm/track/pdmBdProductionProcessTracking.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/pdmBdProductionProcessTracking', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/pdmBdProductionProcessTracking/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/pdmBdProductionProcessTracking', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/lms/nladmin-ui/src/views/wms/sch/group/index.vue b/lms/nladmin-ui/src/views/wms/sch/group/index.vue index 02d037f..7468302 100644 --- a/lms/nladmin-ui/src/views/wms/sch/group/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/group/index.vue @@ -221,8 +221,9 @@ - - + + +