From 07dad0e9ef89346439cfcfb5978b0f1cb8f1b512 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期二, 27 五月 2025 12:31:30 +0800 Subject: [PATCH] 新增PDA并板操作 --- src/main/java/com/zy/asrs/controller/MobileController.java | 449 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 364 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index af7f3fb..c3ea41f 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -8,18 +8,19 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.CombParam; -import com.zy.asrs.entity.param.MobileAdjustParam; +import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.MobileAdjustResult; +import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; -import com.zy.common.model.LocDto; -import com.zy.common.model.TaskDto; import com.zy.common.model.WrkDto; import com.zy.common.web.BaseController; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; import java.util.*; /** @@ -28,7 +29,7 @@ */ @RestController @RequestMapping("mobile") -public class MobileController extends BaseController { +public class MobileController extends BaseController { @Autowired private MobileService mobileService; @@ -51,7 +52,29 @@ @Autowired private PackService packService; @Autowired - private WorkService workService; + private ManLocDetlMapper manLocDetlMapper; + @Autowired + private WrkDetlLogService wrkDetlLogService; + + + private static Logger logger = LogManager.getLogger(MobileController.class); + + // 鍟嗗搧涓婃灦 + @RequestMapping("/mat/onSale/auth") + @ManagerAuth + public R matOnSale(@RequestBody CombParam combParam) { + mobileService.onSale(combParam); + return R.ok("涓婃灦鎴愬姛"); + } + + // 鍟嗗搧涓嬫灦 + @RequestMapping("/mat/offSale/auth") + //@ManagerAuth + public R matOffSale(@RequestBody OffSaleParam offSaleParam) { + mobileService.offSale(offSaleParam); + return R.ok("涓嬫灦鎴愬姛"); + } + // 缁勬墭 ---------------------------------------------------------------------------------------------------- @@ -59,37 +82,91 @@ * 鏍规嵁鍗曞彿妫�绱㈠崟鎹暟鎹� * http://localhost:8081/jkwms/mobile/order/serach/orderNo/auth?orderNo=123123 */ +// @RequestMapping("/order/search/orderNo/auth") +// @ManagerAuth +// public R orderSearchByBarcode(@RequestParam String orderNo){ +// Order order = orderService.selectByNo(orderNo); +// if (order == null) { +// return R.ok(); +// } +// DocType docType = docTypeService.selectById(order.getDocType()); +// if (docType.getPakin() == null || docType.getPakin() != 1) { +// return R.ok(); +// } +// if (order.getSettle() > 2) { +// return R.ok(); +// } +// List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId()); +// if (Cools.isEmpty(orderDetls)) { +// return R.ok(); +// } +// return R.ok().add(orderDetls); +// } @RequestMapping("/order/search/orderNo/auth") @ManagerAuth - public R orderSearchByBarcode(@RequestParam String orderNo){ - Order order = orderService.selectByNo(orderNo); - if (order == null) { + public R orderSearchByBarcode(@RequestParam String orderNo) { + if (Cools.isEmpty(orderNo)) { + orderNo = null; + } + List<Order> orders = orderService.selectorderNoL(orderNo); + if (Cools.isEmpty(orders)) { return R.ok(); } - DocType docType = docTypeService.selectById(order.getDocType()); - if (docType.getPakin() == null || docType.getPakin() != 1) { - return R.ok(); + LinkedList<CombParam> combParams = new LinkedList<>(); + if (!Cools.isEmpty(orders)) { + for (Order order : orders) { + CombParam combParam = new CombParam(); + if (order == null) { + continue; + } + DocType docType = docTypeService.selectById(order.getDocType()); + if (docType.getPakin() == null || docType.getPakin() != 1) { + continue; + } + if (order.getSettle() > 2) { + continue; + } + List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId()); + if (!Cools.isEmpty(orderDetls)) { + LinkedList<CombParam.CombMat> combMats = new LinkedList<>(); + for (OrderDetl orderDetl : orderDetls) { + CombParam.CombMat combMat = new CombParam.CombMat(); + combMat.setMatnr(orderDetl.getMatnr()); + combMat.setBatch(orderDetl.getBatch()); + combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty()); + combMat.setMaktx(orderDetl.getMaktx()); + combMat.setSpecs(orderDetl.getSpecs()); + combMats.add(combMat); + } + combParam.setCombMats(combMats); + } + combParam.setOrderNo(order.getOrderNo()); + combParams.add(combParam); + } } - if (order.getSettle() > 2) { - return R.ok(); - } - List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId()); - if (Cools.isEmpty(orderDetls)) { - return R.ok(); - } - return R.ok().add(orderDetls); + return R.ok().add(combParams); } @RequestMapping("/comb/auth") @ManagerAuth(memo = "缁勬墭") - public R comb(@RequestBody CombParam combParam){ + public R comb(@RequestBody CombParam combParam) { + logger.info("缁勬墭鍙傛暟锛歿}",combParam); + if (Cools.isEmpty(combParam.getOrderNo())) { + combParam.setOrderNo(combParam.getBillNo()); + } + List<CombParam.CombMat> combMats = combParam.getCombMats(); + combMats.forEach(elem -> { + if (Cools.isEmpty(elem.getBatch())) { + elem.setBatch(elem.getItemBatch()); + } + }); mobileService.comb(combParam, getUserId()); return R.ok("缁勬墭鎴愬姛"); } @RequestMapping("/pack/get/auth") @ManagerAuth - public R packGet(@RequestParam String barcode){ + public R packGet(@RequestParam String barcode) { Pack pack = packService.selectByBarcode(barcode); if (pack == null) { return R.ok(); @@ -100,12 +177,12 @@ return R.ok("缁勬墭鎴愬姛"); } - @RequestMapping("/pack/comb/auth") - @ManagerAuth(memo = "涓嬬嚎缁勬墭") - public R packComb(@RequestBody CombParam combParam){ - mobileService.packComb(combParam, getUserId()); - return R.ok("缁勬墭鎴愬姛"); - } +// @RequestMapping("/pack/comb/auth") +// @ManagerAuth(memo = "涓嬬嚎缁勬墭") +// public R packComb(@RequestBody CombParam combParam) { +// mobileService.packComb(combParam, getUserId()); +// return R.ok("缁勬墭鎴愬姛"); +// } // 鍑哄簱 --------------------------------------------------------------------------------------------------- @@ -113,22 +190,20 @@ @RequestMapping("/pakout/query/auth") @ManagerAuth @Deprecated - public R pakoutQuery(@RequestParam(required = false) String barcode, - @RequestParam(required = false) Integer staNo, - @RequestParam(required = false) String matnr){ - if (Cools.isEmpty(barcode) && Cools.isEmpty(matnr)) { + public R pakoutQuery(@RequestParam String barcode) { + if (Cools.isEmpty(barcode)) { return R.ok(); } if (!Cools.isEmpty(barcode)) { List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("zpallet", barcode)); return R.ok().add(wrkDetls); } - if (!Cools.isEmpty(matnr)) { - if (!Cools.isEmpty(staNo)) { - List<WrkDetl> wrkDetls = wrkDetlService.selectPakoutQuery(staNo, matnr); - return R.ok().add(wrkDetls); - } - } +// if (!Cools.isEmpty(matnr)) { +// if (!Cools.isEmpty(staNo)) { +// List<WrkDetl> wrkDetls = wrkDetlService.selectPakoutQuery(staNo, matnr); +// return R.ok().add(wrkDetls); +// } +// } return R.ok(); } @@ -139,7 +214,7 @@ */ @RequestMapping("/pakout/confirm/barcode/auth") @ManagerAuth - public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode){ + public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode) { if (Cools.isEmpty(barcode)) { return R.ok(); } @@ -154,12 +229,47 @@ } /** + * 鍑哄簱纭 - 鎵揣鐗� 骞垮痉瀹滅鐗� + * 1.鍏ㄦ澘 杩斿洖 101 + * 2.鎷f枡 杩斿洖 103 + */ + @RequestMapping("/pakout/confirm/goods/auth") //寰呭畬鍠� 鍘熷洜锛堝鎴锋湭缁欏嚭璇︾粏淇℃伅锛� + @ManagerAuth + public R pakoutQueryByGoods(@RequestBody GDYKConfirmGoodsParam combParam) { + if (Cools.isEmpty(combParam)) { + return R.ok(); + } +// List<Order> orders = orderService.selectorderNoL(batch); + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", combParam.getMatnr()).eq("batch", combParam.getBatch()).eq("order_no", combParam.getOrderNo())); + if (Cools.isEmpty(orderDetl)) { + return R.error("鏈煡鍒版暟鎹�"); + } + if (!orderDetl.getQty$().equals("宸插畬鎴�")) { + return R.error("浠诲姟鏈畬鎴�"); + } + //澶嶆牳鏁� + orderDetl.setSource(1); + orderDetlService.updateById(orderDetl); + return R.ok(); + } + + // 鏍规嵁搴撲綅鐮佸拰鍟嗗搧鐮佹悳绱㈠晢鍝� + @RequestMapping("/mat/find/auth") + public R find(@RequestParam(required = false) String locNo + , @RequestParam(required = false) String matnr) { + //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr); + ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr); + return R.ok(manLocDetl); + //return R.ok(manLocDetlMapper.selectItem0(locNo, matnr)); + } + + /** * 鍑哄簱纭 - 鎷f枡鍑哄簱 - 閫夋嫨鍏蜂綋鏉$爜鍟嗗搧 */ @RequestMapping("/pakout/confirm/pick/auth") @ManagerAuth public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo - , @RequestParam(required = false) String matnr){ + , @RequestParam(required = false) String matnr) { if (Cools.isEmpty(wrkNo)) { return R.ok(); } @@ -294,63 +404,232 @@ @RequestMapping("/adjust/auth") @ManagerAuth(memo = "鐩樼偣") - public R adjust(@RequestBody MobileAdjustParam combParam){ + public R adjust(@RequestBody MobileAdjustParam combParam) { mobileService.adjust(combParam, getUserId()); return R.ok("鐩樼偣鎴愬姛"); } - @PostMapping("/out/pakout/auth") -// @ManagerAuth(memo = "鏍规嵁璁㈠崟鍑哄簱") + @PostMapping("/order/out/pakout/auth") + @ManagerAuth(memo = "璁㈠崟鍑哄簱") public synchronized R pakoutByOrder(@RequestBody JSONObject param) { - if(!param.containsKey("staNo") || !param.containsKey("orderNo")){ + if (!param.containsKey("staNo") || !param.containsKey("orderNo")) { return R.parse(BaseRes.PARAM); } - Integer staNo = param.containsKey("staNo") ? Integer.parseInt(param.get("staNo").toString()) : 0; - String orderNo = param.containsKey("orderNo") ? param.get("orderNo").toString() : ""; + mobileService.pakoutByOrder(param, getUserId()); + return R.ok("鍑哄簱鎴愬姛"); + } - BasDevp sta = basDevpService.checkSiteStatus(staNo); - //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。,寰呭疄鐜� - List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); - for(OrderDetl orderDetl : orderDetls){ + /** + * 鏍规嵁閫氱煡鍗曟煡璇㈡槑缁� + */ + @RequestMapping("/bill/query1/auth") + @ManagerAuth(memo = "鏍规嵁閫氱煡鍗曟煡璇㈡槑缁�") + public R billQuery1(@RequestParam String billNo, @RequestParam String size) { + Order temp1 = orderService.selectOne(new EntityWrapper<Order>().eq("temp1", billNo)); + if (temp1 == null) { + temp1 = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", billNo)); + if (temp1 == null) { + throw new CoolException("璇ヨ鍗曚笉瀛樺湪"); + } + } + List<OrderDetl> waitMatins = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", temp1.getOrderNo()).last("and anfme > work_qty")); + if (waitMatins == null || waitMatins.isEmpty()) { + throw new CoolException("璇ヨ鍗曢」涓嶅瓨鍦�"); + } + //濡傛灉閫氱煡鍗曞崟鍙蜂负绌猴紝鍒欐煡璇㈣皟鎷ㄥ崟鍙� +// if (Cools.isEmpty(waitMatins) || waitMatins.size() <= 0) { +// waitMatins = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("temp1", billNo).like("size", size).last("and anfme > work_qty")); +// } + + List<CombBillQueryVo> vos = new ArrayList<>(); + if (!Cools.isEmpty(waitMatins)) { + for (OrderDetl waitMatin : waitMatins) { + CombBillQueryVo vo = new CombBillQueryVo(); + vo.setDetlId(waitMatin.getId()); + vo.setMatnr(waitMatin.getMatnr()); + vo.setMatName(waitMatin.getMaktx()); + vo.setQty(waitMatin.getAnfme() - waitMatin.getWorkQty()); + vo.setCount(waitMatin.getAnfme() - waitMatin.getWorkQty()); + vo.setBillNo(waitMatin.getOrderNo()); + vo.setSeqNo(waitMatin.getINo()); + vo.setUnit(waitMatin.getUnit()); + vo.setSpecs(waitMatin.getSpecs()); + vo.setSize(waitMatin.getModel()); + vo.setColor(waitMatin.getColor()); + vo.setItemBatch(waitMatin.getBatch()); + vo.setLuHao(waitMatin.getLuHao()); + vo.setOutOrderNo(waitMatin.getOutOrderNo()); + vo.setSPgNO(waitMatin.getSPgNO()); + vo.setProType(waitMatin.getProType()); + vo.setPacking(waitMatin.getPacking()); + //vo.setOveFlag(waitMatin.getOveFlag()); + vos.add(vo); + } + } + return R.ok().add(vos); + } + + //------------------------------------------------------------------------------------------------------------------------------------------------骞舵澘鍔熻兘鏂板--------------------------------------------------------------------------------------------- + + /** + * 鏂板鎷f枡閫斾腑骞舵澘鍔熻兘 + */ + @RequestMapping("/barcode/list/pick") + @ManagerAuth(memo = "鎷f枡鍏ュ簱閫斾腑骞舵澘") + @Transactional + public R orderOutListOrderPick(@RequestBody String barcode) { + ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>(); + if (Cools.isEmpty(barcode) || barcode.isEmpty()) { + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() + .eq("wrk_sts", 14L) + .eq("io_type", 103)); + wrkMastArrayList.addAll(wrkMasts); + } else { + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() + .like("barcode", barcode) + .eq("wrk_sts", 14L) + .eq("io_type", 103)); + wrkMastArrayList.addAll(wrkMasts); } + return R.ok().add(wrkMastArrayList); + } + @RequestMapping("/pick/mat/list") + @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡") + public R pickMats(@RequestParam(required = false) String matnr, @RequestParam(required = false) String orderNo) { + List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1)); + ArrayList<Long> typeList = new ArrayList<>(); + for (DocType docType : docTypes) { + typeList.add(docType.getDocId()); + } -// if (Cools.isEmpty(locDtos)) { -// return R.parse(BaseRes.PARAM); -// } -// boolean lack = true; -// for (LocDto locDto : locDtos) { -// if (!locDto.isLack()) { -// lack = false; -// break; -// } -// } -// if (lack) { -// return R.error("搴撳瓨涓嶈冻"); -// } -// -// Thread.sleep(1000L); -// -// List<TaskDto> taskDtos = new ArrayList<>(); -// // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔� -// for (LocDto locDto : locDtos) { -// if (locDto.isLack()) { continue; } -// TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto); -// if (TaskDto.has(taskDtos, taskDto)) { -// TaskDto dto = TaskDto.find(taskDtos, taskDto); -// assert dto != null; -// dto.getLocDtos().addAll(taskDto.getLocDtos()); -// } else { -// taskDtos.add(taskDto); -// } -// } -// // ----------------------------------------------------------------------------------------------- -// for (TaskDto taskDto : taskDtos) { -// BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); -// workService.stockOut(staNo, taskDto, getUserId()); -// } - return R.ok(); + EntityWrapper<Order> wrapper = new EntityWrapper<>(); + wrapper.eq("status", 1); + wrapper.in("doc_type", typeList); + List<Order> orders = orderService.selectList(wrapper); + + ArrayList<Long> orderIds = new ArrayList<>(); + for (Order order : orders) { + orderIds.add(order.getId()); + } + + //鎼滅储鏄庣粏 + EntityWrapper<OrderDetl> wrapper1 = new EntityWrapper<>(); + wrapper1.eq("status", 1); + wrapper1.in("order_id", orderIds); + wrapper1.orderBy("create_time", false); + if (!Cools.isEmpty(matnr)) { + wrapper1.like("matnr", matnr); + } + if (!Cools.isEmpty(orderNo)) { + wrapper1.like("order_no", orderNo); + } + List<OrderDetl> list = orderDetlService.selectList(wrapper1); + + ArrayList<PickMatParam> maps = new ArrayList<>(); + for (OrderDetl orderDetl : list) { + //鍓╀綑鍙敤鏁伴噺 + double count = orderDetl.getAnfme() - orderDetl.getWorkQty(); + if (count <= 0) { + continue; + } + + PickMatParam matParam = new PickMatParam(); + matParam.setMatnr(orderDetl.getMatnr()); + matParam.setMaktx(orderDetl.getMaktx()); + matParam.setBatch(orderDetl.getBatch()); + matParam.setOrderNo(orderDetl.getOrderNo()); + matParam.setOrderId(orderDetl.getOrderId()); + matParam.setCount(count); + matParam.setUseCount(count); + ////"outOrderNo", "luHao", "packing", "sPgNO", "proType","color"}; + matParam.setOutOrderNo(orderDetl.getOutOrderNo()); + matParam.setLuHao(orderDetl.getLuHao()); + matParam.setPacking(orderDetl.getPacking()); + matParam.setProType(orderDetl.getProType()); + matParam.setSPgNO(orderDetl.getSPgNO()); + matParam.setColor(orderDetl.getColor()); + maps.add(matParam); + } + return R.ok().add(maps); + } + + @RequestMapping(value = "/order/list/orderNo") + public R orderListorderNo(@RequestParam String orderNo) { + //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺 + List<OrderDetl> orderDetl1 = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("orderNo", orderNo)); + List<OrderDetl> orderDetls= new ArrayList<OrderDetl>(); + for (OrderDetl o: orderDetl1) { + BigDecimal c1 = new BigDecimal(o.getEnableQty()).setScale(2,BigDecimal.ROUND_HALF_UP); + o.setAnfme(c1.doubleValue()); + if (o.getAnfme().equals(0.0)){ + continue; + } + orderDetls.add(o); + } + return R.ok(orderDetls); + } + + @RequestMapping(value = "/order/list/all") + @ManagerAuth + public R orderList() { + return R.ok(orderService.selectAllorderNo()); + } + + @RequestMapping(value = "/orderDetl/forOrderNo/mergePakin/v1") + @ManagerAuth + public R forOrderNoMergePakinV1(@RequestParam String orderNo) { + List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("pakin", 1)); + ArrayList<Long> docTypeIds = new ArrayList<>(); + for (DocType docType : docTypes) { + docTypeIds.add(docType.getDocId()); + } + + if (docTypeIds.isEmpty()) { + return R.error("鍗曟嵁绫诲瀷涓嶅瓨鍦�"); + } + + List<Order> orders = orderService.selectList(new EntityWrapper<Order>().in("doc_type", docTypeIds).in("settle", 0, 1, 2)); + if (orders.isEmpty()) { + return R.error("鏈煡璇㈠埌璁㈠崟"); + } + + ArrayList<Long> orderIds = new ArrayList<>(); + for (Order order : orders) { + orderIds.add(order.getId()); + } + + List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>() + .in("order_id", orderIds) + .like("order_no", orderNo) + ); + if (Cools.isEmpty(orderDetlList)){ + return R.error("鏈煡璇㈠埌姝よ鍗曟鐗╂枡鏁版嵁"); + } + + ArrayList<OrderDetl> orderDetls = new ArrayList<>(); + for(OrderDetl orderDetl:orderDetlList){ + double count = orderDetl.getAnfme() - orderDetl.getWorkQty(); + if (count <= 0D) { + continue; + } + orderDetl.setAnfme(count); + orderDetls.add(orderDetl); + } + return R.ok(orderDetls); + } + + /** + * 鎷f枡閫斾腑骞舵澘 + * + * @param param + * @return + */ + @RequestMapping("/pda/WarehouseOutPickMerge/v1") + @ManagerAuth + public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) { + return mobileService.WarehouseOutPickMergeV1(param,getUserId()); } } -- Gitblit v1.9.1