From 65ad59fc53b0fee72bb06da3b89bcc4867848ee8 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期六, 09 四月 2022 14:06:15 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/OpenController.java | 374 +++++++++++++++++----------------------------------- 1 files changed, 123 insertions(+), 251 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 39e8eac..925fa41 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -1,19 +1,14 @@ package com.zy.asrs.controller; -import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.annotations.ManagerAuth; -import com.core.common.Cools; -import com.core.common.R; +import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.BasDevp; -import com.zy.asrs.entity.LocDetl; -import com.zy.asrs.entity.MatCode; -import com.zy.asrs.entity.WrkMast; -import com.zy.asrs.entity.param.OpenApiStockOutParam; -import com.zy.asrs.entity.result.PakoutVo; -import com.zy.asrs.entity.result.StoPreTab; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Mat; +import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.service.*; -import com.zy.common.model.LocDetlDto; +import com.zy.common.model.DetlDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; @@ -21,259 +16,136 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; /** - * Created by vincent on 2021/3/19 + * Created by vincent on 2022/4/8 */ @RestController -@RequestMapping("/open/api") +@RequestMapping("open/asrs") public class OpenController { @Autowired + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + @Autowired + private DocTypeService docTypeService; + @Autowired + private MatService matService; + @Autowired private LocDetlService locDetlService; - @Autowired - private MatCodeService matCodeService; - @Autowired - private WorkService workService; - @Autowired - private BasDevpService basDevpService; - @Autowired - private WrkMastService wrkMastService; - @PostMapping("/stockOut/prew") + /** + * 娣诲姞鍏ュ簱鍗� + */ + @PostMapping("/order/pakin/default/v1") @Transactional - public R stockOutPrew(@RequestBody List<OpenApiStockOutParam> params){ - List<StoPreTab> result = new ArrayList<>(); - StringBuilder errorMsg = new StringBuilder(); - boolean error = false; - for (OpenApiStockOutParam param : params) { - Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D); - double lack = 0.0D; - if (sumAnfme < param.getAnfme()) { - lack = param.getAnfme() - sumAnfme; - if (!error) { - error = true; - } - MatCode mat = matCodeService.selectById(param.getMatnr()); - // 瑙嗗浘瀵硅薄 - StoPreTab tab = new StoPreTab(); - tab.setTitle(param.getMatnr() + (mat==null?"": "锛�" + mat.getMatName() + "锛�")); - tab.setMatnr(param.getMatnr()); - tab.setMaktx((mat==null?"": "锛�" + mat.getMatName() + "锛�")); - tab.setAnfme(param.getTotal()); - tab.setLocNo("缂鸿揣"); - tab.setTotal(lack); - tab.setReduce(lack); - tab.setRemQty(0.0D); - tab.setPrior(false); - tab.setPrior$("脳"); - tab.setType(0); - result.add(tab); - - errorMsg.append(mat == null ? param.getMatnr() : mat.getMatName()).append("搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細").append(param.getAnfme() - sumAnfme).append("</br>"); -// continue; - } - List<LocDetl> locDetls = locDetlService.selectPakoutByRule(param.getMatnr()); - double issued = Optional.of(param.getAnfme() - lack).orElse(0.0D) ; - for (LocDetl locDetl : locDetls) { - if (issued > 0) { - // 瑙嗗浘瀵硅薄 - StoPreTab tab = new StoPreTab(); - tab.setTitle(locDetl.getMatnr() + "锛�" + locDetl.getMaktx() + "锛�"); - tab.setMatnr(locDetl.getMatnr()); - tab.setMaktx(locDetl.getMaktx()); - tab.setAnfme(param.getTotal()); - - tab.setLocNo(locDetl.getLocNo()); -// tab.setNodeId(locDetl.getNodeId()); - tab.setTotal(locDetl.getAnfme()); - tab.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - tab.setRemQty(tab.getTotal() - tab.getReduce()); - tab.setPrior(false); - tab.setPrior$("脳"); - tab.setType(2); - result.add(tab); - // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); - } - } - + public synchronized R orderCreate(@RequestBody OpenOrderPakinParam param) { + if (Cools.isEmpty(param)) { + return R.parse(BaseRes.PARAM); } -// if (error) { -// return R.error(errorMsg.toString()); -// } - return R.ok(errorMsg).add(result); - } - - @PostMapping("/stockOut") - @Transactional - public R stockOut(@RequestBody List<OpenApiStockOutParam> params){ - List<PakoutVo> result = new ArrayList<>(); - if (!Cools.isEmpty(params)) { - for (OpenApiStockOutParam param : params) { - // 鎺ㄨ崘璐т綅琛ヤ粨宸ヤ綔妗i槻閲� - if (wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("packed", param.getAllotNo()).le("wrk_sts", 14)) > 0) { - throw new CoolException("褰撳墠琛ヤ粨浠诲姟姝e湪鎵ц锛岃鑰愬績绛夊緟"); - } - Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D); - if (!Cools.isEmpty(param.getAllotNo()) && sumAnfme < param.getAnfme()) { - throw new CoolException("绔嬪簱搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme)); - } - double lack = 0.0D; - if (sumAnfme < param.getAnfme()) { - lack = param.getAnfme() - sumAnfme; - PakoutVo pakoutVo = new PakoutVo(); - pakoutVo.setLocNo("缂鸿揣"); - pakoutVo.setAnfme(lack); - pakoutVo.setMatnr(param.getMatnr()); -// pakoutVo.setZpallet("param.getZpallet()"); - result.add(pakoutVo); - -// throw new CoolException(param.getMatnr() + "鐗╂枡鏁伴噺涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme)); - } - - List<LocDetl> locDetls = locDetlService.selectPakoutByRule(param.getMatnr()); - double issued = Optional.of(param.getAnfme()-lack).orElse(0.0D) ; - for (LocDetl locDetl : locDetls) { - if (issued > 0) { - // 鐢熸垚鍑哄簱宸ヤ綔妗� - - // 鍏ㄦ澘 - if (issued>=locDetl.getAnfme()) { - BasDevp staNo = basDevpService.checkSiteStatus(103); - List<LocDetlDto> detlDtos = new ArrayList<>(); - LocDetlDto dto = new LocDetlDto(); - dto.setLocDetl(locDetl); - dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - detlDtos.add(dto); - workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo())); - // 鎷f枡 - } else { - BasDevp staNo = basDevpService.checkSiteStatus(107); - List<LocDetlDto> detlDtos = new ArrayList<>(); - LocDetlDto dto = new LocDetlDto(); - dto.setLocDetl(locDetl); - dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - detlDtos.add(dto); - workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo())); - } - - PakoutVo pakoutVo = new PakoutVo(); - pakoutVo.setLocNo(locDetl.getLocNo()); - pakoutVo.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - pakoutVo.setMatnr(locDetl.getMatnr()); - pakoutVo.setZpallet(locDetl.getZpallet()); - result.add(pakoutVo); - - // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); - } - } - + if (Cools.isEmpty(param.getOrderNo())) { + return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖"); + } + if (Cools.isEmpty(param.getOrderType())) { + return R.error("鍗曟嵁绫诲瀷[orderType]涓嶈兘涓虹┖"); + } + if (Cools.isEmpty(param.getOrderDetails())) { + return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖"); + } + Order order = orderService.selectByNo(param.getOrderNo()); + if (!Cools.isEmpty(order)) { + return R.error(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦"); + } + DocType docType = docTypeService.selectOrAdd(param.getOrderType()); + Date now = new Date(); + // 鍗曟嵁涓绘。 + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + param.getOrderNo(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + docType.getDocId(), // 鍗曟嵁绫诲瀷 + null, // 椤圭洰缂栧彿 + null, // + null, // 璋冩嫧椤圭洰缂栧彿 + null, // 鍒濆绁ㄦ嵁鍙� + null, // 绁ㄦ嵁鍙� + null, // 瀹㈡埛缂栧彿 + null, // 瀹㈡埛 + null, // 鑱旂郴鏂瑰紡 + null, // 鎿嶄綔浜哄憳 + null, // 鍚堣閲戦 + null, // 浼樻儬鐜� + null, // 浼樻儬閲戦 + null, // 閿�鍞垨閲囪喘璐圭敤鍚堣 + null, // 瀹炰粯閲戦 + null, // 浠樻绫诲瀷 + null, // 涓氬姟鍛� + null, // 缁撶畻澶╂暟 + null, // 閭垂鏀粯绫诲瀷 + null, // 閭垂 + null, // 浠樻鏃堕棿 + null, // 鍙戣揣鏃堕棿 + null, // 鐗╂祦鍚嶇О + null, // 鐗╂祦鍗曞彿 + 1L, // 璁㈠崟鐘舵�� + 1, // 鐘舵�� + 9527L, // 娣诲姞浜哄憳 + now, // 娣诲姞鏃堕棿 + 9527L, // 淇敼浜哄憳 + now, // 淇敼鏃堕棿 + null // 澶囨敞 + ); + if (!orderService.insert(order)) { + throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + // 鍗曟嵁鏄庣粏妗� + List<DetlDto> list = new ArrayList<>(); + List<DetlDto> orderDetails = param.getOrderDetails(); + for (DetlDto detail : orderDetails) { + DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); + if (DetlDto.has(list, dto)) { + DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); + assert detlDto != null; + detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); + } else { + list.add(dto); } } - - return R.ok().add(result); - } - - @PostMapping("/available/take/site") - @Transactional - public R availableTakeSite(){ - List<Map<String, Object>> result = new ArrayList<>(); - List<Integer> outSite = basDevpService.getAvailableOutSite(101); - for (Integer siteId : outSite) { - Map<String, Object> map = new HashMap<>(); - map.put("siteId", siteId); - map.put("desc", siteId + "锛堝叏鏉垮嚭搴撳彛锛�"); - result.add(map); - } - List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103); - for (Integer siteId : pickOutSite) { - Map<String, Object> map = new HashMap<>(); - map.put("siteId", siteId); - map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�"); - result.add(map); - } - return R.ok().add(result); - } - - @PostMapping("/get/asrsLocDetl") - @Transactional - public R queryLocDetl(String matnr) { - List<LocDetl> locDetls = locDetlService.getAsrsLocDetl(matnr); - return R.ok().add(locDetls); - } - - @PostMapping("/stockOut/locMode") - @Transactional - public R stockOutLocMode(@RequestBody List<OpenApiStockOutParam> params){ - List<PakoutVo> result = new ArrayList<>(); - if (!Cools.isEmpty(params)) { - for (OpenApiStockOutParam param : params) { - // 鎺ㄨ崘璐т綅琛ヤ粨宸ヤ綔妗i槻閲� - if (wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("packed", param.getAllotNo()).le("wrk_sts", 14)) > 0) { - throw new CoolException("褰撳墠琛ヤ粨浠诲姟姝e湪鎵ц锛岃鑰愬績绛夊緟"); - } - Double sumAnfme = Optional.ofNullable(locDetlService.getSumAnfme(param.getMatnr())).orElse(0.0D); - if (!Cools.isEmpty(param.getAllotNo()) && sumAnfme < param.getAnfme()) { - throw new CoolException("绔嬪簱搴撳瓨涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme)); - } - double lack = 0.0D; - if (sumAnfme < param.getAnfme()) { - lack = param.getAnfme() - sumAnfme; - PakoutVo pakoutVo = new PakoutVo(); - pakoutVo.setLocNo("缂鸿揣"); - pakoutVo.setAnfme(lack); - pakoutVo.setMatnr(param.getMatnr()); -// pakoutVo.setZpallet("param.getZpallet()"); - result.add(pakoutVo); - -// throw new CoolException(param.getMatnr() + "鐗╂枡鏁伴噺涓嶈冻锛岀己璐ф暟閲忥細" + (param.getAnfme() - sumAnfme)); - } - - // 鏍规嵁绔嬪簱搴撲綅鐮佸幓鑾峰彇绔嬪簱淇℃伅 - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo())); - if (locDetls.size() == 0) { - throw new CoolException("鏈煡璇㈠埌搴撲綅淇℃伅锛�"); - } - double issued = Optional.of(param.getAnfme()-lack).orElse(0.0D) ; - for (LocDetl locDetl : locDetls) { - // 鐢熸垚鍑哄簱宸ヤ綔妗� - - Integer locNoNum = locDetlService.countLocNoNum(locDetl.getLocNo()); - // 鍏ㄦ澘 - if (locNoNum == 1) { - BasDevp staNo = basDevpService.checkSiteStatus(103); - List<LocDetlDto> detlDtos = new ArrayList<>(); - LocDetlDto dto = new LocDetlDto(); - dto.setLocDetl(locDetl); - dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - detlDtos.add(dto); - workService.stockOut(staNo, detlDtos, 101, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo())); - } else { // 鎷f枡 - BasDevp staNo = basDevpService.checkSiteStatus(107); - List<LocDetlDto> detlDtos = new ArrayList<>(); - LocDetlDto dto = new LocDetlDto(); - dto.setLocDetl(locDetl); - dto.setCount(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - detlDtos.add(dto); - workService.stockOut(staNo, detlDtos, 103, 9527L, param.getAllotNo(), Cools.isEmpty(param.getAllotNo())); - } - PakoutVo pakoutVo = new PakoutVo(); - pakoutVo.setLocNo(locDetl.getLocNo()); - pakoutVo.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued); - pakoutVo.setMatnr(locDetl.getMatnr()); - pakoutVo.setZpallet(locDetl.getZpallet()); - result.add(pakoutVo); - - // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); - } - + for (DetlDto detlDto : list) { + Mat mat = matService.selectByMatnr(detlDto.getMatnr()); + if (Cools.isEmpty(mat)) { + throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"); + } + OrderDetl orderDetl = new OrderDetl(); + orderDetl.sync(mat); + 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("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); } } - - return R.ok().add(result); + return R.ok(); } + + + /** + * 搴撳瓨缁熻 + */ + @RequestMapping("/stock/default/v1") + public R queryStock() { + return R.ok(locDetlService.queryStockTotal()); + } + } -- Gitblit v1.9.1