From e0e784ce85690f7260bc07998c17c17ca73fefca Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Sat, 4 Nov 2023 16:02:21 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E4=BF=AE=E6=94=B9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8F=AB=E6=96=99=E9=80=BB=E8=BE=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/wms/pf/service/FlourworkService.java | 6 +++ .../pf/service/impl/FlourworkServiceImpl.java | 49 ++++++++++++++++--- .../service/impl/HandMoveStorServiceImpl.java | 12 +++-- 3 files changed, 56 insertions(+), 11 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FlourworkService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FlourworkService.java index a28c7faf..b4c15444 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FlourworkService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/FlourworkService.java @@ -4,9 +4,12 @@ package org.nl.wms.pf.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.springframework.data.domain.Pageable; +import org.springframework.scheduling.annotation.Async; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** @@ -59,6 +62,9 @@ public interface FlourworkService { */ void startWork(JSONObject whereJson); + @Async + void asyncdown(List movinvs, Long userid, String username); + /** * 出库确认 * @param whereJson / diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FlourworkServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FlourworkServiceImpl.java index f9c3d112..1632f9ee 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FlourworkServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pf/service/impl/FlourworkServiceImpl.java @@ -23,6 +23,7 @@ import org.nl.utils.FileUtil; import org.nl.utils.SecurityUtils; import org.nl.utils.SpringContextHolder; import org.nl.wms.basedata.master.constant.MaterOptTypeEnum; +import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.master.service.MaterialbaseService; import org.nl.wms.pdm.service.WorkTaskService; import org.nl.wms.pf.service.FlourworkService; @@ -33,6 +34,8 @@ import org.nl.wql.WQL; import org.nl.wql.core.bean.ResultBean; import org.nl.wql.core.bean.WQLObject; import org.nl.wql.util.WqlUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +43,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; +import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -56,6 +60,11 @@ public class FlourworkServiceImpl implements FlourworkService { private final HandPFOutIvtService handPFOutIvtService; private final MaterialbaseService materialbaseService; private final WmsToAcsService wmsToAcsService; + private final ClassstandardService classstandardService; + + @Autowired + @Lazy + private FlourworkService flourworkService; @Override public Map queryAll(Map whereJson, Pageable page) { @@ -198,6 +207,20 @@ public class FlourworkServiceImpl implements FlourworkService { String taskNum = "0"; JSONArray dtlArr = formTabDtl.query("formula_id = '" + formula_id + "' and status <> '99' and is_need_move = '1' order by seq_no ASC").getResultJSONArray(0); if (ObjectUtil.isEmpty(dtlArr)) throw new BadRequestException("没有需要叫料的物料"); + JSONArray jsonDeviceArr = devicePointTab.query("device_uuid = '" + device_id + "' and point_type = '03'").getResultJSONArray(0); + Set set = classstandardService.getAllChildIdSet(MaterOptTypeEnum.GF.getClass_idStr()); + String materials = ""; + for (int i = 0; i < dtlArr.size(); i++) { + JSONObject jsonFormDtl = dtlArr.getJSONObject(i); + String material_id = jsonFormDtl.getString("material_id"); + materials = materials+"'"+material_id+"',"; + } + JSONArray md_me_materialbase = WQLObject.getWQLObject("md_me_materialbase").query("material_id in (" + materials.substring(0, materials.length() - 1) + ")").getResultJSONArray(0); + List GFSet = md_me_materialbase.stream().filter(o -> { + JSONObject item = (JSONObject) o; + return set.contains(item.getString("material_type_id")); + }).map(a -> ((JSONObject) a).getString("material_id")).collect(Collectors.toList()); + List movList = new ArrayList<>(); for (int i = 0; i < dtlArr.size(); i++) { JSONObject jsonFormDtl = dtlArr.getJSONObject(i); String material_id = jsonFormDtl.getString("material_id"); @@ -209,7 +232,6 @@ public class FlourworkServiceImpl implements FlourworkService { // 1.计算剩余需投料: 剩余需投料=此配方明细的重量-已投料重量 double subQty = NumberUtil.sub(jsonFormDtl.getDoubleValue("formula_qty"), jsonFormDtl.getDoubleValue("put_qty")); // 2.查询当前配粉工位的所有上料位 - JSONArray jsonDeviceArr = devicePointTab.query("device_uuid = '" + device_id + "' and point_type = '03'").getResultJSONArray(0); // 3.查询当前可用数:当前可用数=sum(此配粉工位点位仓位此物料可用数) double canuse_qty = 0.0; // 总当前可用数 if (ObjectUtil.isNotEmpty(jsonDeviceArr)) { @@ -236,7 +258,7 @@ public class FlourworkServiceImpl implements FlourworkService { // 5.计算未领重量:未领重量=剩余需投料 - 当前可用数 - 正在移库数 double uncla_qty = Double.parseDouble(String.valueOf(NumberUtil.sub(subQty, canuse_qty, move_qty))); // 6.判断物料是否为钴粉 - boolean is_GF = materialbaseService.isAlongMaterType(MaterOptTypeEnum.GF.getCode(), material_id, null); + boolean is_GF = GFSet.contains(material_id); /* * 对获取的物料未领重量生成配粉移库单 @@ -305,9 +327,7 @@ public class FlourworkServiceImpl implements FlourworkService { map.put("tableData", tableData); String moveinv_id = handMoveStorService.insertDtl2(map); // 6.下发移库单 - JSONObject jsonMoveParam = new JSONObject(); - jsonMoveParam.put("moveinv_id", moveinv_id); - handMoveStorService.handdown(jsonMoveParam); + movList.add(moveinv_id); // 7.下发移库单后减去未领重量 uncla_qty = NumberUtil.sub(uncla_qty, canuse_qty1); // 回馈任务数 @@ -367,9 +387,7 @@ public class FlourworkServiceImpl implements FlourworkService { map.put("tableData", tableData); String moveinv_id = handMoveStorService.insertDtl2(map); // 6.下发移库单 - JSONObject jsonMoveParam = new JSONObject(); - jsonMoveParam.put("moveinv_id", moveinv_id); - handMoveStorService.handdown(jsonMoveParam); + movList.add(moveinv_id); // 回馈任务数 taskNum = String.valueOf(NumberUtil.add(taskNum, "1")); } else { @@ -381,9 +399,24 @@ public class FlourworkServiceImpl implements FlourworkService { if (dtlArr.size() == arr.size()) throw new BadRequestException("叫料失败,此配方明细没有符合的库存"); if (dtlArr.size() == arr2.size()) throw new BadRequestException("叫料失败,配粉间没有空位"); result.put("task", taskNum); + flourworkService.asyncdown(movList,SecurityUtils.getCurrentUserId(),SecurityUtils.getNickName()); return result; } + @Override + public void asyncdown(List movinvs,Long userid,String username){ + try { + Thread.sleep(500); + } catch (Exception e) { + } + for (String moveinv_id : movinvs) { + JSONObject param = new JSONObject(); + param.put("moveinv_id", moveinv_id); + param.put("currentUserId", userid); + param.put("nickName", username); + handMoveStorService.handdown(param); + } + } @Override @Transactional(rollbackFor = Exception.class) public void startWork(JSONObject whereJson) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java index f1488b1c..9a73872c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/HandMoveStorServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.exception.BadRequestException; import org.nl.modules.security.service.dto.JwtUserDto; import org.nl.modules.system.util.CodeUtil; @@ -939,10 +940,15 @@ public class HandMoveStorServiceImpl implements HandMoveStorService { HandMoveStorAcsTask handMoveStorAcsTask = new HandMoveStorAcsTask(); - Long currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getNickName(); + Long currentUserId = whereJson.getLong("currentUserId"); + String nickName = whereJson.getString("nickName"); + if (currentUserId == null){ + currentUserId = SecurityUtils.getCurrentUserId(); + } + if (StringUtils.isEmpty(nickName)){ + SecurityUtils.getCurrentUserId(); + } String now = DateUtil.now(); - String moveinv_id = whereJson.getString("moveinv_id"); //查询所有载具的库存 JSONArray ja = WQL.getWO("QST_IVT_HANDMOVESTOR")