diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java index 5ac99e44a..8d803a7c8 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java @@ -41,6 +41,13 @@ public class AcsToWmsController { return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK); } + @PostMapping("/outHotTaskApply") + @Log(value = "申请出烘箱任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) + @SaIgnore + public ResponseEntity outHotTaskApply(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(acsToWmsService.outHotTaskApply(whereJson), HttpStatus.OK); + } + @PostMapping("/againApply") @Log(value = "二次申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS) @SaIgnore diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index 8af2f9909..4393d1722 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -118,4 +118,11 @@ public interface AcsToWmsService { * @return / */ JSONObject actionFinishRequest2(JSONObject param); + + /** + * 出烘箱 + * @param whereJson / + * @return / + */ + JSONObject outHotTaskApply(JSONObject whereJson); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 049ecdacc..59581ed2f 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -10,6 +10,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task_manage.AbstractTask; import org.nl.wms.sch.task_manage.TaskFactory; import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.service.BakingOperationService; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +30,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private ISchBaseTaskService taskService; @Autowired private TaskFactory taskFactory; + @Autowired + private BakingOperationService bakingOperationService; @Override public Map receiveTaskStatusAcs(String string) throws InterruptedException { log.info("acs向lms反馈任务状态,请求参数:--------------------------------------" + string); @@ -159,4 +162,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public JSONObject actionFinishRequest2(JSONObject param) { return null; } + + @Override + public JSONObject outHotTaskApply(JSONObject whereJson) { + return bakingOperationService.acsRequestOutHotTask(whereJson); + } } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingPdaController.java similarity index 80% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingPdaController.java index 2b85e02ce..143e2e656 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingController.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/BakingPdaController.java @@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.logging.annotation.Log; -import org.nl.wms.pda.mps.service.BakingService; +import org.nl.wms.pda.mps.service.BakingPdaService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -22,14 +22,14 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/pda/baking") @Slf4j @SaIgnore -public class BakingController { +public class BakingPdaController { @Autowired - private BakingService bakingService; + private BakingPdaService bakingPdaService; @PostMapping("/bakingQuality") @Log("烘烤质检") public ResponseEntity bakingQuality(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(bakingService.bakingQuality(whereJson), HttpStatus.OK); + return new ResponseEntity<>(bakingPdaService.bakingQuality(whereJson), HttpStatus.OK); } } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/SlitterPdaController.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/SlitterPdaController.java new file mode 100644 index 000000000..75300d59e --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/controller/SlitterPdaController.java @@ -0,0 +1,54 @@ +package org.nl.wms.pda.mps.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.pda.mps.service.SlitterPdaService; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author: lyd + * @Description: 分切 + * @Date: 2024/8/12 + */ +@RestController +@RequestMapping("/api/pda/slitter") +@Slf4j +@SaIgnore +public class SlitterPdaController { + @Autowired + private SlitterPdaService slitterPdaService; + + /** + * 获取生箔工单信息 + * @param whereJson / + * @return / + */ + @PostMapping("/queryOrderInfo") + public ResponseEntity queryOrderInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(slitterPdaService.queryOrderInfo(whereJson), HttpStatus.OK); + } + + @PostMapping("/callSlitterRoll") + @Log("呼叫母卷") + public ResponseEntity callSlitterRoll(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(slitterPdaService.callSlitterRoll(whereJson), HttpStatus.OK); + } + @PostMapping("/allowCoiling") + @Log("允许上卷") + public ResponseEntity allowCoiling(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(slitterPdaService.allowCoiling(whereJson), HttpStatus.OK); + } + @PostMapping("/vehicleReturn") + @Log("空轴送回") + public ResponseEntity vehicleReturn(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(slitterPdaService.vehicleReturn(whereJson), HttpStatus.OK); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingPdaService.java similarity index 87% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingPdaService.java index 3daa17083..016c53aa5 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/BakingPdaService.java @@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSONObject; * @Description: * @Date: 2024/8/12 */ -public interface BakingService { +public interface BakingPdaService { /** * 质检 * @param param / diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/SlitterPdaService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/SlitterPdaService.java new file mode 100644 index 000000000..f2c488d9d --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/SlitterPdaService.java @@ -0,0 +1,38 @@ +package org.nl.wms.pda.mps.service; + +import com.alibaba.fastjson.JSONObject; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/12 + */ +public interface SlitterPdaService { + /** + * 查询烘烤区域的母卷信息 + * @param param / + * @return / + */ + JSONObject queryOrderInfo(JSONObject param); + + /** + * 呼叫母卷 - 分切上料或者送空上轴 + * @param param / + * @return / + */ + JSONObject callSlitterRoll(JSONObject param); + + /** + * 允许上卷 + * @param param / + * @return / + */ + JSONObject allowCoiling(JSONObject param); + + /** + * 空轴送回 + * @param param / + * @return / + */ + JSONObject vehicleReturn(JSONObject param); +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java similarity index 95% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java index 97970093e..d172e0fcd 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java @@ -5,7 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; -import org.nl.wms.pda.mps.service.BakingService; +import org.nl.wms.pda.mps.service.BakingPdaService; import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; import org.nl.wms.sch.point.service.ISchBasePointService; @@ -23,7 +23,7 @@ import java.util.List; */ @Service @Slf4j -public class BakingServiceImpl implements BakingService { +public class BakingPdaServiceImpl implements BakingPdaService { @Autowired private ISchBasePointService pointService; diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/SlitterPdaServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/SlitterPdaServiceImpl.java new file mode 100644 index 000000000..ea20d6c0d --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/SlitterPdaServiceImpl.java @@ -0,0 +1,133 @@ +package org.nl.wms.pda.mps.service.impl; + +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.pda.mps.service.SlitterPdaService; +import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; +import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; +import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService; +import org.nl.wms.sch.task.service.ISchBaseTaskService; +import org.nl.wms.sch.task.service.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask; +import org.nl.wms.sch.task_manage.tasks.slitter.SlitterUpTrussTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/12 + */ +@Slf4j +@Service +public class SlitterPdaServiceImpl implements SlitterPdaService { + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private SlitterUpTrussTask slitterUpTrussTask; + @Autowired + private WmsToAcsService wmsToAcsService; + @Autowired + private SlitterSendRollAGVTask slitterSendRollAGVTask; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Override + public JSONObject queryOrderInfo(JSONObject param) { + List orders = rawfoilworkorderService.getAllUsedRawPlanOnZc(); + JSONObject result = new JSONObject(); + result.put("data", orders); + result.put("message", "操作成功!"); + return result; + } + + @Override + public JSONObject callSlitterRoll(JSONObject param) { + log.info("手持呼叫母卷:{}", param); + // param: workorder_id, zc_point, point_code, vehicle_code + String workorderId = param.getString("workorder_id"); + // 分切机满料位 + String pointCode = param.getString("point_code"); + String vehicleCode = param.getString("vehicle_code"); + Assert.notBlank(workorderId, "请选择母卷!"); + Assert.notBlank(pointCode, "点位不能为空!"); + // 判断是否呼叫过任务 + List schBaseTasks = taskService.checkHaveTask(pointCode); + if (schBaseTasks.size() > 0) { + throw new BadRequestException("点位[" + pointCode + "]已经创建过任务!"); + } + param.put("config_code", "SlitterUpTrussTask"); + param.put("device_code", pointCode); + param.put("create_mode", GeneralDefinition.PDA_CREATION); + // 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊 + param.put("is_flag", ObjectUtil.isEmpty(vehicleCode) ? "0" : "1"); + slitterUpTrussTask.apply(param); + JSONObject result = new JSONObject(); + result.put("message", "操作成功!"); + return result; + } + + @Override + public JSONObject allowCoiling(JSONObject param) { + log.info("手持分切准备就绪, {}", param); + // point_code + String pointCode = param.getString("point_code"); + // 获取对应任务 + SchBaseTask task = taskService.getTaskByPointCodeX(null, pointCode, null, null); + if (ObjectUtil.isEmpty(task)) { + log.error("该点查不到任务!"); + throw new BadRequestException("该点查不到任务!"); + } + //下发ACS,执行AGV动作 + JSONArray paramArr = new JSONArray(); + JSONObject acsParam = new JSONObject(); + acsParam.put("device_code", pointCode); + acsParam.put("task_code", task.getTask_code()); + acsParam.put("product_area", task.getProduct_area()); + acsParam.put("option", "1"); + paramArr.add(acsParam); + JSONObject jsonObject = wmsToAcsService.updateTask(paramArr); + log.info("分切下发ACS,执行AGV动作,请求参数{},返回结果:{}", paramArr, jsonObject); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "请求成功!"); + result.put("data", new JSONObject()); + return result; + } + + @Override + public JSONObject vehicleReturn(JSONObject param) { + log.info("手持空轴送回, {}", param); + // param: point_code, vehicle_code + String pointCode = param.getString("point_code"); + String vehicleCode = param.getString("vehicle_code"); + Assert.notBlank(vehicleCode, "载具编码不能为空!"); + StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(pointCode, false); + // 校验是否有任务 + List schBaseTasks = taskService.checkHaveTask(cutPoint.getEmpty_point_code()); + if (schBaseTasks.size() > 0) { + throw new BadRequestException("点位[" + pointCode + "]已经存在任务!"); + } + // todo: 载具类型没有获取 + param.put("device_code", cutPoint.getEmpty_point_code()); + param.put("config_code", "SlitterSendRollAGVTask"); + param.put("create_mode", GeneralDefinition.PDA_CREATION); + slitterSendRollAGVTask.apply(param); + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "请求成功!"); + result.put("data", new JSONObject()); + return result; + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiRawfoilworkorder.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiRawfoilworkorder.java index 60fb3d2c6..103b05871 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiRawfoilworkorder.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiRawfoilworkorder.java @@ -179,6 +179,9 @@ public class PdmBiRawfoilworkorder extends Model { /** 烘烤温度 */ private String baking_temperature; + @TableField(exist = false) + private String zc_point; + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiSlittingproductionplan.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiSlittingproductionplan.java index d9fe80b65..1e8dcba0a 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiSlittingproductionplan.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/PdmBiSlittingproductionplan.java @@ -23,8 +23,6 @@ public class PdmBiSlittingproductionplan extends Model { + List getAllUsedRawPlanOnZc(); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml new file mode 100644 index 000000000..e4023198e --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/xml/PdmBiSlittingproductionplanMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiSlittingproductionplanMapper.xml similarity index 100% rename from lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/xml/PdmBiSlittingproductionplanMapper.xml rename to lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiSlittingproductionplanMapper.xml diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/xml/PdmBiRawfoilworkorderMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/xml/PdmBiRawfoilworkorderMapper.xml deleted file mode 100644 index 87e0b0bfd..000000000 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/xml/PdmBiRawfoilworkorderMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java index e655302bb..52f703677 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/IpdmBiRawfoilworkorderService.java @@ -80,6 +80,12 @@ public interface IpdmBiRawfoilworkorderService extends IService getOrderByVehicleAndStatus(String vehicleCode, String status); + + /** + * 获取烘箱暂存的母卷信息 + * @return / + */ + List getAllUsedRawPlanOnZc(); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java index 0478c373c..5c916d8f5 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/service/impl/PdmBiRawfoilworkorderServiceImpl.java @@ -30,6 +30,7 @@ import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch.task_manage.TaskStatus; import org.nl.wms.storage_manage.ios.enums.IOSEnum; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -52,7 +53,7 @@ import static org.nl.common.enums.WorkOrderStatusEnum.PRODUCT_STATUS; @Service public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl implements IpdmBiRawfoilworkorderService { - @Resource + @Autowired private PdmBiRawfoilworkorderMapper pdmBiRawfoilworkorderMapper; @Resource @@ -242,5 +243,10 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl getAllUsedRawPlanOnZc() { + return pdmBiRawfoilworkorderMapper.getAllUsedRawPlanOnZc(); + } + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/dao/StIvtCutpointivt.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/dao/StIvtCutpointivt.java index 277506ffd..3bdbcde5e 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/dao/StIvtCutpointivt.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/dao/StIvtCutpointivt.java @@ -22,13 +22,13 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; public class StIvtCutpointivt extends Model { private static final long serialVersionUID = -7739291296662381393L; - //@TableId(type = IdType.ASSIGN_ID) /** * 库存记录标识 */ - private Long ivt_id; + @TableId(type = IdType.ASSIGN_ID) + private String ivt_id; /** @@ -124,7 +124,7 @@ public class StIvtCutpointivt extends Model { /** * 创建人 */ - private Long create_id; + private String create_id; /** @@ -136,14 +136,13 @@ public class StIvtCutpointivt extends Model { /** * 创建时间 */ - @TableField(fill = FieldFill.INSERT) private String create_time; /** * 修改人 */ - private Long update_optid; + private String update_optid; /** @@ -155,7 +154,6 @@ public class StIvtCutpointivt extends Model { /** * 修改时间 */ - @TableField(fill = FieldFill.INSERT_UPDATE) private String update_time; @@ -188,17 +186,6 @@ public class StIvtCutpointivt extends Model { */ private String qzz_generation; - - /** - * 获取主键值 - * - * @return 主键值 - */ - @Override - protected Serializable pkVal() { - return this.ivt_id; - } - } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/IstIvtCutpointivtService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/IstIvtCutpointivtService.java index 51ef787c9..0544c10de 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/IstIvtCutpointivtService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/IstIvtCutpointivtService.java @@ -60,6 +60,20 @@ public interface IstIvtCutpointivtService extends IService { void deleteAll(Set ids); + /** + * 获取分切数据 + * @param fullCode 满轴位 + * @param flag 是否校验禁用 + * @return / + */ + StIvtCutpointivt getByFullCode(String fullCode, boolean flag); + + /** + * 根据点位编码/满轴位/空轴位查找对应点位 + * @param code 编码 + * @return / + */ + StIvtCutpointivt getOneByCode(String code); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/impl/StIvtCutpointivtServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/impl/StIvtCutpointivtServiceImpl.java index 04f59e767..abdffc356 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/impl/StIvtCutpointivtServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/ivt/service/impl/StIvtCutpointivtServiceImpl.java @@ -15,6 +15,7 @@ import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.IdUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; @@ -35,7 +36,7 @@ import java.util.List; public class StIvtCutpointivtServiceImpl extends ServiceImpl implements IstIvtCutpointivtService { - @Resource + @Autowired private StIvtCutpointivtMapper stIvtCutpointivtMapper; @@ -115,6 +116,25 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda(); + lam.eq(StIvtCutpointivt::getFull_point_code, fullCode) + .eq(flag, StIvtCutpointivt::getIs_used, "1"); + return getOne(lam); + } + + @Override + public StIvtCutpointivt getOneByCode(String code) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(StIvtCutpointivt::getFull_point_code, code) + .or() + .eq(StIvtCutpointivt::getEmpty_point_code, code) + .or() + .eq(StIvtCutpointivt::getPoint_code, code); + return getOne(lam); + } + /** * 获取实体基础信息 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java index 48fae38c8..f214352dc 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java @@ -78,7 +78,7 @@ public interface ISchBasePointService extends IService { List getWindRollNotTaskPoints(String vehicleType); /** - * 根据条件获取点位 + * 根据条件获取点位 (纯找点,没有校验任务!!!) * @param area 生产区域(车间) * @param region 区域 * @param pointType 点位类型 @@ -97,4 +97,15 @@ public interface ISchBasePointService extends IService { * @return / */ List getHotNotTaskPoint(String area, String region, String pointType, String pointStatus); + + /** + * 从点位查找以下条件可用的没任务点位 + * @param area 生产区域 + * @param region 区域 + * @param pointType 点位类型 + * @param pointStatus 点位状态 + * @param vehicleType 载具类型 + * @return / + */ + List getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index 7faf54f49..eb141c78f 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -34,4 +34,6 @@ public interface SchBasePointMapper extends BaseMapper { * @return / */ List getHotNotTaskPoint(String area, String region, String pointType, String pointStatus); + + List getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType); } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 554f7f7ba..66193d981 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -36,4 +36,26 @@ AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status '07' AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code)) + diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java index 5592e31b0..c7fe6da96 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java @@ -230,4 +230,9 @@ public class SchBasePointServiceImpl extends ServiceImpl getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType) { + return pointMapper.getAllBusinessNotTaskPoint(area, region, pointType, pointStatus, vehicleType); + } + } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java index d61cd4f10..2b2ba7f9f 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java @@ -251,7 +251,7 @@ public abstract class AbstractTask { } /** - * 申请任务 - 暂时不用 + * 申请任务 *

创建task的总入口,会根据自定义的子类去执行创建方法。

* @param param 请求任务的参数(可以是只确定了单个点,也可以是4个点都确定了) * @throws BadRequestException 如果创建失败 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java index 45fe87f81..a23fe9a63 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/auto/AutoInHotTrussTask.java @@ -120,7 +120,7 @@ public class AutoInHotTrussTask extends AbstractTask { String endPointCode = taskObj.getPoint_code2(); SchBasePoint startPoint = pointService.getById(startPointCode); StIvtHotpointivt endPoint = hotpointivtService.getPointByCode(endPointCode, false); - String orderId = startPoint.getGroup_id(); + String orderId = startPoint.getSource_id(); PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(orderId); // 烘箱位,状态为02:烘烤中 endPoint.setContainer_name(order.getContainer_name()); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java index a20289967..0bd7d9cbd 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/InHotTrussTask.java @@ -146,7 +146,7 @@ public class InHotTrussTask extends AbstractTask { hotDjwPoint.setVehicle_code(taskObj.getVehicle_code()); hotDjwPoint.setPoint_status("1".equals(order.getIs_baking()) ? "2" : "4"); // 此字段存放工单号 - hotDjwPoint.setGroup_id(workorderId); + hotDjwPoint.setSource_id(workorderId); setUpdateByType(hotDjwPoint, taskFinishedType); pointService.update(hotDjwPoint); } else { diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java index b1cefa09b..9bdb7af5a 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/hot/OutHotTrussTask.java @@ -72,19 +72,23 @@ public class OutHotTrussTask extends AbstractTask { @Transactional(rollbackFor = Exception.class) public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { checkTaskOptionStatus(taskObj); - // 出烘箱后,终点状态应改成04:待分切 + // 出烘箱后,终点状态应改成4:待分切 String startPointCode = taskObj.getPoint_code1(); String endPointCode = taskObj.getPoint_code2(); StIvtHotpointivt startPoint = hotpointivtService.getPointByCode(startPointCode, false); SchBasePoint endPoint = pointService.getById(endPointCode); // 终点设置值 endPoint.setVehicle_code(startPoint.getFull_vehicle_code()); - endPoint.setGroup_id(startPoint.getWorkorder_id()); - endPoint.setPoint_status("04"); + endPoint.setSource_id(startPoint.getWorkorder_id()); + endPoint.setPoint_status("4"); setUpdateByType(endPoint, taskFinishedType); pointService.updateById(endPoint); // 起点清空 hotClearPoint(startPoint, taskFinishedType); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } @Override diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollAGVTask.java new file mode 100644 index 000000000..393cbc7c3 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollAGVTask.java @@ -0,0 +1,109 @@ +package org.nl.wms.sch.task_manage.tasks.slitter; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService; +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.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +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; + +import java.util.List; + +import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; +import static org.nl.wms.util.TaskUtils.setUpdateByPC; + +/** + * @Author: lyd + * @Description: 分切收卷辊单独入库任务 + * @Date: 2024/8/13 + */ +@Slf4j +@Component(value = "SlitterSendRollAGVTask") +public class SlitterSendRollAGVTask extends AbstractTask { + private final String THIS_CLASS = SlitterSendRollAGVTask.class.getName(); + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchBasePointService pointService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Autowired + private SlitterSendRollTrussTask slitterSendRollTrussTask; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + // 查找终点:获取收卷辊入口 + // 终点为入口,不校验是否占用 + List endPoints = pointService.getPointByConditions("A1", + "A1-SJGK", "1", null, true); + if (endPoints.size() == 0) { + throw new BadRequestException("收卷辊出口查询失败!"); + } + SchBasePoint point = endPoints.get(0); + task.setPoint_code2(point.getPoint_code()); + // 创建任务 + task.setHandle_class(THIS_CLASS); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + setUpdateByPC(task); + taskService.save(task); + log.info("任务创建成功:{}", task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 起点清除 + String startPointCode = taskObj.getPoint_code1(); + StIvtCutpointivt startPoint = cutpointivtService.getOneByCode(startPointCode); + startPoint.setContainer_name(""); + startPoint.setFull_point_status("01"); + startPoint.setFull_vehicle_code(""); + startPoint.setEmpty_vehicle_code(""); + startPoint.setEmpty_point_status("01"); + PointUtils.setCutUpdateByType(startPoint, taskFinishedType); + cutpointivtService.updateById(startPoint); + // 创建桁架任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("config_code", "SlitterSendRollTrussTask"); + taskParam.put("up_task_code", taskObj.getTask_code()); + taskParam.put("create_mode", GeneralDefinition.TASK_CREATION); + taskParam.put("vehicle_code", taskObj.getVehicle_code()); + taskParam.put("vehicle_type", taskObj.getVehicle_type()); + taskParam.put("device_code", taskObj.getPoint_code2()); + slitterSendRollTrussTask.apply(taskParam); + // 任务更新 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollTrussTask.java new file mode 100644 index 000000000..e8256c3cb --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterSendRollTrussTask.java @@ -0,0 +1,92 @@ +package org.nl.wms.sch.task_manage.tasks.slitter; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +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.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus; +import static org.nl.wms.util.TaskUtils.setUpdateByPC; +import static org.nl.wms.util.PointUtils.setUpdateByType; + +/** + * @Author: lyd + * @Description: 分切送收卷辊任务 + * @Date: 2024/8/12 + */ +@Slf4j +@Component(value = "SlitterSendRollTrussTask") +public class SlitterSendRollTrussTask extends AbstractTask { + private final String THIS_CLASS = SlitterSendRollTrussTask.class.getName(); + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + // 起点一样不记录,直接创建入库任务 + // 查找空位终点即可 + List allSjgkPoints = pointService.getAllBusinessNotTaskPoint("A1", + "A1-SJGK", "3", "1", null); + if (allSjgkPoints.size() == 0) { + throw new BadRequestException("收卷辊不存在空位!"); + } + SchBasePoint endPoint = allSjgkPoints.get(0); + task.setPoint_code2(endPoint.getPoint_code()); + // 创建任务 + task.setHandle_class(THIS_CLASS); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + setUpdateByPC(task); + taskService.save(task); + log.info("任务创建成功:{}", task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 点位更新需要将载具编码设置到终点 + String endPointCode = taskObj.getPoint_code2(); + SchBasePoint endPoint = pointService.getById(endPointCode); + endPoint.setVehicle_code(taskObj.getVehicle_code()); + endPoint.setPoint_status("2"); + // 载具类型是否一开始从工单获取,还是根据编码从物料表查询? + endPoint.setVehicle_type(taskObj.getVehicle_type()); + setUpdateByType(endPoint, taskFinishedType); + pointService.updateById(endPoint); + // 任务更新 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpAGVTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpAGVTask.java new file mode 100644 index 000000000..a627928dd --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpAGVTask.java @@ -0,0 +1,141 @@ +package org.nl.wms.sch.task_manage.tasks.slitter; + +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.wms.pdm.bi.dao.PdmBiRawfoilworkorder; +import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; +import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt; +import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService; +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.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.util.TaskUtils.*; +import static org.nl.wms.util.PointUtils.setCutUpdateByType; +/** + * @Author: lyd + * @Description: + * @Date: 2024/8/12 + */ +@Slf4j +@Component(value = "SlitterUpAGVTask") +public class SlitterUpAGVTask extends AbstractTask { + private final String THIS_CLASS = SlitterUpAGVTask.class.getName(); + @Autowired + private ISchBasePointService pointService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Autowired + private SlitterSendRollTrussTask slitterSendRollTrussTask; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + String requestParam = task.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String isFlag = requestObj.getString("is_flag"); + // 分切上料满料对接位 + String cutPointCode = requestObj.getString("cut_point"); + // 烘箱暂存对接位 + String deviceCode = requestObj.getString("device_code"); + StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(cutPointCode, false); + if ("0".equals(isFlag)) { + // 两点任务 + task.setPoint_code1(deviceCode); + task.setPoint_code2(cutPoint.getFull_point_code()); + } else { + // 收卷辊的入库不做校验 + List sjgPoints = pointService.getPointByConditions("A1", "A1-SJGK", "1", null, false); + if (sjgPoints.size() == 0) { + throw new BadRequestException("收卷辊库找不到入口!"); + } + SchBasePoint sjgPoint = sjgPoints.get(0); + // 四点任务 + task.setPoint_code1(deviceCode); + task.setPoint_code2(cutPoint.getFull_point_code()); + task.setPoint_code3(cutPoint.getEmpty_point_code()); + task.setPoint_code4(sjgPoint.getPoint_code()); + } + // 创建任务 + task.setHandle_class(THIS_CLASS); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + setUpdateByPC(task); + taskService.save(task); + log.info("任务创建成功:{}", task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 任务完成需要任务中的数据设置到分切机上, 工单结束 + String requestParam = taskObj.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String workorderId = requestObj.getString("workorder_id"); + String endPointCode = taskObj.getPoint_code2(); + StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(endPointCode, false); + PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId); + cutPoint.setFull_vehicle_code(taskObj.getVehicle_code2()); + cutPoint.setFull_point_status("02"); + cutPoint.setContainer_name(order.getContainer_name()); + cutPoint.setEmpty_vehicle_code(""); + cutPoint.setEmpty_point_status("01"); + setCutUpdateByType(cutPoint, taskFinishedType); + cutpointivtService.updateById(cutPoint); + if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) { + // 四点任务,还需要创建收卷辊桁架任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("vehicle_code", taskObj.getVehicle_code()); + taskParam.put("up_task_code", taskObj.getTask_code()); + taskParam.put("create_mode", GeneralDefinition.TASK_CREATION); + taskParam.put("config_code", "SlitterSendRollTrussTask"); + taskParam.put("device_code", taskObj.getPoint_code4()); + slitterSendRollTrussTask.apply(taskParam); + } + // 工单结束 + order.setStatus("09"); + order.setFinish_type("02"); + order.setUp_coiler_date(DateUtil.now()); + setRawOrderUpdateByType(order, taskFinishedType); + rawfoilworkorderService.updateById(order); + // 任务更新 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpTrussTask.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpTrussTask.java new file mode 100644 index 000000000..c40d336a3 --- /dev/null +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/tasks/slitter/SlitterUpTrussTask.java @@ -0,0 +1,117 @@ +package org.nl.wms.sch.task_manage.tasks.slitter; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder; +import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService; +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.dao.SchBaseTask; +import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.TaskStatus; +import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition; +import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum; +import org.nl.wms.util.TaskUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +import static org.nl.wms.util.PointUtils.clearPoint; +import static org.nl.wms.util.TaskUtils.*; + +/** + * @Author: lyd + * @Description: 分切上料-出烘箱暂存的桁架任务 + * @Date: 2024/8/12 + */ +@Slf4j +@Component(value = "SlitterUpTrussTask") +public class SlitterUpTrussTask extends AbstractTask { + private final String THIS_CLASS = SlitterUpTrussTask.class.getName(); + @Autowired + private ISchBasePointService pointService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private SlitterUpAGVTask slitterUpAGVTask; + @Autowired + private IpdmBiRawfoilworkorderService rawfoilworkorderService; + @Override + public void create() throws BadRequestException { + + } + + @Override + public void createCompletion(SchBaseTask task) { + // 桁架任务,到对接位。(对接位不作更新。) + String requestParam = task.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String pointCode = requestObj.getString("zc_point"); + // 终点为出口,不校验是否占用 + List endPoints = pointService.getPointByConditions("A1", "A1-HXZC", "1", null, true); + if (endPoints.size() == 0) { + throw new BadRequestException("烘箱出口查询失败!"); + } + SchBasePoint point = endPoints.get(0); + task.setPoint_code1(pointCode); + task.setPoint_code2(point.getPoint_code()); + // 创建任务 + task.setHandle_class(THIS_CLASS); + task.setTask_status(TaskStatus.START_AND_POINT.getCode()); + setUpdateByPC(task); + taskService.save(task); + log.info("任务创建成功:{}", task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 任务完成起点清除,创建AGV任务到达参数中的point_code的点位上 + String requestParam = taskObj.getRequest_param(); + JSONObject requestObj = JSONObject.parseObject(requestParam); + // 分切机满料位 + String isFlag = requestObj.getString("is_flag"); + String workorderId = requestObj.getString("workorder_id"); + String startPointCode = taskObj.getPoint_code1(); + String endPointCode = taskObj.getPoint_code2(); + SchBasePoint startPoint = pointService.getById(startPointCode); + clearPoint(startPoint, taskFinishedType); + // 创建AGV任务 + log.info("点位{}更新完毕,创建AGV任务给分切机上料", startPointCode); + PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId); + JSONObject taskParam = new JSONObject(); + taskParam.put("device_code", endPointCode); + taskParam.put("cut_point", requestObj.getString("device_code")); + // 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊 + taskParam.put("is_flag", isFlag); + // 空轴的编码 + taskParam.put("vehicle_code", taskObj.getVehicle_code()); + taskParam.put("vehicle_code2", order.getWind_roll()); + taskParam.put("workorder_id", workorderId); + taskParam.put("config_code", "SlitterSendRollTrussTask"); + taskParam.put("up_task_code", taskObj.getTask_code()); + taskParam.put("create_mode", GeneralDefinition.TASK_CREATION); + slitterUpAGVTask.apply(taskParam); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + checkTaskOptionStatus(taskObj); + // 取消 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark(GeneralDefinition.TASK_CANCEL); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } +} diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index a4bcf30b2..c3e047aad 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; +import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt; import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt; import org.nl.wms.pdm.ivt.service.IstIvtHotpointivtService; import org.nl.wms.pdm.ivt.service.impl.StIvtHotpointivtServiceImpl; @@ -55,7 +56,7 @@ public class PointUtils { point.setVehicle_type(""); point.setVehicle_code(""); point.setIng_task_code(""); - point.setGroup_id(""); + point.setSource_id(""); point.setVehicle_qty(0); point.setUpdate_time(DateUtil.now()); setUpdateByType(point, taskFinishedType); @@ -71,7 +72,7 @@ public class PointUtils { return; // 空直接退出 } IstIvtHotpointivtService pointService = SpringContextHolder.getBean(StIvtHotpointivtServiceImpl.class); - point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode()); + point.setPoint_status("01"); point.setContainer_name(""); point.setFull_vehicle_code(""); point.setWorkorder_id(""); @@ -162,4 +163,33 @@ public class PointUtils { setHxUpdateByPC(pointObj); } } + + /** + * 点位修改更新信息 + **/ + public static void setCutUpdateByAcs(StIvtCutpointivt pointObj) { + pointObj.setUpdate_optid(GeneralDefinition.ACS_ID); + pointObj.setUpdate_optname(GeneralDefinition.ACS_NAME); + pointObj.setUpdate_time(DateUtil.now()); + } + + /** + * 点位修改更新信息 + **/ + public static void setCutUpdateByPC(StIvtCutpointivt pointObj) { + pointObj.setUpdate_optid(SecurityUtils.getCurrentUserId()); + pointObj.setUpdate_optname(SecurityUtils.getCurrentNickName()); + pointObj.setUpdate_time(DateUtil.now()); + } + + /** + * 分切修改点位更新信息 + */ + public static void setCutUpdateByType(StIvtCutpointivt pointObj, TaskFinishedTypeEnum taskFinishedType) { + if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { + setCutUpdateByAcs(pointObj); + } else { + setCutUpdateByPC(pointObj); + } + } } diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java index 7bd033b57..6da251819 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/TaskUtils.java @@ -228,4 +228,25 @@ public class TaskUtils { throw new BadRequestException("任务已被取消!"); } } + + + public static void setRawOrderUpdateAcs(PdmBiRawfoilworkorder order) { + order.setUpdate_optid(GeneralDefinition.ACS_ID); + order.setUpdate_optname(GeneralDefinition.ACS_NAME); + order.setUpdate_time(DateUtil.now()); + } + + public static void setRawOrderUpdatePC(PdmBiRawfoilworkorder order) { + order.setUpdate_optid(SecurityUtils.getCurrentUserId()); + order.setUpdate_optname(SecurityUtils.getCurrentNickName()); + order.setUpdate_time(DateUtil.now()); + } + + public static void setRawOrderUpdateByType(PdmBiRawfoilworkorder order, TaskFinishedTypeEnum taskFinishedType) { + if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) { + setRawOrderUpdateAcs(order); + } else { + setRawOrderUpdatePC(order); + } + } } diff --git a/lms2/nladmin-ui/src/views/wms/pdm/ivt/cutpointivt/index.vue b/lms2/nladmin-ui/src/views/wms/pdm/ivt/cutpointivt/index.vue index 3585337ed..577f2467a 100644 --- a/lms2/nladmin-ui/src/views/wms/pdm/ivt/cutpointivt/index.vue +++ b/lms2/nladmin-ui/src/views/wms/pdm/ivt/cutpointivt/index.vue @@ -150,18 +150,19 @@ + + - diff --git a/lms2/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue b/lms2/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue index e781bda6b..2c54486aa 100644 --- a/lms2/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue +++ b/lms2/nladmin-ui/src/views/wms/pdm/order/slittingplan/index.vue @@ -361,7 +361,14 @@ - + + + @@ -474,14 +481,14 @@ - +