From 265881414a15ac8216abb860880bd6872872c42a Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期四, 12 九月 2024 12:49:34 +0800 Subject: [PATCH] mes接口对接 --- src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 845 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 835 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java index a33eb8b..67a7ab4 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -1,7 +1,7 @@ package com.zy.asrs.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; @@ -11,27 +11,29 @@ import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.OpenOrderCompeteResult; import com.zy.asrs.entity.result.StockVo; +import com.zy.asrs.entity.result.ZphjcdgzVo; +import com.zy.asrs.entity.result.ZphjcdwcVo; +import com.zy.asrs.mapper.LocDetlMapper; +import com.zy.asrs.mapper.MatMapper; import com.zy.asrs.mapper.TagMapper; 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.constant.MesConstant; import com.zy.common.model.DetlDto; import com.zy.common.model.LocTypeDto; 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 com.zy.common.utils.NodeUtils; -import com.zy.common.web.WcsController; -import com.zy.common.web.param.SearchLocParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** * Created by vincent on 2022/4/9 @@ -39,6 +41,14 @@ @Slf4j @Service public class OpenServiceImpl implements OpenService { + + // 浜屾ゼ鍫嗗灈鏈哄搴斿叆搴撶珯鐐� + private static final int[] secondFloorIn = new int[]{0,2061,2064,2067,2070,2073,2076}; + // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐� + private static final int[] secondFloorOut = new int[]{0,3002,3003,3006,3008,3009,3012}; + // 鍫嗗灈鏈哄搴斾竴妤煎叆搴撶珯鐐� + private static final int[] oneFloorIn = new int[]{0,3001,3004,3005,3007,3010,3011}; + @Autowired private OrderService orderService; @@ -73,6 +83,8 @@ @Autowired private WrkDetlSingleService wrkDetlSingleService; @Autowired + private WrkMastLogService wrkMastLogService; + @Autowired private WrkMastStaService wrkMastStaService; @Autowired private WrkMastStaLogService wrkMastStaLogService; @@ -80,6 +92,14 @@ private StaDescService staDescService; @Autowired private LocMastService locMastService; + @Autowired + private ApiLogService apiLogService; + + @Resource + private MatMapper matMapper; + + @Resource + private LocDetlMapper locDetlMapper; @Override @Transactional @@ -728,9 +748,10 @@ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細姣涢噸 roughWeight"); }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){ throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鍗烽暱搴� rollExtent"); - }else if (Cools.isEmpty(matList.getJoint()) || matList.getJoint()==0){ - throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鎺ュご鏁� joint"); } +// else if (Cools.isEmpty(matList.getJoint()) || matList.getJoint()==0){ +// throw new CoolException("瑙勬牸锛�"+matList.getMatnr()+"銆佸弬鏁帮細鎺ュご鏁� joint"); +// } if (matList.getPosition().equals("1")){//1銆佸乏 2銆佸彸 if (!matnrOne.equals("")){ @@ -980,6 +1001,810 @@ } + @Override + public void updateBarcode() { + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")); + for (int i = 0; i < locMasts.size(); i ++) { + LocMast locMast = locMasts.get(i); + locMast.setBarcode("a"+i); + locMastService.updateById(locMast); + } + System.out.println("鏇存柊瀹屼簡" + locMasts.size()); + } + + @Override + @Transactional + public void prodCheck(List<ProdCheckParam> param) { + if (param.isEmpty()) { + throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖"); + } + for (ProdCheckParam checkParam : param) { + // 鏇存柊搴撳瓨鏄庣粏鏄惁鍚堟牸 + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo()) + .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo())); + // 鏇存柊鍟嗗搧琛ㄦ槸鍚﹀悎鏍� + Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo()) + .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo())); + if (locDetl == null || mat == null) { + throw new CoolException("鏇存柊鏄惁鍚堟牸鐗╂枡涓嶅瓨鍦細" + checkParam); + } + + locDetl.setThreeCode(checkParam.getQualified()); + mat.setThreeCode(checkParam.getQualified()); + + locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo()) + .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo())); + matService.update(mat,(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo()) + .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()))); + } + } + + @Override + @Transactional + public String fxprk(FxprkParam param) { + + // 鏍规嵁鍖呰缁勫彿鑾峰彇鍒版湪绠卞嵎淇℃伅 + List<Mat> list = matService.selectList(new EntityWrapper<Mat>().in("brand", param.getBoxList().stream().map(FxprkParam.Box::getPackageGroupNo).collect(Collectors.toList()))); + if (list.isEmpty()) { + throw new CoolException("娌℃湁鏌ヨ鍒拌鍖呰缁勫彿淇℃伅锛�" + param.getBoxList().toString()); + } + + LocTypeDto locTypeDto = new LocTypeDto(); + locTypeDto.setLocType1((short) 1); + StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0); + + // 杩斿洖GWCS鐩爣淇℃伅 + boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode()); +// if (!result) { +// throw new CoolException("鍏ュ簱鍥炴帹鍏ュ簱鐮佸ご缁橤WCS澶辫触"); +// } + + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋 + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細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.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + for (Mat obj : list) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(obj); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setAnfme(1.0); + // 閲嶆柊瀹氫綅鏈ㄧ浣嶇疆 + for (FxprkParam.Box box :param.getBoxList()) { + if (box.getPackageGroupNo().equals(obj.getBrand())) { + if (!box.getBoxPos().equals(obj.getOrigin())) { + wrkDetl.setOrigin(box.getBoxPos()); + wrkDetl.setZpallet(param.getBarcode()); + wrkDetl.setBarcode(param.getBarcode()); + matMapper.updateBoxPos(box.getPackageGroupNo(), box.getBoxPos(),param.getBarcode()); + } + break; + } + } + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + 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() + "鐩爣搴撲綅宸茶鍗犵敤"); + } + return "鍏ュ簱鎴愬姛"; + } + + @Override + @Transactional + public R kthl(KthlParam param) { + + // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢� + List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3) + .eq("wrk_no",0).eq("in_enable","Y").eq("out_enable","Y")); + if (basCrnps.isEmpty()) { + // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛� + basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y") + .eq("out_enable","Y")); + } + if (basCrnps.isEmpty()) { + throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�"); + } + // 鍙敤鍫嗗灈鏈哄垪琛� + List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()); + Integer crnNo = crnNoList.get(0); + + int workNo = commonService.getWorkNo(5); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // + wrkMast.setIoType(3); // 绔欏埌绔� + wrkMast.setIoPri(14D); // 浼樺厛绾� + wrkMast.setCrnNo(crnNo); + wrkMast.setSourceStaNo(secondFloorIn[crnNo]); + wrkMast.setStaNo(secondFloorOut[crnNo]); + wrkMast.setLocNo(""); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 杩斿洖GWCS鐩爣淇℃伅 + pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode()); + + return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛"); + } + + @Override + public R tb(TbParam param) { + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode", param.getBarcode())); + if (wrkDetls.isEmpty()) { + return R.parse("鏃犵墿鏂欐槑缁嗕俊鎭�"); + } + List<String> collect = wrkDetls.stream().map(WrkDetl::getUnit).distinct().collect(Collectors.toList()); + return R.ok(collect); + } + + @Override + public R dd(TbParam param) { + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode", param.getBarcode())); + if (wrkDetls.isEmpty()) { + return R.parse("鏃犵墿鏂欐槑缁嗕俊鎭�"); + } + List<DdParam> collect = wrkDetls.stream().map(wrkDetl -> { + DdParam ddParam = new DdParam(); + ddParam.setBoxPos(wrkDetl.getOrigin()); + ddParam.setBoxType(wrkDetl.getColor()); + return ddParam; + }).distinct().collect(Collectors.toList()); + + return R.ok(collect); + } + + @Override + @Transactional + public R gwmsGenerateInventory(GwmsGenerateInventoryDto param) { + + if (Cools.isEmpty(param)) { + throw new CoolException("璇锋眰鍙傛暟鏈夎锛�" + param); + } + if (!Cools.isEmpty(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(1, 1, param.getPalletizingNo(), null,null,null, locTypeDto); + StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0); + + // 杩斿洖GWCS鐩爣淇℃伅 + pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode()); + + + 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("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + if (!Cools.isEmpty(param.getMatList())) { + List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList(); + 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.setIoTime(now); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + + // 鐗╂枡琛ㄥ浠戒竴浠� + Mat mat = new Mat(); + mat.sync(wrkDetl); + mat.setTagId(6L); + mat.setCreateTime(now); + mat.setUpdateTime(now); + if (!matService.insert(mat)) { + 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()+"鐩爣搴撲綅宸茶鍗犵敤"); + } + return null; + } + + @Override + @Transactional + public String crnExecute(CrnExecuteParam param) { + if (Cools.isEmpty(param.getStaNo(),param.getWorkNo())){ + throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛�" + param); + } + + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getWorkNo())); + if (wrkMast == null) { + throw new CoolException("涓嶅瓨鍦ㄨ宸ヤ綔鍙凤細" + param.getWorkNo()); + } + + wrkMast.setWrkSts(2L); + if(wrkMast.getIoType() == 10){ + wrkMast.setBarcode(param.getBarcode()); + } + wrkMastService.updateById(wrkMast); + + return "璇锋眰鎴愬姛"; + } + + @Override + @Transactional + public R zwmsOutLocWork(ZwmsOutLocWorkDto param) { + + Order order = orderService.selectByNo(param.getOrderNo()); + if (!Cools.isEmpty(order)) { + throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦"); + } + + DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE); + Date now = new Date(); + + // 鍗曟嵁涓绘。 + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + param.getOrderNo(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + docType.getDocId(), // 鍗曟嵁绫诲瀷 + null, // 椤圭洰缂栧彿 + null, // + null, // 璋冩嫧椤圭洰缂栧彿 + null, // 鍒濆绁ㄦ嵁鍙� + null, // 绁ㄦ嵁鍙� + null, // 瀹㈡埛缂栧彿 + null, // 瀹㈡埛 + null, // 鑱旂郴鏂瑰紡 + null, // 鎿嶄綔浜哄憳 + null, // 鍚堣閲戦 + null, // 浼樻儬鐜� + null, // 浼樻儬閲戦 + null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 + null, // 瀹炰粯閲戦 + null, // 浠樻绫诲瀷 + null, // 涓氬姟鍛� + null, // 缁撶畻澶╂暟 + null, // 閭垂鏀粯绫诲瀷 + null, // 閭垂 + null, // 浠樻鏃堕棿 + null, // 鍙戣揣鏃堕棿 + null, // 鐗╂祦鍚嶇О + null, // 鐗╂祦鍗曞彿 + 1L, // 璁㈠崟鐘舵�� + 1, // 鐘舵�� + 9527L, // 娣诲姞浜哄憳 + now, // 娣诲姞鏃堕棿 + 9527L, // 淇敼浜哄憳 + now, // 淇敼鏃堕棿 + null // 澶囨敞 + ); + + if (!orderService.insert(order)) { + throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + + // 鍗曟嵁鏄庣粏妗� + for (String groupNo : param.getGroups()) { + OrderDetl orderDetl = new OrderDetl(); + orderDetl.setBrand(groupNo); + orderDetl.setBatch(""); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(9527L); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(9527L); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + orderDetl.setAnfme(1.0); + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + + return R.ok("鍗曟嵁鐢熸垚鎴愬姛"); + + } + + @Override + public R queryInLocTime(List<String> param) { + if (Cools.isEmpty(param)) { + return R.parse("鍙傛暟涓嶈兘涓虹┖"); + } + + List<InLocTimeDto> inLocTimeDtos = locDetlMapper.queryInLocTime(param); + + return R.ok(inLocTimeDtos); + } + + @Override + @Transactional + public String outLocResultReport(GhjtApiParam param) { + + if (Cools.isEmpty(param.getOutLocResult(),param.getWorkNo())) { + throw new CoolException("鍏ュ弬涓嶈兘涓虹┖锛�" + param); + } + + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getWorkNo())); + if (wrkMast == null) { + throw new CoolException("璇ュ伐浣滄。涓嶅瓨鍦紝浠诲姟鍙凤細" + param.getWorkNo()); + } else if(wrkMast.getWrkSts() != 2) { + throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉绗﹀悎锛屼换鍔″彿锛�" + param.getWorkNo() + "锛屽伐浣滄。鐘舵�侊細" + wrkMast.getWrkSts()); + } + + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", param.getWorkNo())); + + // 鏄惁闇�瑕佸鏍�(鍑哄簱鍗曢渶澶嶆牳) + boolean flag = false; + if (!wrkDetls.isEmpty()) { + flag = wrkDetls.stream().anyMatch(wrkDetl -> wrkDetl.getOrderNo() != null); + } + + // 鍒拌揪鍑哄簱鍙g‘璁や负1锛屾洿鏂板伐浣滄。鐘舵�佷负57.鍑哄簱瀹屾垚 + if (param.getOutLocResult() == 1) { +// wrkMast.setWrkSts(20L); +// // 绌烘墭鐩樺埌浣嶇洿鎺ユ洿鏂板伐浣滄。鐘舵�佷负14.宸插嚭搴撴湭纭锛岀┖鎵樻棤闇�澶嶆牳纭 +// if (!flag || wrkMast.getIoType() == 110) { + wrkMast.setWrkSts(14L); +// } + wrkMastService.updateById(wrkMast); + } + + return "鍑哄簱缁撴灉涓婃姤鎴愬姛"; + } + + @Autowired + private BasCrnpService basCrnpService; + + @Override + @Transactional + public String emptyOutLoc(GhjtApiParam param) { +// 3102/3009/3008/3006/3003/3002鈫�3047/3112 + // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢� + List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3) + .eq("wrk_no",0)); + if (basCrnps.isEmpty()) { + // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛� + basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)); + } + if (basCrnps.isEmpty()) { + throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父"); + } + // 鍙敤鍫嗗灈鏈哄垪琛� + List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList()); + // 瀵绘壘绌烘墭鐩樺簱浣嶏紝鍏堟壘娴呭簱浣� + List<LocMast> locMasts; + locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D") + .orderAsc(Arrays.asList("row1","lev1","bay1")).in("crn_no",crnNoList).in("row1",3,4,6,7,10,11,14,15,18,19,22,23)); + if (locMasts.isEmpty()) { + locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D") + .orderAsc(Arrays.asList("row1","lev1","bay1")).in("crn_no",crnNoList).in("row1",1,4,5,8,9,12,13,16,17,20,21,24)); + } + + if (locMasts.isEmpty()) { + throw new CoolException("娌℃湁鎵惧埌绌烘墭鐩橈紝绔欑偣锛�" + param.getStaNo()); + } + + // 鍙栫涓�涓┖搴撲綅 + LocMast locMast = locMasts.get(0); + + // 鑾峰彇宸ヤ綔璺緞 + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 110).eq("stn_no", + param.getStaNo()).eq("crn_no", locMast.getCrnNo())); + + if (staDesc == null) { + throw new CoolException("璺緞涓嶅瓨鍦�"); + } + + //2.鐢熸垚绌烘墭鐩樺嚭搴撳伐浣滄。 + Date now = new Date(); + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(commonService.getWorkNo(WorkNoType.PAKOUT.type)); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 + wrkMast.setIoPri(10D); + wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� + wrkMast.setCrnNo(locMast.getCrnNo()); + wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣� + wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(9999L); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(9999L); + wrkMast.setModiTime(now); + if (!wrkMastService.insert(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + // 3.鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 + if (locMast.getLocSts().equals("D")) { + locMast.setLocSts("R"); + locMast.setModiUser(9999L); + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); + } + } + + return "鍑哄簱鎴愬姛"; + } + + @Override + @Transactional + public R zphjDw(ZphjckdwParam param) { + // 鏍规嵁浠诲姟鍙峰緱鍒板伐浣滀富妗� + if (Cools.isEmpty(param.getWorkNo())) { + throw new CoolException("宸ヤ綔鍙蜂笉鑳戒负绌猴紒"); + } + WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo()); + if (wrkMast == null) { + throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�"); + } + if (wrkMast.getWrkSts() != 2 || wrkMast.getIoType() != 103) { + throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉涓�2/鍑哄簱绫诲瀷涓嶄负鎷f枡锛�"); + } + // 鏇存柊宸ヤ綔妗g姸鎬�2.璁惧涓婅蛋->42.绛夊緟鐮佸灈 + wrkMast.setWrkSts(42L); + wrkMastService.updateById(wrkMast); + + // 鏌ヨ瑕佹媶鐨勪綅缃紝鍙湁涓�涓� + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + WrkDetl wrkDetl = wrkDetls.get(0); + + // 杩斿洖鎷嗗灈瑙勫垯 + ZphjcdgzVo zphjcdgzVo = new ZphjcdgzVo(); + zphjcdgzVo.setWorkNo(wrkDetl.getWrkNo()); + zphjcdgzVo.setBoxType(wrkDetl.getColor()); + zphjcdgzVo.setPosition(wrkDetl.getOrigin()); + + return R.ok(zphjcdgzVo); + } + + @Override + @Transactional + public R zphjCdwc(ZphjcdwcParam param) { + + if (Cools.isEmpty(param.getWorkNo(),param.getBarcode(),param.getSourceStaNo(),param.getSite())) { + return R.parse("鍙傛暟涓嶈兘涓虹┖锛岃妫�鏌ュ叆鍙�"); + } + WrkMast wrkMast = wrkMastService.selectById(param.getWorkNo()); + if (wrkMast == null) { + throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�"); + } + if (wrkMast.getWrkSts() != 42 || wrkMast.getIoType() != 103) { + throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉涓�42/鍑哄簱绫诲瀷涓嶄负鎷f枡锛�"); + } + + // 鑾峰彇鍑哄簱鐗╂枡 + List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); + + // 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。 + int work = create111Work(wrkMast, wrkDetls, param.getSite(), wrkMast.getStaNo(), param.getBarcode()); + + int descFlag = getType(wrkDetls); + + // get0鍘熸墭鐩樺洖娴佷俊鎭紝get1鎷嗗灈鍑烘潵鐗╂枡鍑哄簱淇℃伅 + List<ZphjcdwcVo> zphjcdwcVos = new ArrayList<>(); + ZphjcdwcVo zphjcdwcVo1 = new ZphjcdwcVo(); + zphjcdwcVo1.setWorkNo(wrkMast.getWrkNo()); + zphjcdwcVo1.setStaNo(wrkMast.getSourceStaNo()); + zphjcdwcVo1.setSourceStaNo(param.getSourceStaNo()); + zphjcdwcVo1.setBarcode(wrkMast.getBarcode()); + zphjcdwcVos.add(zphjcdwcVo1); + + ZphjcdwcVo zphjcdwcVo2 = new ZphjcdwcVo(); + zphjcdwcVo2.setWorkNo(work); + zphjcdwcVo2.setSourceStaNo(param.getSite()); + zphjcdwcVo2.setStaNo(wrkMast.getStaNo()); + zphjcdwcVo2.setBarcode(param.getBarcode()); + zphjcdwcVo2.setDescFlag(descFlag); + zphjcdwcVos.add(zphjcdwcVo2); + + + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + 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.getSourceStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 +// .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 +// StaDesc staDesc = staDescService.selectOne(wrapper); +// if (Cools.isEmpty(staDesc)) { +// throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); +// } + // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) +// Integer staNo = staDesc.getCrnStn(); + // 鏇存柊宸ヤ綔绫诲瀷103->53 + wrkMast.setIoType(53); + wrkMast.setWrkSts(52L); // 宸ヤ綔鐘舵��42->52.璁惧涓婅蛋锛堟媶鍨涘畬鎴愶級 + // 鐩爣绔欑偣婧愮珯鐐硅浆鎹� + wrkMast.setStaNo(oneFloorIn[wrkMast.getCrnNo()]); + wrkMast.setSourceStaNo(param.getSourceStaNo()); + + // 鐩爣搴撲綅=婧愬簱浣� + wrkMast.setLocNo(wrkMast.getSourceLocNo()); + // 婧愬簱浣嶆竻闄� + wrkMast.setSourceLocNo(""); + wrkMast.setModiTime(new Date()); + + // 鏇存柊宸ヤ綔涓绘。 + wrkMastService.updateById(wrkMast); + // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + locMast.setLocSts("Q"); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)) { + throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); + } + + // 涓嬪彂鍥炲簱鐨勭洰鏍囩珯鐐瑰拰鎷嗗灈鐨勫嚭搴撶洰鏍囩珯鐐圭粰gwcs + return R.ok(zphjcdwcVos); + } + + @Override + public R requestXhd(String barcode) { + + // 搴撳瓨鏄庣粏鏈ㄧ浣嶇疆闆嗗悎 + List<LocDetl> locDetls = locDetlMapper.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()); + + // 0鏄庣粏寮傚父,1浜乏锛�2浜彸锛�3閮戒寒 + if (collect1.size() == 0 || collect2.size() == 0){ + return R.ok(0); + } else if((collect1.size() == 1 && collect2.size() == 1) || (collect1.size() == 2 && collect2.size() == 2)) { + return R.ok(3); + } else if(collect1.size() == 2 && collect2.size() == 1) { + return R.ok(collect2.get(0).equals("宸�") ? 1 : 2); + } else { + return R.parse("浜俊鍙风伅鏉$爜寮傚父锛�" + barcode); + } + + } + + /** + * 鍒涘缓妗佹灦鐞嗚揣鍑哄簱鐨勫伐浣滄。 + */ + private int create111Work(WrkMast wrk, List<WrkDetl> wrkDetls, Integer site, Integer staNo,String barcode) { + int workNo = commonService.getWorkNo(4); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋 + wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細111.鐞嗚揣璐存爣鍑哄簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(wrk.getCrnNo()); + wrkMast.setSourceStaNo(site); + wrkMast.setStaNo(staNo); + wrkMast.setSourceLocNo(wrk.getSourceLocNo()); + 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); + + // 鎻掑叆宸ヤ綔妗� + wrkMastService.insert(wrkMast); + + // 鎻掑叆宸ヤ綔妗f槑缁� + for (WrkDetl wrkDetl:wrkDetls) { + wrkDetl.setWrkNo(workNo); + wrkDetl.setBarcode(barcode); + wrkDetl.setZpallet(barcode); + wrkDetlService.insert(wrkDetl); + } + + return workNo; + } + + /** + * 鏍规嵁鍑哄簱鐗╂枡鏄庣粏鍒ゆ柇鏄惁鍘昏创鏍�(鍗曞嵎璐存爣锛屽鍗蜂笉璐存爣) + * @param wrkDetls 鐗╂枡鏄庣粏 + * @return 1.澶氬嵎鐩存帴鍑鸿矾寰勶紝4.鍗曞嵎璐存爣璺緞 + */ + private int getType(List<WrkDetl> wrkDetls) { + return wrkDetls.size() > 1 ? 1 : 4; // 涓�鏉¤褰曞氨鏄竴鍗� + } + + public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) { + boolean success = false; + // 鑾峰彇璇锋眰澶� + Map<String, Object> headers = getHeaders(); + + // 鏋勯�犺姹備綋 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("workNo", workNo); + jsonObject.put("staNo", staNo); + jsonObject.put("sourceStaNo", palletizingNo); + jsonObject.put("barcode", barcode); + String body = jsonObject.toJSONString(); + String response = ""; + try { + response = new HttpHandler.Builder() + .setUri(MesConstant.GWCS_IP_PORT) + .setPath(MesConstant.GWCS_FPKW_URL) + .setHeaders(headers) + .setJson(body) + .build() + .doPost(); + if (!Cools.isEmpty(response)) { + success = true; +// // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶� +// if (!orderService.updateSettle(order.getId(), 6L, null)) { +// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳"); +// } + } else { + log.error("zmws鎺ㄩ�佸叆搴撶爜澶寸珯鐐规帴鍙eけ璐ワ紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response); + throw new CoolException("涓婃姤mes绯荤粺澶辫触"); + } + } catch (Exception e) { + log.error("鍏ュ簱璇锋眰鎺ュ彛澶辫触锛歿}", e.getMessage()); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鍏ュ簱", + MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL, + null, + "127.0.0.1", + body, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return success; + } + + Map<String, Object> getHeaders(){ + Map<String,Object> headers = new HashMap<>(); + headers.put("digi-type","sync "); + headers.put("digi-protocol","raw"); + headers.put("digi-datakey"," XCommon.ImportData"); + + return headers; + } + + private void descSta(Integer staNo,Integer crnNo){ // int[] typeNos =new int[]{1,10,53,101,103,110}; int[] typeNos =new int[]{10,110}; -- Gitblit v1.9.1