From 5751b1892a26df14007984776d9ebca4d3272786 Mon Sep 17 00:00:00 2001
From: yxFwq <1>
Date: 星期六, 20 七月 2024 17:36:26 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 1041 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 1,028 insertions(+), 13 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 e81a47d..22c5437 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1,22 +1,36 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+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.*;
+import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.MatUtils;
+import com.zy.asrs.utils.PostMesDataUtils;
+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.model.enums.WorkNoType;
+import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* 绉诲姩绔湇鍔℃牳蹇冪被
@@ -25,6 +39,8 @@
@Slf4j
@Service
public class MobileServiceImpl implements MobileService {
+
+
@Autowired
private MatService matService;
@@ -40,18 +56,588 @@
private WrkMastService wrkMastService;
@Autowired
private WrkDetlService wrkDetlService;
+ @Autowired
+ private PackService packService;
+ @Autowired
+ private OpenService openService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private BasCrnpService basCrnpService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private NodeService nodeService;
+ @Autowired
+ private ManLocDetlService manLocDetlService;
+ @Autowired
+ private ManLocDetlMapper manLocDetlMapper;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private LocDetlRullUpDetailService locDetlRullUpDetailService;
+ @Autowired
+ private TagService tagService;
+ @Autowired
+ private BasBoxTypeService basBoxTypeService;
+
+ @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>().
eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
}
+
+ if(param.getBarcode().length()!=8){
+ throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
+ }
+ if (param.getCombMats().size()>1){
+ throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode());
+ }
+
+ int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
+ int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
+ int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode()));
+ if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+ throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
+ }
+
Date now = new Date();
// 鏃犲崟缁勬墭
@@ -69,6 +655,7 @@
detlDtos.add(detlDto);
}
});
+
for (DetlDto detlDto : detlDtos) {
Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -93,7 +680,7 @@
// 鍏宠仈缁勬墭
} else {
Order order = orderService.selectByNo(param.getOrderNo());
- if (order.getSettle() > 2) {
+ if (Cools.isEmpty(order) || order.getSettle() > 2) {
throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
}
// 鐢熸垚鍏ュ簱閫氱煡妗�
@@ -105,9 +692,9 @@
if (elem.getAnfme() > orderDetl.getEnableQty()) {
throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
}
- // 淇敼璁㈠崟鏄庣粏鏁伴噺
- if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
- throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+ // 淇敼璁㈠崟浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
}
DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
@@ -127,7 +714,7 @@
WaitPakin waitPakin = new WaitPakin();
waitPakin.sync(mat);
waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
- waitPakin.setBatch(detlDto.getBatch()); // 鎵瑰彿
+ waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮�
waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
@@ -140,12 +727,69 @@
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
}
-
+ orderService.updateSettle(order.getId(), 2L, userId);
}
}
+ // 鍟嗗搧涓婃灦
@Override
+ public void onSale(CombParam param) {
+ Date now = new Date();
+ // 鑾峰彇搴撲綅鍙�
+ String locno = param.getLocno();
+ Node node = nodeService.selectByUuid(locno);
+ if (Cools.isEmpty(node)) {
+ throw new CoolException(param.getLocno() + ":搴撲綅涓嶅瓨鍦�");
+ }
+
+ // 鑾峰彇鍟嗗搧鍒楄〃
+ for(CombParam.CombMat combMat : param.getCombMats()){
+ Mat mat = matService.selectByMatnr(combMat.getMatnr());
+ if (Cools.isEmpty(mat)){
+ throw new CoolException(combMat.getMatnr() + ":鍟嗗搧妗f涓嶅瓨鍦紒");
+ }
+ if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
+ throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�");
+ }
+ if (Cools.isEmpty(combMat.getBatch())){
+// throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鎵瑰彿鏈夎锛�");
+ }
+ ManLocDetl manLocDetl = new ManLocDetl();
+ manLocDetl.setLocNo(locno);
+ manLocDetl.setNodeId(node.getId());
+ manLocDetl.setMaktx(mat.getMaktx());
+ manLocDetl.setMatnr(mat.getMatnr());
+ manLocDetl.setBatch(Cools.isEmpty(combMat.getBatch()) ? "" : combMat.getBatch());
+ manLocDetl.setAnfme(combMat.getAnfme());
+ manLocDetl.setModiTime(now);
+ if (!manLocDetlService.insert(manLocDetl)) {
+ throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�");
+ }
+ }
+ }
+
+ // 鍟嗗搧涓嬫灦
+ @Override
+ public void offSale(OffSaleParam offSaleParam) {
+ ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
+ if (Cools.isEmpty(manLocDetl)){
+ throw new CoolException("鏃犳鍟嗗搧锛�");
+ }
+ double anfme = manLocDetl.getAnfme() - offSaleParam.getAnfme();
+ if (anfme < 0) {
+ throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
+ } else if (anfme == 0){
+ manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
+ }
+ manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId());
+ }
+
+ // 鏌ユ壘鍟嗗搧
+
+
+ @Override
+ @Transactional
public void adjust(MobileAdjustParam param, Long userId) {
BasDevp basDevp = basDevpService.selectById(param.getStaNo());
if (null == basDevp || basDevp.getWrkNo() == null) {
@@ -158,10 +802,381 @@
if (wrkMast.getWrkSts() < 10) {
throw new CoolException("鐩樼偣鏃犳晥锛屼换鍔″凡鐩樼偣鍐嶅叆搴�");
}
+ Date now = new Date();
List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+ List<WrkDetl> list = param.getWrkDetls();
+ // 淇敼鏁伴噺
+ Iterator<WrkDetl> iterator = wrkDetls.iterator();
+ while (iterator.hasNext()) {
+ WrkDetl wrkDetl = iterator.next();
+ Iterator<WrkDetl> iterator1 = list.iterator();
+ while (iterator1.hasNext()) {
+ WrkDetl wrkDetl1 = iterator1.next();
+ if (wrkDetl1.getAnfme() == 0) {
+ iterator1.remove();
+ }
+ if (wrkDetl.getMatnr().equals(wrkDetl1.getMatnr()) && Cools.eq(wrkDetl.getBatch(), wrkDetl1.getBatch())) {
+ if (!wrkDetl.getAnfme().equals(wrkDetl1.getAnfme())) {
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ // 淇敼鏄庣粏
+ if (!wrkDetlService.updateAnfme(wrkDetl1.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+ throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+ }
+ }
+ iterator.remove();
+ iterator1.remove();
+ }
+ }
+ }
+
+ // 鍒犻櫎鏄庣粏
+ for (WrkDetl wrkDetl : wrkDetls) {
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ if (!wrkDetlService.updateAnfme(-1.0D, wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+ throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+ }
+ }
+
+ // 娣诲姞鏄庣粏
+ for (WrkDetl wrkDetl : list) {
+ if (wrkDetl.getAnfme() == 0.0D) { continue; }
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ String orderNo = wrkDetl.getOrderNo();
+ Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+ wrkDetl.sync(mat);
+ wrkDetl.setOrderNo(orderNo);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+ }
+ }
+
+ // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
+ wrkMast.setFullPlt(wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).size() != 0?"Y":"N");
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(userId);
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("淇敼鐩樼偣浠诲姟涓绘。澶辫触");
+ }
}
+ @Override
+ @Transactional
+ public void packComb(CombParam param, Long userId) {
+ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+ throw new CoolException(BaseRes.PARAM);
+ }
+ // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+ if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+ eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
+ throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+ }
+ Date now = new Date();
+
+ boolean packDown = Parameter.get().getPackDown().equals("true");
+
+ // 鏃犲崟缁勬墭
+ if (Cools.isEmpty(param.getOrderNo())) {
+
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+ // 鎵撳寘涓婄嚎鏁版嵁鏍¢獙
+ if (packDown) {
+ Pack pack = packService.selectByBarcode(elem.getMatnr());
+ if (pack == null) {
+ throw new CoolException(elem.getMatnr() + "鏉$爜鍐椾綑锛岃妫�鏌ワ紒");
+ }
+ if (pack.getSettle() != 1) {
+ throw new CoolException(elem.getMatnr() + "鏉$爜宸蹭笅绾匡紝璇锋鏌ワ紒");
+ }
+ }
+ Mat analyse = MatUtils.analyseMat(elem.getMatnr());
+ // 鏉$爜銆佺墿鏂欎唬鐮併�佸簭鍒楀彿銆佹暟閲�
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), analyse.getMatnr(), analyse.getBarcode(), elem.getAnfme());
+// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+
+ if (packDown) {
+ MesCombParam mesCombParam = new MesCombParam();
+ mesCombParam.setZpallet(param.getBarcode());
+ mesCombParam.setPakinTime(DateUtils.convert(now));
+ mesCombParam.setLgort("5008");
+ mesCombParam.setPlantCode("5000");
+ mesCombParam.setFromCode("5012-20");
+ mesCombParam.setStationCode("JJQ-PFZPDB-XX");
+ for (DetlDto detlDto : detlDtos) {
+ mesCombParam.getList().add(new MesCombParam.Detl(detlDto.getOrderNo(), detlDto.getAnfme()));
+ }
+ String response = "";
+ boolean success = false;
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.URL)
+ .setPath(MesConstant.PACK_DOWN_URL)
+ .setJson(JSON.toJSONString(mesCombParam))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ success = true;
+ } else if (jsonObject.getInteger("code").equals(500)) {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+ throw new CoolException(jsonObject.getString("msg"));
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
+ throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("fail", e);
+ throw new CoolException(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鎵撳寘涓嬬嚎甯墭涓婃姤",
+ MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(mesCombParam),
+ response,
+ success
+ );
+ } catch (Exception e) { log.error("", e); }
+ }
+
+ }
+
+ // 鐢熸垚鍏ュ簱鍗曟嵁
+ String orderNo = "PACK" + snowflakeIdWorker.nextId();
+ OpenOrderPakinParam openParam = new OpenOrderPakinParam();
+ openParam.setOrderNo(orderNo);
+ openParam.setOrderTime(DateUtils.convert(now));
+ openParam.setOrderType("鎵撳寘鍏ュ簱鍗�");
+ openParam.setOrderDetails(detlDtos);
+ openService.pakinOrderCreate(openParam);
+ Order order = orderService.selectByNo(orderNo);
+ if (null == order) {
+ throw new CoolException("鐢熸垚鍗曟嵁澶辫触");
+ }
+ if (!orderService.updateSettle(order.getId(), 2L, userId)) {
+ throw new CoolException("淇敼鍗曟嵁鐘舵�佸け璐�");
+ }
+
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ for (DetlDto detlDto : detlDtos) {
+
+ // 淇敼浣滀笟鏁伴噺 ----------------------------------------
+ // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch());
+ if (detlDto.getAnfme() > orderDetl.getEnableQty()) {
+ throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+ }
+ // 淇敼璁㈠崟浣滀笟鏁伴噺
+ if (!orderDetlService.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+ }
+
+ // 淇濆瓨鍏ュ簱閫氱煡妗�
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setOrderNo(orderNo);
+ waitPakin.setBatch(detlDto.getBatch());
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.insert(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ // 淇敼鎵撳寘鏁版嵁鐘舵��
+ Pack pack = packService.selectByBarcode(detlDto.getOrderNo());
+ pack.setSettle(2L);
+ pack.setUpdateTime(now);
+ pack.setUpdateBy(userId);
+ if (!packService.updateById(pack)) {
+ throw new CoolException("淇敼鎵撳寘鏁版嵁寮傚父");
+ }
+ }
+
+ }
+ }
+
+ @Override
+ @Transactional
+ public void pakoutByOrder(JSONObject param, Long userId) {
+ Integer staNo = param.containsKey("staNo") ? Integer.parseInt(param.get("staNo").toString()) : 0;
+ String orderNo = param.containsKey("orderNo") ? param.get("orderNo").toString() : "";
+
+ BasDevp sta = basDevpService.checkSiteStatus(staNo);
+ //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。
+ Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
+ if (order.getSettle() != 1 && order.getSettle() != 2){
+ throw new CoolException("璇ヨ鍗曞凡澶勭悊");
+ }
+
+ List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
+ Date now = new Date();
+ for(OrderDetl orderDetl : orderDetls){
+ //鏌ヨ鎵�鏈夊簱浣嶇姸鎬佷负F鐨勫簱浣嶄俊鎭�
+ List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(),orderDetl.getBatch(),null,null);
+ if (locDetls.size() == 0) {
+ throw new CoolException("搴撳瓨涓病鏈夎鐗╂枡");
+ }
+ for(LocDetl locDetl : locDetls){
+ //濡傛灉璇ュ簱浣嶅嚭搴撹矾绾挎墍鐢ㄧ殑鍫嗗灈鏈簅ut_enable涓嶄负Y,璺宠繃璇ュ惊鐜�
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("loc_no", locDetl.getLocNo()));
+ if (Cools.isEmpty(locMast)) {
+ continue;
+ }
+ BasCrnp crn_no = basCrnpService.selectOne(new EntityWrapper<BasCrnp>()
+ .eq("crn_no", locMast.getCrnNo()));
+ if (Cools.isEmpty(crn_no) || !crn_no.getOutEnable().equals("Y")){
+ continue;
+ }
+
+ //鍙嚭搴撴暟閲� = 璁㈠崟鏁伴噺 - 浣滀笟涓暟閲�
+ Double outQty = orderDetl.getAnfme() - orderDetl.getWorkQty();
+ if(outQty <= 0){
+ break;
+ }
+ // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+ Double sumCount = locDetlService.getLocDetlSumQty(locDetl.getLocNo());
+ Double curOutQty = outQty >= locDetl.getAnfme() ? locDetl.getAnfme() : outQty; //鏈鍑哄簱閲�
+ int ioType = sumCount <= curOutQty ? 101 : 103;
+
+ stockOut(orderDetl, sta, locDetl, curOutQty, ioType, userId, now);
+ order.setSettle(2L);
+ order.setUpdateBy(userId);
+ order.setUpdateTime(now);
+ if(!orderService.update(order, new EntityWrapper<Order>().eq("order_no", orderNo))){
+ throw new CoolException("鏇存柊璁㈠崟鐘舵�佸け璐�");
+ }
+ orderDetl.setWorkQty(orderDetl.getWorkQty() + curOutQty);
+ orderDetl.setUpdateBy(userId);
+ orderDetl.setUpdateTime(now);
+ Wrapper wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo)
+ .eq("matnr",orderDetl.getMatnr());
+ if(!Cools.isEmpty(orderDetl.getBatch())){
+ wrapper.eq("batch", orderDetl.getBatch());
+ }
+ if(!orderDetlService.update(orderDetl, wrapper)){
+ throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
+ }
+ }
+
+ }
+ }
+
+ @Override
+ @Transactional
+ public void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
+ Double curOutQty, Integer ioType, Long userId, Date now) {
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(locDetl.getLocNo());
+ // 鑾峰彇璺緞
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", ioType)
+ .eq("stn_no", staNo.getDevNo())
+ .eq("crn_no", locMast.getCrnNo());
+
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+ }
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(2);
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ 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);
+ wrkMast.setBarcode(locMast.getBarcode());
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + locDetl.getLocNo());
+ }
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(curOutQty); // 鏁伴噺
+ wrkDetl.setOrderNo(orderDetl.getOrderNo());
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(locDetl.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locDetl.getLocNo());
+ }
+ } else {
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+
+ @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;
+ }
}
--
Gitblit v1.9.1