From 86b8273226c7aa87e7c346659ed9e76278dcc471 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期日, 15 十月 2023 11:28:01 +0800 Subject: [PATCH] AGV工作档取消和完成 --- src/main/java/com/zy/common/service/erp/ErpService.java | 0 src/main/java/com/zy/common/service/erp/task/ErpScheduler.java | 187 ++++++-------------- src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java | 2 src/main/java/com/zy/asrs/service/AgvWrkMastService.java | 2 src/main/resources/mapper/ViewStayTimeMapper.xml | 1 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 8 src/main/java/com/zy/asrs/controller/AgvOpenController.java | 2 src/main/java/com/zy/asrs/service/AgvWrkDetlService.java | 2 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java | 6 src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java | 7 src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java | 11 + src/main/java/com/zy/asrs/service/InventoryVarianceService.java | 7 src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java | 38 ++++ src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java | 7 src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java | 11 + src/main/java/com/zy/asrs/service/OrderDetlService.java | 2 src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java | 7 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | 11 + src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 182 +++++-------------- src/main/java/com/zy/asrs/service/AllLocDetlService.java | 3 src/main/resources/application.yml | 10 src/main/java/com/zy/asrs/entity/InventoryVariance.java | 30 +++ 22 files changed, 262 insertions(+), 274 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java index 702185d..4c6a853 100644 --- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java +++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java @@ -118,7 +118,7 @@ } //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱 if(agvWrkMast.getIoType() == 110){ - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode()); } } diff --git a/src/main/java/com/zy/asrs/entity/InventoryVariance.java b/src/main/java/com/zy/asrs/entity/InventoryVariance.java new file mode 100644 index 0000000..59beed6 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/InventoryVariance.java @@ -0,0 +1,30 @@ +package com.zy.asrs.entity; + +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +/** + * ERP - 绔嬪簱 搴撳瓨宸紓缁熻琛� + */ +@Data +@TableName("inventory_variance") +public class InventoryVariance { + //瀛樿揣缂栫爜 + private String matnr; + //閿�鍞鍗曞彿 + private String csocode; + //閿�鍞鍗曡鍙� + private String isoseq; + //ERP瀛樿揣鏁伴噺 + private Double iQuantity; + //绔嬪簱瀛樿揣鏁伴噺 + private Double anfme; + + public InventoryVariance(String matnr, String csocode, String isoseq, Double iQuantity, Double anfme){ + this.matnr = matnr; + this.csocode = csocode; + this.isoseq = isoseq; + this.iQuantity = iQuantity; + this.anfme = anfme; + } +} diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java index e2e6631..80232bd 100644 --- a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java @@ -24,8 +24,11 @@ "\t\tROW_NUMBER() over (order by sum(a.anfme) desc) as row\n" + "\t\t, a.matnr\n" + "\t\t, sum(a.anfme) as anfme\n" + - "\t\tfrom agv_loc_detl a\n" + - "\t\twhere 1=1\n" + +// "\t\tfrom agv_loc_detl a\n" + +// "\t\twhere 1=1\n" + +// "\t\t<when #{matnr} != '>" + +// "\t\tAND matnr = #{matnr}" + + "\t\t</when>" + "\t\tgroup by a.matnr\n" + " ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})") List<AgvLocDetl> getStockStatis(Map<String, Object> map); diff --git a/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java b/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java new file mode 100644 index 0000000..298dd11 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java @@ -0,0 +1,11 @@ +package com.zy.asrs.mapper; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.zy.asrs.entity.InventoryVariance; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface InventoryVarianceMapper extends BaseMapper<InventoryVariance> { +} diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java index 3447454..1c016dc 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java @@ -24,4 +24,6 @@ boolean updateOrderNo(String orderNo, Integer wrkNo, String matnr, String batch); + boolean deleteByWrkNo(int wrkNo); + } diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java index 864a789..d44ed7c 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java @@ -6,6 +6,6 @@ public interface AgvWrkMastLogService extends IService<AgvWrkMastLog> { - boolean save(AgvWrkMast workNo); + boolean save(AgvWrkMast agvWrkMast); } diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java index e0d2298..9b827e3 100644 --- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java +++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java @@ -17,4 +17,6 @@ public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) throws IOException; public boolean insertByIncrease(AgvWrkMast agvWrkMast); + + public boolean deleteByWrkNo(int wrkNo); } diff --git a/src/main/java/com/zy/asrs/service/AllLocDetlService.java b/src/main/java/com/zy/asrs/service/AllLocDetlService.java index 1770fa5..25e475c 100644 --- a/src/main/java/com/zy/asrs/service/AllLocDetlService.java +++ b/src/main/java/com/zy/asrs/service/AllLocDetlService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.AllLocDetl; +import java.util.List; + public interface AllLocDetlService extends IService<AllLocDetl> { + public List<AllLocDetl> getByMatnrAndCsocodeAndIsoseq(String matnr, String csocode, String isoseq); } diff --git a/src/main/java/com/zy/asrs/service/InventoryVarianceService.java b/src/main/java/com/zy/asrs/service/InventoryVarianceService.java new file mode 100644 index 0000000..2117673 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/InventoryVarianceService.java @@ -0,0 +1,7 @@ +package com.zy.asrs.service; + +import com.baomidou.mybatisplus.service.IService; +import com.zy.asrs.entity.InventoryVariance; + +public interface InventoryVarianceService extends IService<InventoryVariance> { +} diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java index df117bb..6f8be15 100644 --- a/src/main/java/com/zy/asrs/service/OrderDetlService.java +++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java @@ -34,4 +34,6 @@ OrderDetl selectContainBatch(String batch); + public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq); + } 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 cf82a7a..cc0e439 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -3,7 +3,6 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.EmptyPlateOutParam; @@ -25,7 +24,6 @@ import java.util.Iterator; import java.util.List; import java.util.UUID; -import java.util.concurrent.TimeUnit; /** * Created by vincent on 2020/6/11 @@ -447,26 +445,22 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } - if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) { - throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); + + if(wrkMast.getWrkSts() > 202){ + //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚 + agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205); + + //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱 + if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){ + //淇敼鍑哄簱绔欑偣鐘舵�� + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); + } + //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱 + if(wrkMast.getIoType() == 110){ + agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode()); + } } - // 鍏ュ簱 + 搴撲綅杞Щ - if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { - wrkMast.setWrkSts(9L); - // 鍑哄簱 - } else if (wrkMast.getWrkSts() > 20) { - wrkMast.setWrkSts(29L); - } - Date now = new Date(); - wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - wrkMast.setModiUser(userId); - // 瀹屾垚鎿嶄綔浜哄憳璁板綍 - wrkMast.setManuType("鎵嬪姩瀹屾垚"); - if (!agvWrkMastService.updateById(wrkMast)) { - throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); - } + } @Transactional @@ -475,125 +469,51 @@ if (Cools.isEmpty(wrkMast)){ throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); } - - if (wrkMast.getWrkSts() == 200) { - //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。 - agvWrkMastService.deleteById(wrkMast); - return; + //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷 + if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){ + throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷"); } - String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� - String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� - // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 - if (wrkMast.getWrkSts() < 9) { - locNo = wrkMast.getLocNo(); - locSts = "O"; + //AGV鏈哄櫒浜烘湭鍙栬揣鍓嶅彇娑� + if(wrkMast.getWrkSts() < 203){ + //鍏ュ簱鍙栨秷 + if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){ + //婧愮珯鐐� + String devNo = wrkMast.getSourceLocNo(); + //鐩爣搴撲綅 + String locNo = wrkMast.getLocNo(); + agvLocMastService.updateLocStsByLocNo(locNo,"O"); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode()); - // 搴撲綅杞Щ - if (wrkMast.getIoType() == 11) { - // 搴撲綅杞Щ锛氭簮搴撲綅 - AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getSourceLocNo()); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); - } - locMast.setLocSts("F"); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - agvLocMastService.updateById(locMast); + //鍑哄簱鍙栨秷 + }else { + //婧愬簱浣� + String locNo = wrkMast.getSourceLocNo(); + //鐩爣绔欑偣 + String devNo = wrkMast.getLocNo(); + agvLocMastService.updateLocStsByLocNo(locNo,"F"); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O",""); } - // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� - } else if (wrkMast.getWrkSts() > 20) { - locNo = wrkMast.getSourceLocNo(); - // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { - locSts = "F"; - // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 110) { - locSts = "D"; - // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 11) { - locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; - // 搴撲綅杞Щ锛氱洰鏍囧簱浣� - AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getLocNo()); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo()); - } - locMast.setLocSts("O"); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - agvLocMastService.updateById(locMast); - } - } else { - throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); - } - // 璁㈠崟鍏宠仈 - List<AgvWrkDetl> wrkDetls = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); - for (AgvWrkDetl wrkDetl : wrkDetls) { - if (!Cools.isEmpty(wrkDetl.getOrderNo())) { - if (!BaseController.isJSON(wrkDetl.getOrderNo())) { - if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { - throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); - } - } else { - // 璁㈠崟鍚堝苟鍑哄簱 - //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲� - Double wrkDetlAnfme = wrkDetl.getAnfme(); - //璁㈠崟瀹為檯鍑哄簱鏁伴噺 - Double orderAnfme; - - List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); - for (OrderDto orderDto : orderDtoList) { - - if(wrkDetlAnfme > orderDto.getAnfme()){ - orderAnfme = orderDto.getAnfme(); - wrkDetlAnfme -= orderAnfme; - }else { - orderAnfme = wrkDetlAnfme; - } - - if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) { - throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); - } - } - } - } - } - // 鍙栨秷鎿嶄綔浜哄憳璁板綍 - wrkMast.setManuType("鎵嬪姩鍙栨秷"); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); - if (!agvWrkMastService.updateById(wrkMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); - } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (!agvWrkMastLogService.save(wrkMast)) { - throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - boolean wrkMastRes = agvWrkMastService.deleteById(wrkMast); - - if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (!agvWrkDetlLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔妗f槑缁� - boolean wrkDetlRes = agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", workNo)); } - // 淇敼搴撲綅鐘舵�� - AgvLocMast locMast = agvLocMastService.selectById(locNo); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); + //璁㈠崟鍥炴粴 + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0); + if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){ + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme()); + orderDetlService.updateById(orderDetl); } - locMast.setLocSts(locSts); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - boolean locMastRes = agvLocMastService.updateById(locMast); - if (!wrkMastRes || !locMastRes) { - throw new CoolException("淇濆瓨鏁版嵁澶辫触"); + + //淇濆瓨宸ヤ綔妗d互鍙婃槑缁� + agvWrkMastLogService.save(wrkMast); + agvWrkDetlLogService.save(wrkMast.getWrkNo()); + + //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁� + if(agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) && agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){ + 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 f8cd847..c44a681 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java @@ -1,5 +1,6 @@ package com.zy.asrs.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.WrkDetl; @@ -51,6 +52,7 @@ */ @Override public List<AgvWrkDetl> selectByWrkNo(Integer wrkNo) { + return this.baseMapper.selectByWrkNo(wrkNo); } @@ -88,4 +90,9 @@ return baseMapper.updateOrderNo(orderNo, wrkNo, matnr, batch) > 0; } + @Override + public boolean deleteByWrkNo(int wrkNo) { + return this.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",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 8d90d1d..c8b9ea2 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.exception.CoolException; import com.zy.asrs.entity.AgvWrkMast; @@ -115,6 +116,11 @@ return index > 0; } + @Override + public boolean deleteByWrkNo(int wrkNo) { + return this.delete(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo)); + } + private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){ //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆 for(AgvWrkMast agvWrkMast : agvWrkMastList){ diff --git a/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java index 6484393..7a57897 100644 --- a/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java @@ -1,11 +1,18 @@ package com.zy.asrs.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.zy.asrs.entity.AllLocDetl; import com.zy.asrs.mapper.AllLocDetlMapper; import com.zy.asrs.service.AllLocDetlService; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class AllLocDetlServiceImpl extends ServiceImpl<AllLocDetlMapper, AllLocDetl> implements AllLocDetlService { + @Override + public List<AllLocDetl> getByMatnrAndCsocodeAndIsoseq(String matnr, String csocode, String isoseq) { + return this.selectList(new EntityWrapper<AllLocDetl>().eq("matnr",matnr).eq("three_code",csocode).eq("dead_time",isoseq)); + } } diff --git a/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java new file mode 100644 index 0000000..8dd012b --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java @@ -0,0 +1,11 @@ +package com.zy.asrs.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.entity.InventoryVariance; +import com.zy.asrs.mapper.InventoryVarianceMapper; +import com.zy.asrs.service.InventoryVarianceService; +import org.springframework.stereotype.Service; + +@Service +public class InventoryVarianceServiceImpl extends ServiceImpl<InventoryVarianceMapper, InventoryVariance> implements InventoryVarianceService { +} diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java index 46c7a70..7da76c4 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java @@ -9,6 +9,7 @@ import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.result.StockVo; import com.zy.asrs.mapper.LocDetlMapper; +import com.zy.asrs.service.BasDevpService; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.StaDescService; @@ -28,6 +29,8 @@ private StaDescService staDescService; @Autowired private LocMastService locMastService; + @Autowired + private BasDevpService basDevpService; @Override public Page<LocDetl> getStockOut(Page<LocDetl> page) { @@ -123,9 +126,10 @@ int ioType = anfme > issued ? 103 : 101; anfme = anfme > issued ? issued : anfme; LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme); - List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType); + //List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType); + List<Integer> outSite = basDevpService.getAvailableOutSite(101); - locDto.setStaNos(staNos); + locDto.setStaNos(outSite); locDto.setCsocode(csocode); locDto.setIsoseq(isoseq); locDto.setContainerCode(locDetl.getSuppCode()); diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java index ae757e0..46f1a15 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java @@ -1,12 +1,14 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.OrderDetlService; +import com.zy.asrs.utils.Utils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -104,5 +106,14 @@ // return null; } + @Override + public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq) { + Wrapper<OrderDetl> wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("matnr", matnr); + Utils.wapperSetCondition(wrapper,"csocode",csocode); + Utils.wapperSetCondition(wrapper,"isoseq",isoseq); + + return this.selectOne(wrapper); + } + } diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java index 98435aa..75d9605 100644 --- a/src/main/java/com/zy/common/service/erp/ErpService.java +++ b/src/main/java/com/zy/common/service/erp/ErpService.java Binary files differ diff --git a/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java b/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java new file mode 100644 index 0000000..f385dcd --- /dev/null +++ b/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java @@ -0,0 +1,38 @@ +package com.zy.common.service.erp.entity; + +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +/* +ERP涓簱瀛樻瘮瀵硅鍥� + */ +@Data +@TableName("wlzh_v_st_rd") +public class WlzhVStRd { + //鏍哥畻涓讳綋 + private String account; + + //浠撳簱 + private String cWhName; + + //瀛樿揣缂栫爜 + private String cInvCode; + + //瑙勬牸鍨嬪彿 + private String cInvStd; + + //璁¢噺鍗曚綅 + private String cComUnitName; + + //閫氱敤鍨嬪彿 + private String cinvdefine4; + + //鐜板瓨閲� + private Double iQuantity; + + //閿�鍞鍗曞彿 + private String csocode; + + //閿�鍞鍗曡鍙� + private String isoseq; +} diff --git a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java index c09b5b8..0b38dcd 100644 --- a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java +++ b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java @@ -2,33 +2,35 @@ import com.core.common.Cools; import com.core.common.DateUtils; -import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; -import com.zy.asrs.entity.*; -import com.zy.asrs.service.*; +import com.zy.asrs.entity.AllLocDetl; +import com.zy.asrs.entity.InventoryVariance; +import com.zy.asrs.entity.Mat; +import com.zy.asrs.entity.Tag; +import com.zy.asrs.service.AllLocDetlService; +import com.zy.asrs.service.InventoryVarianceService; +import com.zy.asrs.service.MatService; +import com.zy.asrs.service.TagService; import com.zy.asrs.task.AbstractHandler; import com.zy.common.service.erp.ErpService; -import com.zy.common.service.erp.dto.VoucherDto; import com.zy.common.service.erp.entity.Goods; -import com.zy.common.service.erp.entity.Voucher; -import com.zy.common.service.erp.entity.VoucherDetail; +import com.zy.common.service.erp.entity.WlzhVStRd; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** * erp浠诲姟鎺у埗鍣� * Created by vincent on 2020/11/27 */ @Slf4j -//@Component +@Component public class ErpScheduler extends AbstractHandler<Exception> { @Autowired @@ -38,15 +40,11 @@ @Autowired private MatService matService; @Autowired - private OrderService orderService; + private AllLocDetlService allLocDetlService; @Autowired - private DocTypeService docTypeService; - @Autowired - private OrderDetlService orderDetlService; - @Autowired - private SnowflakeIdWorker snowflakeIdWorker; + private InventoryVarianceService inventoryVarianceService; - @Scheduled(cron = "0/5 * * * * ? ") + //@Scheduled(cron = "0/5 * * * * ? ") @Synchronized @Transactional public synchronized void syncMat() { @@ -85,126 +83,53 @@ } } - @Scheduled(cron = "0/5 * * * * ? ") + //@Scheduled(cron = "0/5 * * * * ? ") @Synchronized @Transactional - public synchronized void syncOrder() { - List<VoucherDto> list = erpService.selectOrder(0); - for (VoucherDto dto : list) { - Voucher voucher = dto.getVoucher(); - Order order = orderService.selectByNo(voucher.getVoucherID()); - if (Cools.isEmpty(order)) { + public void syncLocDetl(){ - String regEx = "[^0-9]"; - Pattern compile = Pattern.compile(regEx); - Matcher matcher = compile.matcher(voucher.getMT()); - String docTypeVal = matcher.replaceAll("").trim(); + List<InventoryVariance> inventoryVariances = new ArrayList<>(); - DocType docType = docTypeService.selectOrAdd(docTypeVal, null); - Date now = new Date(); - // 鍗曟嵁涓绘。 - order = new Order( - String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] - voucher.getVoucherID(), // 璁㈠崟缂栧彿 - DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 - docType.getDocId(), // 鍗曟嵁绫诲瀷 - null, // 椤圭洰缂栧彿 - null, // - null, // 璋冩嫧椤圭洰缂栧彿 - voucher.getBatch(), // 鍒濆绁ㄦ嵁鍙� - voucher.getMaterialNO(), // 绁ㄦ嵁鍙� - null, // 瀹㈡埛缂栧彿 - voucher.getCustomer(), // 瀹㈡埛 - voucher.getCenterID(), // 鑱旂郴鏂瑰紡 - voucher.getPlant(), // 鎿嶄綔浜哄憳 - voucher.getTotalNum(), // 鍚堣閲戦 ******************** - null, // 浼樻儬鐜� - null, // 浼樻儬閲戦 - null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 - null, // 瀹炰粯閲戦 - null, // 浠樻绫诲瀷 - voucher.getLoc(), // 涓氬姟鍛� - voucher.getTotalCount(), // 缁撶畻澶╂暟 ******************** - null, // 閭垂鏀粯绫诲瀷 - voucher.getExpectedWeight(), // 閭垂 - null, // 浠樻鏃堕棿 - null, // 鍙戣揣鏃堕棿 - null, // 鐗╂祦鍚嶇О - null, // 鐗╂祦鍗曞彿 - 1L, // 璁㈠崟鐘舵�� - 1, // 鐘舵�� - 9527L, // 娣诲姞浜哄憳 - now, // 娣诲姞鏃堕棿 - 9527L, // 淇敼浜哄憳 - now, // 淇敼鏃堕棿 - null // 澶囨敞 - ); - if (!orderService.insert(order)) { - throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); - } - - Mat mat = matService.selectByMatnr(voucher.getMaterialNO()); - if (mat == null) { - throw new CoolException(voucher.getMaterialNO() + "鐗╂枡鍙蜂笉瀛樺湪"); - } - - // 绻冲韩鍠� - if (docType.getPakin() == 1) { - for (VoucherDetail detail : dto.getDetails()) { - OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(mat); - - orderDetl.setBatch(detail.getBarcode()); - orderDetl.setAnfme(mat.getWeight()); - - 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); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); - } - } - } else { - OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(mat); - StringBuilder sb = new StringBuilder(); - if (!Cools.isEmpty(dto.getDetails())) { - for (VoucherDetail detail : dto.getDetails()) { - sb.append(detail.getBarcode()).append(","); - } - orderDetl.setBatch(sb.toString()); - } - orderDetl.setAnfme(voucher.getExpectedWeight()); - 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); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); - } - } - - // erp 鍚屾 - int state = 1; - if (!erpService.updateStateForVoucher(voucher.getVoucherID(), state)) { - throw new CoolException(voucher.getVoucherID() + "璁㈠崟淇敼State涓�"+state+"澶辫触"); - } else { - erpService.updateTimeForVoucherDetail(voucher.getVoucherID()); - } - - } else { - log.warn("{}璁㈠崟宸插瓨鍦�", voucher.getVoucherID()); + int pageSize = 500; + int pageNumber = 0; + while (true){ + List<WlzhVStRd> wlzhVStRds = erpService.selectPage(pageSize, pageNumber); + if(wlzhVStRds.size() < pageSize){ + break; } + + //ERP搴撳瓨涓庣珛搴撳簱瀛樻瘮瀵� + compileStock(wlzhVStRds,inventoryVariances); + pageNumber ++; + } + + inventoryVarianceService.insertBatch(inventoryVariances); + } + private void compileStock(List<WlzhVStRd> wlzhVStRds, List<InventoryVariance> inventoryVariances){ + wlzhVStRds.forEach(wlzhVStRd -> { + String matnr = wlzhVStRd.getCInvCode(); + String csocode = wlzhVStRd.getCsocode(); + String isoseq = wlzhVStRd.getIsoseq(); + Double iQuantity = wlzhVStRd.getIQuantity(); + + Double anfme = 0.0; + + List<AllLocDetl> allLocDetlList = allLocDetlService.getByMatnrAndCsocodeAndIsoseq(matnr, csocode, isoseq); + for(AllLocDetl allLocDetl : allLocDetlList){ + anfme += allLocDetl.getAnfme(); + } + + int compare = Double.compare(iQuantity, anfme); + if(compare != 0){ + InventoryVariance inventoryVarianceParam = new InventoryVariance(matnr,csocode,isoseq,iQuantity,anfme); + inventoryVariances.add(inventoryVarianceParam); + } + + }); + } + + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 330352b..39c2117 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,9 +10,9 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs + #url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs #url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs - #url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs + url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs username: sa password: sa@123 mvc: @@ -68,9 +68,9 @@ erp: db: driver_class_name: com.microsoft.sqlserver.jdbc.SQLServerDriver - ur: jdbc:sqlserver://10.20.46.23:1433;databasename=POY_ASRS - username: poy-asrs - password: Poy@2022 + ur: jdbc:sqlserver://192.168.1.55:1433;databasename=ufdata_998_2022 + username: WMS + password: Wlzh44338 agv: # url: localhost:8080 diff --git a/src/main/resources/mapper/ViewStayTimeMapper.xml b/src/main/resources/mapper/ViewStayTimeMapper.xml index b4fbba3..7a0e299 100644 --- a/src/main/resources/mapper/ViewStayTimeMapper.xml +++ b/src/main/resources/mapper/ViewStayTimeMapper.xml @@ -178,5 +178,4 @@ ) t ) a </select> - </mapper> -- Gitblit v1.9.1