diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java index 8700379..1542ab3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java @@ -45,4 +45,18 @@ public class StructIvtController { iMdPbStoragevehicleextService.statusChange(whereJson); return new ResponseEntity<>(HttpStatus.OK); } + + @PostMapping("/ivtLock") + @Log("库存锁定") + public ResponseEntity ivtLock(@RequestBody JSONObject whereJson) { + iMdPbStoragevehicleextService.ivtLock(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/unIvtLock") + @Log("库存解锁") + public ResponseEntity unIvtLock(@RequestBody JSONObject whereJson) { + iMdPbStoragevehicleextService.unIvtLock(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java index 49b838e..99d3eb3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java @@ -47,4 +47,16 @@ public interface IMdPbStoragevehicleextService extends IService + * 点对点送货 控制层 + *

+ * + * @author Liuxy + * @since 2025-08-25 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pointToPoint") +@Slf4j +public class PointToPointController { + + @Autowired + private PointToPointService pointToPointService; + + @GetMapping + @Log("获取点对点任务信息") + public ResponseEntity queryAll(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(pointToPointService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增点对点") + public ResponseEntity create(@Validated @RequestBody JSONObject whereJson) { + pointToPointService.create(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/PointToPointService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/PointToPointService.java new file mode 100644 index 0000000..23bb2ff --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/PointToPointService.java @@ -0,0 +1,44 @@ +package org.nl.wms.sch_manage.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; + +import java.util.Map; + +/** + *

+ * 点对点送货 服务类 + *

+ * + * @author Liuxy + * @since 2025-08-25 + */ +public interface PointToPointService { + + /** + * 分页查询 + * + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增载具入库 + * + * @param whereJson { + * storagevehicle_code: 载具编码 + * point_code1: 起点点位 + * point_code2: 终点点位 + * task_type: 运送类型 + * material_id: 物料标识 + * material_code: 物料编码 + * material_name: 物料名称 + * material_spec: 物料规格 + * material_qty: 物料重量 + * } + */ + void create(JSONObject whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java index 20e26a2..97fdaf3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBasePoint.java @@ -159,4 +159,6 @@ public class SchBasePoint implements Serializable { private String task_warn; @TableField(exist = false) private String storagevehicle_code; + @TableField(exist = false) + private String storagevehicle_type; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java index 48b8c8f..d704591 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java @@ -122,6 +122,10 @@ public class SchBaseTask implements Serializable { private String update_time; + /** + * 任务类型 + * 1-载具,2-料箱 + */ private String task_type; private String contact_task; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index 78579c4..c9fa249 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -28,9 +28,16 @@ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java index abef0aa..afbc9c6 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java @@ -43,4 +43,14 @@ public interface SchBaseTaskMapper extends BaseMapper { * @return JSONObject */ IPage getVehicleTask(Page page, @Param("param") Map whereJson); + + /** + * 获取点对点送货任务 + * @param page + * @param whereJson { + * storagevehicle_code + * } + * @return JSONObject + */ + IPage getPointtoPoint(Page page, @Param("param") Map whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml index b05726f..997a40c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml @@ -127,4 +127,27 @@ ORDER BY t.create_time DESC + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/PointToPointServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/PointToPointServiceImpl.java new file mode 100644 index 0000000..80187b3 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/PointToPointServiceImpl.java @@ -0,0 +1,65 @@ +package org.nl.wms.sch_manage.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.wms.sch_manage.service.PointToPointService; +import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; +import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Map; + +/** + *

+ * 点对点送货 实现类 + *

+ * + * @author Liuxy + * @since 2025-08-25 + */ +@Service +public class PointToPointServiceImpl implements PointToPointService { + + /** + * 任务服务 + */ + @Autowired + private SchBaseTaskMapper schBaseTaskMapper; + + /** + * 点对点任务类 + */ + @Resource + private PdaPointTask pdaPointTask; + + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + whereJson.put("config_code", PdaPointTask.class.getSimpleName()); + return schBaseTaskMapper.getPointtoPoint(new Page<>(page.getPage() + 1, page.getSize()), whereJson); + } + + @Override + @Transactional + public void create(JSONObject whereJson) { + // 起点和终点不能相同 + if (whereJson.getString("point_code1").equals(whereJson.getString("point_code2"))) { + throw new BadRequestException("起点和终点不能相同!"); + } + // 创建点对点任务 + JSONObject jsonTask = new JSONObject(); + jsonTask.put("point_code1", whereJson.getString("point_code1")); + jsonTask.put("point_code2", whereJson.getString("point_code2")); + jsonTask.put("vehicle_code", whereJson.getString("storagevehicle_code")); + jsonTask.put("task_type", whereJson.getString("task_type")); + jsonTask.put("material_id", whereJson.getString("material_id")); + jsonTask.put("material_qty", whereJson.getString("material_qty")); + pdaPointTask.create(jsonTask); + } +} 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 3b2779d..49a6c3f 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 @@ -22,6 +22,7 @@ import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.dao.mapper.SchBaseRegionMapper; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -163,7 +164,9 @@ public class SchBasePointServiceImpl extends ServiceImpl() - .eq(SchBasePoint::getRegion_code, region.getRegion_code())); + .eq(ObjectUtil.isNotEmpty(region.getRegion_code()),SchBasePoint::getRegion_code, region.getRegion_code()) + .eq(SchBasePoint::getIs_used, IOSConstant.ONE) + ); } @Override diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java index 078cae7..6638e9d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java @@ -159,6 +159,7 @@ public class BackInTask extends AbstractTask { iSchBasePointService.update( new UpdateWrapper().lambda() .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIng_task_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackOutTask.java index fbbbc25..f056be2 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackOutTask.java @@ -172,6 +172,7 @@ public class BackOutTask extends AbstractTask { new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) ); // 任务完成 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxInTask.java index e43aabd..188aa0a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/CombinedBoxInTask.java @@ -179,6 +179,7 @@ public class CombinedBoxInTask extends AbstractTask { iSchBasePointService.update( new UpdateWrapper().lambda() .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIng_task_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) 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 b8f185e..9c68a52 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 @@ -230,7 +230,7 @@ public class CombinedBoxMoveTask extends AbstractTask { .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) - + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 更新移库明细状态 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/DetainInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/DetainInTask.java index 287ba66..a5a1b1f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/DetainInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/DetainInTask.java @@ -160,6 +160,7 @@ public class DetainInTask extends AbstractTask { iSchBasePointService.update( new UpdateWrapper().lambda() .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIng_task_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleInTask.java index f0b3ddb..9bcdd48 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/EmpVehicleInTask.java @@ -154,6 +154,7 @@ public class EmpVehicleInTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getIos_id, null) + .set(SchBasePoint::getIng_task_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) ); // 更新终点 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 b4cee89..f8fa749 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 @@ -169,6 +169,7 @@ public class EmpVehicleOutTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空载具")) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 更新任务 taskObj.setRemark("已完成"); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandInTask.java index 483ba25..f45ca1a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandInTask.java @@ -161,7 +161,7 @@ public class HandInTask extends AbstractTask { .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - + .set(SchBasePoint::getIng_task_code, null) ); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandOutTask.java index cc7a9df..d63276b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HandOutTask.java @@ -160,6 +160,7 @@ public class HandOutTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HotOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HotOutTask.java index ce54d23..bd2fc31 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HotOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/HotOutTask.java @@ -160,6 +160,7 @@ public class HotOutTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java index ba53841..da41b0a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PdaPointTask.java @@ -157,6 +157,7 @@ public class PdaPointTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) + .set(SchBasePoint::getIng_task_code, null) ); iStructattrService.update( new UpdateWrapper().lambda() @@ -169,6 +170,7 @@ public class PdaPointTask extends AbstractTask { new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) .set(taskObj.getTask_type().equals(TaskEnum.TASK_TYPE.code("载具")), SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空载具")) .set(!taskObj.getTask_type().equals(TaskEnum.TASK_TYPE.code("载具")), diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxInTask.java new file mode 100644 index 0000000..e7b893f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxInTask.java @@ -0,0 +1,251 @@ +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 com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +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.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.sch_manage.enums.TaskEnum; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +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.IOSEnum; +import org.nl.wms.warehouse_management.service.IMdPbGroupplateService; +import org.nl.wms.warehouse_management.service.IRawAssistIStorService; +import org.nl.wms.warehouse_management.service.IStIvtPieceBoxDtlService; +import org.nl.wms.warehouse_management.service.IStIvtPieceBoxMstService; +import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + *

+ * 拼箱入库任务类 + *

+ * + * @author Liuxy + * @since 2025-08-27 + */ +@Component(value = "PieceBoxInTask") +@TaskType("PieceBoxInTask") +public class PieceBoxInTask extends AbstractTask { + @Autowired + private ISchBaseTaskService taskService; + + /** + * 入库服务 + */ + @Resource + private IRawAssistIStorService rawAssistIStorService; + + /** + * 分配明细mapper + */ + @Resource + private IOStorInvDisMapper ioStorInvDisMapper; + + /** + * 点位服务 + */ + @Autowired + private ISchBasePointService iSchBasePointService; + + /** + * 组盘记录服务 + */ + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; + + /** + * 拼箱主表服务 + */ + @Autowired + private IStIvtPieceBoxMstService iStIvtPieceBoxMstService; + + /** + * 拼箱明细服务 + */ + @Autowired + private IStIvtPieceBoxDtlService iStIvtPieceBoxDtlService; + + @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(PieceBoxInTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setMaterial_id(json.getString("material_id")); + task.setMaterial_qty(json.getBigDecimal("material_qty")); + task.setGroup_id(json.getString("group_id")); + task.setRequest_param(json.toString()); + task.setTask_type(TaskEnum.TASK_TYPE.code("料箱")); + task.setPriority(json.getString("Priority")); + 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.setPriority(taskDao.getPriority()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + acsTaskDto.setTask_type("1"); + + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) { + throw new BadRequestException("任务状态必须为生成才能取消任务"); + } + this.cancelTask(taskObj); + + } + + @Transactional(rollbackFor = Exception.class) + public void finishTask(SchBaseTask taskObj) { + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("已完成"); + taskService.updateById(taskObj); + rawAssistIStorService.taskFinish(taskObj); + // 更新起点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIng_task_code, null) + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) + + ); + this.taskConfirm(taskObj.getTask_code()); + } + + @Transactional(rollbackFor = Exception.class) + public void cancelTask(SchBaseTask taskObj) { + // 取消任务 + taskService.update(new LambdaUpdateWrapper() + .set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是")) + .set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode()) + .set(SchBaseTask::getRemark, "已取消") + .eq(SchBaseTask::getTask_id, taskObj.getTask_id()) + ); + //分配表清除任务 + ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getTask_id, null) + .set(IOStorInvDis::getPoint_code, null) + .set(IOStorInvDis::getIs_issued, 0) + .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成")) + .eq(IOStorInvDis::getTask_id, taskObj.getTask_id()) + ); + + // 更新任务状态 + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("已取消"); + taskService.updateById(taskObj); + } + + @Override + public void taskConfirm(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + // 查询分配明细 + IOStorInvDis disDao = ioStorInvDisMapper.selectOne( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getTask_id, taskObj.getTask_id()) + ); + + // 查询拼箱明细记录并更新状态 + StIvtPieceBoxDtl boxDtlDao = iStIvtPieceBoxDtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtPieceBoxDtl::getIn_task_id, taskObj.getTask_id()) + ); + boxDtlDao.setBill_status(IOSEnum.PIECE_DTL_STATUS.code("完成")); + iStIvtPieceBoxDtlService.updateById(boxDtlDao); + // 更新主表状态 + iStIvtPieceBoxMstService.updateStatus(boxDtlDao.getPiece_id()); + + // 更新组盘记录信息 + iMdPbGroupplateService.update( + new UpdateWrapper().lambda() + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) + .set(GroupPlate::getQty, disDao.getPlan_qty()) + .eq(GroupPlate::getMaterial_id, boxDtlDao.getMaterial_id()) + .eq(GroupPlate::getPcsn, boxDtlDao.getPcsn()) + .eq(GroupPlate::getStoragevehicle_code, boxDtlDao.getVehicle_code()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + ); + } +} 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 new file mode 100644 index 0000000..35df361 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/PieceBoxMoveTask.java @@ -0,0 +1,268 @@ +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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +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.basedata_manage.service.IMdPbStoragevehicleextService; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +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.IOSEnum; +import org.nl.wms.warehouse_management.service.*; +import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 拼箱移库任务类 + *

+ * + * @author Liuxy + * @since 2025-08-21 + */ +@Component(value = "PieceBoxMoveTask") +@TaskType("PieceBoxMoveTask") +public class PieceBoxMoveTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 移库主表服务类 + */ + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + /** + * 移库明细服务类 + */ + @Autowired + private IStIvtMoveinvdtlService iStIvtMoveinvdtlService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 点位服务 + */ + @Autowired + private ISchBasePointService iSchBasePointService; + + /** + * 库存记录服务 + */ + @Autowired + private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + + /** + * 组盘记录服务 + */ + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; + + /** + * 拼箱主表服务 + */ + @Autowired + private IStIvtPieceBoxMstService iStIvtPieceBoxMstService; + + /** + * 拼箱明细服务 + */ + @Autowired + private IStIvtPieceBoxDtlService iStIvtPieceBoxDtlService; + + @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(PieceBoxMoveTask.class.getSimpleName()); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setGroup_id(json.getString("group_id")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + 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.setPriority(taskDao.getPriority()); + acsTaskDto.setVehicle_code(taskDao.getVehicle_code()); + acsTaskDto.setTask_type("1"); + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + iStIvtMoveinvService.executing(taskObj); + 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 + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { + throw new BadRequestException("只能取消生成中的任务!"); + } + this.cancelTask(taskObj); + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 完成任务 + this.taskConfirm(taskObj.getTask_code()); + // 更新任务状态 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 删除任务 + StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getTask_id, taskObj.getTask_id()) + ); + iStIvtMoveinvService.cancelTask(dtlDao); + + // 更新拼箱箱记录状态 + StIvtPieceBoxDtl boxDtlDao = iStIvtPieceBoxDtlService.getById(dtlDao.getSource_bill_code()); + boxDtlDao.setBill_status(IOSEnum.PIECE_DTL_STATUS.code("生成")); + boxDtlDao.setOut_task_id(""); + iStIvtPieceBoxDtlService.updateById(boxDtlDao); + + // 更新主表状态 + iStIvtPieceBoxMstService.updateStatus(boxDtlDao.getPiece_id()); + + // 更新任务状态 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } + + @Override + public void taskConfirm(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getTask_id, taskObj.getTask_id()) + ); + + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, taskObj.getPoint_code1()) + .set(Structattr::getStoragevehicle_code, null) + ); + // 更新终点 + iSchBasePointService.update( + new UpdateWrapper().lambda() + .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) + ); + + // 更新移库明细状态 + dtlDao.setWork_status(IOSEnum.MOVE_DTL_STATUS.code("完成")); + iStIvtMoveinvdtlService.updateById(dtlDao); + // 更新移库主表状态 + iStIvtMoveinvService.updateMstStatus(dtlDao.getMoveinv_id()); + + // 查询拼箱明细 + StIvtPieceBoxDtl boxDtlDao = iStIvtPieceBoxDtlService.getById(dtlDao.getSource_bill_code()); + // 删除库存记录 + iMdPbStoragevehicleextService.remove( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, dtlDao.getStoragevehicle_code()) + .eq(MdPbStoragevehicleext::getPcsn, dtlDao.getPcsn()) + .eq(MdPbStoragevehicleext::getMaterial_id, boxDtlDao.getMaterial_id()) + ); + + // 更新组盘记录为出库 + iMdPbGroupplateService.update( + new UpdateWrapper().lambda() + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + .eq(GroupPlate::getStoragevehicle_code, dtlDao.getStoragevehicle_code()) + .eq(GroupPlate::getPcsn, dtlDao.getPcsn()) + .eq(GroupPlate::getMaterial_id, boxDtlDao.getMaterial_id()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) + ); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/QualityOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/QualityOutTask.java index 492471e..24068db 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/QualityOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/QualityOutTask.java @@ -160,6 +160,7 @@ public class QualityOutTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ReceiveOutTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ReceiveOutTask.java index 1e100c1..c0be6aa 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ReceiveOutTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/ReceiveOutTask.java @@ -178,6 +178,7 @@ public class ReceiveOutTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()) .set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code()) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料")) + .set(SchBasePoint::getIng_task_code, taskObj.getTask_id()) ); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/SelectBackInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/SelectBackInTask.java index 75f1c90..683f910 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/SelectBackInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/SelectBackInTask.java @@ -212,7 +212,7 @@ public class SelectBackInTask extends AbstractTask { .set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位")) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) - + .set(SchBasePoint::getIng_task_code, null) ); } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/PieceBoxController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/PieceBoxController.java new file mode 100644 index 0000000..9553e32 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/PieceBoxController.java @@ -0,0 +1,84 @@ +package org.nl.wms.warehouse_management.controller; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.warehouse_management.service.IStIvtPieceBoxMstService; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxMst; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 拼箱管理 控制层 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/pieceBox") +@Slf4j +public class PieceBoxController { + + @Autowired + private IStIvtPieceBoxMstService iStIvtPieceBoxMstService; + + @GetMapping + @Log("分页查询") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtPieceBoxMstService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增拼箱管理") + public ResponseEntity create(@RequestBody PieceBoxMstDto dto) { + iStIvtPieceBoxMstService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改拼箱管理") + public ResponseEntity update(@RequestBody PieceBoxMstDto dto) { + iStIvtPieceBoxMstService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除合箱") + public ResponseEntity delete(@RequestBody Set ids) { + iStIvtPieceBoxMstService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/queryPieceDtl") + @Log("获取明细") + public ResponseEntity queryPieceDtl(@RequestBody PieceBoxMstDto dto) { + return new ResponseEntity<>(iStIvtPieceBoxMstService.queryPieceDtl(dto), HttpStatus.OK); + } + + @PostMapping("/pieceMove") + @Log("下发拼箱移库任务") + public ResponseEntity pieceMove(@RequestBody StIvtPieceBoxMst dao) { + iStIvtPieceBoxMstService.pieceMove(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getConfirm") + @Log("取货确认") + public ResponseEntity getConfirm(@RequestBody StIvtPieceBoxDtl dao) { + iStIvtPieceBoxMstService.getConfirm(dao); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index 095e28e..13e6a9c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -38,7 +38,7 @@ public enum IOSEnum { )), // 移库业务类型 - MOVE_BILL_TYPE(MapOf.of("库内移库","2001", "合箱移库","2002")), + MOVE_BILL_TYPE(MapOf.of("库内移库","2001", "合箱移库","2002", "拼箱移库","2003")), // 入库任务配置类编码 IN_CONFIG_CODE(MapOf.of("0001","DetainInTask", "0002", "BackInTask", @@ -52,7 +52,7 @@ public enum IOSEnum { // 移库任务配置类编码 MOVE_CONFIG_CODE(MapOf.of("2001","InsideMoveTask", "2002", "CombinedBoxMoveTask", - "2003", "2003", "2004", "2004", "2005", "2005" + "2003", "PieceBoxMoveTask", "2004", "2004" )), //入库分配明细状态 @@ -67,7 +67,7 @@ public enum IOSEnum { // 锁类型 LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2" , "移入锁", "3", "移出锁", "4", "空托盘入库锁", "5", "空托盘出库锁", "6", - "其他锁","9" + "库存锁","7", "其他锁","9" )), // 库区编码 @@ -108,6 +108,12 @@ public enum IOSEnum { // 盘点明细状态 CHECK_DTL_STATUS(MapOf.of("生成", "10", "盘点中", "20", "已盘点", "30", "完成", "99")), + // 拼箱主表状态 + PIECE_MST_STATUS(MapOf.of("生成", "10", "拼箱中", "20", "完成", "99")), + + // 拼箱明细表状态 + PIECE_DTL_STATUS(MapOf.of("生成", "10", "拼箱中", "20", "完成", "99")), + ; private Map code; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java index ebfde6b..27bfc76 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java @@ -98,8 +98,9 @@ public interface IRawAssistIStorService extends IService { * @param whereJson { *

* } + * @return task_id 任务标识 */ - void divPoint(Map whereJson); + String divPoint(Map whereJson); /** * 强制确认 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java index f3fd172..d1fecd2 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java @@ -110,4 +110,11 @@ public interface IStIvtMoveinvService extends IService { * @param dao 移库主表实体类 */ void sendTask(StIvtMoveinv dao); + + /** + * 下发一个任务 + * @param dao 移库主表实体类 + * @return task_id 任务标识 + */ + String sendOneTask(StIvtMoveinv dao); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxDtlService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxDtlService.java new file mode 100644 index 0000000..efa483e --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxDtlService.java @@ -0,0 +1,40 @@ +package org.nl.wms.warehouse_management.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dto.PieceBoxDtlDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; + +import java.util.List; + +/** + *

+ * 拼单信息明细表 服务类 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +public interface IStIvtPieceBoxDtlService extends IService { + + /** + * 新增拼箱明细 + * @param dto PieceBoxMstDto + */ + void insertDtl(PieceBoxMstDto dto); + + /** + * 获取明细 + * @param dto PieceBoxMstDto + * @return List + */ + List queryPieceDtl(PieceBoxMstDto dto); + + /** + * 根据主表标识查询明细 + * @param id 主表标识 + * @return List + */ + List getByMstId(String id); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxMstService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxMstService.java new file mode 100644 index 0000000..72a53e2 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtPieceBoxMstService.java @@ -0,0 +1,80 @@ +package org.nl.wms.warehouse_management.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxMst; +import org.nl.wms.warehouse_management.service.dto.PieceBoxDtlDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 拼单信息主表 服务类 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +public interface IStIvtPieceBoxMstService extends IService { + + /** + * 分页查询 + * + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增拼箱管理 + * + * @param dto PieceBoxMstDto + */ + void create(PieceBoxMstDto dto); + + /** + * 修改拼箱管理 + * + * @param dto PieceBoxMstDto + */ + void update(PieceBoxMstDto dto); + + /** + * 删除拼箱 + * + * @param ids id标识集合 + */ + void delete(Set ids); + + /** + * 获取明细 + * + * @param dto PieceBoxMstDto + * @return List + */ + List queryPieceDtl(PieceBoxMstDto dto); + + /** + * 更新主表状态 + * @param piece_id 标识 + */ + void updateStatus(String piece_id); + + /** + * 下发拼箱移库任务 + * @param dao 主表实体类 + */ + void pieceMove(StIvtPieceBoxMst dao); + + /** + * 取货确认 + * @param dao 明细实体类 + */ + void getConfirm(StIvtPieceBoxDtl dao); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/GroupPlate.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/GroupPlate.java index 09b09c8..07464d4 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/GroupPlate.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/GroupPlate.java @@ -96,7 +96,7 @@ public class GroupPlate implements Serializable { /** * 料箱类型 - * 1-大料箱,2-小料箱 + * 1-大料箱,2-小料箱,3-焊条桶 */ private String box_type; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/IOStorInvDtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/IOStorInvDtl.java index 653d127..27f1d0a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/IOStorInvDtl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/IOStorInvDtl.java @@ -131,4 +131,10 @@ public class IOStorInvDtl implements Serializable { * (质检出库,领料出库,烘干出库) */ private String select_vehicle; + + /** + * 拣选组盘载具 + * (质检出库,领料出库,烘干出库) + */ + private String new_vehicle; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxDtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxDtl.java new file mode 100644 index 0000000..793e811 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxDtl.java @@ -0,0 +1,83 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 拼单信息明细表 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_pieceboxdtl") +public class StIvtPieceBoxDtl implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标识 + */ + @TableId(value = "id") + private String id; + + /** + * 拼箱主表标识 + */ + private String piece_id; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 载具编码 + */ + private String vehicle_code; + + /** + * 批次 + */ + private String pcsn; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 拼箱仓位 + */ + private String struct_code; + + /** + * 明细状态 + */ + private String bill_status; + + /** + * 是否取货 + */ + private String is_get; + + /** + * 移出任务标识 + */ + private String out_task_id; + + /** + * 移入任务标识 + */ + private String in_task_id; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxMst.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxMst.java new file mode 100644 index 0000000..d428608 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtPieceBoxMst.java @@ -0,0 +1,97 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 拼单信息主表 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_pieceboxmst") +public class StIvtPieceBoxMst implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标识 + */ + @TableId(value = "id") + private String id; + + /** + * 单据编码 + */ + private String bill_code; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 拼箱数量 + */ + private BigDecimal total_qty; + + /** + * 计量单位标识 + */ + private String qty_unit_id; + + /** + * 计量单位名称 + */ + private String qty_unit_name; + + /** + * 单据状态 + */ + private String bill_status; + + /** + * 明细数 + */ + private Integer detail_count; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人标识 + */ + private String create_id; + + /** + * 创建人 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.java new file mode 100644 index 0000000..d1035af --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.java @@ -0,0 +1,27 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dto.PieceBoxDtlDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; + +import java.util.List; + +/** + *

+ * 拼单信息明细表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +public interface StIvtPieceBoxDtlMapper extends BaseMapper { + + /** + * 获取明细 + * @param dto PieceBoxMstDto + * @return List + */ + List queryPieceDtl(@Param("param") PieceBoxMstDto dto); +} 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 new file mode 100644 index 0000000..22b5005 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxDtlMapper.xml @@ -0,0 +1,31 @@ + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.java new file mode 100644 index 0000000..ec00ec7 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxMst; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; + +import java.util.Map; + +/** + *

+ * 拼单信息主表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +public interface StIvtPieceBoxMstMapper extends BaseMapper { + + /** + * 拣选管理分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage queryAllByPage(Page page, @Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.xml new file mode 100644 index 0000000..f2043fc --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtPieceBoxMstMapper.xml @@ -0,0 +1,36 @@ + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxDtlDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxDtlDto.java new file mode 100644 index 0000000..98b8624 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxDtlDto.java @@ -0,0 +1,65 @@ +package org.nl.wms.warehouse_management.service.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; + +import java.util.List; + +/** + *

+ * 拼单管理明细dto + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Data +public class PieceBoxDtlDto extends StIvtPieceBoxDtl { + + /** + * 物料编号 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 物料批次 + */ + private String material_spec; + + /** + * 载具编码 + */ + private String storagevehicle_code; + + /** + * 单位标识 + */ + private String qty_unit_name; + + /** + * 移出任务号 + */ + private String out_task_code; + + /** + * 移出任务状态 + */ + private String out_task_status; + + /** + * 移入任务号 + */ + private String in_task_code; + + /** + * 移入任务状态 + */ + private String in_task_status; + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxMstDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxMstDto.java new file mode 100644 index 0000000..535b4cb --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/PieceBoxMstDto.java @@ -0,0 +1,51 @@ +package org.nl.wms.warehouse_management.service.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxMst; + +import java.util.List; + +/** + *

+ * 拼单管理dto + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Data +public class PieceBoxMstDto extends StIvtPieceBoxMst { + + /** + * 物料编号 + */ + private String material_code; + + /** + * 物料名称 + */ + private String material_name; + + /** + * 物料批次 + */ + private String material_spec; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 明细json + */ + private List tableData; + + /** + * 明细实体 + */ + private List dtlDaoList; + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/SelectOutDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/SelectOutDto.java index ac3c2ad..de69cda 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/SelectOutDto.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/SelectOutDto.java @@ -66,6 +66,11 @@ public class SelectOutDto extends IOStorInvDtl { */ private String select_vehicle; + /** + * 组盘载具 + */ + private String new_vehicle; + /** * 需求重量 */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/MdPbGroupplateServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/MdPbGroupplateServiceImpl.java index d0b6e0e..d87c235 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/MdPbGroupplateServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/MdPbGroupplateServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.warehouse_management.service.impl; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; @@ -98,9 +99,13 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl rows = (ArrayList) whereJson.get("tableMater"); String point_code = (String) whereJson.get("point_code"); HashMap map = rows.get(0); @@ -555,6 +555,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl().lambda() + .eq(GroupPlate::getStoragevehicle_code, dto.getSelect_vehicle()) + .eq(GroupPlate::getMaterial_id, disDao.getMaterial_id()) + .eq(GroupPlate::getPcsn, dto.getPcsn()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + ); + // 新增组盘信息 + GroupPlate groupPlate = new GroupPlate(); + groupPlate.setStoragevehicle_code(dto.getNew_vehicle()); + groupPlate.setMaterial_id(oldGroup.getMaterial_id()); + groupPlate.setPcsn(oldGroup.getPcsn()); + groupPlate.setQty(dtlDao.getSelect_qty()); + groupPlate.setRemark("拣选组盘"); + groupPlate.setSupp_code(oldGroup.getSupp_code()); + groupPlate.setQuality_time(oldGroup.getQuality_time()); + groupPlate.setProduce_time(oldGroup.getProduce_time()); + groupPlate.setExecution_stand(oldGroup.getExecution_stand()); + groupPlate.setBake_num(oldGroup.getBake_num()); + groupPlate.setQuality_type(oldGroup.getQuality_type()); + iMdPbGroupplateService.create(groupPlate); + } + // 删除其他组盘信息 List deleteGroupDisList = ioStorInvDisMapper.selectList( new QueryWrapper().lambda() diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java index d57a31f..53a1967 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java @@ -297,6 +297,41 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl dtlList = iStIvtMoveinvdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getMoveinv_id, dao.getMoveinv_id()) + ); + + String task_id = ""; + AbstractTask task = taskFactory.getTask(IOSEnum.MOVE_CONFIG_CODE.code(mstDao.getBill_type())); + for (StIvtMoveinvdtl dtlDao : dtlList) { + JSONObject jsonTask = new JSONObject(); + jsonTask.put("point_code1", dtlDao.getTurnout_struct_code()); + 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); + } + iStIvtMoveinvdtlService.updateBatchById(dtlList); + + // 更新主表状态为提交 + dao.setBill_status(IOSEnum.MOVE_MST_STATUS.code("提交")); + this.updateById(dao); + + return task_id; + } + @Override public void updateMstStatus(String moveinv_id) { StIvtMoveinv mstDao = this.getById(moveinv_id); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxDtlServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxDtlServiceImpl.java new file mode 100644 index 0000000..cda43b2 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxDtlServiceImpl.java @@ -0,0 +1,86 @@ +package org.nl.wms.warehouse_management.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.IdUtil; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtPieceBoxDtlService; +import org.nl.wms.warehouse_management.service.dao.StIvtPieceBoxDtl; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtPieceBoxDtlMapper; +import org.nl.wms.warehouse_management.service.dto.PieceBoxDtlDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + *

+ * 拼单信息明细表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Service +public class StIvtPieceBoxDtlServiceImpl extends ServiceImpl implements IStIvtPieceBoxDtlService { + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + @Override + public void insertDtl(PieceBoxMstDto dto) { + List tableData = dto.getTableData(); + // 校验库区是否一致 + List attrList = iStructattrService.list( + new QueryWrapper().lambda() + .in(Structattr::getStruct_code, tableData.stream() + .map(row -> row.getString("struct_code")) + .collect(Collectors.toList()) + ) + ); + boolean is_like = attrList.stream() + .allMatch(row -> row.getSect_code().equals(attrList.get(0).getSect_code())); + if (!is_like) { + throw new BadRequestException("拼箱库区不一致,不允许拼箱!"); + } + + // 需插入的明细记录 + List dtlList = new ArrayList<>(); + for (JSONObject json : tableData) { + StIvtPieceBoxDtl dtlDao = new StIvtPieceBoxDtl(); + dtlDao.setId(IdUtil.getStringId()); + dtlDao.setPiece_id(dto.getId()); + dtlDao.setMaterial_id(json.getString("material_id")); + dtlDao.setPcsn(json.getString("pcsn")); + dtlDao.setVehicle_code(json.getString("storagevehicle_code")); + dtlDao.setQty(json.getBigDecimal("qty")); + dtlDao.setStruct_code(json.getString("struct_code")); + dtlDao.setBill_status(IOSEnum.PIECE_DTL_STATUS.code("生成")); + dtlList.add(dtlDao); + } + this.saveBatch(dtlList); + } + + @Override + public List queryPieceDtl(PieceBoxMstDto dto) { + return this.baseMapper.queryPieceDtl(dto); + } + + @Override + public List getByMstId(String id) { + return this.list( + new QueryWrapper().lambda() + .eq(StIvtPieceBoxDtl::getPiece_id, id) + ); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxMstServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxMstServiceImpl.java new file mode 100644 index 0000000..32b63fc --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtPieceBoxMstServiceImpl.java @@ -0,0 +1,475 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; +import org.nl.wms.basedata_manage.service.dao.Structattr; +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.tasks.EmpVehicleInTask; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.*; +import org.nl.wms.warehouse_management.service.dao.*; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtPieceBoxMstMapper; +import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxDtlDto; +import org.nl.wms.warehouse_management.service.dto.PieceBoxMstDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 拼单信息主表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-08-26 + */ +@Service +public class StIvtPieceBoxMstServiceImpl extends ServiceImpl implements IStIvtPieceBoxMstService { + + /** + * 计量单位服务 + */ + @Autowired + private IMdPbMeasureunitService iMdPbMeasureunitService; + + /** + * 拼箱明细服务 + */ + @Autowired + private IStIvtPieceBoxDtlService iStIvtPieceBoxDtlService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 物料服务 + */ + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; + + /** + * 移库单主表服务 + */ + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + /** + * 任务服务 + */ + @Autowired + private ISchBaseTaskService iSchBaseTaskService; + + /** + * 载具入库任务服务 + */ + @Autowired + private EmpVehicleInTask empVehicleInTask; + + /** + * 入库服务 + */ + @Autowired + private IRawAssistIStorService iRawAssistIStorService; + + /** + * 入库明细服务 + */ + @Autowired + private IOStorInvDtlMapper ioStorInvDtlMapper; + + /** + * 组盘记录服务 + */ + @Autowired + private IMdPbGroupplateService iMdPbGroupplateService; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + @Transactional + public void create(PieceBoxMstDto dto) { + // 新增主表 + StIvtPieceBoxMst mst = new StIvtPieceBoxMst(); + mst.setId(IdUtil.getStringId()); + mst.setBill_code(CodeUtil.getNewCode("PIECE_BOX_CODE")); + mst.setMaterial_id(dto.getMaterial_id()); + mst.setBiz_date(dto.getBiz_date().substring(0, 10)); + mst.setStor_id(dto.getStor_id()); + mst.setTotal_qty(dto.getTotal_qty()); + // 计量单位默认重量KG + MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG"); + mst.setQty_unit_id(unitDao.getMeasure_unit_id()); + mst.setQty_unit_name(unitDao.getUnit_name()); + mst.setBill_status(IOSEnum.PIECE_MST_STATUS.code("生成")); + mst.setDetail_count(dto.getDetail_count()); + mst.setRemark(dto.getRemark()); + mst.setCreate_id(SecurityUtils.getCurrentUserId()); + mst.setCreate_name(SecurityUtils.getCurrentNickName()); + mst.setCreate_time(DateUtil.now()); + this.save(mst); + + // 新增明细 + dto.setId(mst.getId()); + iStIvtPieceBoxDtlService.insertDtl(dto); + } + + @Override + @Transactional + public void update(PieceBoxMstDto dto) { + // 更新主表 + StIvtPieceBoxMst mstDao = this.getById(dto.getId()); + mstDao.setMaterial_id(dto.getMaterial_id()); + mstDao.setBiz_date(dto.getBiz_date().substring(0, 10)); + mstDao.setStor_id(dto.getStor_id()); + mstDao.setTotal_qty(dto.getTotal_qty()); + mstDao.setDetail_count(dto.getDetail_count()); + mstDao.setRemark(dto.getRemark()); + this.updateById(mstDao); + + // 删除明细老明细 + iStIvtPieceBoxDtlService.remove( + new QueryWrapper().lambda() + .eq(StIvtPieceBoxDtl::getPiece_id, mstDao.getId()) + ); + + // 新增明细 + iStIvtPieceBoxDtlService.insertDtl(dto); + } + + @Override + @Transactional + public void delete(Set ids) { + this.removeByIds(ids); + iStIvtPieceBoxDtlService.remove( + new QueryWrapper().lambda() + .in(StIvtPieceBoxDtl::getPiece_id, ids) + ); + } + + @Override + public List queryPieceDtl(PieceBoxMstDto dto) { + return iStIvtPieceBoxDtlService.queryPieceDtl(dto); + } + + @Override + @Transactional + public void updateStatus(String piece_id) { + StIvtPieceBoxMst mstDao = this.getById(piece_id); + + // 查询明细 + List dtlDaoList = iStIvtPieceBoxDtlService.getByMstId(piece_id); + boolean is_create = dtlDaoList.stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.PIECE_DTL_STATUS.code("生成"))); + + boolean is_piece = dtlDaoList.stream() + .anyMatch(row -> row.getBill_status().equals(IOSEnum.PIECE_DTL_STATUS.code("拼箱中"))); + + boolean is_confirm = dtlDaoList.stream() + .allMatch(row -> row.getBill_status().equals(IOSEnum.PIECE_DTL_STATUS.code("完成"))); + + if (is_create) { + mstDao.setBill_status(IOSEnum.PIECE_MST_STATUS.code("生成")); + } else if (is_piece) { + mstDao.setBill_status(IOSEnum.PIECE_MST_STATUS.code("拼箱中")); + } else if (is_confirm) { + mstDao.setBill_status(IOSEnum.PIECE_MST_STATUS.code("完成")); + } + this.updateById(mstDao); + } + + @Override + @Transactional + public void pieceMove(StIvtPieceBoxMst dao) { + StIvtPieceBoxMst mstDao = this.getById(dao.getId()); + + // 查询明细 + List dtlDaoList = iStIvtPieceBoxDtlService.list( + new QueryWrapper().lambda() + .eq(StIvtPieceBoxDtl::getPiece_id, mstDao.getId()) + .eq(StIvtPieceBoxDtl::getBill_status, IOSEnum.PIECE_DTL_STATUS.code("生成")) + ); + + // 查询仓位 + List attrList = iStructattrService.list( + new QueryWrapper().lambda() + .in(Structattr::getStruct_code, dtlDaoList.stream() + .map(StIvtPieceBoxDtl::getStruct_code) + .collect(Collectors.toList()) + ) + ); + // 判断仓位是否被占用 + boolean is_lock = attrList.stream() + .allMatch(row -> row.getLock_type().equals(IOSEnum.LOCK_TYPE.code("未锁定"))); + if (!is_lock) { + throw new BadRequestException("当前明细有仓位被锁定,不允许下发任务!"); + } + + // 创建移库任务 + PieceBoxMstDto pieceBoxMstDto = new PieceBoxMstDto(); + pieceBoxMstDto.setId(mstDao.getId()); + pieceBoxMstDto.setStor_id(mstDao.getStor_id()); + pieceBoxMstDto.setBill_code(mstDao.getBill_code()); + pieceBoxMstDto.setDtlDaoList(dtlDaoList); + createPieceMove(pieceBoxMstDto); + + // 更新主表状态 + mstDao.setBill_status(IOSEnum.PIECE_MST_STATUS.code("拼箱中")); + this.updateById(mstDao); + } + + @Override + @Transactional + public void getConfirm(StIvtPieceBoxDtl dao) { + // 判断当前移出任务是否完成 + SchBaseTask outTask = iSchBaseTaskService.getById(dao.getOut_task_id()); + if (!outTask.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("当前移出任务未完成,不允许取货确认!"); + } + + // 如果是最后一个取货确认则生成拼箱入库单据,否则则生成空载具入库任务 + List dtlDaoList = iStIvtPieceBoxDtlService.getByMstId(dao.getPiece_id()); + long count = dtlDaoList.stream() + .filter(row -> row.getIs_get().equals(IOSConstant.ZERO)) + .count(); + if (count == 1) { + // 下发拼箱入库任务 + String task_id = createPieceBoxIn(dao); + // 更新明细 + dao.setIn_task_id(task_id); + dao.setIs_get(IOSConstant.ONE); + iStIvtPieceBoxDtlService.updateById(dao); + } else { + // 创建空载具入库任务 + JSONObject jsonTask = new JSONObject(); + jsonTask.put("point_code1", IOSConstant.CZW_POINT); + jsonTask.put("point_code2", dao.getStruct_code()); + jsonTask.put("vehicle_code", dao.getVehicle_code()); + String task_id = empVehicleInTask.create(jsonTask); + + // 删除组盘记录 + iMdPbGroupplateService.remove( + new QueryWrapper().lambda() + .eq(GroupPlate::getStoragevehicle_code, dao.getVehicle_code()) + .eq(GroupPlate::getPcsn, dao.getPcsn()) + .eq(GroupPlate::getMaterial_id, dao.getMaterial_id()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + ); + + // 更新明细 + dao.setIn_task_id(task_id); + dao.setIs_get(IOSConstant.ONE); + dao.setBill_status(IOSEnum.PIECE_DTL_STATUS.code("完成")); + iStIvtPieceBoxDtlService.updateById(dao); + // 更新主表 + updateStatus(dao.getPiece_id()); + } + + } + + /** + * 创建拼箱移库单据 + * @param pieceBoxMstDto 主表dto + */ + private void createPieceMove(PieceBoxMstDto pieceBoxMstDto) { + List dtlDaoList = pieceBoxMstDto.getDtlDaoList(); + // 查询仓位 + List attrList = iStructattrService.list( + new QueryWrapper().lambda() + .in(Structattr::getStruct_code, dtlDaoList.stream() + .map(StIvtPieceBoxDtl::getStruct_code) + .collect(Collectors.toList()) + ) + ); + + for (StIvtPieceBoxDtl dtlDao : dtlDaoList) { + // 组织主表数据 + MoveInsertDto moveInsertDto = new MoveInsertDto(); + moveInsertDto.setBill_type(IOSEnum.MOVE_BILL_TYPE.code("拼箱移库")); + moveInsertDto.setBiz_date(DateUtil.today()); + moveInsertDto.setStor_id(pieceBoxMstDto.getStor_id()); + moveInsertDto.setTotal_qty(dtlDao.getQty()); + moveInsertDto.setDetail_count(BigDecimal.ONE); + moveInsertDto.setBill_status(IOSEnum.MOVE_MST_STATUS.code("生成")); + moveInsertDto.setRemark("由拼箱单据创建!"); + + // 组织明细 + List dtlList = new ArrayList<>(); + Structattr attrDao = attrList.stream() + .filter(row -> row.getStruct_code().equals(dtlDao.getStruct_code())) + .findFirst().orElse(null); + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("turnout_sect_code", attrDao.getSect_code()); + jsonDtl.put("turnout_struct_code", attrDao.getStruct_code()); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(dtlDao.getMaterial_id()); + jsonDtl.put("material_code", materDao.getMaterial_code()); + jsonDtl.put("material_id", materDao.getMaterial_id()); + jsonDtl.put("pcsn", dtlDao.getPcsn()); + MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("KG"); + jsonDtl.put("qty_unit_id", unitDao.getMeasure_unit_id()); + jsonDtl.put("qty_unit_name", unitDao.getUnit_name()); + jsonDtl.put("qty", dtlDao.getQty()); + jsonDtl.put("turnin_sect_code", IOSConstant.CZW_POINT); + jsonDtl.put("turnin_struct_code", IOSConstant.CZW_POINT); + jsonDtl.put("work_status", IOSEnum.MOVE_DTL_STATUS.code("生成")); + jsonDtl.put("storagevehicle_code", dtlDao.getVehicle_code()); + jsonDtl.put("source_bill_code", dtlDao.getId()); + dtlList.add(jsonDtl); + moveInsertDto.setTableData(dtlList); + + // 调用移库单新增 + String move_id = iStIvtMoveinvService.create(moveInsertDto); + // 下发任务 + StIvtMoveinv moveDao = new StIvtMoveinv(); + moveDao.setMoveinv_id(move_id); + String task_id = iStIvtMoveinvService.sendOneTask(moveDao); + + dtlDao.setBill_status(IOSEnum.PIECE_DTL_STATUS.code("拼箱中")); + dtlDao.setOut_task_id(task_id); + } + // 更新明细 + iStIvtPieceBoxDtlService.updateBatchById(dtlDaoList); + } + + /** + * 下发拼箱入库任务 + * @param dao 明细实体类 + */ + private String createPieceBoxIn(StIvtPieceBoxDtl dao) { + // 查询拼箱主表数据 + StIvtPieceBoxMst boxMstDao = this.getById(dao.getPiece_id()); + + // 组织主表数据 + Map jsonMst = new HashMap<>(); + jsonMst.put("stor_id", boxMstDao.getStor_id()); + jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); + jsonMst.put("total_qty", boxMstDao.getTotal_qty()); + jsonMst.put("detail_count", 1); + jsonMst.put("bill_type", IOSEnum.IN_BILL_TYPE.code("拼箱入库")); + jsonMst.put("biz_date", DateUtil.now()); + + // 组织明细数据 + ArrayList tableData = new ArrayList<>(); + HashMap dtl = new HashMap<>(); + dtl.put("storagevehicle_code", dao.getVehicle_code()); + dtl.put("pcsn", dao.getPcsn()); + dtl.put("qty_unit_id", boxMstDao.getQty_unit_id()); + dtl.put("qty_unit_name", boxMstDao.getQty_unit_name()); + dtl.put("qty", boxMstDao.getTotal_qty().toString()); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(dao.getMaterial_id()); + dtl.put("material_code", materDao.getMaterial_code()); + dtl.put("material_name", materDao.getMaterial_name()); + dtl.put("material_id", materDao.getMaterial_id()); + dtl.put("plan_qty",boxMstDao.getTotal_qty().toString()); + dtl.put("ext_code", dao.getId()); + // 调用新增 + tableData.add(dtl); + jsonMst.put("tableData", tableData); + String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst); + + // 调用分配 + // 组织主数据iv + Map jsonDivMst = new HashMap<>(); + jsonDivMst.put("checked", false); + // 组织明细数据 + IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id) + ); + // 查找分配明细 + Map map = new HashMap<>(); + map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id()); + List disDtl = iRawAssistIStorService.getDisDtl(map); + // 查询仓位 + Structattr attrDao = iStructattrService.getByCode(dao.getStruct_code()); + + // 类型转换 + ArrayList tableMater = new ArrayList<>(); + disDtl.forEach(item -> { + item.setSect_id(attrDao.getSect_id()); + item.setSect_code(attrDao.getSect_code()); + item.setSect_name(attrDao.getSect_name()); + item.setStruct_id(attrDao.getStruct_id()); + item.setStruct_code(attrDao.getStruct_code()); + item.setStruct_name(attrDao.getStruct_name()); + tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)); + }); + jsonDivMst.put("tableMater", tableMater); + // 调用分配 + iRawAssistIStorService.divStruct(jsonDivMst); + + // 返回数据 + JSONObject result = new JSONObject(); + result.put("storagevehicle_code", disDtl.get(0).getStoragevehicle_code()); + result.put("point_code", IOSConstant.CZW_POINT); + result.put("sect_id", disDtl.get(0).getSect_id()); + result.put("iostorinv_id", disDtl.get(0).getIostorinv_id()); + // 下发拼箱入库任务 + String task_id = sendTask(result); + return task_id; + } + + /** + * 下发拼箱入库任务 + * + * @param whereJson { + * storagevehicle_code:载具编码 + * point_code:点位编码 + * sect_id:库区 + * iostorinv_id: id + * } + */ + private String sendTask(JSONObject whereJson) { + // 组织主数据 + Map jsonMst = new HashMap<>(); + jsonMst.put("point_code", whereJson.getString("point_code")); + // 组织明细数据 + IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + // 查找分配明细 + Map map = new HashMap<>(); + map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id()); + List disDtl = iRawAssistIStorService.getDisDtl(map); + // 类型转换 + ArrayList tableMater = new ArrayList<>(); + disDtl.forEach(item -> { + tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)); + }); + jsonMst.put("tableMater", tableMater); + + String task_id = iRawAssistIStorService.divPoint(jsonMst); + return task_id; + } +} diff --git a/wms/nladmin-ui/src/views/wms/basedata/group/AddDtl.vue b/wms/nladmin-ui/src/views/wms/basedata/group/AddDtl.vue index 693276b..5eff77f 100644 --- a/wms/nladmin-ui/src/views/wms/basedata/group/AddDtl.vue +++ b/wms/nladmin-ui/src/views/wms/basedata/group/AddDtl.vue @@ -120,7 +120,7 @@ @change="crud.toQuery" > @@ -172,7 +172,7 @@ import crudGroup from '@/views/wms/basedata/group/group' export default { name: 'WeighDialog', mixins: [crud()], - dicts: ['BOX_TYPE', 'QUALITY_TYPE'], + dicts: ['storagevehicle_type', 'QUALITY_TYPE'], props: { dialogShow: { type: Boolean, diff --git a/wms/nladmin-ui/src/views/wms/basedata/group/index.vue b/wms/nladmin-ui/src/views/wms/basedata/group/index.vue index 700dde6..a84059a 100644 --- a/wms/nladmin-ui/src/views/wms/basedata/group/index.vue +++ b/wms/nladmin-ui/src/views/wms/basedata/group/index.vue @@ -139,26 +139,20 @@ - - - - - - - - + + @@ -276,6 +270,7 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import rrOperation from '@crud/RR.operation' +import { format, subDays } from 'date-fns' const defaultForm = { group_id: null, @@ -305,7 +300,7 @@ export default { components: { pagination, crudOperation, rrOperation, udOperation, AddDtl }, mixins: [presenter(), header(), form(defaultForm), crud()], // 数据字典 - dicts: ['is_used', 'GROUP_STATUS', 'BOX_TYPE', 'QUALITY_TYPE'], + dicts: ['is_used', 'GROUP_STATUS', 'storagevehicle_type', 'QUALITY_TYPE'], cruds() { return CRUD({ title: '组盘记录', @@ -341,9 +336,6 @@ export default { supp_code: [ { required: true, message: '供应商不能为空', trigger: 'blur' } ], - quality_time: [ - { required: true, message: '有效日期不能为空', trigger: 'blur' } - ], produce_time: [ { required: true, message: '生产日期不能为空', trigger: 'blur' } ], @@ -385,7 +377,7 @@ export default { return this.dict.label.GROUP_STATUS[row.status] }, formattBoxType(row) { - return this.dict.label.BOX_TYPE[row.box_type] + return this.dict.label.storagevehicle_type[row.box_type] }, formattQuality(row) { return this.dict.label.QUALITY_TYPE[row.quality_type] diff --git a/wms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue b/wms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue index c1ff366..00c46dd 100644 --- a/wms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue +++ b/wms/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue @@ -46,7 +46,7 @@
- 库存信息: + 详细信息:
@@ -59,30 +59,9 @@ - - - - - - - - - - - - - - - - - - - - -
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 6314e8e..ba073ed 100644 --- a/wms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/wms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -283,25 +283,15 @@ - - - + - - - - - - - + @@ -395,7 +385,7 @@ const defaultForm = { } export default { name: 'Point', - dicts: ['vehicle_type', 'TrueOrFalse'], + dicts: ['storagevehicle_type', 'TrueOrFalse'], components: { PointDialog, ViewDialog, pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { diff --git a/wms/nladmin-ui/src/views/wms/sch/pointtopoint/index.vue b/wms/nladmin-ui/src/views/wms/sch/pointtopoint/index.vue new file mode 100644 index 0000000..e955c07 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/sch/pointtopoint/index.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/sch/pointtopoint/pointtopoint.js b/wms/nladmin-ui/src/views/wms/sch/pointtopoint/pointtopoint.js new file mode 100644 index 0000000..641dd38 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/sch/pointtopoint/pointtopoint.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/pointToPoint', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/pointToPoint/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/pointToPoint', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/wms/nladmin-ui/src/views/wms/st/ivtlock/index.vue b/wms/nladmin-ui/src/views/wms/st/ivtlock/index.vue new file mode 100644 index 0000000..4b6d560 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/ivtlock/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/piecebox/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/piecebox/AddDialog.vue new file mode 100644 index 0000000..f53d587 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/piecebox/AddDialog.vue @@ -0,0 +1,326 @@ + + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/piecebox/AddDtl.vue b/wms/nladmin-ui/src/views/wms/st/piecebox/AddDtl.vue new file mode 100644 index 0000000..b4e8137 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/piecebox/AddDtl.vue @@ -0,0 +1,207 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/piecebox/ConfirmDialog.vue b/wms/nladmin-ui/src/views/wms/st/piecebox/ConfirmDialog.vue new file mode 100644 index 0000000..fd9c0e6 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/piecebox/ConfirmDialog.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/piecebox/index.vue b/wms/nladmin-ui/src/views/wms/st/piecebox/index.vue new file mode 100644 index 0000000..961ba0b --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/piecebox/index.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/piecebox/picecbox.js b/wms/nladmin-ui/src/views/wms/st/piecebox/picecbox.js new file mode 100644 index 0000000..cea3bfd --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/piecebox/picecbox.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/pieceBox', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/pieceBox/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/pieceBox', + method: 'put', + data + }) +} + +export function queryPieceDtl(data) { + return request({ + url: 'api/pieceBox/queryPieceDtl', + method: 'post', + data + }) +} + +export function pieceMove(data) { + return request({ + url: 'api/pieceBox/pieceMove', + method: 'post', + data + }) +} + +export function getConfirm(data) { + return request({ + url: 'api/pieceBox/getConfirm', + method: 'post', + data + }) +} + +export default { add, edit, del, queryPieceDtl, pieceMove, getConfirm } diff --git a/wms/nladmin-ui/src/views/wms/st/selectout/WeighDialog.vue b/wms/nladmin-ui/src/views/wms/st/selectout/WeighDialog.vue index e4c9aa7..e69107e 100644 --- a/wms/nladmin-ui/src/views/wms/st/selectout/WeighDialog.vue +++ b/wms/nladmin-ui/src/views/wms/st/selectout/WeighDialog.vue @@ -76,6 +76,11 @@
+ + + + +
@@ -147,6 +152,7 @@ export default { weigh_qty: 0, iostorinvdtl_id: null, select_vehicle: null, + new_vehicle: null, plan_qty: null }, current: null, diff --git a/wms/nladmin-ui/src/views/wms/st/selectout/index.vue b/wms/nladmin-ui/src/views/wms/st/selectout/index.vue index 8251fa4..749853e 100644 --- a/wms/nladmin-ui/src/views/wms/st/selectout/index.vue +++ b/wms/nladmin-ui/src/views/wms/st/selectout/index.vue @@ -126,6 +126,7 @@ + diff --git a/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js b/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js index 942369c..cea59b8 100644 --- a/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js +++ b/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js @@ -70,4 +70,20 @@ export function statusChange(data) { }) } -export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport, statusChange } +export function ivtLock(data) { + return request({ + url: 'api/structivt/ivtLock', + method: 'post', + data + }) +} + +export function unIvtLock(data) { + return request({ + url: 'api/structivt/unIvtLock', + method: 'post', + data + }) +} + +export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport, statusChange, ivtLock, unIvtLock }