From ff45d87bb80e4b45a6e158f6009039b0a18004a2 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 21 Oct 2025 14:33:15 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E4=BC=98=E5=8C=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dao/MdPbStoragevehicleinfo.java | 7 + .../MdPbStoragevehicleextServiceImpl.java | 68 ++++++- .../PdaGeneralPublicController.java | 7 + .../service/PdaGeneralPublicService.java | 9 + .../impl/PdaGeneralPublicServiceImpl.java | 20 ++ .../controller/SchBasePointController.java | 14 ++ .../service/ISchBasePointService.java | 12 ++ .../service/impl/SchBasePointServiceImpl.java | 37 ++++ .../service/util/tasks/CheckMoveTask.java | 10 +- .../util/tasks/CombinedBoxMoveTask.java | 2 +- .../service/util/tasks/EmpVehicleOutTask.java | 7 +- .../service/util/tasks/InsideDtlMoveTask.java | 191 ++++++++++++++++++ .../service/util/tasks/InsideMoveTask.java | 2 +- .../service/util/tasks/PieceBoxMoveTask.java | 2 +- .../dao/mapper/StIvtCheckdtlMapper.java | 1 + .../dao/mapper/StIvtCheckdtlMapper.xml | 4 + .../dao/mapper/StIvtPieceBoxDtlMapper.xml | 2 +- .../service/impl/OutBillServiceImpl.java | 4 +- .../service/impl/SelectOutServiceImpl.java | 1 + .../impl/StIvtCheckmstServiceImpl.java | 2 +- .../service/impl/StIvtMoveinvServiceImpl.java | 166 +++++++++++++-- .../service/impl/VehicleOutServiceImpl.java | 10 +- .../src/views/wms/sch/point/index.vue | 36 ++++ .../src/views/wms/sch/point/schBasePoint.js | 19 +- .../views/wms/st/checkbill/CheckDialog.vue | 37 +++- 25 files changed, 627 insertions(+), 43 deletions(-) create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideDtlMoveTask.java diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicleinfo.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicleinfo.java index 9d91065..41a74e7 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicleinfo.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/MdPbStoragevehicleinfo.java @@ -1,5 +1,6 @@ package org.nl.wms.basedata_manage.service.dao; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -129,4 +130,10 @@ public class MdPbStoragevehicleinfo implements Serializable { */ private String ext_id; + /** + * 料箱类型(手持返回前端使用) + */ + @TableField(exist = false) + private String box_type; + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java index 253df0f..6e78200 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java @@ -130,6 +130,19 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl().lambda() + .set(GroupPlate::getQuality_type, quality_type) + .eq(GroupPlate::getMaterial_id, extDao.getMaterial_id()) + .eq(GroupPlate::getStoragevehicle_code, extDao.getStoragevehicle_code()) + .eq(GroupPlate::getPcsn, extDao.getPcsn()) + ); + return; + } + // 分配相同库区且有空托盘的仓位 JSONObject jsonParam = new JSONObject(); jsonParam.put("stor_id", attrDao.getStor_id()); @@ -181,6 +194,7 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl attrList = new ArrayList<>(); Structattr structattr = new Structattr(); List vehicleAttrList = iStructattrService.list( @@ -192,13 +206,13 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl wrapper.isNotNull(Structattr::getStoragevehicle_code).or().ne(Structattr::getStoragevehicle_code, "")) - .orderByAsc(Structattr::getPlacement_type) + .orderByDesc(Structattr::getPlacement_type) .orderByAsc(Structattr::getStruct_code) ); if (ObjectUtil.isNotEmpty(vehicleAttrList)) { - structattr = vehicleAttrList.get(0); + attrList = vehicleAttrList; } else { - List attrList = iStructattrService.list( + attrList = iStructattrService.list( new QueryWrapper().lambda() .eq(Structattr::getStor_id, jsonParam.getString("stor_id")) .eq(Structattr::getSect_code, jsonParam.getString("sectc_code")) @@ -210,14 +224,56 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl().lambda() + .eq(Structattr::getBlock_num, attr.getBlock_num()) + .eq(Structattr::getCol_num, attr.getCol_num()) + .eq(Structattr::getLayer_num, attr.getLayer_num()) + .eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位")) + ); + if (ObjectUtil.isEmpty(shallowStartAttr)) { + throw new BadRequestException("仓位【"+attr.getStruct_code()+"】对应的浅货位不存在!"); + } + + if (shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { + structattr = attr; + break; + } else { + continue; + } + } else { + // 浅货位 + Structattr shallowStartAttr = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getBlock_num, attr.getBlock_num()) + .eq(Structattr::getCol_num, attr.getCol_num()) + .eq(Structattr::getLayer_num, attr.getLayer_num()) + .eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("深货位")) + ); + if (ObjectUtil.isEmpty(shallowStartAttr)) { + throw new BadRequestException("仓位【"+attr.getStruct_code()+"】对应的深货位不存在!"); + } + + if (shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { + structattr = attr; + break; + } else { + continue; + } } } - if (ObjectUtil.isEmpty(structattr)) { + if (ObjectUtil.isEmpty(structattr.getStruct_code())) { throw new BadRequestException("当前库区【" + jsonParam.getString("sectc_code") + "】没有可用仓位"); } + return structattr; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaGeneralPublicController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaGeneralPublicController.java index 6bcddb9..85b52a6 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaGeneralPublicController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/controller/PdaGeneralPublicController.java @@ -82,4 +82,11 @@ public class PdaGeneralPublicController { return new ResponseEntity<>(pdaGeneralPublicService.queryVehicleType(), HttpStatus.OK); } + @PostMapping("/queryNowVehicle") + @Log("查询当前载具类型") + @SaIgnore + public ResponseEntity queryNowVehicle(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaGeneralPublicService.queryNowVehicle(whereJson), HttpStatus.OK); + } + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaGeneralPublicService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaGeneralPublicService.java index 8ef40d8..fb64647 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaGeneralPublicService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/PdaGeneralPublicService.java @@ -74,4 +74,13 @@ public interface PdaGeneralPublicService { * @return PdaResponse */ PdaResponse queryVehicleType(); + + /** + * 查询当前载具类型 + * @param whereJson { + * vehicle_code:载具编码 + * } + * @return PdaResponse + */ + PdaResponse queryNowVehicle(JSONObject whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaGeneralPublicServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaGeneralPublicServiceImpl.java index 43ba166..1209397 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaGeneralPublicServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/general_management/service/impl/PdaGeneralPublicServiceImpl.java @@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService; import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService; import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; import org.nl.wms.pda.general_management.service.PdaGeneralPublicService; import org.nl.wms.pda.util.PDAEnum; import org.nl.wms.pda.util.PdaResponse; @@ -54,6 +56,12 @@ public class PdaGeneralPublicServiceImpl implements PdaGeneralPublicService { @Autowired private PdmBomCallMaterialMapper pdmBomCallMaterialMapper; + /** + * 载具信息服务 + */ + @Autowired + private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; + @Override public PdaResponse queryGroupQuality() { return PdaResponse.requestParamOk(PDAEnum.QUALITY_TYPE.getDict()); @@ -110,4 +118,16 @@ public class PdaGeneralPublicServiceImpl implements PdaGeneralPublicService { public PdaResponse queryVehicleType() { return PdaResponse.requestParamOk(PDAEnum.TASK_TYPE.getDict()); } + + @Override + public PdaResponse queryNowVehicle(JSONObject whereJson) { + MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("vehicle_code")) + ); + if (ObjectUtil.isNotEmpty(vehicleDao)) { + vehicleDao.setBox_type(vehicleDao.getStoragevehicle_type()); + } + return PdaResponse.requestParamOk(vehicleDao); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java index cddb975..93344cb 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/controller/SchBasePointController.java @@ -95,4 +95,18 @@ public class SchBasePointController { public ResponseEntity getPointDtl(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(schBasePointService.getPointDtl(whereJson),HttpStatus.OK); } + + @Log("清载具") + @PostMapping("/cleanVehicle") + public ResponseEntity cleanVehicle(@RequestBody SchBasePoint dao) { + schBasePointService.cleanVehicle(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("清物料") + @PostMapping("/cleanMaterial") + public ResponseEntity cleanMaterial(@RequestBody SchBasePoint dao) { + schBasePointService.cleanMaterial(dao); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index 494ae0e..3e88077 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -112,4 +112,16 @@ public interface ISchBasePointService extends IService { * @return */ JSONObject getPointDtl(JSONObject whereJson); + + /** + * 清载具 + * @param dao 实体类 + */ + void cleanVehicle(SchBasePoint dao); + + /** + * 清物料 + * @param dao 实体类 + */ + void cleanMaterial(SchBasePoint dao); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index 097e204..f59a142 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -6,6 +6,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.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -29,6 +30,8 @@ import org.nl.wms.sch_manage.service.dto.SchBasePointQuery; import org.nl.wms.sch_manage.service.util.PointUtils; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +62,9 @@ public class SchBasePointServiceImpl extends ServiceImpl queryAll(SchBasePointQuery whereJson, PageQuery page) { IPage pages = new Page<>(page.getPage() + 1, page.getSize()); @@ -272,4 +278,35 @@ public class SchBasePointServiceImpl extends ServiceImpl().lambda() + .eq(GroupPlate::getStoragevehicle_code, dao.getVehicle_code()) + ); + if (ObjectUtil.isEmpty(plateDao)) { + throw new BadRequestException("当前点位载具信息不存在组盘信息!"); + } + iMdPbGroupplateService.removeById(plateDao); + + // 更新点位信息 + dao.setPoint_status(IOSEnum.POINT_STATUS.code("空载具")); + dao.setIng_task_code(""); + this.updateById(dao); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckMoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckMoveTask.java index 4da7620..77f045d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckMoveTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CheckMoveTask.java @@ -197,10 +197,14 @@ public class CheckMoveTask extends AbstractTask { @Override public void taskConfirm(String task_code) { SchBaseTask taskObj = taskService.getByCode(task_code); + StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtCheckdtl::getTask_id, taskObj.getTask_id()) + ); // 更新起点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .eq(Structattr::getStruct_code, dtlDao.getStruct_code()) .set(Structattr::getStoragevehicle_code, null) ); // 更新终点 @@ -213,10 +217,6 @@ public class CheckMoveTask extends AbstractTask { ); // 更新盘点明细状态 - StIvtCheckdtl dtlDao = iStIvtCheckdtlService.getOne( - new QueryWrapper().lambda() - .eq(StIvtCheckdtl::getTask_id, taskObj.getTask_id()) - ); dtlDao.setStatus(IOSEnum.CHECK_DTL_STATUS.code("盘点中")); iStIvtCheckdtlService.updateById(dtlDao); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxMoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxMoveTask.java index f6d022a..3aca906 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxMoveTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxMoveTask.java @@ -226,7 +226,7 @@ public class CombinedBoxMoveTask extends AbstractTask { // 更新起点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .eq(Structattr::getStruct_code, dtlDao.getTurnout_struct_code()) .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) .set(Structattr::getStoragevehicle_code, null) ); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleOutTask.java index 1fa7f13..82bf46b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleOutTask.java @@ -74,6 +74,7 @@ public class EmpVehicleOutTask extends AbstractTask { task.setPoint_code1(json.getString("point_code1")); task.setPoint_code2(json.getString("point_code2")); task.setPoint_code3(json.getString("point_code3")); + task.setPoint_code4(json.getString("point_code4")); task.setVehicle_code(json.getString("vehicle_code")); task.setRequest_param(json.toString()); task.setPriority(json.getString("Priority")); @@ -177,7 +178,7 @@ public class EmpVehicleOutTask extends AbstractTask { // 更新起点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .eq(Structattr::getStruct_code, taskObj.getPoint_code4()) .set(Structattr::getStoragevehicle_code, null) .set(Structattr::getIs_emptyvehicle, IOSConstant.IS_DELETE_NO) .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) @@ -203,10 +204,10 @@ public class EmpVehicleOutTask extends AbstractTask { @Transactional public void cancelTask(SchBaseTask taskObj) { - // 更新终点 + // 更新起点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .eq(Structattr::getStruct_code, taskObj.getPoint_code4()) .set(Structattr::getTaskdtl_id, null) .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) ); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideDtlMoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideDtlMoveTask.java new file mode 100644 index 0000000..cf1697d --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideDtlMoveTask.java @@ -0,0 +1,191 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.ACSTaskTypeEnum; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + *

+ * 库内移库任务类子任务 + *

+ * + * @author Liuxy + * @since 2025-10-17 + */ +@Component(value = "InsideDtlMoveTask") +@TaskType("InsideDtlMoveTask") +public class InsideDtlMoveTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 移库主表服务类 + */ + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + /** + * 库内移库任务类 + */ + @Autowired + private InsideMoveTask insideMoveTask; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(CodeUtil.getNewCode("TASK_CODE")); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(InsideDtlMoveTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setVehicle_code2(json.getString("vehicle_code2")); + task.setGroup_id(json.getString("group_id")); + task.setContact_task(json.getString("contact_task")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setIs_wait(json.getString("is_wait")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + + // 下发任务 + this.sendTaskOne(task.getTask_id()); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_id(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + + acsTaskDto.setVehicle_type(IOSConstant.ONE); + acsTaskDto.setIs_wait(IOSConstant.ZERO); + acsTaskDto.setTask_type(ACSTaskTypeEnum.CTU_TASK.getCode()); + + acsTaskDto.setPriority(IOSConstant.ONE); + acsTaskDto.setAgv_system_type(IOSConstant.THREE); + acsTaskDto.setIs_get_pause(IOSConstant.ZERO); + acsTaskDto.setIs_put_pause(IOSConstant.ZERO); + + return acsTaskDto; + } + + @Override + @Transactional + 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)) { + // 更新明细状态 + SchBaseTask dtlTask = taskService.getById(taskObj.getContact_task()); + iStIvtMoveinvService.executing(dtlTask); + + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + @Transactional + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + @Transactional + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj); + } + + @Override + public void taskConfirm(String task_code) { + } + + @Override + public JSONObject resultWeigh(SchBaseTask taskObj) { + return null; + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 更新任务状态 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + + // 查询所有任务都是否为完成 + List taskList = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getContact_task, taskObj.getContact_task()) + ); + boolean all_finished = taskList.stream() + .allMatch(row -> row.getTask_status().equals(TaskStatus.FINISHED.getCode())); + + if (all_finished) { + insideMoveTask.finishTask(taskService.getById(taskObj.getContact_task())); + } + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 更新任务状态 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideMoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideMoveTask.java index 8ccab81..65a4c05 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideMoveTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/InsideMoveTask.java @@ -82,7 +82,7 @@ public class InsideMoveTask extends AbstractTask { taskService.save(task); // 下发任务 - this.sendTaskOne(task.getTask_id()); + // this.sendTaskOne(task.getTask_id()); return task.getTask_id(); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxMoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxMoveTask.java index 7a1c848..8f3951f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxMoveTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxMoveTask.java @@ -234,7 +234,7 @@ public class PieceBoxMoveTask extends AbstractTask { // 更新起点 iStructattrService.update( new UpdateWrapper().lambda() - .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .eq(Structattr::getStruct_code, dtlDao.getTurnout_struct_code()) .set(Structattr::getStoragevehicle_code, null) ); // 更新终点 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java index 0522b99..bcacd54 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java @@ -23,6 +23,7 @@ public interface StIvtCheckdtlMapper extends BaseMapper { * * @param whereJson { * check_id 主表标识 + * vehicle_code 载具编码 * } * @return List */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml index 7ac3e1b..d57d0d1 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml @@ -29,6 +29,10 @@ AND ios.check_id = #{param.check_id} + + AND + dtl.storagevehicle_code = #{param.vehicle_code} + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.xml index 22b5005..377d2ea 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.xml @@ -25,7 +25,7 @@ AND mst.id = #{param.id} - + ORDER BY qty diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java index 93440a0..482f068 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java @@ -1157,6 +1157,7 @@ public class OutBillServiceImpl extends ServiceImpl } @Override + @Transactional public void createTask(IOStorInvDis ioStorInvDis, String point_code, IOStorInv ioStorInv) { /* * 判断是否是深浅货位 @@ -1168,7 +1169,8 @@ public class OutBillServiceImpl extends ServiceImpl * 如果不是则报错提示 */ // 调用校验方法 - String struct_code = iOutBillService.checkIsHinder(ioStorInvDis); + String struct_code = ioStorInvDis.getStruct_code(); + iOutBillService.checkIsHinder(ioStorInvDis); //创建任务 JSONObject task_form = new JSONObject(); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/SelectOutServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/SelectOutServiceImpl.java index a0a7210..e5cd3d1 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/SelectOutServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/SelectOutServiceImpl.java @@ -210,6 +210,7 @@ public class SelectOutServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), @@ -305,26 +312,33 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl().lambda() + .set(SchBaseTask::getContact_task, task_id) + .eq(SchBaseTask::getTask_id, result.getString("task_id")) + ); + } + } - JSONObject jsonTask = new JSONObject(); - jsonTask.put("point_code1", result.getString("out_point")); - jsonTask.put("point_code2", dtlDao.getTurnin_struct_code()); - jsonTask.put("vehicle_code", dtlDao.getStoragevehicle_code()); - jsonTask.put("vehicle_code2", dtlDao.getStoragevehicle_code2()); - task_id = task.create(jsonTask); // 更新明细任务标识 dtlDao.setTask_id(task_id); - if (ObjectUtil.isNotEmpty(result.getString("task_id"))) { - // 更新关联任务标识 - iSchBaseTaskService.update( - new UpdateWrapper().lambda() - .set(SchBaseTask::getContact_task, task_id) - .eq(SchBaseTask::getTask_id, result.getString("task_id")) - ); - } } iStIvtMoveinvdtlService.updateBatchById(dtlList); @@ -335,6 +349,115 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl().lambda() + .eq(Structattr::getBlock_num, startAttr.getBlock_num()) + .eq(Structattr::getCol_num, startAttr.getCol_num()) + .eq(Structattr::getLayer_num, startAttr.getLayer_num()) + .eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位")) + ); + // 判断浅货位是否被锁定 + if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { + throw new BadRequestException("当前起点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务"); + } + + if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) { + // 有货:创建子任务 + createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id); + } + } + + // ---------- 判断终点是否阻挡 ---------- + if (endAttr.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("深货位"))) { + // 查询对应浅货位 + Structattr shallowStartAttr = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getBlock_num, endAttr.getBlock_num()) + .eq(Structattr::getCol_num, endAttr.getCol_num()) + .eq(Structattr::getLayer_num, endAttr.getLayer_num()) + .eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("浅货位")) + ); + + // 判断浅货位是否被锁定 + if (!shallowStartAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { + throw new BadRequestException("当前终点仓位对应的浅货位【"+shallowStartAttr.getStruct_code()+"】被锁定,无法下发任务"); + } + + if (ObjectUtil.isNotEmpty(shallowStartAttr.getStoragevehicle_code())) { + // 有货:创建子任务 + createInsideDtlMoveTask(shallowStartAttr.getStruct_code(),shallowStartAttr.getStruct_code(),shallowStartAttr.getStoragevehicle_code(),task_id); + } + } else { + // 查询对应深货位 + Structattr attr = iStructattrService.getOne( + new QueryWrapper().lambda() + .eq(Structattr::getBlock_num, endAttr.getBlock_num()) + .eq(Structattr::getCol_num, endAttr.getCol_num()) + .eq(Structattr::getLayer_num, endAttr.getLayer_num()) + .eq(Structattr::getPlacement_type, IOSEnum.PLACEMENT_TYPE.code("深货位")) + ); + + // 判断深货位是否被锁定 + if (!attr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { + throw new BadRequestException("当前终点仓位对应的深货位【"+attr.getStruct_code()+"】被锁定,无法下发任务"); + } + // 判断是否有货 + if (ObjectUtil.isEmpty(attr.getStoragevehicle_code())) { + throw new BadRequestException("移库会造成仓位【"+attr.getStruct_code()+"】为空洞,无法下发任务"); + } + } + + // ---------- 创建起点任务 ---------- + createInsideDtlMoveTask(startAttr.getStruct_code(),endAttr.getStruct_code(),startAttr.getStoragevehicle_code(),task_id); + + // ---------- 创建终点任务 ---------- + if (ObjectUtil.isNotEmpty(endAttr.getStoragevehicle_code())) { + // 终点不为空则需要创建终点到起点的任务 + createInsideDtlMoveTask(endAttr.getStruct_code(),startAttr.getStruct_code(),endAttr.getStoragevehicle_code(),task_id); + } + + return task_id; + } + /** * 判断是否浅货位阻挡移库 * @@ -401,7 +524,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl attrList = autoDivStruct(whereJson); Structattr structattr = new Structattr(); + String point_code1 = ""; for (Structattr attrDao : attrList) { // 判断是深浅货位 if (attrDao.getPlacement_type().equals(IOSEnum.PLACEMENT_TYPE.code("浅货位"))) { // 直接创建出库任务 structattr = attrDao; + point_code1 = attrDao.getStruct_code(); break; } else { // 深货位:判断浅货位是否有货 @@ -106,6 +108,7 @@ public class VehicleOutServiceImpl implements VehicleOutService { if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { // 直接创建出库任务 structattr = attrDao; + point_code1 = attrDao.getStruct_code(); break; } else { continue; @@ -116,6 +119,7 @@ public class VehicleOutServiceImpl implements VehicleOutService { if (shallowAttr.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))) { // 创建移库任务 structattr = createMoveTask(attrDao, shallowAttr); + point_code1 = attrDao.getStruct_code(); break; } else { continue; @@ -137,12 +141,14 @@ public class VehicleOutServiceImpl implements VehicleOutService { // 创建任务 JSONObject jsonTask = new JSONObject(); - jsonTask.put("point_code1", structattr.getStruct_code()); + jsonTask.put("point_code1", point_code1); jsonTask.put("point_code2", IOSConstant.CZW_POINT); // 判断终点是否是称重位 jsonTask.put("point_code3", whereJson.getString("point_code").equals(IOSConstant.CZW_POINT) ? "" : whereJson.getString("point_code") ); + // 用于任务完成时更新原仓位 + jsonTask.put("point_code4", structattr.getStruct_code()); jsonTask.put("vehicle_code", structattr.getStoragevehicle_code()); String task_id = empVehicleOutTask.create(jsonTask); diff --git a/wms/nladmin-ui/src/views/wms/sch/point/index.vue b/wms/nladmin-ui/src/views/wms/sch/point/index.vue index f691cfc..4631c40 100644 --- a/wms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/wms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -158,6 +158,28 @@ > 解锁 + + 清载具 + + + 清物料 + @@ -531,6 +553,20 @@ export default { this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.toQuery() }) + }, + cleanVehicle() { + const data = this.$refs.table.selection[0] + crudSchBasePoint.cleanVehicle(data).then(res => { + this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) + }, + cleanMaterial() { + const data = this.$refs.table.selection[0] + crudSchBasePoint.cleanMaterial(data).then(res => { + this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) } } } diff --git a/wms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js b/wms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js index ffd505f..328e590 100644 --- a/wms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js +++ b/wms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js @@ -72,4 +72,21 @@ export function getPointDtl(data) { }) } -export default { add, edit, del, changeUsed, getPointList, changeLock, getConfirm, putConfirm, getPointDtl } +export function cleanVehicle(data) { + return request({ + url: 'api/schBasePoint/cleanVehicle', + method: 'post', + data: data + }) +} + +export function cleanMaterial(data) { + return request({ + url: 'api/schBasePoint/cleanMaterial', + method: 'post', + data: data + }) +} + +export default { add, edit, del, changeUsed, getPointList, changeLock, + getConfirm, putConfirm, getPointDtl, cleanVehicle, cleanMaterial } diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue b/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue index 1b4d773..0a2477b 100644 --- a/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue @@ -79,7 +79,31 @@
- 盘点明细 + + + + + + 搜索 + + +
{ this.storlist = res @@ -185,7 +211,12 @@ export default { this.crud.toQuery() }, getDtl() { - check.getDtl({ 'check_id': this.form1.check_id }).then(res => { + check.getDtl({ 'check_id': this.form1.check_id, 'vehicle_code': this.vehicle_code }).then(res => { + for (const dtl of res) { + if (dtl.fac_qty === null) { + dtl.fac_qty = dtl.base_qty + } + } this.tableData = res }) },