diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/controller/PdaIosInController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/controller/PdaIosInController.java index 8fb1cd7..d9aa6a0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/controller/PdaIosInController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/controller/PdaIosInController.java @@ -123,9 +123,14 @@ public class PdaIosInController { @PostMapping("/zwConfirmIn") @Log("中钨组盘入库确认") public ResponseEntity zwConfirmIn(@RequestBody ZwConfirmInDto dto) { + if(StringUtils.isEmpty(dto.getFormDataCode())){ + throw new IllegalArgumentException("单据编码不能为空!"); + } + if(CollectionUtils.isEmpty(dto.getParamList())){ throw new IllegalArgumentException("请传入参数!"); } + for(ZwConfirmInParamDto paramDto : dto.getParamList()){ if(StringUtils.isBlank(paramDto.getVehicle_code()) || StringUtils.isBlank(paramDto.getSite_code())) throw new IllegalArgumentException("载具且卸货区点位不能为空!"); @@ -152,4 +157,14 @@ public class PdaIosInController { assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code", "group_id", "vehicle_code", "material_code", "qty", "stor_id"); return new ResponseEntity<>(pdaIosInService.confirmReturnMaterial(whereJson),HttpStatus.OK); } + + /** + * 空载具出库 + */ + @PostMapping("vehicleInConfirm") + @Log("空载具入库") + public ResponseEntity vehicleInConfirm(@RequestBody JSONObject whereJson) { + assertNotBlankJson(whereJson, "请求参数不能为空", "sect_code", "vehicle_code", "material_code", "stor_id", "site_code"); + return new ResponseEntity<>(pdaIosInService.vehicleInConfirm(whereJson), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/dto/ZwConfirmInDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/dto/ZwConfirmInDto.java index 924782c..bd06a5d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/dto/ZwConfirmInDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/dto/ZwConfirmInDto.java @@ -6,5 +6,6 @@ import java.util.List; @Data public class ZwConfirmInDto { + private String formDataCode; private List paramList; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaIosInService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaIosInService.java index d9ecf12..fa40bf6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaIosInService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/PdaIosInService.java @@ -154,4 +154,16 @@ public interface PdaIosInService { * @return PdaResponse */ PdaResponse confirmReturnMaterial(JSONObject whereJson); + + + /** + * 空载具入库确认 + * + * @param whereJson { + * sect_id: 库区 + * siteCode: 起始站点 + * } + * @return PdaResponse + */ + PdaResponse vehicleInConfirm(JSONObject whereJson); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java index e44185e..c1660aa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda_manage/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -44,6 +44,7 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.tasks.BackInTask; +import org.nl.wms.sch_manage.service.util.tasks.VehicleInTask; import org.nl.wms.sch_manage.service.util.tasks.VehicleOutTask; import org.nl.wms.sch_manage.service.util.tasks.zw.InBillTask; import org.nl.wms.system_manage.service.dict.dao.Dict; @@ -364,6 +365,92 @@ public class PdaIosInServiceImpl implements PdaIosInService { return PdaResponse.requestOk(); } + @Override + public PdaResponse vehicleInConfirm(JSONObject whereJson) { + // long qty = 1L; + // LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + // //空托盘出库 + // queryWrapper.eq(MdMeMaterialbase::getMaterial_id, StatusEnum.VEHICLE_TYPE.code("空托盘")); +// + // MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(queryWrapper); + // if (materDao == null) { + // throw new BadRequestException("未找到空载具物料信息!"); + // } + // whereJson.put("material_id", materDao.getMaterial_id()); + // whereJson.put("material_code", materDao.getMaterial_code()); + // Sectattr sectattr = iSectattrService.getById(new LambdaQueryWrapper<>(Sectattr.class) + // .eq(Sectattr::getSect_id, whereJson.getString("sect_id")) + // .eq(Sectattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是")) + // ); + // if (ObjectUtil.isEmpty(sectattr)) { + // throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!"); + // } + // BsrealStorattr storeDao = iSrealStorattrService.getById(sectattr.getStor_id()); + // whereJson.put("stor_code", storeDao.getStor_code()); + // whereJson.put("sect_code", sectattr.getSect_code()); + // StrategyStructParam strategyStructParam = StrategyStructParam.builder() + // .ioType(whereJson.getString(StatusEnum.STRATEGY_TYPE.code("出库"))) + // .sect_code(whereJson.getString("sect_code")) + // .stor_code(whereJson.getString("stor_code")) + // .material_code(whereJson.getString("material_id")) + // .material_code(whereJson.getString("material_code")) + // .qty(BigDecimal.valueOf(qty)) + // .build(); + // List structList = iStructattrService.outBoundSectDiv(strategyStructParam); + // if (CollectionUtils.isEmpty(structList)) { + // throw new BadRequestException("无可用库存!"); + // } + // structList.forEach(r -> { + // //创建任务 + // JSONObject taskForm = new JSONObject(); + // taskForm.put("task_type", IOSConstant.VEHICLE_IN_TASK); + // taskForm.put("config_code", IOSConstant.VEHICLE_IN_TASK); + // taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + // taskForm.put("PickingLocation", r.getStruct_code()); + // taskForm.put("PlacedLocation", whereJson.getString("siteCode")); + // taskForm.put("vehicle_code", r.getStoragevehicle_code()); + // VehicleInTask vehicleInTask = SpringContextHolder.getBean("VehicleInTask"); + // applyTaskMap.get(IOSConstant.VEHICLE_IN_TASK).create(whereJson); + // vehicleInTask.create(taskForm); + // }); + // //更新组盘记录表 + // Set vehicleCodeSet = structList.stream() + // .map(StrategyStructMaterialVO::getStoragevehicle_code) + // .collect(Collectors.toSet()); + // mdPbGroupplateMapper.update( + // new GroupPlate(), + // new LambdaUpdateWrapper() + // .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + // .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) + // .in(GroupPlate::getStoragevehicle_code, vehicleCodeSet) + // ); + // //锁定仓位 + // Set structCodeSet = structList.stream() + // .map(StrategyStructMaterialVO::getStruct_code) + // .collect(Collectors.toSet()); + // iStructattrService.update( + // new LambdaUpdateWrapper() + // .set(Structattr::getInv_id, null) + // .set(Structattr::getInv_code, null) + // .set(Structattr::getInv_type, null) + // .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁")) + // .in(Structattr::getStruct_code, structCodeSet) + // ); + //空载具入库 + whereJson.put("qty", 1); + String materialCode = StatusEnum.VEHICLE_TYPE.code("空托盘"); + whereJson.put("material_id", materialCode); + //组盘 + groupPlate(whereJson); + // 生成空载具入库任务 + whereJson.put("config_code", IOSConstant.VEHICLE_IN_TASK); + whereJson.put("vehicle_code", whereJson.getString("vehicle_code")); + whereJson.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); + //入库分配 + divStructNoBills(whereJson); + return PdaResponse.requestOk(); + } + /** * 不含单据入库业务 @@ -561,12 +648,12 @@ public class PdaIosInServiceImpl implements PdaIosInService { //卸货区空托盘应该放置的点,对应task point2 whereJson.put("sch_base_point", schBasePointString); whereJson.put("bill_type",StatusEnum.IOBILL_TYPE_IN.code("来料入库")); - whereJson.put("priority","1"); - whereJson.put("task_group_seq",taskGroupSeq); whereJson.put("task_group_id",taskGroupId); + whereJson.put("form_data_code",dto.getFormDataCode()); + jsonObjectList.add(whereJson); //下一个的托盘放置点为本次的起点 lastSchBasePoint = whereJson.getString("site_code"); @@ -595,7 +682,6 @@ public class PdaIosInServiceImpl implements PdaIosInService { } return PdaResponse.requestOk(); - } // @Override @@ -921,6 +1007,8 @@ public class PdaIosInServiceImpl implements PdaIosInService { jsonMst.put("task_group_seq", whereJson.getString("task_group_seq")); jsonMst.put("task_group_id", whereJson.getString("task_group_id")); jsonMst.put("vehicle_code", whereJson.getString("vehicle_code")); + jsonMst.put("form_data_code", whereJson.getString("form_data_code")); + // 组织明细数据 IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne( new QueryWrapper().lambda() diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java index 57c2b5a..c057a37 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/SchBaseTask.java @@ -117,6 +117,10 @@ public class SchBaseTask implements Serializable { private String update_name; + + private String form_data_code; + + private String update_time; @TableField(exist = false) private String config_name; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/InBillTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/InBillTask.java index 77292b0..1146582 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/InBillTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/zw/InBillTask.java @@ -5,14 +5,14 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.apache.commons.collections4.CollectionUtils; import org.nl.common.exception.BadRequestException; -import org.nl.common.utils.CodeUtil; import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.IdUtil;; import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IStructattrService; -import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.pm_manage.service.IPmFormDataService; +import org.nl.wms.pm_manage.service.dao.PmFormData; import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.ISchBaseTaskService; @@ -23,7 +23,6 @@ import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.TaskType; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService; -import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService; import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis; import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService; @@ -35,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; + /** * @Author: zhengxuming * @Description: 来料入库 @@ -64,6 +64,10 @@ public class InBillTask extends AbstractTask { @Resource private ISchBasePointService pointService; + @Autowired + private IPmFormDataService iPmFormDataService; + + /** * 仓位服务 */ @@ -89,6 +93,7 @@ public class InBillTask extends AbstractTask { task.setTask_group_seq(json.getBigDecimal("task_group_seq")); task.setRequest_param(json.toString()); task.setPriority(json.getString("priority")); + task.setForm_data_code(json.getString("form_data_code")); task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_name(SecurityUtils.getCurrentNickName()); task.setCreate_time(DateUtil.now()); @@ -189,6 +194,20 @@ public class InBillTask extends AbstractTask { .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code3())); rawAssistIStorService.taskFinish(taskObj); + + List noFinishTask = taskService.list(new LambdaQueryWrapper<>(SchBaseTask.class) + .eq(SchBaseTask::getForm_data_code,taskObj.getForm_data_code()) + .eq(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")) + .ne(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())); + //判断单据编号下的任务是否已经全部完成 即没有未完成数据 + if(CollectionUtils.isEmpty(noFinishTask)){ + iPmFormDataService.update( + new LambdaUpdateWrapper() + .set(PmFormData::getStatus,IOSEnum.BILL_STATUS.code("完成")) + .set(PmFormData::getUpdate_time,DateUtil.now()) + .set(PmFormData::getUpdate_name, "task") + .eq(PmFormData::getCode, taskObj.getForm_data_code())); + } } @Transactional(rollbackFor = Exception.class) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java index df7c7b2..f3ebe88 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/inAndOut/service/impl/InBillServiceImpl.java @@ -788,6 +788,8 @@ public class InBillServiceImpl extends ServiceImpl i task.put("point_code3", whereJson.get("point_code3")); task.put("point_code4", ioStorInvDis.getStruct_code()); + task.put("form_data_code", whereJson.get("form_data_code")); + //第一个载具为计算得到的,第二个载具为起始点载具 task.put("vehicle_code", ioStorInvDis.getStoragevehicle_code()); task.put("vehicle_code2", whereJson.get("vehicle_code"));