From cb98548ecc0fa2d4388eb67528b98be39670bc0c Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期四, 20 七月 2023 10:05:02 +0800 Subject: [PATCH] agv 有单入库功能 --- src/main/webapp/static/js/agvLocDetl/locDetl.js | 2 src/main/webapp/static/js/agvLocRule/locRule.js | 2 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java | 214 +++++++++++++++++------------ src/main/java/com/zy/asrs/controller/AgvOpenController.java | 47 ----- src/main/java/com/zy/asrs/service/AgvWrkDetlService.java | 3 src/main/java/com/zy/asrs/controller/AgvWorkController.java | 4 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 9 + src/main/webapp/static/js/orderDetl/orderDetl.js | 2 src/main/webapp/static/js/locDetl/locDetl.js | 2 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 11 + src/main/java/com/zy/asrs/utils/AppAuthUtil.java | 23 +++ src/main/webapp/static/js/locRule/locRule.js | 2 src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java | 10 - src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 11 + src/main/java/com/zy/asrs/controller/AgvMobileController.java | 12 + src/main/webapp/static/js/agvBasDevp/basDevp.js | 2 src/main/webapp/static/js/order/out.js | 2 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 41 ++++- src/main/webapp/static/js/common.js | 6 19 files changed, 244 insertions(+), 161 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java index 2ee810a..90e71b5 100644 --- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java +++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java @@ -34,12 +34,18 @@ private AgvWorkService workService; + /* + locno锛熺粍鎵�+缁戝畾鏆傚瓨浣� 锛� 缁勬墭 + */ @PostMapping("/comb/auth") public R comb(@RequestBody CombParam combParam){ String message = agvMobileService.comb(combParam, 1l); return R.ok(message); } + /* + 缁戝畾鎵樼洏鏉$爜涓庢殏瀛樹綅 + */ @PostMapping("/combBinging/auth") public R combBinding(@RequestBody Map<String,Object> map){ String barcode = map.get("barcode").toString(); @@ -48,6 +54,9 @@ return R.ok("鎵樼洏缁戝畾绔欑偣鎴愬姛"); } + /* + 鑾峰彇褰撳墠宸茬粦瀹氱殑杩樻病鐢熸垚宸ヤ綔妗g殑鏆傚瓨浣� + */ @PostMapping("/getBasDevp/auth") public R getBasDevpByFloor(@RequestBody Map<String,Object> map){ String floor = map.get("floor").toString(); @@ -57,6 +66,9 @@ return R.error("鍙傛暟閿欒"); } + /* + 鍚姩鍏ュ簱锛岀敓鎴愬伐浣滄。 + */ @PostMapping("/pakin/auth") public R pakin(@RequestBody Map<String,Object> map){ List<String> devNos = (List<String>) map.get("devNo"); diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java index e825c78..d922dfe 100644 --- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java +++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java @@ -1,14 +1,13 @@ package com.zy.asrs.controller; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.AppAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.AgvWrkMast; -import com.zy.asrs.entity.ApiLog; import com.zy.asrs.entity.param.AgvTaskCallBackParam; import com.zy.asrs.service.*; +import com.zy.asrs.utils.AppAuthUtil; import com.zy.common.web.BaseController; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -21,9 +20,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct; +import javax.servlet.http.HttpServletRequest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.Date; import java.util.EnumSet; /** @@ -54,10 +53,10 @@ @PostMapping("/task/event/status") @AppAuth(memo = "ESS浠诲姟鍥炶皟") - public R taskEventStaus(@RequestBody AgvTaskCallBackParam param){ + public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){ - //淇濆瓨姣忔璋冪敤璇ユ帴鍙g殑鍙傛暟锛屼綔涓哄巻鍙插彲鏌ヨ - //saveApiLog(param); + //save api log (appkey 鍚庣画娣诲姞) + AppAuthUtil.auth("test-appkey",param, request); AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", param.getTaskCode())); if(Cools.isEmpty(agvWrkMast)){ @@ -95,15 +94,6 @@ return true; } - private void saveApiLog(AgvTaskCallBackParam param){ - ApiLog apiLog = new ApiLog(); - apiLog.setNamespace("ESS浠诲姟鍥炶皟"); - apiLog.setUrl("/agv/task/event/status"); - apiLog.setRequest(JSONObject.toJSONString(param)); - apiLog.setCreateTime(new Date()); - apiLogService.insert(apiLog); - } - } enum AgvTask{ @@ -114,27 +104,8 @@ task{ @Transactional public void success(AgvTaskCallBackParam param) { - //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),205); - - /* - int wrkNo = Integer.valueOf(param.getTaskCode()); - String barcode = agvWrkMastService.selectById(wrkNo).getBarcode(); - //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - agvWrkMastLogService.save(wrkNo); - //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� - agvWrkDetlLogService.save(wrkNo); - //鍒犻櫎AGV宸ヤ綔妗� - agvWrkMastService.deleteById(wrkNo); - //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗� - agvWaitPakinLogService.save(barcode); - //鍒犻櫎鍏ュ簱閫氱煡妗� - agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode)); - */ - } public void fail(AgvTaskCallBackParam param) { @@ -203,14 +174,8 @@ tote_unload{ @Transactional public void success(AgvTaskCallBackParam param) { - int wrkNo = Integer.valueOf(param.getTaskCode()); - String barcode = agvWrkMastService.selectById(wrkNo).getBarcode(); - //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱 - //agvLocMastService.updateLocStsByLocNo(param.getLocationCode(),"F"); - //鏇存柊鐩爣搴撲綅鏄庣粏 - //agvLocDetlService.addLocDetlInfo(param.getLocationCode(),wrkNo); //淇敼宸ヤ綔妗g姸鎬佷负204.鏀捐揣瀹屾垚 - agvWrkMastService.updateWrkStsByWrkNo(wrkNo,204); + agvWrkMastService.updateWrkStsByWrkNo(Integer.valueOf(param.getTaskCode()),204); } public void fail(AgvTaskCallBackParam param) { diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java index e176b34..67dcb26 100644 --- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java +++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java @@ -5,7 +5,6 @@ import com.core.common.R; import com.zy.asrs.entity.AgvBasDevp; import com.zy.asrs.service.AgvWorkService; -import com.zy.common.model.StartupDto; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -21,13 +20,14 @@ @Autowired private AgvWorkService workService; + //TODO 绉诲姩鍒癆gvBasDevpController涓嬮潰 @RequestMapping("/create/waitPain/wrkMast/start") @ManagerAuth(memo = "鐢熸垚浠诲姟") public R createWaitPainWrkMastStart(@RequestParam String param) { List<AgvBasDevp> agvBasDevpList = JSONArray.parseArray(param, AgvBasDevp.class); - StartupDto startupDto = workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId()); + workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId()); //return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo()); return R.ok("鐢熸垚鍏ュ簱宸ヤ綔妗f垚鍔�"); diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java index 78747a6..d9522c0 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java @@ -3,13 +3,12 @@ import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.WrkDetl; -import com.zy.common.model.DetlDto; import java.util.List; public interface AgvWrkDetlService extends IService<AgvWrkDetl> { - void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId); + //void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId); List<WrkDetl> selectByWrkNo(Integer wrkNo); diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java index 60f20e7..bf873fb 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java @@ -39,6 +39,9 @@ private AgvBasDevpService agvBasDevpService; + /* + 缁勬墭 + 缁戝畾鏆傚瓨浣� + */ @Override @Transactional public String comb(CombParam param, Long userId) { @@ -46,98 +49,18 @@ throw new CoolException(BaseRes.PARAM); } + //妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勬墭鐩樻潯鐮侊紝瀛樺湪鍒欐姏鍑哄紓甯� if (agvWaitPakinService.selectCount(new EntityWrapper<AgvWaitPakin>(). eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); } - Date now = new Date(); - //鏃犲崟缁勬墭 if (Cools.isEmpty(param.getOrderNo())) { - List<DetlDto> detlDtos = new ArrayList<>(); - param.getCombMats().forEach(elem -> { - 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); - } - }); - - detlDtos.forEach(detlDto -> { - Mat mat = matService.selectByMatnr(detlDto.getMatnr()); - if (Cools.isEmpty(mat)) { - throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); - } - AgvWaitPakin waitPakin = new AgvWaitPakin(); - waitPakin.setBatch(detlDto.getBatch());//鎵瑰彿 - - waitPakin.sync(mat); - 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 (!agvWaitPakinService.insert(waitPakin)) { - throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); - } - }); + //鏃犲崟缁勬墭 + NoOrderComb(param,userId); }else { - //鍏宠仈缁勬墭 - Order order = orderService.selectByNo(param.getOrderNo()); - if (order.getSettle() > 2) { - throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); - } - // 鐢熸垚鍏ュ簱閫氱煡妗� - List<DetlDto> detlDtos = new ArrayList<>(); - param.getCombMats().forEach(elem -> { - - // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 - OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); - if (elem.getAnfme() > orderDetl.getEnableQty()) { - throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); - } - // 淇敼璁㈠崟鏄庣粏鏁伴噺 - if (!orderDetlService.increase(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { - throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); - } - - 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); - } - }); - for (DetlDto detlDto : detlDtos) { - Mat mat = matService.selectByMatnr(detlDto.getMatnr()); - if (Cools.isEmpty(mat)) { - throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); - } - AgvWaitPakin waitPakin = new AgvWaitPakin(); - waitPakin.sync(mat); - waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 - 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 (!agvWaitPakinService.insert(waitPakin)) { - throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); - } - } - orderService.updateSettle(order.getId(), 2L, userId); + //鏈夊崟缁勬墭 + OrderComb(param,userId); } if(StringUtils.isEmpty(param.getLocno())){ @@ -148,6 +71,114 @@ } } + + /* + AGV鏃犲崟缁勬墭 + */ + private void NoOrderComb(CombParam param, Long userId){ + List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,null); + + //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 + Date now = new Date(); + detlDtos.forEach(detlDto -> { + syncWaitPakin(detlDto,"",param.getBarcode(),userId,now); + }); + } + + /* + AGV鏈夊崟缁勬墭 + */ + private void OrderComb(CombParam param, Long userId){ + //鍏宠仈缁勬墭 + Order order = orderService.selectByNo(param.getOrderNo()); + if(Cools.isEmpty(order)){ + throw new CoolException("鍗曟嵁缂栧彿涓嶅瓨鍦�"); + } + //璁㈠崟鐘舵��2浠ヤ笂涓哄畬鎴愭垨鑰呭彇娑堢殑璁㈠崟 + if (order.getSettle() > 2) { + throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); + } + // 鐢ㄤ簬鐢熸垚鍏ュ簱閫氱煡妗f墍闇�鍙傛暟 + List<DetlDto> detlDtos = mappingDetlDtoByCombMat(param,order); + //鐢ㄤ簬缁熶竴涓�涓墭鐩樹笅鐨勫叆搴撻�氱煡妗g殑鐢熸垚鏃堕棿 + Date now = new Date(); + for (DetlDto detlDto : detlDtos) { + //鍚屾鐢熸垚鍏ュ簱閫氱煡妗� + syncWaitPakin(detlDto,order.getOrderNo(),param.getBarcode(),userId,now); + } + //淇敼鍗曟嵁鐘舵�佷负2.浣滀笟涓� + orderService.updateSettle(order.getId(), 2L, userId); + } + + /* + 鏍规嵁PDA鎵爜鎵�浼犵殑鐗╂枡淇℃伅鍙傛暟鏄犲皠涓篋etlDto + */ + private List<DetlDto> mappingDetlDtoByCombMat(CombParam param, Order order){ + List<DetlDto> detlDtos = new ArrayList<>(); + param.getCombMats().forEach(combMat -> { + + if(!Cools.isEmpty(order)){ + //妫�鏌ュ叆搴撴暟閲� + checkOrderQty(order,combMat); + } + + DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.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); + } + }); + + return detlDtos; + } + + /* + 妫�鏌ュ叆搴撴暟閲忔槸鍚﹀皬浜庣瓑浜庡崟鎹暟閲忥紝鍚堢悊鍒欎慨鏀筄rderDetl浣滀笟鏁伴噺淇℃伅锛屽惁鍒欐姏鍑哄紓甯� + */ + private void checkOrderQty(Order order, CombParam.CombMat combMat){ + // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙锛屽鏋滀綔涓氭暟閲忓ぇ浜庡崟鎹暟閲忓垯鎶涘嚭寮傚父 + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); + if(Cools.isEmpty(orderDetl)){ + throw new CoolException("鏈尮閰嶅埌璇ュ崟鎹笅鐨勭墿鏂�"); + } + if (combMat.getAnfme() > orderDetl.getEnableQty()) { + throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); + } + // 淇敼璁㈠崟鏄庣粏鏁伴噺 + if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); + } + } + + /* + 鍚屾鐢熸垚AGV鍏ュ簱閫氱煡妗f暟鎹� + */ + private void syncWaitPakin(DetlDto detlDto, String orderNo, String zpallet, Long userId, Date now ){ + Mat mat = matService.selectByMatnr(detlDto.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); + } + AgvWaitPakin waitPakin = new AgvWaitPakin(); + waitPakin.sync(mat); + waitPakin.setOrderNo(orderNo); // 鍗曟嵁缂栧彿 + waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� + waitPakin.setZpallet(zpallet); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(userId); + waitPakin.setAppeTime(now); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + if (!agvWaitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + } + @Override @Transactional @@ -163,9 +194,14 @@ @Override public void combBinding(String barcode, String stationCode) { - EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>(); - wrapper.eq("dev_no",stationCode); - AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(wrapper); + + AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", barcode)); + + if(!Cools.isEmpty(agvBasDevp)){ + throw new CoolException(barcode + "宸茬粡缁戝畾鍦�"+ agvBasDevp.getDevNo() +"绔欑偣"); + } + + agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode)); if(agvBasDevp == null){ throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒"); } @@ -175,7 +211,7 @@ agvBasDevp.setBarcode(barcode); agvBasDevp.setLocSts("F"); - agvBasDevpService.update(agvBasDevp,wrapper); + agvBasDevpService.update(agvBasDevp,(new EntityWrapper<AgvBasDevp>().eq("dev_no",stationCode))); } public List<AgvBasDevp> getAgvBasDevpByFloor(int floor) { 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 059d889..4d06510 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -3,12 +3,8 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; -import com.zy.asrs.entity.AgvBasDevp; -import com.zy.asrs.entity.AgvLocMast; -import com.zy.asrs.entity.AgvWaitPakin; -import com.zy.asrs.entity.AgvWrkMast; +import com.zy.asrs.entity.*; import com.zy.asrs.service.*; -import com.zy.common.model.DetlDto; import com.zy.common.model.StartupDto; import com.zy.common.service.AgvCommonService; import lombok.extern.slf4j.Slf4j; @@ -16,7 +12,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -44,6 +39,8 @@ private AgvWrkMastService agvWrkMastService; @Autowired private AgvWrkDetlService agvWrkDetlService; + @Autowired + private MatService matService; @Override public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId) { @@ -66,7 +63,7 @@ //鐢熸垚宸ヤ綔妗� AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId); //鐢熸垚宸ヤ綔妗f槑缁� - createWrkDetl(agvWaitPakinList,wrkMast,userId); + createWrkDetlReWrite(agvWaitPakinList,wrkMast,userId); //鏇存柊婧愮珯鐐逛俊鎭� updateAgvBasDevp(agvBasDevp); //鏇存柊鐩爣搴撲綅鐘舵�� @@ -96,7 +93,7 @@ /* 鐢熸垚宸ヤ綔妗f槑缁� */ - private void createWrkDetl(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){ + /* private void createWrkDetl(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){ List<DetlDto> detlDtos = new ArrayList<>(); agvWaitPakinList.forEach(agvWaitPakin -> { DetlDto detlDto = new DetlDto(agvWaitPakin.getMatnr(), agvWaitPakin.getBatch(), agvWaitPakin.getAnfme()); @@ -109,7 +106,33 @@ } }); agvWrkDetlService.createWorkDetail(wrkMast.getWrkNo(), detlDtos, wrkMast.getBarcode(), userId); - + }*/ + /* + 鐢熸垚宸ヤ綔妗f槑缁� + */ + private void createWrkDetlReWrite(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){ + Date now = new Date(); + agvWaitPakinList.stream().forEach(agvWaitPakin -> { + Mat mat = matService.selectByMatnr(agvWaitPakin.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(agvWaitPakin.getMatnr() + "鍟嗗搧缁存姢澶辫触"); + } + AgvWrkDetl wrkDetl = new AgvWrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setOrderNo(agvWaitPakin.getOrderNo()); + wrkDetl.setIoTime(now); + wrkDetl.setBatch(agvWaitPakin.getBatch()); + wrkDetl.setAnfme(agvWaitPakin.getAnfme()); // 鏁伴噺 + wrkDetl.setZpallet(agvWaitPakin.getZpallet()); // 鎵樼洏鏉$爜 + wrkDetl.setAppeUser(userId); + wrkDetl.setAppeTime(now); + wrkDetl.setModiUser(userId); + wrkDetl.setModiTime(now); + if (!agvWrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); } /* diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java index 3e8fd7e..647b9b3 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java @@ -1,20 +1,14 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.core.common.Cools; -import com.core.exception.CoolException; import com.zy.asrs.entity.AgvWrkDetl; -import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.mapper.AgvWrkDetlMapper; import com.zy.asrs.service.AgvWrkDetlService; import com.zy.asrs.service.MatService; -import com.zy.common.model.DetlDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import java.util.Date; import java.util.List; @Service @@ -23,6 +17,7 @@ @Autowired private MatService matService; + /* @Override @Transactional public void createWorkDetail(Integer workNo, List<DetlDto> detlDtos, String barcode, Long userId) { @@ -39,6 +34,7 @@ AgvWrkDetl wrkDetl = new AgvWrkDetl(); wrkDetl.sync(mat); wrkDetl.setWrkNo(workNo); + wrkDetl.setOrderNo(dto.getOrderNo()); wrkDetl.setIoTime(now); wrkDetl.setBatch(dto.getBatch()); wrkDetl.setAnfme(dto.getAnfme()); // 鏁伴噺 @@ -52,7 +48,7 @@ } } } - + */ @Override public List<WrkDetl> selectByWrkNo(Integer wrkNo) { return this.baseMapper.selectByWrkNo(wrkNo); diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java index eb6fc70..b23a41c 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java @@ -44,10 +44,19 @@ public void updateWrkStsByWrkNo(int wrkNo, long wrkSts) { AgvWrkMast agvWrkMast = this.selectById(wrkNo); + //鍒ゆ柇瑕佷慨鏀圭殑宸ヤ綔妗g姸鎬佹槸鍚﹀悎鐞嗭紝濡傛灉涓嶅悎鐞嗗垯鎶涘嚭寮傚父 + checkWrkSts(agvWrkMast,wrkSts); agvWrkMast.setWrkSts(wrkSts); this.updateById(agvWrkMast); } + private boolean checkWrkSts(AgvWrkMast agvWrkMast,long wrkSts){ + + // 鍒ゆ柇瑙勫垯TODO + + return true; + } + public Map<String,List<Map<String,String>>> startWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java index 0bf3dcb..6d9e534 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -40,6 +40,8 @@ @Autowired private WrkDetlService wrkDetlService; @Autowired + private AgvWrkDetlService agvWrkDetlService; + @Autowired private MatService matService; @Autowired private ErpService erpService; @@ -66,10 +68,14 @@ @Override public void checkComplete(String orderNo) { Order order = this.selectByNo(orderNo); + if(Cools.isEmpty(order)){ + return; + } if (order.getSettle() >= 4L) { return; } List<OrderDetl> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_id", order.getId())); + // 浣滀笟鏁伴噺鏄惁绛変簬鏁伴噺 boolean complete = true; for (OrderDetl orderDetl : orderDetls) { if (orderDetl.getAnfme() > orderDetl.getQty()) { @@ -77,7 +83,10 @@ break; } } - if (complete && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) == 0) { + // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� + if (complete + && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1 + && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1) { // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏 DocType docType = docTypeService.selectById(order.getDocType()); if (null != docType && docType.getPakout() == 1) { 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 b09c2b6..a0c3d12 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -34,11 +34,14 @@ AgvWaitPakinService agvWaitPakinService; @Autowired AgvWaitPakinLogService agvWaitPakinLogService; + @Autowired + OrderService orderService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { int wrkNo = agvWrkMast.getWrkNo(); String barcode = agvWrkMast.getBarcode(); + String orderNo = getOrderNoByWrkNo(wrkNo); //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚 agvWrkMast.setWrkSts(206L); @@ -59,6 +62,9 @@ agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); //鍒犻櫎鍏ュ簱閫氱煡妗� agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode)); + + //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 + orderService.checkComplete(orderNo); return SUCCESS; } @@ -84,4 +90,9 @@ return FAIL; } + + private String getOrderNoByWrkNo(int wrkNo){ + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); + return agvWrkDetl.getOrderNo(); + } } diff --git a/src/main/java/com/zy/asrs/utils/AppAuthUtil.java b/src/main/java/com/zy/asrs/utils/AppAuthUtil.java new file mode 100644 index 0000000..b2a3128 --- /dev/null +++ b/src/main/java/com/zy/asrs/utils/AppAuthUtil.java @@ -0,0 +1,23 @@ +package com.zy.asrs.utils; + +import com.core.common.Cools; +import com.core.exception.CoolException; +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; + +@Slf4j +public class AppAuthUtil { + private static final boolean auth = true; + + public static void auth(String appkey, Object obj, HttpServletRequest request) { + request.setAttribute("cache", obj); + + if (Cools.isEmpty(appkey)) { + throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�"); + } +// if (!APP_KEY_LIST.contains(appkey)) { +// throw new CoolException("璁よ瘉澶辫触锛岃纭appkey鏃犺锛�"); +// } + } +} diff --git a/src/main/webapp/static/js/agvBasDevp/basDevp.js b/src/main/webapp/static/js/agvBasDevp/basDevp.js index 8bbafbf..75c55ac 100644 --- a/src/main/webapp/static/js/agvBasDevp/basDevp.js +++ b/src/main/webapp/static/js/agvBasDevp/basDevp.js @@ -77,7 +77,7 @@ return html; }} ,{field: 'locSts$', align: 'center',title: '璐т綅鐘舵��'} - ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�', edit:true, style:'color: blue;font-weight: bold'} + //,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�', edit:true, style:'color: blue;font-weight: bold'} ,{field: 'floor', align: 'center',title: '妤�'} //,{field: 'locType1$', align: 'center',title: '楂樹綆'} ,{field: 'barcode', align: 'center',title: '鏉″舰鐮�'} diff --git a/src/main/webapp/static/js/agvLocDetl/locDetl.js b/src/main/webapp/static/js/agvLocDetl/locDetl.js index d315d9e..6892802 100644 --- a/src/main/webapp/static/js/agvLocDetl/locDetl.js +++ b/src/main/webapp/static/js/agvLocDetl/locDetl.js @@ -11,7 +11,7 @@ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'} ,{field: 'specs', align: 'center',title: '瑙勬牸'} - ,{field: 'model', align: 'center',title: '浠g爜', hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} diff --git a/src/main/webapp/static/js/agvLocRule/locRule.js b/src/main/webapp/static/js/agvLocRule/locRule.js index 25d6898..2a9dd5e 100644 --- a/src/main/webapp/static/js/agvLocRule/locRule.js +++ b/src/main/webapp/static/js/agvLocRule/locRule.js @@ -25,7 +25,7 @@ // ,{field: 'id', align: 'center',title: 'ID'} ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'} ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: true} - ,{field: 'model', align: 'center',title: '鍨嬪彿', hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'cstmr', align: 'center',title: '瀹㈡埛', hide: true} ,{field: 'batch', align: 'center',title: '鎵瑰彿'} ,{field: 'other', align: 'center',title: '鍏朵粬', hide: true} diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 5639590..b719bce 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -185,7 +185,7 @@ ,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true} ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О', width: 150} ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false} - ,{field: 'model', align: 'center',title: '鎵规', hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: false} ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: false} ,{field: 'units', align: 'center',title: '鏀暟', hide: false} @@ -222,13 +222,13 @@ var detlCols = [ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', width: 110} ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'} - ,{field: 'model', align: 'center',title: '鎵瑰彿'} + ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: false} ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О'} ,{field: 'specs', align: 'center',title: '瑙勬牸'} ,{field: 'anfme', align: 'center',title: '鏁伴噺'} ,{field: 'name', align: 'center',title: '绉诲姩绫诲瀷', hide: true} ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false} - ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'manuDate', align: 'center',title: '鍗曟嵁鏃堕棿', hide: true} ,{field: 'weight', align: 'center',title: '閲嶉噺', hide: true} ,{field: 'units', align: 'center',title: '鏀暟', hide: true} diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js index 4b7432f..dda89c0 100644 --- a/src/main/webapp/static/js/locDetl/locDetl.js +++ b/src/main/webapp/static/js/locDetl/locDetl.js @@ -11,7 +11,7 @@ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'} ,{field: 'specs', align: 'center',title: '瑙勬牸'} - ,{field: 'model', align: 'center',title: '浠g爜', hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} diff --git a/src/main/webapp/static/js/locRule/locRule.js b/src/main/webapp/static/js/locRule/locRule.js index 62df390..1089ff5 100644 --- a/src/main/webapp/static/js/locRule/locRule.js +++ b/src/main/webapp/static/js/locRule/locRule.js @@ -25,7 +25,7 @@ // ,{field: 'id', align: 'center',title: 'ID'} ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿'} ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: true} - ,{field: 'model', align: 'center',title: '鍨嬪彿', hide: true} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: true} ,{field: 'cstmr', align: 'center',title: '瀹㈡埛', hide: true} ,{field: 'batch', align: 'center',title: '鎵瑰彿'} ,{field: 'other', align: 'center',title: '鍏朵粬', hide: true} diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js index dbb2dad..c053d55 100644 --- a/src/main/webapp/static/js/order/out.js +++ b/src/main/webapp/static/js/order/out.js @@ -40,7 +40,7 @@ // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'} ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'} // ,{field: 'name', align: 'center',title: '鍚嶇О'} - // ,{field: 'model', align: 'center',title: '鎵规'} + // ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true} ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true} // ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'} diff --git a/src/main/webapp/static/js/orderDetl/orderDetl.js b/src/main/webapp/static/js/orderDetl/orderDetl.js index 1a0cb04..9ab257f 100644 --- a/src/main/webapp/static/js/orderDetl/orderDetl.js +++ b/src/main/webapp/static/js/orderDetl/orderDetl.js @@ -29,7 +29,7 @@ ,{field: 'maktx', align: 'center',title: '鐗╂枡鍙�'} ,{field: 'name', align: 'center',title: '鍚嶇О'} ,{field: 'specs', align: 'center',title: '瑙勬牸'} - ,{field: 'model', align: 'center',title: '鎵规'} + ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'} ,{field: 'batch', align: 'center',title: '搴忓垪鐮�'} ,{field: 'unit', align: 'center',title: '鍗曚綅'} ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜'} -- Gitblit v1.9.1