From bee8e48e25c47c7ad3316c2130837c7466490c3a Mon Sep 17 00:00:00 2001 From: zhengxuming Date: Thu, 28 Aug 2025 19:44:07 +0800 Subject: [PATCH] =?UTF-8?q?add:=E7=94=B3=E8=AF=B7=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IStructattrService.java | 3 + .../service/dao/mapper/StructattrMapper.java | 4 + .../service/dao/mapper/StructattrMapper.xml | 16 ++++ .../service/impl/StructattrServiceImpl.java | 5 ++ .../controller/AcsToWmsController.java | 11 +++ .../ext_manage/service/AcsToWmsService.java | 2 + .../service/impl/AcsToWmsServiceImpl.java | 43 +++++++++- .../service/impl/ErpToWmsServiceImpl.java | 4 +- .../service/ISchBaseTaskService.java | 8 ++ .../service/impl/SchBaseTaskServiceImpl.java | 8 ++ .../service/util/tasks/StInTask.java | 18 +++- .../impl/RawAssistIStorServiceImpl.java | 83 +++++++++++++++++-- 12 files changed, 189 insertions(+), 16 deletions(-) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java index 4a81e14..7fa5f0f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java @@ -114,4 +114,7 @@ public interface IStructattrService extends IService { List inBoundSectDiv(StrategyStructParam param); void changeStruct(StructattrChangeDto changeDto); + + BigDecimal calculateSectOccupancyRate(String sect_code); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.java index 81823f2..296c306 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.java @@ -3,9 +3,11 @@ package org.nl.wms.basedata_manage.service.dao.mapper; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.StructattrVechielDto; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -20,4 +22,6 @@ public interface StructattrMapper extends BaseMapper{ List collectVehicle2(Map query); + BigDecimal calculateSectOccupancyRate(@Param("sect_code")String sect_code); + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml index e5f4484..856e38d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/StructattrMapper.xml @@ -93,4 +93,20 @@ order by ${order_by} + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index df902b6..46e05fe 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -427,4 +427,9 @@ public class StructattrServiceImpl extends ServiceImpl(acsToWmsService.acsApply(param), HttpStatus.OK); } + @PostMapping("/getExecutingTask") + @Log("ACS向LMS查询正在执行的任务数据") + @SaIgnore + /** + * ACS向LMS查询正在执行的任务数据 + */ + public ResponseEntity getExecutingTask() { + return new ResponseEntity<>(acsToWmsService.getExecutingTask(), HttpStatus.OK); + } + + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java index 22ca73d..1ac7a0a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/AcsToWmsService.java @@ -25,4 +25,6 @@ public interface AcsToWmsService { /** ACS请求接口 */ Map acsApply(JSONObject param); + + Map getExecutingTask(); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java index 43e7bc6..3def7e6 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java @@ -29,6 +29,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -73,8 +74,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public Map receiveTaskStatusAcs(String string) { log.info("acs向lms反馈任务状态,请求参数:--------------------------------------" + string); JSONArray array = JSONArray.parseArray(string); + + //先做校验 //返回处理失败的任务 JSONArray errArr = new JSONArray(); + for (int i = 0; i < array.size(); i++) { + JSONObject errorObject = new JSONObject(); + JSONObject row = array.getJSONObject(i); + String task_id = row.getString("task_id"); + SchBaseTask taskObj = iSchBaseTaskService.getById(task_id); + if (taskObj == null) { + errorObject.put("task_id", task_id); + errorObject.put("messgae", "不存在task_id = [" + task_id + "]的任务!"); + errArr.add(errorObject); + } + } + if (errArr.size() > 0) { + JSONObject result = new JSONObject(); + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "任务状态反馈失败!"); + result.put("errArr", errArr); + log.info("acs向lms反馈任务状态,返回参数:--------------------------------------" + result); + return result; + } + for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); String task_id = row.getString("task_id"); @@ -100,7 +123,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 根据配置编码执行相关配置内的方法 AbstractTask task = taskFactory.getTask(taskObj.getConfig_code()); task.updateTaskStatus(taskObj.getTask_code(),status); - } else { throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!"); } @@ -113,9 +135,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); - result.put("data", new JSONObject()); - result.put("errArr", errArr); - log.info("acs向lms反馈任务状态,返回参数:--------------------------------------" + result.toString()); + log.info("acs向lms反馈任务状态,返回参数:--------------------------------------" + result); return result; } @@ -137,6 +157,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } + @Override + public Map getExecutingTask() { + //查询正在执行的任务 + JSONObject result = new JSONObject(); + JSONObject data = new JSONObject(); + result.put("status", HttpStatus.OK.value()); + result.put("message", "查询成功!"); + + List schBaseTaskList = iSchBaseTaskService.findUnFinishTasks(); + data.put("detail", schBaseTaskList); + data.put("count", schBaseTaskList.size()); + result.put("data", data); + return result; + } + /** * 申请入库任务 * diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/ErpToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/ErpToWmsServiceImpl.java index d1c2823..156ebef 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/ErpToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext_manage/service/impl/ErpToWmsServiceImpl.java @@ -219,7 +219,7 @@ public class ErpToWmsServiceImpl implements ErpToWmsService { plate2.setQty_unit_id(unitDaoDtl.getMeasure_unit_id()); plate2.setQty_unit_name(unitDaoDtl.getUnit_name()); plate2.setQty(groupplateDto.getQty()); - plate2.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("生成")); + plate2.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘")); plate2.setExt_code(jsonDtl.getCode()); plate2.setExt_type("0001"); plate2.setExt_id(jsonDtl.getId()); @@ -234,7 +234,7 @@ public class ErpToWmsServiceImpl implements ErpToWmsService { plate.setQty_unit_id(unitDao.getMeasure_unit_id()); plate.setQty_unit_name(unitDao.getUnit_name()); plate.setQty(qty); - plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("生成")); + plate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘")); plate.setExt_code("H-"+value.get(0).getOrder_code()); plate.setExt_type("0001"); plate.setExt_id(jsonDtl.getId()); 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 a0821e5..201caf3 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 @@ -78,4 +78,12 @@ public interface ISchBaseTaskService extends IService { * @return */ Integer findUnFinishTasksBySub_tray(String sub_tray); + + + /** + * 根据任务号查询未完成的任务 + * @param sub_tray + * @return + */ + List findUnFinishTasks(); } 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 5dcbd4e..8b898dd 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 @@ -175,5 +175,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl findUnFinishTasks() { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()) + .eq(SchBaseTask::getIs_delete, false); + return schBaseTaskMapper.selectList(lam); + } + } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java index 6d314b7..b206530 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/StInTask.java @@ -54,8 +54,22 @@ public class StInTask extends AbstractTask { 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()); + String currentUserId,nickName; + if (null == json.get("currentUserId")) { + currentUserId = SecurityUtils.getCurrentUserId(); + } else { + currentUserId = json.get("currentUserId").toString(); + } + + if (null == json.get("nickName")) { + nickName = SecurityUtils.getCurrentNickName(); + } else { + nickName = json.get("nickName").toString(); + } + + task.setCreate_id(currentUserId); + task.setCreate_name(nickName); + task.setCreate_time(DateUtil.now()); taskService.save(task); return task.getTask_id(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java index 277a7af..b87cf46 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_manage/service/impl/RawAssistIStorServiceImpl.java @@ -1,5 +1,7 @@ package org.nl.wms.warehouse_manage.service.impl; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; @@ -146,8 +148,18 @@ public class RawAssistIStorServiceImpl extends ServiceImpl rows = (ArrayList) whereJson.get("tableData"); - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); + String currentUserId, nickName; + if (null == whereJson.get("currentUserId")) { + currentUserId = SecurityUtils.getCurrentUserId(); + } else { + currentUserId = whereJson.get("currentUserId").toString(); + } + + if (null == whereJson.get("nickName")) { + nickName = SecurityUtils.getCurrentNickName(); + } else { + nickName = whereJson.get("nickName").toString(); + } String now = DateUtil.now(); BigDecimal total_qty = new BigDecimal(BigInteger.ZERO); JSONObject io_mst = new JSONObject(); @@ -353,8 +365,19 @@ public class RawAssistIStorServiceImpl extends ServiceImpl list = ioStorInvMapper.getGroupByPlate(param); + ArrayList tableData = new ArrayList<>(); + list.forEach(item -> { + item.setPlan_qty(item.getQty()); + tableData.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class)); + }); JSONObject form = new JSONObject(); // 查询仓库 @@ -794,23 +825,59 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinv_id,iostorinv_id)); JSONObject dis_form = new JSONObject(); - dis_form.put("tableMater",dis); + + ArrayList tableMater = new ArrayList<>(); + tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(dis), LinkedHashMap.class)); + dis_form.put("tableMater",tableMater); dis_form.put("stor_code",storDao.getStor_code()); - //todo 需要指定一个库区 - dis_form.put("sect_code","1582991348217286656"); + dis_form.put("currentUserId","3"); + dis_form.put("nickName","ACS"); + dis_form.put("iostorinvdis_id",dis.getIostorinvdis_id()); + + // 查询所有库区 + List allSects = iSectattrService.list(new LambdaQueryWrapper<>(Sectattr.class) + .eq(Sectattr::getIs_delete,"0") + .ne(Sectattr::getSect_code,"SSX")); + if (CollectionUtils.isEmpty(allSects)) { + throw new BadRequestException("未找到可用的库区"); + } + + // 判断库区货位占有率 + Map sectOccupancyRateMap = new HashMap<>(); + for (Sectattr sect : allSects) { + BigDecimal occupancyRate = iStructattrService.calculateSectOccupancyRate(sect.getSect_code()); + sectOccupancyRateMap.put(sect, occupancyRate); + } + + // 选择占有率小的库区 + Optional> minEntry = sectOccupancyRateMap.entrySet().stream() + .min(Map.Entry.comparingByValue()); + if (minEntry.isPresent()) { + dis_form.put("sect_id", minEntry.get().getKey().getSect_id()); + dis_form.put("stor_id", minEntry.get().getKey().getStor_id()); + dis_form.put("sect_code", minEntry.get().getKey().getSect_id()); + dis_form.put("stor_code", minEntry.get().getKey().getStor_id()); + } else { + throw new BadRequestException("无法选择合适的库区"); + } + //分配货位 + dis_form.put("checked",true); this.divStruct(dis_form); dis_form.put("point_code",device_code); + dis_form.put("nickName",iostorinv_id); //生成任务 this.divPoint(dis_form);; }