From 2f897931737c193b786fb65a642ed1e37f1d3717 Mon Sep 17 00:00:00 2001 From: gongbaoxiong <751575283@qq.com> Date: Fri, 4 Jul 2025 09:41:42 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=87=BA=E5=BA=93=EF=BC=8C=E5=87=BA=E5=BA=93=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PdaIosInController.java | 8 + .../controller/PdaIosOutController.java | 24 +- .../ios_manage/service/PdaIosInService.java | 10 + .../ios_manage/service/PdaIosOutService.java | 41 +++ .../service/impl/PdaIosInServiceImpl.java | 25 +- .../service/impl/PdaIosOutServiceImpl.java | 234 ++++++++++++++++++ .../service/ISchBasePointService.java | 15 ++ .../service/ISchBaseTaskService.java | 5 + .../service/ISchBaseTaskconfigService.java | 4 + .../service/dao/mapper/SchBaseTaskMapper.java | 6 + .../service/dao/mapper/SchBaseTaskMapper.xml | 25 ++ .../service/impl/SchBasePointServiceImpl.java | 96 ++++++- .../service/impl/SchBaseTaskServiceImpl.java | 17 +- .../service/dao/IOStorInv.java | 5 +- .../service/impl/OutBillServiceImpl.java | 1 - .../impl/RawAssistIStorServiceImpl.java | 16 +- 16 files changed, 492 insertions(+), 40 deletions(-) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java index 709faf4..40d8e98 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosInController.java @@ -68,6 +68,14 @@ public class PdaIosInController { } + @PostMapping("/getRegion") + @Log("获取区域") + public ResponseEntity getRegion() { + return new ResponseEntity<>(pdaIosInService.getRegion(), HttpStatus.OK); + } + + + /** * 组盘获取物料列表 */ diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java index 3885eca..874c186 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/controller/PdaIosOutController.java @@ -58,12 +58,10 @@ public class PdaIosOutController { */ @PostMapping("bindOrUnbind") @Log("货架与站点绑定或解绑") - public ResponseEntity bindOrUnbind(@RequestBody JSONObject param) { - if (param == null || StringUtils.isEmpty(param.getString("siteCode")) || StringUtils.isEmpty(param.getString("shelfCode")) || StringUtils.isEmpty(param.getString("mode"))) { - throw new BadRequestException("请求参数不能为空"); - } - // pdaIosOutService.bindOrUnbind(param.getString("siteCode"), param.getString("shelfCode"), param.getString("mode")); - return new ResponseEntity<>(HttpStatus.OK); + public ResponseEntity bindOrUnbind(@RequestBody JSONObject whereJson) { + assertNotBlankJson(whereJson, "请求参数不能为空", "siteCode", "shelfCode", "mode"); + return new ResponseEntity<>(pdaIosOutService.bindOrUnbind(whereJson), HttpStatus.OK); + } @@ -107,10 +105,9 @@ public class PdaIosOutController { */ @PostMapping("transferConfirm") @Log("转运确认") - public ResponseEntity transferConfirm(@RequestBody JSONObject param) { - // tranforTask.createTask(param); - // return new ResponseEntity<>(pdaIosOutService.confirm(whereJson), HttpStatus.OK); - return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK); + public ResponseEntity transferConfirm(@RequestBody JSONObject whereJson) { + assertNotBlankJson(whereJson, "请求参数不能为空", "storagevehicle_code"); + return new ResponseEntity<>(pdaIosOutService.transferConfirm(whereJson), HttpStatus.OK); } @@ -119,10 +116,9 @@ public class PdaIosOutController { */ @PostMapping("vehicleOutConfirm") @Log("空载具出库确认") - public ResponseEntity vehicleOutConfirm(@RequestBody JSONObject param) { - // tranforTask.createTask(param); - // return new ResponseEntity<>(pdaIosOutService.confirm(whereJson), HttpStatus.OK); - return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK); + public ResponseEntity vehicleOutConfirm(@RequestBody JSONObject whereJson) { + assertNotBlankJson(whereJson, "请求参数不能为空", "sect_id", "siteCode"); + return new ResponseEntity<>(pdaIosOutService.vehicleOutConfirm(whereJson), HttpStatus.OK); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java index 96d77d9..c3ec007 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosInService.java @@ -82,6 +82,16 @@ public interface PdaIosInService { PdaResponse getSect(); + /** + * 查询区域 + * + * @return PdaResponse + */ + PdaResponse getRegion(); + + + + /** * 入库确认 * diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosOutService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosOutService.java index 331e804..1d51f0e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosOutService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/PdaIosOutService.java @@ -57,6 +57,20 @@ public interface PdaIosOutService { */ PdaResponse materialConfirm(JSONObject whereJson); + /** + * 货架与站点绑定或解绑 + * + * @param whereJson { + * siteCode: 点位 + * shelfCode: 货架编号 + * mode: 0解绑1绑定 + * } + * @return PdaResponse + */ + PdaResponse bindOrUnbind(JSONObject whereJson); + + + /** * 载具出库确认 * @@ -67,4 +81,31 @@ public interface PdaIosOutService { * @return PdaResponse */ PdaResponse outStorageConfirm(JSONObject whereJson); + + + /** + * 转运确认 + * + * @param whereJson { + * storagevehicle_code: 载具码 + * point_code: 点位编码 + * } + * @return PdaResponse + */ + PdaResponse transferConfirm(JSONObject whereJson); + + /** + * 空载具出库确认 + * + * @param whereJson { + * sect_id: 库区 + * siteCode: 目标站点 + * } + * @return PdaResponse + */ + PdaResponse vehicleOutConfirm(JSONObject whereJson); + + + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java index fc4364a..7039317 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosInServiceImpl.java @@ -23,7 +23,9 @@ import org.nl.wms.pda.util.PdaResponse; import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; +import org.nl.wms.sch_manage.service.ISchBaseRegionService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.dao.SchBaseRegion; import org.nl.wms.sch_manage.service.util.tasks.BackInTask; import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; @@ -35,7 +37,6 @@ import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -123,6 +124,13 @@ public class PdaIosInServiceImpl implements PdaIosInService { private IOStorInvDtlMapper ioStorInvDtlMapper; + /** + * 区域服务 + */ + @Autowired + private ISchBaseRegionService iSchBaseRegionService; + + @Override @Transactional public PdaResponse groupPlate(JSONObject whereJson) { @@ -241,7 +249,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { @Override public PdaResponse getSect() { PageQuery page = new PageQuery(); - page.setSize(20); + page.setSize(100); page.setPage(0); IPage sectList = iSectattrService.queryAll(new HashMap(), page); List result = sectList.getRecords(); @@ -250,6 +258,15 @@ public class PdaIosInServiceImpl implements PdaIosInService { return PdaResponse.requestParamOk(result); } + @Override + public PdaResponse getRegion() { + PageQuery page = new PageQuery(); + page.setSize(100); + page.setPage(0); + IPage regionList = iSchBaseRegionService.queryAll(new HashMap(), page); + return PdaResponse.requestParamOk(regionList.getRecords()); + } + /** * 余料回库确认 @@ -282,7 +299,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { params.put("qty", whereJson.getString("qty")); params.put("pcsn", whereJson.getString("pcsn")); Structattr attrDao = iRawAssistIStorService.divBackStruct(params); - //获取起点 + //确定起点 SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))); if (ObjectUtil.isEmpty(schBasePoint)) { throw new BadRequestException("未找到载具所在的点位信息,请检查"); @@ -362,7 +379,7 @@ public class PdaIosInServiceImpl implements PdaIosInService { jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); jsonMst.put("total_qty", total_qty); jsonMst.put("detail_count", 1); - jsonMst.put("bill_type", IOSEnum.BILL_TYPE.code("生产入库")); + jsonMst.put("bill_type", StatusEnum.IOBILL_TYPE_IN.code("生产出库")); jsonMst.put("biz_date", DateUtil.now()); // 组织明细数据 ArrayList tableData = new ArrayList<>(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java index 37d75bb..0613c69 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/ios_manage/service/impl/PdaIosOutServiceImpl.java @@ -1,32 +1,52 @@ package org.nl.wms.pda.ios_manage.service.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; 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.Structattr; import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; import org.nl.wms.pda.ios_manage.service.PdaIosOutService; import org.nl.wms.pda.util.PdaResponse; +import org.nl.wms.sch_manage.enums.StatusEnum; +import org.nl.wms.sch_manage.enums.TaskEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; +import org.nl.wms.sch_manage.service.util.tasks.PdaPointTask; import org.nl.wms.sch_manage.service.util.tasks.StOutTask; +import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.service.IRawAssistIStorService; import org.nl.wms.warehouse_management.service.dao.GroupPlate; +import org.nl.wms.warehouse_management.service.dao.IOStorInv; +import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; +import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper; import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper; import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; @@ -48,7 +68,17 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { @Autowired private MdPbGroupplateMapper mdPbGroupplateMapper; + /** + * 出入库单主表 + */ + @Resource + private IOStorInvMapper ioStorInvMapper; + /** + * 基础物料服务 + */ + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; /** * 载具扩展属性服务 */ @@ -91,6 +121,13 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { @Autowired private StOutTask stOutTask; + /** + * 手持任务 + */ + @Autowired + private PdaPointTask pdaPointTask; + + /** * 入库服务服务 */ @@ -128,6 +165,56 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { @Override @Transactional public PdaResponse materialConfirm(JSONObject whereJson) { + //创建出库单/明细/分配 + GroupPlate plateDao = mdPbGroupplateMapper.selectOne( + new LambdaQueryWrapper() + .eq(GroupPlate::getStoragevehicle_code, whereJson.getString("group_id"))); + Structattr sectDao = iStructattrService.getOne(new LambdaQueryWrapper() + .eq(Structattr::getStruct_code, whereJson.getString("struct_code"))); + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(plateDao.getMaterial_id()); + whereJson.put("material_id", materDao.getMaterial_id()); + whereJson.put("material_code", materDao.getMaterial_code()); + whereJson.put("store_id", sectDao.getStor_id()); + whereJson.put("store_code", sectDao.getStor_code()); + whereJson.put("store_name", sectDao.getStor_name()); + whereJson.put("sec", sectDao.getSect_id()); + whereJson.put("qty", plateDao.getQty()); + whereJson.put("pcsn", plateDao.getPcsn()); + whereJson.put("unit_id", plateDao.getQty_unit_id()); + whereJson.put("unit_name", plateDao.getQty_unit_name()); + //创建出库单据 + String disId = createOutBills(whereJson); + //锁定货位 + JSONObject lock_map = new JSONObject(); + lock_map.put("struct_code", whereJson.getString("struct_code")); + lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁")); + iStructattrService.updateStatusByCode("0", lock_map); + //创建任务 + JSONObject taskForm = new JSONObject(); + taskForm.put("task_type", "STOutTask"); + taskForm.put("TaskCode", CodeUtil.getNewCode("TASK_CODE")); + taskForm.put("PickingLocation", whereJson.getString("struct_code")); + taskForm.put("PlacedLocation", whereJson.getString("siteCode")); + taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code")); + StOutTask stOutTask = SpringContextHolder.getBean("STOutTask"); + String taskId = stOutTask.create(taskForm); + //更新任务id + ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper() + .set(IOStorInvDis::getTask_id, taskId) + .eq(IOStorInvDis::getIostorinvdis_id, disId) + ); + //更新组盘记录表 + mdPbGroupplateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class) + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")) + .eq(GroupPlate::getGroup_id, whereJson.getString("group_id")) + ); + return PdaResponse.requestOk(); + } + + + @Override + @Transactional + public PdaResponse vehicleOutConfirm(JSONObject whereJson) { //锁定货位 JSONObject lock_map = new JSONObject(); lock_map.put("struct_code", whereJson.getString("struct_code")); @@ -151,6 +238,110 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { return PdaResponse.requestOk(); } + private String createOutBills(JSONObject whereJson) { + String now = DateUtil.now(); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + //主单 + JSONObject io_mst = new JSONObject(); + String iostorinv_id = IdUtil.getStringId(); + String bill_code = CodeUtil.getNewCode("IN_STORE_CODE"); + io_mst.put("iostorinv_id", iostorinv_id); + io_mst.put("bill_code", bill_code); + io_mst.put("io_type", IOSEnum.IO_TYPE.code("出库")); + io_mst.put("bill_type", StatusEnum.IOBILL_TYPE_OUT.code("生产出库")); + io_mst.put("biz_date", now.substring(0, 10)); + io_mst.put("stor_id", whereJson.get("store_id")); + io_mst.put("stor_code", whereJson.get("store_code")); + io_mst.put("stor_name", whereJson.get("store_name")); + io_mst.put("detail_count", 1); + io_mst.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); + io_mst.put("create_mode", IOSEnum.CREATE_MODE.code("PC产生")); + io_mst.put("input_optid", currentUserId + ""); + io_mst.put("input_optname", nickName); + io_mst.put("input_time", now); + io_mst.put("update_optid", currentUserId + ""); + io_mst.put("update_optname", nickName); + io_mst.put("update_time", now); + io_mst.put("is_delete", BaseDataEnum.IS_YES_NOT.code("否")); + io_mst.put("is_upload", BaseDataEnum.IS_YES_NOT.code("否")); + Long deptId = SecurityUtils.getDeptId(); + io_mst.put("sysdeptid", deptId + ""); + io_mst.put("syscompanyid", deptId + ""); + io_mst.put("qty", whereJson.get("store_code")); + ioStorInvMapper.insert(io_mst.toJavaObject(IOStorInv.class)); + //明细 + JSONObject ioStorInvDtl = new JSONObject(); + ioStorInvDtl.put("iostorinvdtl_id", IdUtil.getStringId()); + ioStorInvDtl.put("iostorinv_id", iostorinv_id); + ioStorInvDtl.put("seq_no", "1"); + ioStorInvDtl.put("material_id", whereJson.get("material_id")); + ioStorInvDtl.put("material_code", whereJson.get("material_code")); + ioStorInvDtl.put("Pcsn", whereJson.get("pcsn")); + ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); + ioStorInvDtl.put("qty_unit_id", whereJson.get("unit_id")); + ioStorInvDtl.put("qty_unit_name", whereJson.get("unit_name")); + ioStorInvDtl.put("assign_qty", whereJson.get("qty")); + ioStorInvDtl.put("unassign_qty", "0"); + ioStorInvDtl.put("plan_qty", whereJson.get("qty")); + ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class)); + //分配 + JSONObject dis = new JSONObject(); + String disId = IdUtil.getStringId(); + dis.put("iostorinvdis_id", disId); + dis.put("iostorinv_id", iostorinv_id); + dis.put("iostorinvdtl_id", ioStorInvDtl.getString("iostorinvdtl_id")); + dis.put("seq_no", 1); + dis.put("material_id", whereJson.get("material_id")); + dis.put("material_code", whereJson.get("material_code")); + dis.put("pcsn", whereJson.get("pcsn")); + dis.put("storagevehicle_code", whereJson.get("storagevehicle_code")); + dis.put("work_status", IOSEnum.INBILL_DIS_STATUS.code("执行中")); + dis.put("is_issued", BaseDataEnum.IS_YES_NOT.code("否")); + dis.put("qty_unit_id", whereJson.get("unit_id")); + dis.put("qty_unit_name", whereJson.get("unit_name")); + dis.put("plan_qty", whereJson.get("qty")); + ioStorInvDisMapper.insert(dis.toJavaObject(IOStorInvDis.class)); + return disId; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public PdaResponse bindOrUnbind(JSONObject whereJson) { + SchBasePoint sitePoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")).eq(SchBasePoint::getIs_used, true)); + if (sitePoint == null) { + throw new BadRequestException("输入的站点编号有误或被禁用,请检查!"); + } + List cxPointLists = iSchBasePointService.checkEndPointTask( + null, + null, + StatusEnum.SORT_TYPE.code("升序"), null, sitePoint.getPoint_code(), null, false); + if (ObjectUtils.isNotEmpty(cxPointLists)) { + throw new BadRequestException("该货架正在执行输送任务,状态为锁定,请等任务完成再做绑定或解绑!"); + } + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() + .eq(SchBasePoint::getPoint_code, whereJson.getString("siteCode")); + if ("1" .equals(whereJson.getString("mode"))) { + if (StringUtils.isNotBlank(sitePoint.getVehicle_code())) { + throw new BadRequestException("当前站点已绑定货架:" + sitePoint.getVehicle_code() + ",请先解绑:" + sitePoint.getVehicle_code()); + } + //校验是否在其他站点绑定 + SchBasePoint shelfPoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode"))); + if (shelfPoint != null) { + throw new BadRequestException("当前货架已绑定在站点:" + sitePoint.getPoint_code() + ",请先解绑。"); + } + wrapper.set(SchBasePoint::getVehicle_code, whereJson.getString("shelfCode")) + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货")); + } else { + wrapper.set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货")); + } + wrapper.set(SchBasePoint::getUpdate_time, DateUtil.now()) + .set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName()); + iSchBasePointService.update(wrapper); + return PdaResponse.requestOk(); + } + @Override @Transactional @@ -163,10 +354,12 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { GroupPlate groupPlate = mdPbGroupplateMapper.selectById(whereJson.getString("group_id")); //更新组盘信息 LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + //出库确认 if ("1" .equals(whereJson.getString("type"))) { BigDecimal qty = groupPlate.getQty().subtract(groupPlate.getFrozen_qty()).abs(); updateWrapper.set(GroupPlate::getQty, qty).set(GroupPlate::getFrozen_qty, 0); } else { + //强制确认 updateWrapper.set(GroupPlate::getQty, 0).set(GroupPlate::getFrozen_qty, 0); } updateWrapper.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库")).eq(GroupPlate::getGroup_id, whereJson.getString("group_id")); @@ -174,4 +367,45 @@ public class PdaIosOutServiceImpl implements PdaIosOutService { // iSchBasePointService.unLockPoint(pointDao.getPoint_code()); return PdaResponse.requestOk(); } + + + @Override + @Transactional + public PdaResponse transferConfirm(JSONObject whereJson) { + if (StringUtils.isBlank(whereJson.getString("region_code")) && StringUtils.isBlank(whereJson.getString("siteCode"))) { + throw new BadRequestException("请选择目标站点或区域!"); + } + String pointCode = whereJson.getString("siteCode"); + if (StringUtils.isBlank(pointCode)) { + List pointList = iSchBasePointService.list(new LambdaQueryWrapper() + .eq(SchBasePoint::getRegion_code, whereJson.getString("region_code")) + .eq(SchBasePoint::getIs_used, 1) + .isNull(SchBasePoint::getVehicle_code) + .orderByAsc(SchBasePoint::getIn_order_seq)); + if (CollectionUtils.isEmpty(pointList)) { + throw new BadRequestException("该区域无可用空余点位!"); + } + pointCode = pointList.get(0).getPoint_code(); + } + //确定起点 + SchBasePoint schBasePoint = iSchBasePointService.getOne(new LambdaQueryWrapper().eq(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))); + if (ObjectUtil.isEmpty(schBasePoint)) { + throw new BadRequestException("未找到载具所在的点位信息,请检查"); + } + // 生成回库任务 + JSONObject task = new JSONObject(); + task.put("config_code", IOSConstant.PDA_POINT_TASK); + task.put("point_code1", schBasePoint.getPoint_code()); + task.put("point_code2", pointCode); + task.put("vehicle_code", whereJson.getString("storagevehicle_code")); + task.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); + pdaPointTask.create(task); + // 更新起点绑定id + iSchBasePointService.update( + new UpdateWrapper().lambda() + .set(SchBasePoint::getIos_id, null) + .eq(SchBasePoint::getPoint_code, schBasePoint.getPoint_code()) + ); + return PdaResponse.requestOk(); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java index ddf5ae8..7c73149 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBasePointService.java @@ -90,4 +90,19 @@ public interface ISchBasePointService extends IService { * @param point_code 点位编码 */ void unLockPoint(String point_code); + + /** + * 查询没有搬运任务的空的目标点位 + * + * @param regionCode 点位类型 + * @param getLockType 锁定状态 + * @param sortType 点位排序规则1:升序2:降序 + * @param pointType 0空载具1满载具 + * @param pointCode 点位编码 + * @param vehicleIsNull 载具是否为空 + * @param isFourPoint 是否判断4个任务点位 + * @return List + */ + List checkEndPointTask(String regionCode, String getLockType, String sortType, String + pointType, String pointCode, String vehicleIsNull, boolean isFourPoint); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java index 6e33ab1..2478723 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskService.java @@ -4,9 +4,11 @@ import com.alibaba.fastjson.JSONArray; 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.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery; +import java.util.List; import java.util.Map; import java.util.Set; @@ -68,4 +70,7 @@ public interface ISchBaseTaskService extends IService { * @return / */ SchBaseTask getByCode(String taskCode); + + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java index 88bbc19..003659e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/ISchBaseTaskconfigService.java @@ -3,6 +3,7 @@ package org.nl.wms.sch_manage.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.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig; import java.util.List; @@ -51,4 +52,7 @@ public interface ISchBaseTaskconfigService extends IService { * @return List */ List getTaskConfigList(); + + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java index d1ebdf0..5e27cad 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.java @@ -9,6 +9,7 @@ import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery; import java.math.BigDecimal; import java.util.List; +import java.util.Set; /** * @author lyd @@ -31,4 +32,9 @@ public interface SchBaseTaskMapper extends BaseMapper { * } */ List queryPdaTask(@Param("param") JSONObject whereJson); + + /** + * 获取点位任务数量 + */ + List getTaskList(Set pointCodes1, Set pointCodes2, Set pointCodes3, Set pointCodes4); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml index b90961e..c80bafe 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBaseTaskMapper.xml @@ -102,4 +102,29 @@ + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index d2b09ee..8371e35 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -11,25 +11,32 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.wms.sch_manage.enums.PointStatusEnum; +import org.nl.wms.sch_manage.enums.StatusEnum; import org.nl.wms.sch_manage.service.ISchBasePointService; import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBaseRegion; +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.dao.mapper.SchBaseRegionMapper; +import org.nl.wms.sch_manage.service.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch_manage.service.dto.SchBasePointQuery; import org.nl.wms.sch_manage.service.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author Liuxy @@ -45,6 +52,8 @@ public class SchBasePointServiceImpl extends ServiceImpl queryAll(SchBasePointQuery whereJson, PageQuery page) { @@ -191,10 +200,91 @@ public class SchBasePointServiceImpl extends ServiceImpl().lambda() - .eq(SchBasePoint::getPoint_code, point_code) - .set(SchBasePoint::getVehicle_code, null) - .set(SchBasePoint::getIos_id, null) + .eq(SchBasePoint::getPoint_code, point_code) + .set(SchBasePoint::getVehicle_code, null) + .set(SchBasePoint::getIos_id, null) ); } + /** + * 查询没有搬运任务的空的目标点位 + * + * @param regionCode 点位类型 + * @param getLockType 锁定状态 + * @param sortType 点位排序规则1:升序2:降序 + * @param pointType 0空载具1满载具 + * @param pointCode 点位编码 + * @param vehicleIsNull 载具是否为空 + * @return List + */ + @Override + public List checkEndPointTask(String regionCode, String getLockType, String sortType, String + pointType, String pointCode, String vehicleIsNull, boolean isFourPoint) { + Set pointSets; + List taskList; + List returList = new ArrayList<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(SchBasePoint::getIs_used, true); + if (StringUtils.isNotBlank(regionCode)) { + queryWrapper.eq(SchBasePoint::getRegion_code, regionCode); + } + if (StringUtils.isNotBlank(pointCode)) { + queryWrapper.eq(SchBasePoint::getPoint_code, pointCode); + } + if (StringUtils.isNotBlank(getLockType)) { + queryWrapper.eq(SchBasePoint::getPoint_status, getLockType); + } + if (StringUtils.isNotBlank(pointType)) { + queryWrapper.eq(SchBasePoint::getPoint_type, pointType); + } + if (StringUtils.isNotBlank(vehicleIsNull)) { + boolean isNull = Boolean.parseBoolean(vehicleIsNull); + if (isNull) { + queryWrapper.isNull(SchBasePoint::getVehicle_code); + } else { + queryWrapper.isNotNull(SchBasePoint::getVehicle_code); + } + } + if (StatusEnum.SORT_TYPE.code("升序").equals(sortType)) { + queryWrapper.orderByAsc(SchBasePoint::getPoint_code); + } else if (StatusEnum.SORT_TYPE.code("降序").equals(sortType)) { + queryWrapper.orderByDesc(SchBasePoint::getPoint_code); + } else { + queryWrapper.orderByAsc(SchBasePoint::getPoint_code); + } + List ivtList = this.list(queryWrapper); + Set pointIds = ivtList.stream() + .map(SchBasePoint::getPoint_code) + .collect(Collectors.toSet()); + if (ObjectUtils.isEmpty(pointIds)) { + return returList; + } + if (isFourPoint) { + //点位任务 + taskList = schBaseTaskMapper.getTaskList(pointIds, pointIds, pointIds, pointIds); + pointSets = taskList.stream() + .flatMap(task -> Stream.of( + task.getPoint_code1(), + task.getPoint_code2(), + task.getPoint_code3(), + task.getPoint_code4() + )) + .filter(point -> point != null && !point.trim().isEmpty()) + .collect(Collectors.toSet()); + } else { + taskList = schBaseTaskMapper.getTaskList(pointIds, pointIds, null, null); + pointSets = taskList.stream() + .flatMap(task -> Stream.of( + task.getPoint_code1(), + task.getPoint_code2() + )) + .filter(point -> point != null && !point.trim().isEmpty()) + .collect(Collectors.toSet()); + + } + //符合条件的库存点位过滤掉已存在任务的点位 + return ivtList.stream() + .filter(p -> !pointSets.contains(p.getPoint_code()) && p.getPoint_status().equals(getLockType)) + .collect(Collectors.toList()); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java index c2728df..07846ea 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBaseTaskServiceImpl.java @@ -12,12 +12,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.query.PageQuery; import org.nl.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.sch_manage.enums.StatusEnum; 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.dao.mapper.SchBaseTaskMapper; import org.nl.wms.sch_manage.service.dto.SchBaseTaskQuery; @@ -27,11 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @author Liuxy @@ -45,6 +48,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl i map.put("bill_code", bill_code); map.put("biz_date", map.getString("biz_date").substring(0, 10)); String bill_type = (String) map.get("bill_type"); - map.put("buss_type", bill_type.substring(0, 4)); map.put("io_type", IOSEnum.IO_TYPE.code("出库")); map.put("detail_count", array.size() + ""); map.put("create_mode", IOSEnum.CREATE_MODE.code("PC产生")); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java index bffa37c..a7a48e7 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java @@ -16,7 +16,6 @@ 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.RedissonUtils; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; import org.nl.wms.basedata_manage.enums.BaseDataEnum; @@ -87,7 +86,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl pageQuery(Map whereJson, PageQuery page) { HashMap map = new HashMap<>(); - map.put("buss_type", (String) whereJson.get("buss_type")); map.put("stor_id", (String) whereJson.get("stor_id")); map.put("bill_type", (String) whereJson.get("bill_type")); map.put("create_mode", (String) whereJson.get("create_mode")); @@ -144,7 +142,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl { List structattrs = iStructattrService.inBoundSectDiv( StrategyStructParam.builder() .ioType(param.getString("ioType")) @@ -484,7 +480,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl