From 57936e11434f6614f818a0a0a495918dc1af6dd6 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期一, 02 十二月 2024 08:07:01 +0800 Subject: [PATCH] 单据出库完成 --- src/main/java/com/zy/asrs/entity/param/CombParam.java | 23 ++ src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 5 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 1 src/main/webapp/static/js/saasLog/saasLog.js | 10 src/main/resources/mapper/LocDetlMapper.xml | 74 +++++++ src/main/webapp/static/js/manLocDetl/manLocDetl.js | 6 src/main/java/com/zy/asrs/controller/MobileController.java | 124 ++++++++++++ src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java | 2 src/main/java/com/zy/asrs/controller/WaitPakinController.java | 11 + src/main/resources/mapper/ManLocDetlMapper.xml | 12 + src/main/resources/mapper/OrderDetlMapper.xml | 15 + src/main/java/com/zy/system/entity/SaasLog.java | 18 + src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 24 -- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 187 ++++++++++++++++++ src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java | 8 src/main/webapp/static/js/common.js | 10 src/main/java/com/zy/asrs/controller/OutController.java | 25 ++ src/main/java/com/zy/asrs/service/MobileService.java | 11 + src/main/java/com/zy/asrs/utils/SaasUtils.java | 3 19 files changed, 515 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index 88f3b53..84f7452 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*; import java.util.*; +import java.util.stream.Collectors; /** * 绉诲姩绔帴鍙f帶鍒跺櫒 @@ -56,6 +57,129 @@ @Autowired private WrkDetlLogService wrkDetlLogService; + @PostMapping("/pda/OutOrder") + @ManagerAuth(memo = "鑾峰緱鍑哄簱鍗�") + @Transactional + public R OutOrder(@RequestParam String orderNo) { + List<Order> orders=new ArrayList<Order>(); + List<Order> OrderList=new ArrayList<Order>(); + if(Cools.isEmpty(orderNo)){ + orders= orderService.selectList(new EntityWrapper<Order>() + .in("settle",1,2) + ); + }else{ + orders= orderService.selectList(new EntityWrapper<Order>() + .like("order_no",orderNo) + .in("settle",1,2) + ); + } + if(Cools.isEmpty(orders)){ + return R.parse("鏃犳暟鎹�"); + } + for (Order o:orders + ) { + DocType docType=docTypeService.selectOne(new EntityWrapper<DocType>() + .eq("doc_id",o.getDocType())); + if(docType.getPakout()==1){ + OrderList.add(o); + } + } + + + return R.ok(OrderList); + } + + @PostMapping("/pda/OutLocNo") + @ManagerAuth(memo = "鑾峰緱骞冲簱鍑哄簱鐨勫搴斿簱浣嶅彿") + @Transactional + public R OutLocNo(@RequestParam Long orderId) { + List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .eq("order_id", orderId) + ); + if (Cools.isEmpty(orderDetls)) { + return R.error("璁㈠崟鏄庣粏涓嶅瓨鍦�"); + } + List<String> list = new ArrayList<>(); + for (OrderDetl o : orderDetls + ) { + if (o.getAnfme() <= o.getWorkQty()) { + continue; + } else { + //鏌ョ湅搴撲綅鏄庣粏涓湁鐨勭墿鏂� + List<ManLocDetl> locDetls = manLocDetlMapper.selectList(new EntityWrapper<ManLocDetl>() + .eq("matnr", o.getMatnr()).eq("batch",o.getBatch()) + ); + if (Cools.isEmpty(locDetls)) { + continue; + } else { + for (ManLocDetl l : locDetls + ) { + String s = l.getLocNo().substring(0, 2); + if (Integer.parseInt(s) > 8) { + list.add(l.getLocNo()); + } + } + } + } + } + List<String> myList = list.stream().distinct().collect(Collectors.toList()); + return R.ok(myList); + } + + @PostMapping("/pda/OrderDetlContrastLocDetl") + @ManagerAuth(memo = "鑾峰緱璁㈠崟鏄庣粏瀵瑰簲鐨勫簱瀛樻槑缁�") + @Transactional + public R OrderDetlContrastLocDetl(@RequestParam Long orderId, @RequestParam String locNo) { + List<ManLocDetl> locDetlList = new ArrayList<ManLocDetl>(); + List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .eq("order_id", orderId) + ); + if (Cools.isEmpty(orderDetls)) { + return R.error("璁㈠崟鏄庣粏涓嶅瓨鍦�"); + } + List<ManLocDetl> locDetls = manLocDetlMapper.selectList(new EntityWrapper<ManLocDetl>() + .eq("loc_no", locNo)); + if (Cools.isEmpty(locDetls)) { + return R.error("搴撲綅涓虹┖"); + } + for (OrderDetl o : orderDetls + ) { + if(o.getAnfme().equals(o.getQty())){ + continue; + } + for (ManLocDetl l : locDetls + ) { + if (o.getMatnr().equals(l.getMatnr()) && o.getBatch().equals(l.getBatch())) { + if (o.getAnfme() - o.getWorkQty() >= l.getAnfme()) { + + } else { + l.setAnfme(o.getAnfme() - o.getWorkQty()); + } + locDetlList.add(l); + break; + } + } + } + return R.ok(locDetlList); + } + + /** + * 骞冲韩涓嬫灦 + */ + @RequestMapping("/pda/WarehouseOut") + @ManagerAuth + public R WarehouseOut(@RequestBody CombParam combParam) { + return mobileService.WarehouseOut(combParam, getUserId()); + } + + /** + * 骞冲韩涓婃灦 + */ + @RequestMapping("/pda/WarehouseIn") + @ManagerAuth + public R WarehouseIn(@RequestParam String locNo, @RequestParam String barcode) { + return mobileService.WarehouseIn(locNo, barcode, getUserId()); + } // 鍟嗗搧涓婃灦 @RequestMapping("/mat/onSale/auth") diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index 23fb3a9..ef24fc4 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -7,6 +7,7 @@ import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.service.*; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -41,6 +43,9 @@ private WorkService workService; @Autowired private BasDevpService basDevpService; + + @Resource + private LocDetlMapper locDetlMapper; @PostMapping("/out/pakout/orderDetlIds/auth") @@ -79,6 +84,22 @@ break; } } + List<LocDetl> locDetls2 = locDetlMapper.queryStockByManLoc(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + for (LocDetl locDetl : locDetls2) { + if (issued > 0) { + LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), + issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); +// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); +// locDto.setStaNos(staNos); + locDto.setLocNo("骞冲簱" + locDetl.getLocNo()); + locDtos.add(locDto); + exist.add(locDetl.getLocNo()); + // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 + issued = issued - locDetl.getAnfme(); + } else { + break; + } + } if (issued > 0) { LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); locDto.setLack(Boolean.TRUE); @@ -94,6 +115,10 @@ if (Cools.isEmpty(locDtos)) { return R.parse(BaseRes.PARAM); } + locDtos = locDtos.stream().filter(locDto -> locDto.getLocNo() != null && !locDto.getLocNo().startsWith("骞冲簱")).collect(Collectors.toList()); + if (Cools.isEmpty(locDtos)) { + return R.parse("骞冲簱搴撳瓨/搴撳瓨涓嶈冻"); + } boolean lack = true; for (LocDto locDto : locDtos) { if (!locDto.isLack()) { diff --git a/src/main/java/com/zy/asrs/controller/WaitPakinController.java b/src/main/java/com/zy/asrs/controller/WaitPakinController.java index 7d994d8..9535756 100644 --- a/src/main/java/com/zy/asrs/controller/WaitPakinController.java +++ b/src/main/java/com/zy/asrs/controller/WaitPakinController.java @@ -11,7 +11,6 @@ import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.entity.WaitPakin; -import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.WaitPakinService; @@ -36,6 +35,16 @@ @Autowired private WrkMastService wrkMastService; + @RequestMapping(value = "/waitPakin/forBarcode/auth") + @ManagerAuth + public R forBarcode(@RequestParam("barcode") String barcode) { + List<WaitPakin> list = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + if (Cools.isEmpty(list)){ + return R.error("鏈壘鍒扮粍鎵樹俊鎭�"); + } + return R.ok(list); + } + @RequestMapping(value = "/waitPakin/{id}/auth") @ManagerAuth public R get(@PathVariable("id") String id) { diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java index d1d5cfd..684882f 100644 --- a/src/main/java/com/zy/asrs/entity/param/CombParam.java +++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java @@ -1,6 +1,5 @@ package com.zy.asrs.entity.param; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @@ -20,10 +19,30 @@ // 搴撲綅缂栧彿 private String locno; + // 璐т富 + private String owner; + + //缁勬墭鐗╂枡 private List<CombMat> combMats; + + /* + 婊℃澘 + */ + private String fullPlt; @Data public static class CombMat { + + private String orderNo; + + //鏂欐兂鐮� + private String containerCode; + + //閿�鍞鍗曞彿 + private String csocode; + + //閿�鍞鍗曡鍙� + private String isoseq; // 鐗╂枡缂栧彿 private String matnr; @@ -40,6 +59,8 @@ // 瑙勬牸 private String specs; + private String zpallet; + } } diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java index 2b7255c..26a92fc 100644 --- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java @@ -58,6 +58,11 @@ List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos); + /** + * 鍦ㄥ钩搴撻噷闈㈡煡璇㈠簱瀛� + */ + List<LocDetl> queryStockByManLoc(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos); + Double queryStockAnfme(String matnr, String batch); List<StockVo> queryStockTotal(); diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java index 51c99ad..efe12c0 100644 --- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java +++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java @@ -32,6 +32,7 @@ int addToLogTable(OrderDetl orderDetl); int increaseQtyByOrderNo(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty); + int increaseWorkQtyByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("qty") Double qty); int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty); } diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java index f5d0585..d1f060c 100644 --- a/src/main/java/com/zy/asrs/service/MobileService.java +++ b/src/main/java/com/zy/asrs/service/MobileService.java @@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.alibaba.fastjson.JSONObject; +import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.OrderDetl; @@ -38,4 +39,14 @@ void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, Double curOutQty, Integer ioType, Long userId, Date now); + + /** + * 骞冲簱涓嬫灦 + */ + R WarehouseOut(CombParam combParam, Long userId); + + /** + * 骞冲簱涓婃灦 + */ + R WarehouseIn(String locNo, String barcode, Long userId); } diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java index 90316d8..7b2ecea 100644 --- a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java @@ -172,7 +172,7 @@ manLocDetl.setUnit(mat.getUnit()); manLocDetl.setBarcode(mat.getBarcode()); manLocDetl.setPrice(mat.getPrice()); - SaasUtils.insertLog(3,manLocDetl.getLocNo(), manLocDetl.getMatnr(),manLocDetl.getAnfme(),userId); + SaasUtils.insertLog(3,manLocDetl.getLocNo(), manLocDetl.getMatnr(),manLocDetl.getAnfme(),userId,manLocDetl.getBatch()); this.baseMapper.insert(manLocDetl); } } diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index 3b652a7..e4c1241 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -12,6 +12,7 @@ import com.zy.asrs.entity.param.OffSaleParam; import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.mapper.ManLocDetlMapper; +import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; import com.zy.asrs.utils.SaasUtils; @@ -26,6 +27,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; @@ -43,6 +46,10 @@ private MatService matService; @Autowired private WaitPakinService waitPakinService; + + @Resource + private WaitPakinLogService waitPakinLogService; + @Autowired private OrderService orderService; @Autowired @@ -78,6 +85,182 @@ @Autowired private ManLocDetlMapper manLocDetlMapper; + @Resource + private OrderDetlMapper orderDetlMapper; + + @Override + @Transactional + public R WarehouseOut(CombParam combParam, Long userId) { + + //鏌ヨ搴撳瓨鏁版嵁 + for (CombParam.CombMat combMat : combParam.getCombMats()) { + ManLocDetl locDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>() + .eq("loc_no", combParam.getLocno()) + .eq("zpallet", combMat.getZpallet()) + .eq("matnr", combMat.getMatnr()) +// .eq(LocDetl::getBatch, combMat.getBatch()) + ); + if (Cools.isEmpty(locDetl)) { + return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁"); + } + if (combMat.getAnfme() > locDetl.getAnfme()) { + return R.error("涓嬫灦鏁伴噺閿欒锛岃秴鍑哄簱瀛樻暟閲�"); + } + if (!Cools.isEmpty(combParam.getOrderNo())) { + Order order = orderService.selectByNo(combParam.getOrderNo()); + if (Cools.isEmpty(order)) { + continue; + } + if (order.getSettle() == 1) { + orderService.updateSettle(order.getId(), 2L, userId); + } + OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); + if (Cools.isEmpty(orderDetl)) { + continue; + } + if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) { + combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty()); + } + // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺 + if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触"); + } + // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺 + if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { + throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触"); + } + // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴� + orderService.checkComplete(combParam.getOrderNo()); + } + try { + double i = 0.0; + double j = locDetl.getAnfme(); + //澶勭悊搴撳瓨淇℃伅 + if (combMat.getAnfme().equals(locDetl.getAnfme())) { + //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁 + manLocDetlMapper.deleteLocNo0(combParam.getLocno(), combMat.getMatnr()); + int count = manLocDetlMapper.selectCount(new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno())); + if (count == 0) { + Node node = nodeService.selectByUuid(combParam.getLocno()); + node.setUpdateTime(new Date()); + node.setUpdateBy(userId); + node.setBarcode(""); + nodeService.updateById(node); + } + } else { + BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme())); + i = subtract.byteValue(); + locDetl.setAnfme(subtract.doubleValue()); + // 鏇存柊搴撳瓨 + manLocDetlMapper.updateAnfme(subtract.doubleValue(), combParam.getLocno(), combMat.getMatnr(), combMat.getBatch()); + } + // 璁板綍鏃ュ織 + SaasUtils.insertLog(1, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch()); + } catch (Exception e) { + throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage()); + } + } + return R.ok(); + } + + @Override + @Transactional + public R WarehouseIn(String locNo, String barcode, Long userId) { + + //鏌ヨ缁勬墭鏁版嵁 + List<WaitPakin> list = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode)); + if (Cools.isEmpty(list)) { + return R.error("鏈壘鍒扮粍鎵樹俊鎭�"); + } + Date now = new Date(); + + //鎻掑叆搴撳瓨鏁版嵁 + for (WaitPakin waitPakin : list) { + + Mat mat = matService.selectOne(new EntityWrapper<Mat>() + .eq("matnr", waitPakin.getMatnr())); + + ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()). + eq("batch", waitPakin.getBatch())); + + Node node = nodeService.selectByUuid(locNo); + if (Cools.isEmpty(node)) { + throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�"); + } + if (!Cools.isEmpty(locDetl1)) { + locDetl1.setAnfme(waitPakin.getAnfme() + waitPakin.getAnfme()); + locDetl1.setUpdateBy(userId); + locDetl1.setModiTime(now); + manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()). + eq("batch", waitPakin.getBatch())); + } else { + ManLocDetl manLocDetl = new ManLocDetl(); + manLocDetl.setLocNo(locNo); +// manLocDetl.setBarcode(barcode); + manLocDetl.setZpallet(barcode); + manLocDetl.setNodeId(node.getId()); + manLocDetl.setMaktx(mat.getMaktx()); + manLocDetl.setMatnr(mat.getMatnr()); + manLocDetl.setSpecs(mat.getSpecs()); + manLocDetl.setBatch(Cools.isEmpty(waitPakin.getBatch()) ? "" : waitPakin.getBatch()); + manLocDetl.setAnfme(waitPakin.getAnfme()); + manLocDetl.setCreateBy(userId); + manLocDetl.setCreateTime(now); + manLocDetl.setUpdateBy(userId); + manLocDetl.setModiTime(now); + if (!manLocDetlService.insert(manLocDetl)) { + throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�"); + } + + // 鏇存柊搴撲綅鏉$爜 + node.setBarcode(barcode); + node.setUpdateBy(userId); + node.setUpdateTime(now); + nodeService.updateById(node); + } + + // 璁板綍鏃ュ織 + SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch()); + + //鏄惁灞炰簬璁㈠崟鏁版嵁 +// if (!Cools.isEmpty(waitPakin.getOrderNo())){ +// Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId); +// if (Cools.isEmpty(order)){ +// continue; +// } +// OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId); +// if (Cools.isEmpty(orderDetl)){ +// continue; +// } +// // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺 +// if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) { +// throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触"); +// } +// // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴� +// orderService.checkComplete(waitPakin.getOrderNo(), hostId); +// +// } + + // 鏇存柊鍏ュ簱宸ヤ綔妗� + waitPakin.setLocNo(locNo); + waitPakin.setIoStatus("Y"); + waitPakin.setModiUser(userId); + waitPakin.setModiTime(now); + waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("matnr",waitPakin.getMatnr()) + .eq("batch",waitPakin.getBatch())); + + // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。 + if (!waitPakinLogService.save(barcode)) { + throw new CoolException("淇濆瓨缁勬墭鏁版嵁澶辫触"); + } + // 鍒犻櫎鍏ュ簱閫氱煡妗� + if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", barcode))) { + throw new CoolException("鍒犻櫎缁勬墭鏁版嵁澶辫触"); + } + } + + return R.ok("涓婃灦鎴愬姛"); + } @Override @Transactional @@ -252,7 +435,7 @@ node.setUpdateBy(userId); node.setUpdateTime(now); nodeService.updateById(node); - SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId); + SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId,manLocDetl.getBatch()); } } @@ -268,7 +451,7 @@ if (anfme < 0) { throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�"); } else if (anfme == 0){ - SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId); + SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId,manLocDetl.getBatch()); manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr()); // 娓呯┖搴撲綅鏉$爜 Node node = nodeService.selectByUuid(offSaleParam.getLocNo()); diff --git a/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java index 3399e9b..0a4695f 100644 --- a/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/NodeServiceImpl.java @@ -112,7 +112,7 @@ manLocDetl.setCreateTime(now); manLocDetl.setModiTime(now); manLocDetl.setCreateBy(userId); - SaasUtils.insertLog(0,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),userId); + SaasUtils.insertLog(0,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),userId, manLocDetl.getBatch()); manLocDetlService.insert(manLocDetl); }else { check.setAnfme(dto.getCount() + check.getAnfme()); @@ -146,7 +146,7 @@ if (manLocDetl.getAnfme() - param.getCount() < 0) { return R.error("鐗╂枡:"+ param.getMatnr() + " 鍦ㄥ簱浣嶄腑鏁伴噺涓嶈冻"); } else if (manLocDetl.getAnfme() - param.getCount() == 0) { - SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId); + SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId,manLocDetl.getBatch()); manLocDetlService.delete(new EntityWrapper<ManLocDetl>() .eq("loc_no",node.getUuid()) .eq("matnr",param.getMatnr())); @@ -161,7 +161,7 @@ manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>() .eq("loc_no",node.getUuid()) .eq("matnr",param.getMatnr())); - SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId); + SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),param.getCount(),userId,manLocDetl.getBatch()); } } } @@ -189,7 +189,7 @@ source.setLocNo(targetNode.getUuid()); source.setNodeId(targetNode.getId()); - SaasUtils.insertLog(2,source.getLocNo(), source.getMatnr(), source.getAnfme(),userId); + SaasUtils.insertLog(2,source.getLocNo(), source.getMatnr(), source.getAnfme(),userId,source.getBatch()); manLocDetlService.insert(source); }else { check.setAnfme(check.getAnfme() + source.getAnfme()); 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 ce2a799..5ef460b 100644 --- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java @@ -71,30 +71,6 @@ } } if (complete) { - // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏 - DocType docType = docTypeService.selectById(order.getDocType()); - if (null != docType && docType.getPakout() == 1) { - if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { - throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); - } - List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo); - for (WrkDetl wrkDetl : wrkDetls) { - OrderDetl orderDetl = new OrderDetl(); - orderDetl.sync(wrkDetl); - orderDetl.setQty(orderDetl.getAnfme()); - orderDetl.setOrderId(order.getId()); - orderDetl.setOrderNo(orderNo); - orderDetl.setStatus(1); - orderDetl.setCreateTime(order.getCreateTime()); - orderDetl.setCreateBy(order.getCreateBy()); - orderDetl.setUpdateTime(order.getUpdateTime()); - orderDetl.setUpdateBy(order.getUpdateBy()); - if (!orderDetlService.insert(orderDetl)) { - throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�"); - } - } - } - if (!this.updateSettle(order.getId(), 4L, null)) { throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�"); } diff --git a/src/main/java/com/zy/asrs/utils/SaasUtils.java b/src/main/java/com/zy/asrs/utils/SaasUtils.java index b2e018f..3865f1f 100644 --- a/src/main/java/com/zy/asrs/utils/SaasUtils.java +++ b/src/main/java/com/zy/asrs/utils/SaasUtils.java @@ -7,7 +7,7 @@ import java.util.Date; public class SaasUtils { - public static void insertLog(Integer type, String locNo, String matnr,Double anfme, Long userId){ + public static void insertLog(Integer type, String locNo, String matnr,Double anfme, Long userId,String batch){ SaasLogService bean = SpringUtils.getBean(SaasLogService.class); SaasLog saasLog = new SaasLog(); saasLog.setType(type); @@ -16,6 +16,7 @@ saasLog.setIoTime(new Date()); saasLog.setAnfme(anfme); saasLog.setCreateBy(userId); + saasLog.setBatch(batch); bean.insert(saasLog); } } diff --git a/src/main/java/com/zy/system/entity/SaasLog.java b/src/main/java/com/zy/system/entity/SaasLog.java index 36d64e3..2069e4e 100644 --- a/src/main/java/com/zy/system/entity/SaasLog.java +++ b/src/main/java/com/zy/system/entity/SaasLog.java @@ -1,16 +1,17 @@ package com.zy.system.entity; -import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.annotations.TableField; -import java.text.SimpleDateFormat; -import java.util.Date; -import org.springframework.format.annotation.DateTimeFormat; - +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.core.common.Cools; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import com.baomidou.mybatisplus.annotations.TableName; +import org.springframework.format.annotation.DateTimeFormat; + import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.Date; @Data @TableName("sys_saas_log") @@ -38,6 +39,9 @@ @ApiModelProperty(value= "") private String matnr; + @ApiModelProperty(value= "鎵规") + private String batch; + @ApiModelProperty(value= "") @TableField("io_time") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index 4b0009d..2dafee4 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -401,5 +401,79 @@ and lm.row1 in (31,32) order by row1 </select> + <select id="queryStockByManLoc" resultMap="BaseResultMap"> + select a.* + from man_loc_detl a + where 1=1 + and a.matnr = #{matnr} + <if test="batch != null and batch != ''"> + and a.batch = #{batch} + </if> + <if test="orderNo != null and orderNo != ''"> + and a.doc_num = #{orderNo} + </if> + <if test="locNos != null and locNos.size > 0"> + and a.loc_no not in + <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + order by + DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme + desc, + NEWID(), + case + when (left(a.loc_no, 2) = '01') then 0 + when (left(a.loc_no, 2) = '02') then 1 + when (left(a.loc_no, 2) = '03') then 1 + when (left(a.loc_no, 2) = '04') then 0 + when (left(a.loc_no, 2) = '05') then 0 + when (left(a.loc_no, 2) = '06') then 1 + when (left(a.loc_no, 2) = '07') then 1 + when (left(a.loc_no, 2) = '08') then 0 + when (left(a.loc_no, 2) = '09') then 0 + when (left(a.loc_no, 2) = '10') then 1 + when (left(a.loc_no, 2) = '11') then 1 + when (left(a.loc_no, 2) = '12') then 0 + when (left(a.loc_no, 2) = '13') then 0 + when (left(a.loc_no, 2) = '14') then 1 + when (left(a.loc_no, 2) = '15') then 1 + when (left(a.loc_no, 2) = '16') then 0 + when (left(a.loc_no, 2) = '17') then 0 + when (left(a.loc_no, 2) = '18') then 1 + when (left(a.loc_no, 2) = '19') then 1 + when (left(a.loc_no, 2) = '20') then 0 + when (left(a.loc_no, 2) = '21') then 0 + when (left(a.loc_no, 2) = '22') then 1 + when (left(a.loc_no, 2) = '23') then 1 + when (left(a.loc_no, 2) = '24') then 0 + when (left(a.loc_no, 2) = '25') then 0 + when (left(a.loc_no, 2) = '26') then 1 + when (left(a.loc_no, 2) = '27') then 1 + when (left(a.loc_no, 2) = '28') then 0 + when (left(a.loc_no, 2) = '29') then 0 + when (left(a.loc_no, 2) = '30') then 1 + when (left(a.loc_no, 2) = '31') then 1 + when (left(a.loc_no, 2) = '32') then 0 + when (left(a.loc_no, 2) = '33') then 0 + when (left(a.loc_no, 2) = '34') then 1 + when (left(a.loc_no, 2) = '35') then 1 + when (left(a.loc_no, 2) = '36') then 0 + when (left(a.loc_no, 2) = '37') then 0 + when (left(a.loc_no, 2) = '38') then 1 + when (left(a.loc_no, 2) = '39') then 1 + when (left(a.loc_no, 2) = '40') then 0 + when (left(a.loc_no, 2) = '41') then 0 + when (left(a.loc_no, 2) = '42') then 1 + when (left(a.loc_no, 2) = '43') then 1 + when (left(a.loc_no, 2) = '44') then 0 + when (left(a.loc_no, 2) = '45') then 0 + when (left(a.loc_no, 2) = '46') then 1 + when (left(a.loc_no, 2) = '47') then 1 + when (left(a.loc_no, 2) = '48') then 0 + else 0 + end + desc + </select> </mapper> diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/ManLocDetlMapper.xml index 5a4b28c..fa9b7c1 100644 --- a/src/main/resources/mapper/ManLocDetlMapper.xml +++ b/src/main/resources/mapper/ManLocDetlMapper.xml @@ -343,5 +343,17 @@ update man_loc_detl set anfme = #{anfme} where node_id = #{nodeId} ; </update> + <update id="updateAnfme"> + update man_loc_detl set anfme = #{anfme} + where loc_no = #{locNo} and matnr = #{matnr} + <choose> + <when test="batch != null and batch != ''"> + and batch = #{batch} + </when> + <otherwise> + and (batch IS NULL OR batch = '') + </otherwise> + </choose> + </update> </mapper> diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml index 74ebaf0..8c855f7 100644 --- a/src/main/resources/mapper/OrderDetlMapper.xml +++ b/src/main/resources/mapper/OrderDetlMapper.xml @@ -199,5 +199,20 @@ </otherwise> </choose> </update> + <update id="increaseWorkQtyByOrderNo"> + update man_order_detl + set work_qty = work_qty + #{qty} + where 1=1 + and order_no = #{orderNo} + and matnr = #{matnr} + <choose> + <when test="batch != null and batch != ''"> + and batch = #{batch} + </when> + <otherwise> + and (batch IS NULL OR batch = '') + </otherwise> + </choose> + </update> </mapper> diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index 547c43b..4dbf2d1 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -222,18 +222,18 @@ ] var detlCols = [ - {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort:true} - ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort:true} + {field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false} ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false} - ,{field: 'batch', align: 'center',title: '璐у搧鐗瑰緛', sort:true} + ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿锛堝搧鍙凤級', sort:true} + ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', sort:true} + ,{field: 'batch', align: 'center',title: '鎵规', sort:true} ,{field: 'anfme', align: 'center',title: '鏁伴噺', hide: false} - ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false} - ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: false} ,{field: 'model', align: 'center',title: '浠g爜', hide: true} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true} ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false} + ,{field: 'locNo', align: 'center',title: '搴撲綅', hide: false} ,{field: 'price', align: 'center',title: '鍗曚环', hide: true} ,{field: 'sku', align: 'center',title: 'sku', hide: true} ,{field: 'units', align: 'center',title: '鍗曚綅閲�', hide: true} diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetl.js b/src/main/webapp/static/js/manLocDetl/manLocDetl.js index c906140..2743c87 100644 --- a/src/main/webapp/static/js/manLocDetl/manLocDetl.js +++ b/src/main/webapp/static/js/manLocDetl/manLocDetl.js @@ -2,12 +2,12 @@ function getCol() { var cols = [ {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}, + {field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}, {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿', sort:true} ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', sort:true} ,{field: 'anfme', align: 'center',title: '鏁伴噺'} - ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false} - ,{field: 'batch', align: 'center',title: '鎵瑰彿', width: 300, sort:true} - //,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'} + ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: true} + ,{field: 'batch', align: 'center',title: '鎵瑰彿', sort:true} ,{field: 'specs', align: 'center',title: '瑙勬牸'} ,{field: 'model', align: 'center',title: '浠g爜', hide: true} ,{field: 'color', align: 'center',title: '棰滆壊', hide: true} diff --git a/src/main/webapp/static/js/saasLog/saasLog.js b/src/main/webapp/static/js/saasLog/saasLog.js index 6d2833e..5505981 100644 --- a/src/main/webapp/static/js/saasLog/saasLog.js +++ b/src/main/webapp/static/js/saasLog/saasLog.js @@ -23,14 +23,14 @@ cols: [[ {type: 'checkbox'} ,{field: 'id', align: 'center',title: 'id', hide:true} - ,{field: 'locNo', align: 'center',title: '搴撲綅'} ,{field: 'type$', align: 'center',title: '鎿嶄綔绫诲瀷'} - ,{field: 'matnr', align: 'center',title: '鐗╂枡鍙�'} + ,{field: 'locNo', align: 'center',title: '搴撲綅'} + ,{field: 'matnr', align: 'center',title: '鐗╂枡'} + ,{field: 'batch', align: 'center',title: '鎵规'} ,{field: 'anfme', align: 'center',title: '鏁伴噺'} + ,{field: 'createBy', align: 'center',title: '鎿嶄綔璐﹀彿'} ,{field: 'ioTime$', align: 'center',title: '鎿嶄綔鏃堕棿'} - ,{field: 'createBy', align: 'center',title: '', hide:true} - - ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120} + // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120} ]], request: { pageName: 'curr', -- Gitblit v1.9.1