From 77b8a87b6f2d39c38db276e42e030362b9df4000 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 14 九月 2023 13:00:13 +0800 Subject: [PATCH] #上架时判断小数给price字段插入1,不是小数插入2,订单出库优先出小数 --- src/main/java/com/zy/asrs/controller/OutController.java | 204 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 192 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index 70c0187..1134cc2 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -1,12 +1,11 @@ package com.zy.asrs.controller; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; -import com.zy.asrs.entity.BasDevp; -import com.zy.asrs.entity.LocDetl; -import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; @@ -14,9 +13,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * Created by vincent on 2022/3/26 @@ -32,13 +34,25 @@ @Autowired private LocDetlService locDetlService; @Autowired - private LocMastService locMastService; + private PakoutService pakoutService; @Autowired private StaDescService staDescService; @Autowired private WorkService workService; @Autowired private BasDevpService basDevpService; + @Autowired + private ManPakOutService manPakOutService; + @Autowired + private ManLocDetlService manLocDetlService; + + + @PostMapping("/out/pakout/orderDetlIds/auth") + @ManagerAuth + public R pakoutOrderDetlIds(@RequestParam Long orderId) throws InterruptedException { + Thread.sleep(200); + return R.ok().add(orderDetlService.selectByOrderId(orderId).stream().map(OrderDetl::getId).distinct().collect(Collectors.toList())); + } @PostMapping("/out/pakout/preview/auth") @ManagerAuth @@ -48,30 +62,49 @@ } List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); List<LocDto> locDtos = new ArrayList<>(); + for (OrderDetl o: orderDetls) { + if (o.getAnfme().equals(o.getWorkQty())){ + return R.error("鍑哄簱鐨勬槑缁嗕腑鏈夊凡鍑哄簱鐗╂枡"); + } + } Set<String> exist = new HashSet<>(); for (OrderDetl orderDetl : orderDetls) { - double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D); + BigDecimal a1 = new BigDecimal(orderDetl.getAnfme()).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal b1 = new BigDecimal(orderDetl.getQty()).setScale(2,BigDecimal.ROUND_HALF_UP); + Double c1 = a1.subtract(b1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); + double issued = Optional.of( c1 ).orElse(0.0D); if (issued <= 0.0D) { continue; } - List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null); + List<LocDetl> locDetls = locDetlService.queryStock2(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOwner()); for (LocDetl locDetl : locDetls) { -// if (exist.contains(locDetl.getLocNo())) { continue; } if (issued > 0) { + boolean sign = false; + if (issued > locDetl.getAnfme() || locDetl.getAnfme().equals(issued)){ + sign=true; + } 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); + sign ? locDetl.getAnfme() : issued,locDetl.getOwner(),locDetl.getPayment()); + List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), sign? 101 : 103); +// LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), +// locDetl.getAnfme(), issued < locDetl.getAnfme()? issued : locDetl.getAnfme()); +// //閫熻吘鍙湁鍏ㄦ澘锛屾墍浠ュ彧鑳�101鍏ㄦ澘鍑哄簱 +// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), 101); locDto.setStaNos(staNos); + locDto.setManu(locDetl.getManu()); locDtos.add(locDto); exist.add(locDetl.getLocNo()); + BigDecimal iss=new BigDecimal(Double.toString(issued)).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal an=new BigDecimal(Double.toString(locDetl.getAnfme())).setScale(2,BigDecimal.ROUND_HALF_UP); // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); + issued=iss.subtract(an).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); } else { break; } } if (issued > 0) { - LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); + LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getOwner(),1); +// LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), 0.0,issued); locDto.setLack(Boolean.TRUE); locDtos.add(locDto); } @@ -82,8 +115,23 @@ @PostMapping("/out/pakout/auth") @ManagerAuth(memo = "璁㈠崟鍑哄簱") public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException { + int[][] is=new int[locDtos.size()][2]; + for (int i=0;i<locDtos.size();i++){ + LocDto locDto=locDtos.get(locDtos.size()-1-i); + if (locDto.getLocNo()==null || locDto.getManu().equals("骞冲簱")){ + is[i][0]=1; + }else { + is[i][0]=0; + } + is[i][1]=locDtos.size()-1-i; + } + for (int[] i:is){ + if (i[0]==1){ + locDtos.remove(i[1]); + } + } if (Cools.isEmpty(locDtos)) { - return R.parse(BaseRes.PARAM); + return R.ok("绔嬪簱鍙傛暟涓虹┖锛岃鐢熸垚鎷h揣鍗曪紝骞冲簱鎷h揣鍑哄簱"); } boolean lack = true; for (LocDto locDto : locDtos) { @@ -119,4 +167,136 @@ return R.ok(); } + @PostMapping("/out/pakout2/auth") + @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�") + public synchronized R pakout2(@RequestBody List<LocDto> locDtos) throws InterruptedException { + int[][] is = new int[locDtos.size()][2]; + List<String> matnrs=new ArrayList<>(); + for (int i = 0; i < locDtos.size(); i++) { + LocDto locDto = locDtos.get(locDtos.size() - 1 - i); + if (locDto.getLocNo() == null) { + is[i][0] = 1; + } else if (locDto.getManu().equals("绔嬪簱")){ + is[i][0] = 2; + } else { + is[i][0] = 0; + } + is[i][1] = locDtos.size() - 1 - i; + } + List<LocDto> locDtos1=new ArrayList<>(); + for (int[] i : is) { + if (i[0] == 2) { + if (!matnrs.contains(locDtos.get(i[1]).getMatnr())){ + matnrs.add(locDtos.get(i[1]).getMatnr()); + } + locDtos1.add(locDtos.get(i[1])); + locDtos.remove(i[1]); + }else if (i[0]==1){ + LocDto locDto = locDtos.get(i[1]); + locDto.setLocNo("搴撳瓨涓嶈冻"); + locDtos.remove(i[1]); + locDtos.add(locDto); + } + } + for (String matnr:matnrs){ + Double a = 0.0; + int b = 0; + for (int i = 0; i < locDtos1.size(); i++){ + if (locDtos1.get(i).getMatnr().equals(matnr)){ + if (a.equals(0.0)){ + b=i; + } + a=a+locDtos1.get(i).getAnfme(); + } + } + LocDto locDto = locDtos1.get(b); + locDto.setLocNo("绔嬪簱"); + locDto.setAnfme(a); + locDtos.add(locDto); + } + if (Cools.isEmpty(locDtos)) { + return R.error("骞冲簱鍙傛暟涓虹┖锛屾病鏈夌敓鎴愭嫞璐у崟"); + } + String uuid = String.valueOf(System.currentTimeMillis()); + boolean lack = true; + for (LocDto locDto : locDtos) { + if (!locDto.isLack()) { + lack = false; + break; + } + } + if (lack) { + return R.error("搴撳瓨涓嶈冻"); + } + for (LocDto locDto:locDtos){ + ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch()); + if (!Cools.isEmpty(manLocDetl) && !(locDto.getAnfme()>manLocDetl.getAnfme())) { + manLocDetl.setStatus(0); + if (manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", manLocDetl.getLocNo()).eq("matnr",manLocDetl.getMatnr()))) { + if (addPakOUT(locDto,uuid).equals(R.ok())) { + Order order = orderService.selectByNo(locDto.getOrderNo()); + if (Cools.isEmpty(order)){ + return R.error("鏌ヨ璁㈠崟澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()); + } + if (order.getSettle()==1){ + if (!orderService.updateSettle(order.getId(),2L,null)){ + return R.error("淇敼璁㈠崟鐘舵�佸け璐ワ紝璇疯仈绯荤鐞嗗憳"+locDto.getOrderNo()); + } + } + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr())); + if (Cools.isEmpty(orderDetl)){ + return R.error("鏌ヨ璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr()); + } + orderDetl.setWorkQty(orderDetl.getWorkQty()+locDto.getAnfme()); + if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()))){ + return R.error("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr()); + } + } else { + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr()); + } + } + }else if (locDto.getLocNo().equals("绔嬪簱")){ + addPakOUT(locDto,uuid).equals(R.ok()); + } + } + for (LocDto locDto:locDtos){ + if (locDto.getLocNo().equals("搴撳瓨涓嶈冻")){ + addPakOUT(locDto,uuid).equals(R.ok()); + } + } + return R.ok(); + } + + private R addPakOUT(LocDto locDto,String uuid){ + ManPakOut manPakOut=new ManPakOut(); + manPakOut.setWrkNo(locDto.getOrderNo()+"-"+System.currentTimeMillis()); + manPakOut.setWrkSts((long)1); + manPakOut.setAnfme(locDto.getAnfme()); + manPakOut.setLocNo(locDto.getLocNo()); + manPakOut.setMatnr(locDto.getMatnr()); + manPakOut.setMaktx(locDto.getMaktx()); + manPakOut.setDocNum(locDto.getOrderNo()); + manPakOut.setCount(0.0); + manPakOut.setStatus(0); + manPakOut.setCreateTime(new Date()); + manPakOut.setBatch(locDto.getBatch()); + manPakOut.setUpdateTime(new Date()); + manPakOut.setPayment(locDto.getPayment()); + manPakOut.setOwner(locDto.getOwner()); + manPakOut.setUuid(uuid); + if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",locDto.getOrderNo())))){ + manPakOut.setName(locDto.getMaktx()); + } + try{ + if (!manPakOutService.insert(manPakOut)){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + }catch (Exception e){ + return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + return R.ok(); + + } + + } -- Gitblit v1.9.1