From 41326b3129ae3e4ef7a45bc16dba64dc9dd27404 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期三, 04 九月 2024 09:58:14 +0800 Subject: [PATCH] Merge branch 'phyzasrs' of http://47.97.1.152:5880/r/zy-asrs into phyzasrs-erp --- src/main/java/com/zy/asrs/controller/OpenController.java | 22 + src/main/java/com/zy/asrs/entity/param/MesPakoutReportParam.java | 39 +++ src/main/java/com/zy/asrs/task/AutoMoveScheduler.java | 4 src/main/java/com/zy/asrs/controller/AgvWrkMastController.java | 3 src/main/java/com/zy/asrs/entity/param/MesPakinReportParam.java | 41 +++ src/main/java/com/zy/asrs/service/OpenService.java | 5 src/main/java/com/zy/asrs/controller/AgvIoWorkController.java | 2 src/main/webapp/views/order/order.html | 2 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 316 +++++++++++++++++++++++++ src/main/java/com/zy/asrs/entity/param/MesBuyPakinReportParam.java | 53 ++++ src/main/java/com/zy/asrs/entity/param/CheckParam.java | 13 + src/main/webapp/static/js/order/order.js | 7 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 7 src/main/java/com/zy/common/model/DetlDto.java | 2 src/main/java/com/zy/asrs/entity/param/MesOrderReportParam.java | 89 +++++++ src/main/webapp/static/js/agvLocMast/locMast.js | 2 src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java | 8 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 55 ++++ src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java | 3 src/main/resources/application.yml | 13 20 files changed, 656 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvIoWorkController.java b/src/main/java/com/zy/asrs/controller/AgvIoWorkController.java index 950acd4..925a0c7 100644 --- a/src/main/java/com/zy/asrs/controller/AgvIoWorkController.java +++ b/src/main/java/com/zy/asrs/controller/AgvIoWorkController.java @@ -121,7 +121,7 @@ return null; } - int floor = Integer.parseInt(sourceLocNo.split("@")[1]); + int floor = Integer.parseInt(sourceLocNo.split("F")[1]); List<String> locNoList = agvLocMastService.queryGroupEmptyStock(floor); diff --git a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java index 4a7d056..b6e2b87 100644 --- a/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java +++ b/src/main/java/com/zy/asrs/controller/AgvWrkMastController.java @@ -54,7 +54,8 @@ }else { wrapper.orderBy("io_time", false); } - return R.ok(agvWrkMastService.selectPage(new Page<>(curr, limit), wrapper)); + Page<AgvWrkMast> agvWrkMastPage = agvWrkMastService.selectPage(new Page<>(curr, limit), wrapper); + return R.ok(agvWrkMastPage); } @RequestMapping(value = "/wrkMast/list/auth/dbList") diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 1e2b75c..85a52f7 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -110,7 +110,7 @@ return R.parse(BaseRes.PARAM); } - String docName = param.getChildren().get(0).getIQuantity() > 0 ? "閾跺骇閲囪喘鍏ュ簱鍗�" : "閾跺骇閲囪喘閫�璐у崟"; + String docName = !Cools.isEmpty(param.getOrderType()) ? param.getOrderType() : param.getChildren().get(0).getIQuantity() > 0 ? "閾跺骇閲囪喘鍏ュ簱鍗�" : "閾跺骇閲囪喘閫�璐у崟"; boolean pakin = param.getChildren().get(0).getIQuantity() > 0 ? true : false; openService.syncOrder(param,pakin,docName); @@ -119,6 +119,26 @@ } + /* + 鐩樼偣鎺ュ彛 + */ + @PostMapping("/check/default/v1") + @AppAuth(memo = "搴撳瓨鐩樼偣") + public synchronized R checkLoc(@RequestHeader(required = false) String appkey, + @RequestBody(required = true) CheckParam param, + HttpServletRequest request){ + auth(appkey, param, request); + if (Cools.isEmpty(param)) { + return R.parse(BaseRes.PARAM); + } + + openService.checkAndAdjustLocDetl(param); + + return R.ok("搴撳瓨璋冩暣鎴愬姛"); + + } + + @PostMapping("/order/pakout/default/v1") @AppAuth(memo = "鍚屾宸ュ崟鍗曟嵁") public synchronized R orderPakout(@RequestHeader(required = false) String appkey, diff --git a/src/main/java/com/zy/asrs/entity/param/CheckParam.java b/src/main/java/com/zy/asrs/entity/param/CheckParam.java new file mode 100644 index 0000000..93569bb --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/CheckParam.java @@ -0,0 +1,13 @@ +package com.zy.asrs.entity.param; + +import com.zy.common.model.DetlDto; +import lombok.Data; + +import java.util.List; + +@Data +public class CheckParam { + private String locNo; + private String containerCode; + private List<DetlDto> locDetls; +} diff --git a/src/main/java/com/zy/asrs/entity/param/MesBuyPakinReportParam.java b/src/main/java/com/zy/asrs/entity/param/MesBuyPakinReportParam.java new file mode 100644 index 0000000..e4cdc08 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/MesBuyPakinReportParam.java @@ -0,0 +1,53 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +import java.util.List; + +/** + * 閲囪喘鍏ュ簱涓婃姤鍙傛暟 + */ +@Data +public class MesBuyPakinReportParam { + //閲囪喘璁㈠崟缂栫爜 + private String code; + private List<Iteam> iteam; + + @Data + public static class Iteam{ + //鐗╂枡缂栧彿 + private String materialCode; + //鎵规鍙� + private String batchNo; + //饧嗙淮鐮� + private String qrCode; + //閲囪喘璁㈠崟饩忓彿 + private String lineNo; + //饧婂簱鏁伴噺 + private Double amount; + //澶囨敞 + private String remark; + //鍗曚綅鍚嶇О + private String unit; + //渚涘簲鍟嗙紪鍙� + private String supplierCode; + //饧婂簱浣嶇疆 + private String storageLocationCode; + + public Iteam(String materialCode, String batchNo, String qrCode, String lineNo, Double amount, String remark, String supplierCode, String storageLocationCode) { + this.materialCode = materialCode; + this.batchNo = batchNo; + this.qrCode = qrCode; + this.lineNo = lineNo; + this.amount = amount; + this.remark = remark; + this.supplierCode = supplierCode; + this.storageLocationCode = storageLocationCode; + } + + public Iteam(){ + + } + } + +} diff --git a/src/main/java/com/zy/asrs/entity/param/MesOrderReportParam.java b/src/main/java/com/zy/asrs/entity/param/MesOrderReportParam.java new file mode 100644 index 0000000..24a35ab --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/MesOrderReportParam.java @@ -0,0 +1,89 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +import java.util.List; + +/** + * MES璋冩嫧鍙傛暟 + */ +@Data +public class MesOrderReportParam { + //缂栫爜 + private String code; + //澶囨敞 + private String remark; + private List<TransferOrderItem> transferOrderItems; + private RecordCustomFieldBaseCO recordCustomFieldBaseCO; + + @Data + public static class RecordCustomFieldBaseCO{ + private List<CustomField> customFields; + + @Data + public static class CustomField{ + private String fieldCode; + private String fieldValue; + + public CustomField(String fieldCode, String fieldValue) { + this.fieldCode = fieldCode; + this.fieldValue = fieldValue; + } + } + } + + @Data + public static class TransferOrderItem{ + + //琛屽娉� 鍗曟嵁鍙� + private String remark; + //鎺ユ敹浠撲綅 + private String targetLocationCode; + + private List<InventoryDetail> inventoryDetails; + + + @Data + public static class InventoryDetail{ + private Amount amount; + private BizKey bizKey; + //鍙戝嚭浠撲綅 + private String locationCode; + //鐗╂枡缂栫爜 + private String materialCode; + //璐ㄩ噺鐘舵�� + private Integer qcStatus; + //浠撳偍鐘舵�� + private Integer storageStatus; + //鐗堟湰鍙凤紝榛樿涓簄ull + private String version; + + @Data + public static class Amount{ + //鏁伴噺 + private Double amount; + //鍗曚綅缂栫爜 + private String unitCode; + //鍗曚綅鍚嶇О 浜岄�変竴 + private String unitName; + + public Amount(Double amount, String unitName, String unitCode) { + this.amount = amount; + this.unitCode = unitCode; + this.unitName = unitName; + } + } + + @Data + public static class BizKey{ + //鎵规 + private String batchNo; + + public BizKey(String batchNo) { + this.batchNo = batchNo; + } + } + } + + } +} diff --git a/src/main/java/com/zy/asrs/entity/param/MesPakinReportParam.java b/src/main/java/com/zy/asrs/entity/param/MesPakinReportParam.java new file mode 100644 index 0000000..462d4b8 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/MesPakinReportParam.java @@ -0,0 +1,41 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +/** + * MES鍏ュ簱涓婃姤鍙傛暟 + */ +@Data +public class MesPakinReportParam { + private String bizType; + private String inboundOrderCode; + private String remark; + private InventoryAttr inventoryAttr; + private NoQrCodeExecAmount noQrCodeExecAmount; + + @Data + public static class InventoryAttr{ + private String batchNo; + private String materialCode; + private String storageLocationCode; + + public InventoryAttr(String batchNo,String materialCode,String storageLocationCode){ + this.batchNo = batchNo; + this.materialCode = materialCode; + this.storageLocationCode = storageLocationCode; + } + } + + @Data + public static class NoQrCodeExecAmount{ + private Double amount; + private String unitName; + private String unitCode; + + public NoQrCodeExecAmount(Double amount, String unitName, String unitCode) { + this.amount = amount; + this.unitName = unitName; + this.unitCode = unitCode; + } + } +} diff --git a/src/main/java/com/zy/asrs/entity/param/MesPakoutReportParam.java b/src/main/java/com/zy/asrs/entity/param/MesPakoutReportParam.java new file mode 100644 index 0000000..ec501ad --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/MesPakoutReportParam.java @@ -0,0 +1,39 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +import java.util.List; + +/** + * MES鍑哄簱涓婃姤鍙傛暟 + */ +@Data +public class MesPakoutReportParam { + //鐗╂枡缂栫爜 + private String materialCode; + //澶囨敞 + private String remark; + //浠撲綅缂栧彿 + private String storageCode; + //浠撳簱缂栧彿 + private String wareHouseCode; + + private List<String> batchNos; + + private Amount amount; + + @Data + public static class Amount{ + private Double amount; + //鍗曚綅缂栧彿(缂栧彿鍜屽悕绉板繀濉竴涓�,涓よ�呬笉涓�鑷翠笖閮芥湁鏁堜互缂栧彿涓哄噯) + private String unitCode; + //鍗曚綅鍚嶇О(缂栧彿鍜屽悕绉板繀濉竴涓�,涓よ�呬笉涓�鑷翠笖閮芥湁鏁堜互缂栧彿涓哄噯) + private String unitName; + + public Amount(Double amount, String unitName, String unitCode) { + this.amount = amount; + this.unitCode = unitCode; + this.unitName = unitName; + } + } +} diff --git a/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java b/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java index 5f3f9c3..fc67c8d 100644 --- a/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java +++ b/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java @@ -12,8 +12,10 @@ //鍏ュ嚭搴撴爣璁� private Integer pakin; + //鍗曟嵁绫诲瀷 + private String orderType; - //閲囪喘璁㈠崟缂栧彿 + //璁㈠崟缂栧彿 private String cPOID; //渚涘簲鍟嗙紪鐮� private String cVenCode; @@ -88,10 +90,12 @@ @Data public static class OrderDetl{ - //閲囪喘璁㈠崟琛屽彿 + //璁㈠崟琛屽彿 private String ivouchrowno; //鐗╂枡缂栫爜 private String cInvCode; + //鎵瑰彿 + private String batch; //闇�姹傛椂闂� private String dArriveDate; //闇�姹傛暟閲� diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java index 58e5630..93c86d9 100644 --- a/src/main/java/com/zy/asrs/service/OpenService.java +++ b/src/main/java/com/zy/asrs/service/OpenService.java @@ -5,6 +5,7 @@ import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.OpenOrderCompeteResult; import com.zy.asrs.entity.result.StockVo; +import com.zy.common.model.LocDetlDto; import java.util.List; @@ -78,4 +79,8 @@ */ boolean orderDelete(String orderNo); + /* + 搴撳瓨鐩樼偣 + */ + boolean checkAndAdjustLocDetl(CheckParam params); } diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index 8959640..39d6cbb 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -390,7 +390,7 @@ //鐢熸垚绉诲簱宸ヤ綔妗� AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo)); //鐢熸垚宸ヤ綔鍏氭槑缁� - createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProcessSts()); + createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime()); //淇敼鐩爣搴撲綅鐘舵�� updateAgvLocMast(targetLocMast,"S"); //淇敼鍘熷簱浣嶇姸鎬� @@ -533,6 +533,7 @@ updateAgvLocMast(agvLocMast,"S"); return agvLocMast.getLocNo(); } + /* 绌烘澘鍑哄簱 */ @@ -1055,6 +1056,7 @@ wrkDetl.setAppeTime(now); wrkDetl.setModiUser(userId); wrkDetl.setModiTime(now); + wrkDetl.setThreeCode(csocode); wrkDetl.setDeadTime(isoseq); if (!agvWrkDetlService.insert(wrkDetl)) { @@ -1117,7 +1119,6 @@ wrkMast.setModiUser(userId); wrkMast.setModiTime(now); wrkMast.setLogErrMemo("createWaitPainWrkMastStart"); - if (!agvWrkMastService.insertByIncrease(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } @@ -1228,4 +1229,4 @@ } -} \ No newline at end of file +} 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 1d7833c..05eff1d 100644 --- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java @@ -16,7 +16,9 @@ import com.zy.asrs.utils.MatUtils; import com.zy.common.model.DetlDto; import com.zy.common.utils.NodeUtils; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +61,10 @@ private WrkDetlService wrkDetlService; @Autowired private ReportQueryMapper reportQueryMapper; + @Autowired + private AgvLocMastService agvLocMastService; + @Autowired + private AgvLocDetlService agvLocDetlService; @Override @Transactional @@ -129,6 +135,9 @@ } OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); + if (!Cools.isEmpty(detlDto.getCFree1())){ + orderDetl.setSpecs(detlDto.getCFree1()); + } orderDetl.setBatch(detlDto.getBatch()); orderDetl.setAnfme(detlDto.getAnfme()); orderDetl.setOrderId(order.getId()); @@ -918,6 +927,49 @@ return true; } + @Override + @Transactional + @Synchronized + public boolean checkAndAdjustLocDetl(CheckParam params) { + + //鍒ゆ柇搴撲綅鏄惁瀛樺湪 + AgvLocMast agvLocMast = agvLocMastService.selectById(params.getLocNo()); + if(Cools.isEmpty(agvLocMast)){ + throw new CoolException("搴撲綅鍙蜂笉瀛樺湪"); + } + + if(!Cools.eq("O",agvLocMast.getLocSts()) && !Cools.eq("F",agvLocMast.getLocSts())){ + throw new CoolException("褰撳墠搴撲綅姝e湪浣滀笟涓紝鏃犳硶鐩樼偣璋冩暣"); + } + + if(Cools.isEmpty(params.getLocDetls())){ + agvLocMast.setLocSts("O"); + }else { + agvLocMast.setLocSts("F"); + } + + agvLocMastService.updateById(agvLocMast); + + //鍒犻櫎鏃у簱瀛� + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",params.getLocNo())); + + //鏂板鐩樼偣搴撳瓨 + for (DetlDto detlDto : params.getLocDetls()){ + AgvLocDetl agvLocDetl = new AgvLocDetl(); + Mat mat = matService.selectByMatnr(detlDto.getMatnr()); + BeanUtils.copyProperties(mat,agvLocDetl); + agvLocDetl.setLocNo(params.getLocNo()); + agvLocDetl.setSuppCode(params.getContainerCode()); + agvLocDetl.setAnfme(detlDto.getAnfme()); + agvLocDetl.setBatch(detlDto.getBatch()); + agvLocDetl.setThreeCode(detlDto.getCsocode()); + agvLocDetl.setDeadTime(detlDto.getIsoseq()); + agvLocDetlService.insert(agvLocDetl); + } + + return true; + } + private Order orderMapping(OrderSyncParam param, Date now, boolean pakin, String docName){ Order order = new Order(); //uuid @@ -930,6 +982,9 @@ //鍗曟嵁鏃ユ湡 order.setOrderTime(param.getDdate()); + //渚涘簲鍟嗙紪鐮� + order.setSalesman(param.getCVenCode()); + order.setMemo(param.getCMemo()); //鍒跺崟浜� order.setShipCode(param.getCPersonCode()); diff --git a/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java b/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java index db4034f..04fe7ac 100644 --- a/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java +++ b/src/main/java/com/zy/asrs/task/AutoMoveScheduler.java @@ -82,7 +82,7 @@ try{ autoMoveHandler.start2(agvWrkMast); } catch (Exception e){ - log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"璋冩嫧鍑哄簱,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage()); + //log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"璋冩嫧鍑哄簱,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage()); } } @@ -130,7 +130,7 @@ try{ autoMoveHandler.start3(agvWrkMast); } catch (Exception e){ - log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"璋冩嫧鍑哄簱,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage()); + //log.error("宸ヤ綔鍙�"+agvWrkMast.getWrkNo()+"璋冩嫧鍑哄簱,澶勭悊澶辫触锛�===銆嬪紓甯稿師鍥狅細"+e.getMessage()); } } diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java index 93e8c90..9a23068 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -1,14 +1,20 @@ package com.zy.asrs.task.handler; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.MesBuyPakinReportParam; +import com.zy.asrs.entity.param.MesOrderReportParam; +import com.zy.asrs.entity.param.MesPakinReportParam; +import com.zy.asrs.entity.param.MesPakoutReportParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -17,17 +23,52 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @Service public class AgvWrkMastHandler extends AbstractHandler<String> { + //鍏ュ簱绫诲瀷鏁扮粍 + private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>(){{ + add(1); + }}; + //private static final int[] IN_TYPE_ARRAY = {1}; + //鍑哄簱绫诲瀷鏁扮粍 + private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>(){{ +// add(101); + }}; + //private static final int[] OUT_TYPE_ARRAY = {101}; + //绉诲簱绫诲瀷鏁扮粍 + private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>(){{ + add(11);add(101); add(12); add(53); add(101); add(108); add(111); add(112); + + + }}; + //private static final int[] MOVE_TYPE_ARRAY = {11,12}; + @Value("${agvBasDev.maxWorkNum}") private int maxWrokNum; + @Value("${mes.url}") + private String url; + @Value("${mes.getTokenUrl}") + private String getTokenUrl; + @Value("${mes.orderReportPath}") + private String orderReportPath; + @Value("${mes.pakinReportPath}") + private String pakinReportPath; + @Value("${mes.buyPakinReportPath}") + private String buyPakinReportPath; + @Value("${mes.pakoutReportPath}") + private String pakoutReportPath; + @Value("${mes.getTokenPath}") + private String getTokenPath; + @Value("${mes.appKey}") + private String appKey; + @Value("${mes.appSecret}") + private String appSecret; + @Autowired private AgvWrkMastService agvWrkMastService; @@ -51,9 +92,18 @@ private AgvBasDevpService agvBasDevpService; @Autowired private AgvWorkService agvWorkService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private OrderDetlService orderDetlService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + try{ int wrkNo = agvWrkMast.getWrkNo(); String barcode = agvWrkMast.getBarcode(); @@ -241,17 +291,30 @@ }); } - return SUCCESS; + //涓婃姤mes +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } + + //return SUCCESS; }catch (Exception e){ log.error(""+e.getMessage()); } - return FAIL; + reportMes(agvWrkMast,agvWrkDetlListOld); + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { + + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + + try{ + Date now = new Date(); int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); @@ -291,7 +354,6 @@ wrkMast.setModiUser(9527L); wrkMast.setModiTime(now); wrkMast.setLogErrMemo("completedCarryWrk"); - if (!agvWrkMastService.insertByIncrease(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } @@ -328,15 +390,25 @@ orderService.checkComplete(o); }); } - return SUCCESS; + + //涓婃姤mes +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } + }catch (Exception e){ log.error(""+e.getMessage()); } - return FAIL; + reportMes(agvWrkMast,agvWrkDetlListOld); + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + try{ int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); @@ -374,11 +446,18 @@ orderService.checkComplete(o); }); } - return SUCCESS; + //涓婃姤mes +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } +// reportMes(agvWrkMast,agvWrkDetlListOld); +// return SUCCESS; }catch (Exception e){ log.error(""+e.getMessage()); } - return FAIL; + reportMes(agvWrkMast,agvWrkDetlListOld); + return SUCCESS; } @Transactional @@ -547,4 +626,219 @@ return wrkMast; } + + private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + if(Cools.isEmpty(agvWrkDetls)){ + return ; + } + //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮� + + if(IN_TYPE_LIST.contains(agvWrkMast.getIoType())){ + reportMesPakinOrder(agvWrkMast,agvWrkDetls); + } + if(OUT_TYPE_List.contains(agvWrkMast.getIoType())){ + reportMesPakoutOrder(agvWrkMast,agvWrkDetls); + } + if(MOVE_TYPE_List.contains(agvWrkMast.getIoType())){ + generateMesParam(agvWrkMast,agvWrkDetls); + } + } + + private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + + for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ + //鍒ゆ柇鏄惁閲囪喘鍏ュ簱 + + String orderNo = agvWrkDetl.getOrderNo(); + Order order = orderService.selectByNo(orderNo); + + DocType docType = docTypeService.selectById(order.getDocType()); + + if (docType.getDocName().contains("閲囪喘")){ + + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(orderNo, agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); + + MesBuyPakinReportParam mesBuyPakinReportParam = new MesBuyPakinReportParam(); + List<MesBuyPakinReportParam.Iteam> iteams = new ArrayList<>(); + MesBuyPakinReportParam.Iteam iteam = new MesBuyPakinReportParam.Iteam(); + iteam.setMaterialCode(agvWrkDetl.getMatnr()); + iteam.setBatchNo(agvWrkDetl.getBatch()); + iteam.setAmount(agvWrkDetl.getAnfme()); + iteam.setStorageLocationCode(agvWrkMast.getLocNo()); + iteam.setLineNo(orderDetl.getItemNum()); + iteam.setSupplierCode(order.getSalesman()); + iteam.setUnit(agvWrkDetl.getUnit()); + + iteams.add(iteam); + + mesBuyPakinReportParam.setCode(orderNo); + mesBuyPakinReportParam.setIteam(iteams); + + doHttpRequest(mesBuyPakinReportParam,getMesTokenInfo(),"涓婃姤mes閲囪喘鍏ュ簱淇℃伅",url,buyPakinReportPath,null,"127.0.0.1"); + + }else { + MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); + mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); + mesPakinReportParam.setBizType("0"); + mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode().trim(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo())); + mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); + + doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"涓婃姤mes鍏ュ簱淇℃伅",url,pakinReportPath,null,"127.0.0.1"); + } + } + + } + + private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ + MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam(); + mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo()); + AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); + mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString()); + mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr()); + mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim())); + mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); + + doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"涓婃姤mes鍑哄簱淇℃伅",url,pakoutReportPath,null,"127.0.0.1"); + + } + } + + private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + + if(agvWrkMast.getIoType() == 53){ + String locNo = agvWrkMast.getLocNo(); + agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); + agvWrkMast.setSourceLocNo(locNo); + } + + MesOrderReportParam param = new MesOrderReportParam(); + + List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>(); + List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>(); + List<MesOrderReportParam.RecordCustomFieldBaseCO.CustomField> customFields = new ArrayList<>(); + + MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO(); + recordCustomFieldBaseCO.setCustomFields(customFields); + param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO); + + //娣诲姞transferOrderItem灞炴�� + MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem(); + transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo()); + //璋冩嫧 + if(agvWrkMast.getLocNo().contains("YZ")){ + transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); + }else { + //鍑哄簱榛樿浠撲綅 + String floor = agvWrkMast.getLocNo().split("F")[1]; + transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor)); + } + transferOrderItems.add(transferOrderItem); + transferOrderItem.setInventoryDetails(inventoryDetails); + + param.setTransferOrderItems(transferOrderItems); + + for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ + MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail(); + //娣诲姞amount灞炴�� + MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null); + inventoryDetail.setAmount(amount); + //娣诲姞bizKey灞炴�� + MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim()); + inventoryDetail.setBizKey(bizKey); + //娣诲姞inventoryDetail灞炴�� + inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); + inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr()); + inventoryDetail.setQcStatus(1); + inventoryDetail.setStorageStatus(1); + inventoryDetails.add(inventoryDetail); + //娣诲姞閿�鍞鍗曞彿 + MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c",agvWrkDetl.getThreeCode().trim()); + customFields.add(customField); + } + + doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes璋冩嫧淇℃伅",url,orderReportPath,null,"127.0.0.1"); + + } + + //鑾峰彇mes token淇℃伅 + private Map<String,Object> getMesTokenInfo(){ + Map<String,String> param = new HashMap<>(); + param.put("appKey",appKey); + param.put("appSecret",appSecret); + + JSONObject jsonObject = doHttpRequest(param,null, "鑾峰彇MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); + + Map<String,Object> headParam = new HashMap<>(); + headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); + + return headParam; + + } + + //鏍规嵁妤煎眰榛樿鍑哄簱浠撲綅 + private String getTargetLocationByFloor(String f){ + int floor = Integer.parseInt(f); + if(floor == 1){ + return "WH-000"; + } + + if(floor == 2){ + return "WH-000"; + } + + if(floor == 3){ + return "WH-000"; + } + + return null; + } + + private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){ + + String response = ""; + boolean success = false; + + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(path) + .setHeaders(headParam) + .setJson(JSONObject.toJSONString(requestParam)) + .setHttps(true) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + + if(Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200){ + throw new CoolException(jsonObject.get("dsc").toString()); + } + success = true; + return jsonObject; + +// String succeed = jsonObject.get("succeed").toString(); +// +// int code = Cools.eq("0",succeed) ? 0 : 1; +// if(code != 200){ +// throw new CoolException(jsonObject.get("dsc").toString()); +// } +// success = true; + + }catch (Exception e){ + log.error(e.getMessage()); + throw new CoolException(e.getMessage()); + }finally { + apiLogService.save( + namespace, + url + path, + appkey, + ip, + JSON.toJSONString(JSONObject.toJSONString(requestParam)), + response, + success + ); + } + + } + } diff --git a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java index 6a10807..9648cba 100644 --- a/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java @@ -199,6 +199,7 @@ } agvWrkMast.setWrkSts(201L); agvWrkMast.setLocNo(locMast.getLocNo()); + agvWrkMast.setLogErrMemo("start2-doAutoMove2"); agvWrkMastService.updateById(agvWrkMast); //鏇存柊鐩爣搴撲綅鐘舵�� updateAgvLocMast(locMast,"S"); @@ -310,6 +311,7 @@ updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode()); return SUCCESS; } + public ReturnT<String> autoEmptyBack3(AgvWrkMast agvWrkMast) { Date now = new Date(); AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); @@ -332,6 +334,7 @@ updateAgvBasDevp(agvBasDevp,"R"); return SUCCESS; } + public ReturnT<String> autoEmptyBack2(AgvLocMast agvLocMast) { Date now = new Date(); //鏌ヨ宸ヤ綔妗� diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java index 422e62e..00640f9 100644 --- a/src/main/java/com/zy/common/model/DetlDto.java +++ b/src/main/java/com/zy/common/model/DetlDto.java @@ -30,6 +30,8 @@ //閿�鍞鍗曡鍙� private String isoseq; + private String cFree1; + // 搴撲綅绫诲瀷锛� 1銆佷唬鍖呰鎴愬搧锛�2銆佸師鏉愭枡锛�3銆佺澹� private Integer locType; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index cd5a48f..fc45b8b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -90,9 +90,16 @@ ERP: url: http://39.184.149.30:8877 orderReportPath: /DBMS/U8/CM/add -MES: - url: http://192.168.1.55:8010 - orderReportPath: /api/RdAudit +mes: + url: https://v3-ali.blacklake.cn/api/openapi/domain/web/v1/route + orderReportPath: /inventory/open/v2/transfer_order/ordinary/_execute + pakinReportPath: /inventory/open/v2/inbound_order/execute/_inbound + buyPakinReportPath: /schedule-for-yinzuo/open/yinzuo/inboundOrder + pakoutReportPath: /inventory/open/v2/outbound_order/_outbound_by_suggest + getTokenUrl: https://v3-ali.blacklake.cn + getTokenPath: /api/openapi/domain/api/v1/access_token/_get_access_token + appKey: cli_1712644281065780 + appSecret: 6710d24e31e64adc963d4c213b2c9b8e agvBasDev: maxWorkNum: 1 diff --git a/src/main/webapp/static/js/agvLocMast/locMast.js b/src/main/webapp/static/js/agvLocMast/locMast.js index 1951580..f1154c4 100644 --- a/src/main/webapp/static/js/agvLocMast/locMast.js +++ b/src/main/webapp/static/js/agvLocMast/locMast.js @@ -23,7 +23,6 @@ ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�',sort:true} ,{field: 'locSts$', align: 'center',title: '搴撲綅鐘舵��',width:200} // ,{field: 'whsType$', align: 'center',title: '搴撲綅绫诲瀷'} - // ,{field: 'pltType', align: 'center',title: ''} // ,{field: 'ctnType', align: 'center',title: ''} // ,{field: 'locSts', align: 'center',title: ''} // ,{field: 'sheetNo', align: 'center',title: ''} @@ -35,6 +34,7 @@ ,{field: 'floor', align: 'center',title: '妤�', sort:true} ,{field: 'barcode', align: 'center',title: '璐ф灦鐮�', sort:true} ,{field: 'locType2', align: 'center',title: '璐ф灦绫诲瀷', sort:true} + ,{field: 'pltType', align: 'center',title: '浠撲綅缂栫爜'} ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){ var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.fullPlt === 'Y'){html += " checked ";} diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js index f333b04..82180e2 100644 --- a/src/main/webapp/static/js/order/order.js +++ b/src/main/webapp/static/js/order/order.js @@ -62,7 +62,6 @@ {field: 'tel', align: 'center',title: '浠撳簱', hide: true}, {field: 'operMemb', align: 'center',title: '鍑哄叆搴撶被鍒�', hide: true}, {field: 'salesman', align: 'center',title: '閮ㄩ棬', hide: true}, - {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 180} ]], request: { @@ -166,7 +165,9 @@ //{field: 'manu', title: '琛屽彿'}, {field: 'threeCode', title: '閿�鍞崟鍙�'}, {field: 'deadTime', title: '鑷敱椤�'}, - {field: 'processSts$', title: '宸ュ簭'} + {field: 'processSts$', title: '宸ュ簭'}, + {field: 'specs', title: '瑙勬牸'}, + //{field: 'itemNum', title: '琛屽敮涓�鏍囪瘑'} ]], request: { pageName: 'curr', @@ -192,7 +193,6 @@ }); } }); - // 鏄剧ず琛ㄥ崟寮圭獥 function showEditModel(expTpe) { @@ -306,7 +306,6 @@ }, size: '' }; - if (!isExpAdd) { $.ajax({ url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id, diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html index dc07fa1..e7cd9b7 100644 --- a/src/main/webapp/views/order/order.html +++ b/src/main/webapp/views/order/order.html @@ -311,7 +311,7 @@ <script type="text/javascript" src="../../static/js/echarts/echarts.min.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> -<script type="text/javascript" src="../../static/js/order/order.js" charset="utf-8"></script> +<script type="text/javascript" src="../../static/js/order/order.js?v=1" charset="utf-8"></script> <script type="text/template" id="docTypeTpl"> <option value="">閫夋嫨绫诲瀷</option> -- Gitblit v1.9.1