From ed8bd2cd2634798298e90cf075a67173b154f0fa Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 18 八月 2025 14:19:05 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 1637 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,627 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 1923cd6..0bf1a91 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -7,18 +7,18 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.OffSaleParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
+import com.zy.asrs.entity.param.*;
import com.zy.asrs.mapper.ManLocDetlMapper;
+import com.zy.asrs.mapper.MatMapper;
+import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
-import com.zy.common.CodeRes;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
+import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MesCombParam;
+import com.zy.common.model.StartupDto;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
@@ -26,10 +26,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 绉诲姩绔湇鍔℃牳蹇冪被
@@ -39,8 +38,12 @@
@Service
public class MobileServiceImpl implements MobileService {
+
+
@Autowired
private MatService matService;
+ @Autowired
+ private MatMapper matMapper;
@Autowired
private WaitPakinService waitPakinService;
@Autowired
@@ -77,13 +80,550 @@
private ManLocDetlService manLocDetlService;
@Autowired
private ManLocDetlMapper manLocDetlMapper;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private LocDetlRullUpDetailService locDetlRullUpDetailService;
+ @Autowired
+ private TagService tagService;
+ @Autowired
+ private BasBoxTypeService basBoxTypeService;
+ @Autowired
+ private WrkMastLogService wrkMastLogService;
+
+ @Resource
+ private OpenServiceImpl openServiceImpl;
+
+ @Resource
+ private OrderDetlMapper orderDetlMapper;
+
+ @Override
+ @Transactional
+ public void trussComb(TrussCombParam param, Long userId) {
+ Date now = new Date();
+ if (param.getSouSta()==145){
+ param.setBarcode(String.valueOf(now.getTime()));
+ }else {
+ if (Cools.isEmpty(param.getBarcode())){
+ throw new CoolException("鍙傛暟锛氭墭鐩樼爜涓虹┖");
+ }
+ }
+ param.setPalletizingNo(147);
+
+ //鍒ゆ柇param鍙傛暟
+ if (Cools.isEmpty(param.getPalletizingNo())){
+ throw new CoolException("鍙傛暟锛氬師绔欑偣缂栧彿涓虹┖");
+ }else if (param.getSouSta()==145 && param.getMatList().size() != 1){
+ throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖ 鎴栬�� 澶т簬1涓槑缁�");
+ }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() > 2){
+ throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖ 鎴栬�� 澶т簬2涓槑缁�");
+ }
+
+ String matnr = null;
+ List<WaitPakin> waitPakins = new ArrayList<>();
+ for (TrussCombParam.MatList matList:param.getMatList()){
+ long rollUp = new Date().getTime();
+ Mat mat = matService.selectByMatnr(matList.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(matList.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ matnr = mat.getMatnr();
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setModel(matList.getModel()); //鎵规
+ waitPakin.setSpecs(matList.getSpecs()); //瑙勬牸
+ waitPakin.setBatch(matList.getBatch()); //鏈ㄧ缂栫爜
+ waitPakin.setBrand(param.getBoxType()); //鏈ㄧ绫诲瀷
+ waitPakin.setZpallet(param.getBarcode()); //鎵樼洏鐮�
+ waitPakin.setOrigin(matList.getPosition()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme((double)matList.getAnfme()); // 鏈ㄧ涓摐绠旀暟閲�
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ waitPakin.setRollUp(rollUp);
+ if (!Cools.isEmpty(matList.getMatDetlList())){
+ for (TrussCombParam.MatDetlList matDetlList:matList.getMatDetlList()){
+ LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail();
+ locDetlRullUpDetail.setUuid(rollUp);
+ locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl());
+ locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString());
+ locDetlRullUpDetailService.insert(locDetlRullUpDetail);
+ }
+ }
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ waitPakins.add(waitPakin);
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short)1);
+
+ StartupDto dto = commonService.getLocNo(1, 1, param.getSouSta(), matnr,null,null, locTypeDto);
+
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setRollUp(waitPakin.getRollUp());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ }
+
+ //wms鍏ュ簱缁勬墭 閫�搴撳崟閫�搴撶粍鎵�
+ @Override
+ @Transactional
+ public void trussCombOrder(TrussCombParam param, Long userId) {
+ Date now = new Date();
+ param.setBarcode(String.valueOf(now.getTime()));
+ param.setPalletizingNo(147);
+
+ //鍒ゆ柇param鍙傛暟
+ if (Cools.isEmpty(param.getPalletizingNo())){
+ throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖");
+ }else if (Cools.isEmpty(param.getOrderNo())){
+ throw new CoolException("鍙傛暟锛氶��璐у崟鍗曞彿 orderNo涓虹┖");
+ }else if (Cools.isEmpty(param.getMatList())){
+ throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖");
+ }
+
+ Order order = orderService.selectByNo(param.getOrderNo());
+ if (Cools.isEmpty(order) || order.getSettle() > 2) {
+ throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈燂紝鍗曞彿锛�"+param.getOrderNo());
+ }
+ DocType docType = docTypeService.selectById(order.getDocType());
+ if (Cools.isEmpty(docType) || !docType.getDocName().equals("閫�璐у叆搴撳崟")){
+ throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+"涓嶆槸閫�璐у叆搴撳崟");
+ }
+
+ List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
+ if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){
+ throw new CoolException("鏈煡璇㈠埌姝よ鍗曟槑缁嗭紝鍗曞彿锛�"+param.getOrderNo());
+ }
+ List<String> orderBoxNoList = new ArrayList<>();
+ for (OrderDetl orderDetl: orderDetls){
+ if (orderDetl.getWorkQty().equals(0.0)){
+ orderBoxNoList.add(orderDetl.getBatch());
+ }
+ }
+ if (orderBoxNoList.size()==0 || orderBoxNoList.size()<param.getMatList().size()){
+ throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 閫�璐ф暟閲忓ぇ浜庢槑缁嗘暟閲�");
+ }
+ List<String> matListBoxNoList = new ArrayList<>();
+ for (TrussCombParam.MatList matList: param.getMatList()){
+ if (!orderBoxNoList.contains(matList.getBatch())){
+ throw new CoolException("鍗曞彿锛�"+param.getOrderNo()+" 绠卞彿锛�"+matList.getBatch()+"涓嶅睘浜庢璁㈠崟鎴栬�呭凡缁忓叆搴�");
+ }else {
+ matListBoxNoList.add(matList.getBatch());
+ }
+ }
+ List<OrderDetl> orderDetlList = new ArrayList<>();
+ for (OrderDetl orderDetl: orderDetls){
+ if (matListBoxNoList.contains(orderDetl.getBatch())){
+ orderDetlList.add(orderDetl);
+ }
+ }
+ List<WaitPakin> waitPakins = new ArrayList<>();
+
+ String matnrSign = "";
+ String brandSign = "";
+ for (OrderDetl orderDetl:orderDetlList){
+ if (Cools.isEmpty(orderDetl.getMatnr()) || Cools.isEmpty(orderDetl.getBrand())){
+ throw new CoolException(orderDetl.getOrderNo() + "鎵�閫夋槑缁嗗瓨鍦ㄦ湭鐭ヨ鏍兼垨鑰呮湭鐭ョ鍨嬶紝璇风淮鎶ゆ暟鎹紒");
+ }
+ if (matnrSign.equals("")){
+ matnrSign = orderDetl.getMatnr();
+ brandSign = orderDetl.getBrand();
+ }else {
+ if (!matnrSign.equals(orderDetl.getMatnr())){
+ throw new CoolException(orderDetl.getMatnr() + "璇烽�夋嫨鍚屼竴涓鏍肩殑璐х墿锛侊紒锛�");
+ }
+ if (!brandSign.equals(orderDetl.getBrand())){
+ throw new CoolException(orderDetl.getMatnr() + "璇烽�夋嫨鍚屼竴绉嶇鍨嬬殑璐х墿锛侊紒锛�");
+ }
+ }
+ }
+ Mat mat = matService.selectByMatnr(matnrSign);
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(matnrSign + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ for (OrderDetl orderDetl:orderDetlList){
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
+ waitPakin.setModel(orderDetl.getModel()); //鎵规
+ waitPakin.setSpecs(orderDetl.getSpecs()); //瑙勬牸
+ waitPakin.setBatch(orderDetl.getBatch()); //鏈ㄧ缂栫爜
+ waitPakin.setBrand(orderDetl.getBrand()); //鏈ㄧ绫诲瀷
+ waitPakin.setZpallet(param.getBarcode()); //鎵樼洏鐮�
+ waitPakin.setWeight(orderDetl.getWeight()); //鍑�閲�
+ waitPakin.setVolume(orderDetl.getVolume()); //姣涢噸
+ waitPakin.setPrice(orderDetl.getPrice()); //闀垮害
+ waitPakin.setSpecs(String.valueOf(orderDetl.getSpecs())); //鎺ュご
+ waitPakin.setOrigin("1"); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
+ waitPakin.setIoStatus("Y"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(orderDetl.getAnfme()); // 鏈ㄧ涓摐绠旀暟閲�
+ waitPakin.setWeight(orderDetl.getWeight()); // 鏈ㄧ涓摐绠斿噣閲�
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ waitPakin.setZpallet(param.getBarcode());
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ waitPakins.add(waitPakin);
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short)1);
+
+ StartupDto dto = commonService.getLocNo(1, 1, 145, matnrSign,null,null, locTypeDto);
+
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
+ wrkMast.setBarcode(param.getBarcode());
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setOrderNo(order.getOrderNo());
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setZpallet(param.getBarcode());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ // 淇敼璁㈠崟浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQty(order.getId(), orderDetls.get(0).getMatnr(), orderDetls.get(0).getBatch(), orderDetls.get(0).getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+ }
+ orderService.updateSettle(order.getId(), 2L, userId);
+ }
+
+ @Override
+ @Transactional
+ public void trussComb2Car(Integer staNo) {
+ if (staNo!=212){
+ throw new CoolException("鍙厑璁�212鍛煎彨鎵樼洏");
+ }
+ BasDevp basDevp = basDevpService.selectById(212);
+ if (!basDevp.getAutoing().equals("Y")){
+ throw new CoolException("212绔欑偣涓嶆槸鑷姩");
+ } else if (basDevp.getLoading().equals("Y")){
+ throw new CoolException("212绔欑偣鏈夌墿");
+ } else if (basDevp.getWrkNo()!=0){
+ throw new CoolException("212绔欑偣鏈夊伐浣滃彿");
+ }
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 212));
+ if (!Cools.isEmpty(wrkMast1)){
+ throw new CoolException("浠诲姟妗f宸插瓨鍦紒璇风瓑寰�...");
+ }
+ int workNo = commonService.getWorkNo(6);
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(61L); // 宸ヤ綔鐘舵�侊細61銆佺瓑寰呯┖鏉�
+ wrkMast.setIoType(212); // 鍏ュ嚭搴撶姸鎬侊細212.2妤�212鍛煎彨绌烘澘
+ wrkMast.setIoPri(10D); // 浼樺厛绾�
+ wrkMast.setStaNo(212);
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ }
+ @Override
+ @Transactional
+ public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) {
+ Long userId = 7777L;//涓帶
+ param.setPalletizingNo(212);
+
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+ .eq("io_type", 1).eq("wrk_sts", 1).eq("source_sta_no",212));
+ if (!Cools.isEmpty(wrkMast1)){
+ throw new CoolException("瀛樺湪涓�绗斿伐浣滄。妗堬紝璇峰厛鍏ュ簱锛�");
+ }
+
+ //鍒ゆ柇param鍙傛暟
+ if (Cools.isEmpty(param.getBarcode())){
+ throw new CoolException("鍙傛暟锛氭墭鐩樼爜 barcode涓虹┖");
+ }else if (Cools.isEmpty(param.getPalletizingNo())){
+ throw new CoolException("鍙傛暟锛氱爜鍨涗綅缂栧彿 palletizingNo涓虹┖");
+ }else if (Cools.isEmpty(param.getBoxType())){
+ throw new CoolException("鍙傛暟锛氭湪绠辩被鍨� boxType涓虹┖");
+ }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){
+ throw new CoolException("鍙傛暟锛氱墿鏂欐槑缁� matLists涓虹┖");
+ }
+
+ String matnrOne = "";//鏈ㄧ鐩稿悓浣嶇疆 瑙勬牸 matnr鏍¢獙 1銆佸乏
+ String matnrTwo = "";//鏈ㄧ鐩稿悓浣嶇疆 瑙勬牸 matnr鏍¢獙 2銆佸彸
+ ArrayList<String> boxNos = new ArrayList<>(); //鏈ㄧ鍞竴缂栫爜鏌ラ噸 锛坆atch锛�
+ //鍒ゆ柇matLists鍙傛暟
+ for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
+ if (Cools.isEmpty(matList.getMatnr())){
+ throw new CoolException("鍙傛暟锛氳鏍� matnr涓虹┖");
+ }else if (Cools.isEmpty(matList.getPosition())){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鐮佸灈浣嶇疆 position涓虹┖");
+ }else if (Cools.isEmpty(matList.getBatch())){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ缂栧彿 batch涓虹┖");
+ }else if (Cools.isEmpty(matList.getModel())){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍗峰彿 model涓虹┖");
+ }else if (Cools.isEmpty(matList.getBatch())){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鏈ㄧ缂栧彿 boxNo涓虹┖");
+ }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍑�閲� weight涓虹┖");
+ }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細姣涢噸 roughWeight涓虹┖");
+ }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
+ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍗烽暱搴� rollExtent涓虹┖");
+ }
+
+ if (matList.getPosition().equals("1")){//1銆佸乏 2銆佸彸
+ if (!matnrOne.equals("")){
+ if (!matnrOne.equals(matList.getMatnr())){
+ throw new CoolException("鏈ㄧ浣嶇疆锛�"+matList.getPosition()+"瀛樺湪涓嶅悓瑙勬牸鍗蜂俊鎭�");
+ }
+ }else {
+ matnrOne=matList.getMatnr();
+ }
+ }else if (matList.getPosition().equals("2")){
+ if (!matnrTwo.equals("")){
+ if (!matnrTwo.equals(matList.getMatnr())){
+ throw new CoolException("鏈ㄧ浣嶇疆锛�"+matList.getPosition()+"瀛樺湪涓嶅悓瑙勬牸鍗蜂俊鎭�");
+ }
+ }else {
+ matnrTwo=matList.getMatnr();
+ }
+ }else {
+ throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBatch()+",鏈ㄧ浣嶇疆閿欒锛�"+matList.getPosition());
+ }
+
+ if (!boxNos.contains(matList.getBatch())){
+ boxNos.add(matList.getBatch());
+ }else {
+ throw new CoolException("鍙傛暟锛氭湪绠辩紪鍙� boxNo:"+matList.getBatch()+",鏈ㄧ缂栫爜瀛樺湪閲嶅");
+ }
+
+ if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("batch", matList.getBatch()))!=0
+ || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("batch", matList.getBatch()))!=0
+ || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("batch", matList.getBatch()))!=0){
+ throw new CoolException("鏈ㄧ缂栧彿锛�"+matList.getBatch()+"宸插瓨鍦紝璇峰嬁閲嶅鍏ュ簱");
+ }
+ }
+
+ if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0
+ || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0
+ || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){
+ throw new CoolException("鎵樼洏鏉$爜锛�"+param.getBarcode()+"宸插瓨鍦紝璇峰嬁閲嶅缁勬墭");
+ }
+
+ String matnr = null;
+ List<WaitPakin> waitPakins = new ArrayList<>();
+ Date now = new Date();
+ for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
+ Mat mat = matService.selectByMatnr(matList.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ mat = new Mat();
+ mat.setMatnr(matList.getMatnr());
+ mat.setMaktx(matList.getMatnr());
+ mat.setTagId(tagService.getTop().getId());
+ mat.setBrand(param.getBoxType());
+ mat.setCreateBy(userId);
+ mat.setCreateTime(now);
+ mat.setUpdateBy(userId);
+ mat.setUpdateTime(now);
+ mat.setStatus(1);
+ if (!matService.insert(mat)) {
+ throw new CoolException("瑙勬牸娣诲姞澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ matnr = matList.getMatnr();
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setBatch(matList.getBatch()); //鏈ㄧ缂栫爜 //鎵规 鍞竴鍊� 绠卞彿
+ waitPakin.setModel(matList.getModel()); //鍗峰彿 鍞竴鍊�
+ waitPakin.setBrand(param.getBoxType()); //鏈ㄧ绫诲瀷
+ waitPakin.setZpallet(param.getBarcode()); //鎵樼洏鐮�
+ waitPakin.setOrigin(matList.getPosition()); //鏈ㄧ鍦ㄦ墭鐩樹笂鐨勪綅缃�
+ waitPakin.setWeight(matList.getWeight()); //鍑�閲�
+ waitPakin.setVolume(matList.getRoughWeight()); //姣涢噸
+ waitPakin.setPrice(matList.getRollExtent()); //闀垮害
+ waitPakin.setSpecs(String.valueOf(matList.getJoint())); //鎺ュご
+ waitPakin.setIoStatus("Y"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(matList.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ waitPakins.add(waitPakin);
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short)1);
+
+ StartupDto dto = commonService.getLocNo(1, 1, 212, matnr,null,null, locTypeDto);
+
+ int workNo = dto.getWorkNo();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(0); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ waitPakins.forEach(waitPakin -> {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(waitPakin);
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setZpallet(param.getBarcode());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ }
@Override
@Transactional
public void comb(CombParam param, Long userId) {
if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
throw new CoolException(BaseRes.PARAM);
+ }
+ if(param.getCombMats().size()>1){
+ throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
}
// 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
@@ -147,7 +687,7 @@
// 鍏宠仈缁勬墭
} else {
Order order = orderService.selectByNo(param.getOrderNo());
- if (order.getSettle() > 2) {
+ if (Cools.isEmpty(order) || order.getSettle() > 2) {
throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
}
// 鐢熸垚鍏ュ簱閫氱煡妗�
@@ -592,6 +1132,10 @@
wrkMast.setEmptyMk("N"); // 绌烘澘
wrkMast.setLinkMis("N");
wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setSheetNo("0"); //寰愬伐姹変簯鎷嗗灈鏍囪锛�0: 鍒濆 1: 鏈媶 2:宸叉媶 3锛氬凡澶勭悊鍙笅涓�姝ワ紙杞巻鍙叉。锛�
+ if (wrkMast.getStaNo()<118 || wrkMast.getStaNo()>121){
+ wrkMast.setSheetNo("3");
+ }
wrkMast.setAppeTime(now);
wrkMast.setModiUser(userId);
wrkMast.setModiTime(now);
@@ -627,4 +1171,1077 @@
throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
}
}
+
+ @Override
+ @Transactional
+ public R pakoutFhqr(PdckqrParam param) {
+
+ // 鑾峰彇宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()));
+ if (wrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getBarcode());
+ }
+ if (wrkMast.getWrkSts() != 20) {
+ throw new CoolException(wrkMast.getWrkNo() + ",宸ヤ綔妗g被鍨嬶細" + wrkMast.getIoType() + "宸ヤ綔鐘舵�侊細" + wrkMast.getWrkSts() + ",涓嶅尮閰�");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ List<PdckqrParam.Material> materials = param.getMaterials();
+
+ boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials);
+ if (isFullyCancelled) {
+ // 澶嶆牳纭锛屾洿鏂扮姸鎬佷负15鍑哄簱瀹屾垚鏇存柊
+ wrkMast.setWrkSts(14L);
+ wrkMastService.updateById(wrkMast);
+ } else {
+ throw new CoolException("鍑哄彛澶嶆牳澶辫触");
+ }
+ return R.ok("鍑哄彛澶嶆牳鎴愬姛");
+ }
+
+ @Override
+ @Transactional
+ public R pdckqr(PdckqrParam param) {
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()));
+ if (wrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + param.getBarcode());
+ }
+ if (wrkMast.getIoType() != 107 || wrkMast.getWrkSts() != 2) {
+ throw new CoolException(wrkMast.getWrkNo() + "锛氬伐浣滅姸鎬佷笉鍖归厤");
+ }
+
+ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ List<PdckqrParam.Material> materials = param.getMaterials();
+
+ boolean isFullyCancelled = compareAndCheckCancellation(wrkDetls, materials);
+ // todo 涓ょ鐩樹袱绠遍渶瑕佺‘瀹氫綅缃病閿�
+
+ if (isFullyCancelled) { // 鐩樼偣鐗╂枡纭垚鍔燂紝宸ヤ綔妗h浆鎹� 鐩樼偣鍑哄簱->鐩樼偣鍐嶅叆搴擄紝涓嬪彂鍥炲簱鍛戒护
+ // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+ .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵��: 14.宸插嚭搴撴湭纭
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+
+ // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+ openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode(),"鐩樼偣纭鎴愬姛鎺ㄩ�乬wcs");
+
+ return R.ok("鐩樼偣纭鎴愬姛");
+
+ } else { // 鐗╂枡涓嶄竴鑷�
+ // 涓嶄竴鑷寸殑澶勭悊澶勭悊鏂规硶锛氬脊鍑鸿皟鏁寸晫闈�
+
+// 閲嶆柊鎵弿瀹炵墿涓婇潰鐨勭爜杩涜璋冩暣
+// 瀹炵墿鍦ㄥ簱瀛橀噷闈㈢殑鍦版柟娓呯┖锛屼换鍔℃墍鍦ㄥ簱瀛樻竻绌�
+// 灏嗗疄鐗╁拰褰撳墠鎵樼洏浣嶇疆鍜屽簱浣嶇粦瀹�
+// 涓�涓湪绠辨儏鍐电洿鎺ヨ皟鏁�
+// 涓や釜鏈ㄧ鍑轰袱涓� 閮借皟鏁�
+// 涓や釜鏈ㄧ鍑轰竴涓� 璋冩暣涓�涓�
+// 宸ヤ綔妗f爣璁板紓甯�->鍥炲簱
+
+ return R.error("鐩樼偣纭寮傚父");
+ }
+
+ }
+
+ @Override
+ @Transactional
+ public R pdaWarehousingNow(PdaWarehousingNowParam param, Long userId) {
+
+ String barcode = param.getBarcode();
+ Integer sourceStaNo = param.getSourceStaNo();
+
+ int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
+ if (zpalletCount > 0) {
+ throw new CoolException("搴撳瓨鎵樼洏鐮佸凡瀛樺湪锛�" + barcode);
+ }
+
+ int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+ if (barcodeCount > 0) {
+ throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + barcode);
+ }
+
+ Map<String, List<PdaWarehousingNowParam.Roll>> boxGroup = param.getBoxGroup();
+ List<PdaWarehousingNowParam.Roll> leftPosList = boxGroup.get("宸�");
+ List<PdaWarehousingNowParam.Roll> centrePosList = boxGroup.get("涓�");
+ List<PdaWarehousingNowParam.Roll> rightPosList = boxGroup.get("鍙�");
+
+ // 鏍规嵁绠卞彿鑾峰彇鍖呰缁勫彿
+ List<String> boxNoList = leftPosList.stream().map(PdaWarehousingNowParam.Roll::getBoxNo).distinct().collect(Collectors.toList());
+ boxNoList.addAll(centrePosList.stream().map(PdaWarehousingNowParam.Roll::getBoxNo).distinct().collect(Collectors.toList()));
+ boxNoList.addAll(rightPosList.stream().map(PdaWarehousingNowParam.Roll::getBoxNo).distinct().collect(Collectors.toList()));
+ Map<String, String> map = new HashMap<>();
+// if (boxNoList.size() > 0) {
+// map = getPackageGroupNoByGwms(boxNoList);
+// }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short)1);
+
+ // 鏍规嵁婧愮珯鐐瑰鎵惧簱浣�
+ StartupDto dto = commonService.getLocNo(1, sourceStaNo, locTypeDto,0);
+
+ int workNo = dto.getWorkNo();
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細1.鐢熸垚鍏ュ簱id
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(barcode); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiUser(userId);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+
+ for (PdaWarehousingNowParam.Roll roll: leftPosList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+ wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ wrkDetl.setBatch(roll.getBoxNo()); // 绠卞彿
+ wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
+ wrkDetl.setBrand(map.get(roll.getBoxNo()) == null ? "" : map.get(roll.getBoxNo())); // 鍖呰缁勫彿
+ wrkDetl.setZpallet(barcode); // 鎵樼洏鍚�
+ wrkDetl.setOrigin("宸�"); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
+ wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
+ wrkDetl.setPrice(roll.getLength());
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
+ wrkDetl.setAnfme(1.0);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ for (PdaWarehousingNowParam.Roll roll: centrePosList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+ wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ wrkDetl.setBatch(roll.getBoxNo()); // 绠卞彿
+ wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
+ wrkDetl.setBrand(map.get(roll.getBoxNo()) == null ? "" : map.get(roll.getBoxNo())); // 鍖呰缁勫彿
+ wrkDetl.setZpallet(barcode); // 鎵樼洏鍚�
+ wrkDetl.setOrigin("涓�"); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
+ wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
+ wrkDetl.setPrice(roll.getLength());
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
+ wrkDetl.setAnfme(1.0);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ for (PdaWarehousingNowParam.Roll roll: rightPosList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+ wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ wrkDetl.setBatch(roll.getBoxNo()); // 绠卞彿
+ wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
+ wrkDetl.setBrand(map.get(roll.getBoxNo()) == null ? "" : map.get(roll.getBoxNo())); // 鍖呰缁勫彿
+ wrkDetl.setZpallet(barcode); // 鎵樼洏鍚�
+ wrkDetl.setOrigin("鍙�"); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
+ wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
+ wrkDetl.setPrice(roll.getLength());
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
+ wrkDetl.setAnfme(1.0);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+
+ // 鎺ㄩ�丟WCS鐩爣娑堟伅
+ openServiceImpl.pushStaNoToGwcs(sourceStaNo,dto.getStaNo(),dto.getWorkNo(),barcode,"pda缁勬墭绔嬪嵆鍏ュ簱鎺ㄩ�乬wcs");
+ return R.ok("鍏ュ簱鍚姩鎴愬姛");
+ }
+
+ @Override
+ public R pdaFxprk(GwmsGenerateInventoryDto param, Long userId) {
+
+ if (Cools.isEmpty(param,param.getMatList())) {
+ throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖锛�" + param);
+ }
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�" + param.getBarcode());
+ }
+
+ int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+ if (zpalletCount > 0) {
+ throw new CoolException("搴撳瓨鎵樼洏鐮佸凡瀛樺湪锛�" + param.getBarcode());
+ }
+
+ int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+ if (barcodeCount > 0) {
+ throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short) 1);
+ int iotype = 1;
+ if (Cools.isEmpty(param.getMatList())) {
+ iotype = 10;
+ }
+
+ // 鏍规嵁婧愮珯鐐瑰鎵惧簱浣�
+ StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto, 0);
+
+ int workNo = dto.getWorkNo();
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setWhsType(1); // 杩斾慨鍏ュ簱鏍囪瘑
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
+ wrkMast.setIoType(iotype); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(param.getPalletizingNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMastService.insert(wrkMast);
+
+ if (!Cools.isEmpty(param.getMatList())) {
+ List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
+ List<String> groupNos = new ArrayList<>();
+ for (GwmsGenerateInventoryDto.MatList obj : matList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ obj.getRolls().forEach(roll -> {
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+ wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ wrkDetl.setUnit(roll.getBoxNo()); // 绠卞彿
+ wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
+ wrkDetl.setBrand(obj.getPackageGroupNo()); // 鍖呰缁勫彿
+ wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ wrkDetl.setBarcode(param.getBarcode());
+ wrkDetl.setOrigin(obj.getBoxPos()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setColor(obj.getBoxType()); // 鏈ㄧ绫诲瀷
+ wrkDetl.setManu(obj.getRollType()); // 绠¤姱绫诲瀷
+ wrkDetl.setSku(obj.getWideInWidth()); // 瀹炴祴瀹藉箙
+ wrkDetl.setItemNum(obj.getThickness()); // 鐢熺當鍘氬害
+ wrkDetl.setManuDate(roll.getFqTime()); // 鍒嗗垏涓嬫枡鏃堕棿
+ wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
+ wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
+ wrkDetl.setLength(roll.getLength()); // 闀垮害
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices())); // 鎺ュご
+ wrkDetl.setAnfme(1.0);
+// wrkDetl.setThreeCode(null); // 閫氳繃mes鎴杄xcel瀵煎叆妫�娴嬫槸鍚﹀悎鏍� 0涓嶅悎鏍硷紝1 鍚堟牸
+// wrkDetl.setDeadWarn(); // 鐞嗚揣鏍囪瘑 0榛樿锛�1鐞嗚揣涓紝2鐞嗚揣瀹屾垚w
+// wrkDetl.setInspect(); // 璁㈠崟鏄庣粏涓敤锛屾爣璇嗗璐х殑鐘舵�� 0鏈璐э紝1澶囪揣涓紝2澶囪揣瀹屾垚
+// wrkDetl.setDanger(); // 璁㈠崟鏄庣粏涓敤锛屾爣璇嗚法宸烽亾绉诲簱 0鏈Щ搴擄紝1绉诲簱涓紝2绉诲簱瀹屾垚
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ groupNos.add(obj.getPackageGroupNo());
+ }
+ // 涓�妤煎弽淇搧鍏ュ簱鐨勬湪绠遍�氳繃鍖呰缁勫彿闇�缁檓es鎺ㄩ�佸緟鍒�
+ pushDpToMes(groupNos);
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+
+ // 涓�妤艰繑淇叆搴撴帹閫乵es鍋氳褰�
+ pushFxrkToMes(param);
+
+ // 杩斿洖GWCS鐩爣淇℃伅
+ openServiceImpl.pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode(), "涓�妤艰繑淇叆搴撴帹閫乬wcs");
+
+ return R.ok("鍙嶄慨鍏ュ簱鎴愬姛");
+ }
+
+ @Override
+ public R pdaBoxIn(BoxInParam param, Long userId) {
+
+ if (Cools.isEmpty(param.getBarcode())) {
+ throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�" + param.getBarcode());
+ }
+
+ if (Cools.isEmpty(param.getAnfme())) {
+ throw new CoolException("璇疯緭鍏ユ暟閲�" + param.getAnfme());
+ }
+ if (Cools.isEmpty(param.getMemo())) {
+ throw new CoolException("璇疯緭鍏ュ娉�");
+ }
+ if (Cools.isEmpty(param.getOld())) {
+ throw new CoolException("璇疯緭鍏ユ柊鏃�" );
+ }
+
+ int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+ if (zpalletCount > 0) {
+ throw new CoolException("搴撳瓨鎵樼洏鐮佸凡瀛樺湪锛�" + param.getBarcode());
+ }
+
+ int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+ if (barcodeCount > 0) {
+ throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short) 1);
+ int iotype = 1; //绌虹
+
+ // 鏍规嵁婧愮珯鐐瑰鎵惧簱浣�
+ StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto, 0);
+
+ int workNo = dto.getWorkNo();
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
+ wrkMast.setIoType(iotype); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(param.getPalletizingNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setAppeUser(userId);
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMastService.insert(wrkMast);
+
+ if (!Cools.isEmpty(param.getBatch())) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setMatnr("绌虹");
+ wrkDetl.setSuppCode(param.getOld());
+ wrkDetl.setAnfme(param.getAnfme());
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setBatch(param.getBatch()); // 灏哄
+ wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ wrkDetl.setBarcode(param.getBarcode());
+ wrkDetl.setMemo(param.getMemo()); //澶囨敞
+ wrkDetl.setAnfme(param.getAnfme());
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")) {
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+ }
+
+ // 杩斿洖GWCS鐩爣淇℃伅
+ openServiceImpl.pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode(), "涓�妤肩┖绠卞叆搴撴帹閫乬wcs");
+
+ return R.ok("绌虹鍏ュ簱鎴愬姛");
+ }
+
+ private void pushFxrkToMes(GwmsGenerateInventoryDto param) {
+
+ for (GwmsGenerateInventoryDto.MatList matList : param.getMatList()){
+ matList.setOutOrIn("in");
+ matList.setStockType("杩斾慨鍏ュ簱");
+ }
+
+ boolean success = false;
+ // 鑾峰彇璇锋眰澶�
+ Map<String,Object> headers = new HashMap<>();
+ headers.put("Content-Type","application/json;charset=UTF-8");
+
+ // 鏋勯�犺姹備綋
+ String body = JSON.toJSONString(param);
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.MES_CC_IP_PORT)
+ .setPath(MesConstant.MES_CC_FXRK_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doGet();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ int code = (int) jsonObject1.get("code");
+ boolean state = jsonObject1.getBoolean("state");
+ if (code == 200 && state) {
+ success = true;
+ }
+ } else {
+ log.error("杩斾慨鍏ュ簱鎺ㄩ�乵es璁板綍澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_FXRK_URL, body, response);
+ }
+ } catch (Exception e) {
+ log.error("杩斾慨鍏ュ簱鎺ㄩ�乵es璁板綍寮傚父锛歿}", e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "杩斾慨鍏ュ簱鎺ㄩ�乵es璁板綍",
+ MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_FXRK_URL,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+
+ }
+
+ @Override
+ @Transactional
+ public R pdtz(PdtzParam param) {
+
+ String barcode = param.getBarcode();
+ Integer palletizingNo = param.getPalletizingNo();
+ List<PdtzParam.MatList> matList = param.getMatList();
+ // 澧炲姞鍐椾綑瀛楁锛岀粰mes鎺ㄩ�佹椂缁撴瀯鍜屽叆搴撲繚瀛樹竴鑷�
+ for (PdtzParam.MatList matList1 : matList) {
+ matList1.setBarcode(barcode);
+ matList1.setPalletizingNo(palletizingNo);
+ }
+
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode));
+ LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+
+ // 瀹炵墿鍖呰缁勫彿
+ List<String> groups = matList.stream().map(PdtzParam.MatList::getPackageGroupNo).distinct().collect(Collectors.toList());
+
+ // 搴撳瓨鏄庣粏鏈ㄧ浣嶇疆闆嗗悎
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
+ List<String> collect1 = locDetls.stream().map(LocDetl::getOrigin).distinct().collect(Collectors.toList());
+ // 宸ヤ綔鏄庣粏鏈ㄧ浣嶇疆闆嗗悎
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", barcode));
+ List<String> collect2 = wrkDetls.stream().map(WrkDetl::getOrigin).distinct().collect(Collectors.toList());
+ // 宸ヤ綔鐨勫寘瑁呯粍鍙�
+ List<String> wrkBrandlist = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
+ // 宸ヤ綔璁㈠崟鏄庣粏
+ List<OrderDetl> orderDetlList = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().in("brand", wrkBrandlist));
+
+ Date now = new Date();
+
+ // 鍒ゆ柇瑕佽皟鏁寸殑鏈ㄧ鎵�鍦ㄤ綅缃叧绯�
+ if (collect1.size() == 0 || collect2.size() == 0){
+ return R.parse(barcode+"锛氫换鍔″簱瀛樺紓甯革紒");
+ } else if(collect1.size() == 2 && collect2.size() == 1) { // 2鍑�1锛岄兘鏄崟绠辩殑
+ if (matList.size() == 0) { // 瀹炵墿鏄┖
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // todo 鏍囪寮傚父锛屾帹閫乵es锛屽洖搴�
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ kctzPushMes(jsonObject);
+ kctzReturn(wrkMast);
+ } else { // 瀹炵墿涓嶄负绌�
+ // 瀵绘壘瀹炵墿鐨勪綅缃�
+ List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode));
+ if (locDetls1.size() == 0) { // 瀹炵墿鏃犲簱瀛�
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // 琛ュ厖鏈ㄧ浣嶇疆
+ matList.get(0).setBoxPos(collect2.get(0));
+ // 鎶婂疄鐗╃墿鏂欎俊鎭斁鍏ヤ换鍔℃墍鍦ㄥ簱浣�
+ insertLocDetl(locMast.getLocNo(),barcode,matList);
+ // todo 鏍囪寮傚父锛屾帹閫乵es锛屽洖搴�
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ jsonObject.put("insert",matList);
+ kctzPushMes(jsonObject);
+ kctzReturn(wrkMast);
+ }else { // 瀹炵墿鏈夊簱瀛�
+ List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList());
+ return R.parse(brandList+"搴撳瓨宸插瓨鍦紝璇峰厛澶勭悊锛�");
+ }
+ }
+ } else if(collect1.size() == 1 && collect2.size() == 1) {
+ if (matList.size() == 0) { // 瀹炵墿涓虹┖
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // 瀹屾垚杩欐潯鐩樼偣浠诲姟锛氭洿鏂拌鍗曞畬鎴愭暟閲忥紝宸ヤ綔涓绘。5
+ for(WrkDetl wrkDetl:wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand());
+ }
+ }
+ if (locMast.getLocSts().equals("P")) {
+ locMast.setLocSts("O");
+ locMast.setBarcode("");
+ locMast.setSheetNo("");
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ locMastService.updateById(locMast);
+ }
+ // 淇敼宸ヤ綔涓绘。鐘舵��
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+
+ // todo 鏍囪寮傚父锛屼笉鍥炲簱锛岀粰gwcs涓嬪彂鍘诲彔鐩樻満鍛戒护,鎺ㄩ�乵es
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ kctzPushMes(jsonObject);
+
+ // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+ openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),3013,wrkMast.getWrkNo(),wrkMast.getBarcode(),"鐩樼偣寮傚父璋冩暣鍚庡洖鍙犵洏鏈烘帹閫乬wcs");
+ } else { // 瀹炵墿涓嶄负绌�
+ // 瀵绘壘瀹炵墿鐨勪綅缃�
+ List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode));
+ if (locDetls1.size() == 0) { // 瀹炵墿鏃犲簱瀛�
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // 琛ュ厖鏈ㄧ浣嶇疆
+ for (PdtzParam.MatList matList1:matList) {
+ matList1.setBoxPos(collect2.get(0));
+ }
+ // 鎶婂疄鐗╃墿鏂欎俊鎭斁鍏ヤ换鍔℃墍鍦ㄥ簱浣�
+ insertLocDetl(locMast.getLocNo(),barcode,matList);
+ // todo 鏍囪寮傚父锛屽洖搴擄紝鎺ㄩ�乵es
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ jsonObject.put("insert",matList);
+ kctzPushMes(jsonObject);
+
+ kctzReturn(wrkMast);
+ } else { // 瀹炵墿鏈夊簱瀛�
+ List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList());
+ return R.parse(brandList+"搴撳瓨宸插瓨鍦紝璇峰厛澶勭悊锛�");
+ }
+ }
+ } else if (collect1.size() == 2 && collect2.size() == 2) {
+ if (matList.size() == 0) { // 瀹炵墿涓虹┖
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // 瀹屾垚杩欐潯鐩樼偣浠诲姟锛氭洿鏂拌鍗曞畬鎴愭暟閲忥紝宸ヤ綔涓绘。5
+ for(WrkDetl wrkDetl:wrkDetls) {
+ if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+ orderDetlMapper.updateOrderDetlQtyByGroupNo(wrkDetl.getOrderNo(), wrkDetl.getBrand());
+ }
+ }
+ if (locMast.getLocSts().equals("P")) {
+ locMast.setLocSts("O");
+ locMast.setBarcode("");
+ locMast.setSheetNo("");
+ locMast.setIoTime(now);
+ locMast.setModiTime(now);
+ locMastService.updateById(locMast);
+ }
+ // 淇敼宸ヤ綔涓绘。鐘舵��
+ wrkMast.setWrkSts(5L);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+
+ // todo 鏍囪寮傚父锛屾帹閫乵es,涓嶅洖搴擄紝缁檊wcs涓嬪彂鍘诲彔鐩樻満鍛戒护
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ jsonObject.put("insert",matList);
+ kctzPushMes(jsonObject);
+
+ // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+ openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),3013,wrkMast.getWrkNo(),wrkMast.getBarcode(),"鐩樼偣寮傚父璋冩暣鍚庡洖鍙犵洏鏈烘帹閫乬wcs");
+ } else { // 瀹炵墿涓嶄负绌�
+ // 瀵绘壘瀹炵墿鐨勪綅缃�
+ List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().in("brand", groups).notIn("barcode",barcode));
+ if (locDetls1.size() == 0) { // 瀹炵墿鏃犲簱瀛�
+ // 鎶婅浠诲姟鍦ㄥ簱鏄庣粏鍒犻櫎
+ locDetlService.delete(new EntityWrapper<LocDetl>().in("brand",wrkBrandlist));
+ // 琛ュ厖鏈ㄧ浣嶇疆
+ matList.get(0).setBoxPos("宸�");
+ matList.get(1).setBoxPos("鍙�");
+ // 鎶婂疄鐗╃墿鏂欎俊鎭斁鍏ヤ换鍔℃墍鍦ㄥ簱浣�
+ insertLocDetl(locMast.getLocNo(),barcode,matList);
+ // todo 鏍囪寮傚父锛屽洖搴擄紝鎺ㄩ�乵es
+ for(OrderDetl orderDetl:orderDetlList) {
+ orderDetl.setSource(1);
+ orderDetlMapper.updateById(orderDetl);
+ }
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("delete",wrkBrandlist);
+ jsonObject.put("insert",matList);
+ kctzPushMes(jsonObject);
+
+ kctzReturn(wrkMast);
+ } else { // 瀹炵墿鏈夊簱瀛�
+ List<String> brandList = locDetls1.stream().map(LocDetl::getBrand).distinct().collect(Collectors.toList());
+ return R.parse(brandList+"搴撳瓨宸插瓨鍦紝璇峰厛澶勭悊锛�");
+ }
+ }
+ }
+
+ return R.ok("璋冩暣鎴愬姛");
+ }
+
+ @Override
+ public R pdaFhhd(PdaDhhdParam param, Long userId) {
+
+ String orderNo = param.getOrderNo();
+
+ Order order = orderService.selectByNo(orderNo);
+ if (order == null) {
+ return R.parse("鍗曟嵁缂栧彿涓嶅瓨鍦細" + orderNo);
+ } else if (!order.getSettle().equals(4L)) {
+ return R.parse("鍗曟嵁鐘舵�佷笉涓�4.宸插畬鎴�");
+ }
+
+ order.setSettle(5L);
+ order.setUpdateBy(userId);
+ order.setUpdateTime(new Date());
+
+ orderService.updateById(order);
+
+ return R.ok("鍙戣揣鏍稿鎴愬姛");
+ }
+
+ // 鍚屾鐩樼偣寮傚父璋冩暣缁撴灉缁檓es
+ void kctzPushMes(JSONObject jsonObject) {
+ // 鎺ュ彛璇锋眰缁撴灉
+ boolean success = false;
+ // 鎺ュ彛璁板綍绌洪棿鍚嶇О
+ String message = "鍚屾鐩樼偣寮傚父璋冩暣缁撴灉缁檓es";
+
+ // 鏋勯�犺姹備綋
+ String body = jsonObject.toJSONString();
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.MES_CC_IP_PORT)
+ .setPath(MesConstant.MES_CC_YCTZ_URL)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject result = JSON.parseObject(response);
+ if (result.getInteger("code").equals(200)) {
+ success = true;
+ }
+ } else {
+ log.error(message + "澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_YCTZ_URL, body, response);
+ }
+ } catch (Exception e) {
+ log.error(message + "寮傚父锛歿}", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ message,
+ MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_YCTZ_URL,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+ }
+
+ // 鐩樼偣寮傚父鍥炲簱
+ @Transactional
+ public void kctzReturn(WrkMast wrkMast) {
+ if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
+ throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+ }
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", wrkMast.getIoType() - 50)
+ .eq("stn_no", wrkMast.getStaNo())
+ .eq("crn_no", wrkMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+ Date now = new Date();
+ // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+ Integer staNo = staDesc.getCrnStn();
+ // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+ wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+ wrkMast.setWrkSts(14L); // 宸ヤ綔鐘舵��: 14.宸插嚭搴撴湭纭
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+ wrkMast.setStaNo(staNo); // 鐩爣绔�
+ wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+ }
+ // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ locMast.setLocSts("Q");
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+ }
+
+ // 鎺ㄩ�佺粰gwcs鎵ц鍛戒护
+ openServiceImpl.pushStaNoToGwcs(wrkMast.getSourceStaNo(),wrkMast.getStaNo(),wrkMast.getWrkNo(),wrkMast.getBarcode(),"鐩樼偣寮傚父璋冩暣鍚庢帹閫乬wcs");
+ }
+
+ /**
+ * 璋冩暣搴撳瓨鏄庣粏
+ */
+ @Transactional
+ public void insertLocDetl(String locNo, String barcode, List<PdtzParam.MatList> matList) {
+ Date now = new Date();
+ for (PdtzParam.MatList mat : matList) {
+ LocDetl locDetl = new LocDetl();
+ locDetl.setBatch("");
+ locDetl.setLocNo(locNo);
+ locDetl.setMatnr(mat.getSpecs()); // 瑙勬牸
+ locDetl.setMaktx(mat.getSpecs()); //瑙勬牸
+ locDetl.setUnit(mat.getBoxNo()); // 绠卞彿
+ locDetl.setModel(mat.getRollNo()); // 鍗峰彿
+ locDetl.setBrand(mat.getPackageGroupNo()); // 鍖呰缁勫彿
+ locDetl.setZpallet(barcode); // 鎵樼洏鐮�
+ locDetl.setBarcode(barcode);
+ locDetl.setOrigin(mat.getBoxPos()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ locDetl.setColor(mat.getBoxType()); // 鏈ㄧ绫诲瀷
+ locDetl.setManu(mat.getRollType()); // 绠¤姱绫诲瀷
+ locDetl.setSku(mat.getWideInWidth()); // 瀹炴祴瀹藉箙
+ locDetl.setItemNum(mat.getThickness()); // 鐢熺當鍘氬害
+ locDetl.setManuDate(mat.getFqTime()); // 鍒嗗垏涓嬫枡鏃堕棿
+ locDetl.setWeight(mat.getNetWeight()); // 鍑�閲�
+ locDetl.setVolume(mat.getGrossWeight()); // 姣涢噸
+ locDetl.setLength(mat.getLength()); // 闀垮害
+ locDetl.setSpecs(String.valueOf(mat.getSplices())); // 鎺ュご
+ locDetl.setAnfme(1.0);
+// wrkDetl.setThreeCode(null); // 閫氳繃mes鎴杄xcel瀵煎叆妫�娴嬫槸鍚﹀悎鏍� 0涓嶅悎鏍硷紝1 鍚堟牸
+ locDetl.setAppeTime(now);
+ locDetl.setModiTime(now);
+ locDetlService.insert(locDetl);
+ }
+ }
+
+ /**
+ * 涓�妤煎弽淇搧鍏ュ簱鐨勬湪绠遍�氳繃鍖呰缁勫彿闇�缁檓es鎺ㄩ�佸緟鍒�
+ */
+ private void pushDpToMes(List<String> groupNos) {
+ boolean success = false;
+ // 鑾峰彇璇锋眰澶�
+ Map<String,Object> headers = new HashMap<>();
+ headers.put("Content-Type","application/json;charset=UTF-8");
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("groupNos", groupNos);
+ String body = jsonObject.toJSONString();
+
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.MES_CC_IP_PORT)
+ .setPath(MesConstant.MES_CC_DP_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doGet();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ int code = (int) jsonObject1.get("code");
+ boolean state = jsonObject1.getBoolean("state");
+ String msg = (String) jsonObject1.get("message");
+ if (code == 200 && state) {
+ success = true;
+ }
+ throw new CoolException(msg);
+ } else {
+ log.error("杩斾慨鍝佸叆搴撶粰mes鎺ㄩ�佸緟鍒ゅけ璐ワ紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_DP_URL, body, response);
+ throw new CoolException("杩斾慨鍝佸叆搴撶粰mes鎺ㄩ�佸緟鍒ゅけ璐�");
+ }
+ } catch (Exception e) {
+ log.error("杩斾慨鍝佸叆搴撶粰mes鎺ㄩ�佸緟鍒ゅ紓甯革細{}", e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "杩斾慨鍝佸叆搴撶粰mes鎺ㄩ�佸緟鍒�",
+ MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_DP_URL,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+ }
+
+ private Map<String, String> getPackageGroupNoByGwms(List<String> boxNoList) {
+ Map<String, String> map = null;
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("Content-Type", "application/json;charset=UTF-8");
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("boxNoList", JSONObject.toJSONString(boxNoList));
+ String body = jsonObject.toJSONString();
+ boolean success = false;
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.GWMS_IP_PORT)
+ .setPath(MesConstant.GWMS_GET_GROUP_NO_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ int code = (int) jsonObject1.get("code");
+ String msg = (String) jsonObject1.get("msg");
+ if (code != 200) {
+ throw new CoolException(msg);
+ }
+ map = (Map<String, String>) jsonObject1.get("data");
+ success = true;
+
+ } else {
+ log.error("pda缁勬墭鍏ュ簱璇锋眰gwms鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
+ }
+ } catch (Exception e) {
+ log.error("pda缁勬墭鍏ュ簱璇锋眰gwms鎺ュ彛寮傚父锛屽伐浣滃彿锛歿}锛寋}", boxNoList.toString(), e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "pda缁勬墭鍏ュ簱璇锋眰gwms鎺ュ彛",
+ MesConstant.URL + MesConstant.PAKIN_URL,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鎺ュ彛鏃ュ織淇濆瓨寮傚父", e);
+ }
+ }
+
+ if (map == null) {
+ throw new CoolException("璇锋眰gwcs鏌ヨ鍖呰缁勫彿寮傚父");
+ }
+ return map;
+ }
+
+ /**
+ * 姣旇緝涓や釜闆嗗悎鐨勭被鐨勫睘鎬э紝鐩稿悓鍒欐姷娑堬紝鏈�鍚庡垽鏂袱涓泦鍚堟槸鍚﹀畬鍏ㄦ姷娑�
+ */
+ public boolean compareAndCheckCancellation(List<WrkDetl> list1, List<PdckqrParam.Material> list2) {
+ if (list1.size() != list2.size()) {
+ return false; // If lists are not of the same size, cancellation is not possible
+ }
+
+ List<PdckqrParam.Material> remainingList2 = new ArrayList<>(list2);
+
+ // Compare and cancel out elements
+ for (WrkDetl p1 : list1) {
+ boolean cancelled = false;
+ for (PdckqrParam.Material p2 : remainingList2) {
+ if (p1.getUnit().equals(p2.getBoxNo()) && p1.getModel().equals(p2.getRollNo())) { // 鍗峰彿鍜岀鍙风浉鍚�
+ remainingList2.remove(p2);
+ cancelled = true;
+ break;
+ }
+ }
+ if (!cancelled) {
+ return false; // If any element in list1 cannot be cancelled, return false
+ }
+ }
+
+ return remainingList2.isEmpty(); // Return true if all elements in list1 were cancelled out
+ }
+
+ @Override
+ @Transactional
+ public List<Map<String, Object>> boxTypeComb() {
+ EntityWrapper<BasBoxType> wrapper = new EntityWrapper<>();
+ List<Map<String, Object>> result = new ArrayList<>();
+ List<BasBoxType> basBoxTypes = basBoxTypeService.selectList(wrapper.orderBy("id",true));
+ for (BasBoxType basBoxType : basBoxTypes){
+ Map<String, Object> map = new HashMap<>();
+ map.put("boxType", basBoxType.getBoxType());
+ map.put("boxSpecs", basBoxType.getBoxSpecs());
+ result.add(map);
+ }
+ return result;
+ }
+
+ @Override
+ public List<Map<String, Object>> pdaGetMemo() {
+ List<Integer> tagIds = Arrays.asList(7, 8,9);
+ List<Map<String, Object>> raw = matMapper.getBoxMemoMap(tagIds);
+
+ // 鐢� Map<String, List<String>> 鍒嗙粍
+ Map<String, List<String>> grouped = new HashMap<>();
+ for (Map<String, Object> row : raw) {
+ String tagId = String.valueOf(row.get("tag_id"));
+ String memo = String.valueOf(row.get("memo"));
+ if (memo == null || "null".equalsIgnoreCase(memo)) continue;
+
+ grouped.computeIfAbsent(tagId, k -> new ArrayList<>()).add(memo);
+ }
+
+ // 杞垚 List<Map<String, Object>> 缁撴瀯杩斿洖
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (Map.Entry<String, List<String>> entry : grouped.entrySet()) {
+ Map<String, Object> item = new HashMap<>();
+ item.put("tagId", entry.getKey());
+ item.put("memos", entry.getValue());
+ result.add(item);
+ }
+
+ return result;
+ }
+
+
}
--
Gitblit v1.9.1