From 7e10622ead5bd8b3ce0c9fda39d22ae0e938e030 Mon Sep 17 00:00:00 2001 From: zwl <1051256694@qq.com> Date: 星期五, 12 九月 2025 13:44:10 +0800 Subject: [PATCH] 完善订单组托可用数据显示功能 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 212 insertions(+), 19 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java index 92226a3..7f24d05 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java @@ -3,11 +3,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.Query; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zy.asrs.common.domain.dto.DetlDto; import com.zy.asrs.common.domain.dto.WrkTraceVo; import com.zy.asrs.common.domain.param.OrderDomainParam; import com.zy.asrs.common.wms.entity.*; +import com.zy.asrs.common.wms.mapper.OrderDetlMapper; import com.zy.asrs.common.wms.service.*; import com.zy.asrs.framework.annotations.ManagerAuth; import com.zy.asrs.framework.common.Cools; @@ -17,12 +20,17 @@ import com.zy.asrs.framework.common.DateUtils; import com.zy.asrs.common.web.BaseController; import com.zy.asrs.framework.exception.CoolException; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.net.URLDecoder; import java.util.*; @RestController @@ -46,6 +54,50 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private DocTypeService docTypeService; + @Autowired + private LocInPrintMatService locInPrintMatService; + @Autowired + private MatService matService; + + @RequestMapping(value = "/order/list/orderNo") + public R orderListorderNo(@RequestParam String orderNo) { + //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺 + List<OrderDetl> orderDetl1 = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, 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(getHostId())); + } + + @RequestMapping(value = "/order/comb/list/all") + @ManagerAuth + public R orderListComb() { + return R.ok(orderService.selectAllCombOrderNo(getHostId())); + } + +// @RequestMapping(value = "/outOrder/list/all") +// @ManagerAuth +// public R orderOutList() { +// return R.ok(orderService.selectAllOutOrderNo(getHostId())); +// } + + @RequestMapping(value = "/outOrder/list/all") + @ManagerAuth + public R orderOutListOrder(@RequestBody String orderNo) { + return R.ok(orderService.selectAllOutOrderNo(orderNo,getHostId())); + } @RequestMapping(value = "/order/{id}/auth") @ManagerAuth @@ -60,16 +112,17 @@ @RequestParam(required = false) String condition, @RequestParam(required = false) String timeRange, @RequestParam Map<String, Object> param) { - LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Order::getHostId, getHostId()); + QueryWrapper<Order> wrapper = new QueryWrapper<>(); + wrapper.eq("host_id", getHostId()); if (!Cools.isEmpty(condition)) { - wrapper.like(Order::getId, condition); + wrapper.like("id", condition); } if (!Cools.isEmpty(timeRange)) { String[] range = timeRange.split(RANGE_TIME_LINK); - wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0])); - wrapper.le(Order::getCreateTime, DateUtils.convert(range[1])); + wrapper.ge("create_time", DateUtils.convert(range[0])); + wrapper.le("create_time", DateUtils.convert(range[1])); } + allLike(Order.class, param.keySet(), wrapper, condition); return R.ok(orderService.page(new Page<>(curr, limit), wrapper)); } @@ -77,31 +130,40 @@ @ManagerAuth public R head(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, + @RequestParam(required = false) String condition, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, - @RequestParam Map<String, Object> param){ - LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>(); + @RequestParam Map<String, Object> param) throws UnsupportedEncodingException { + if(!Cools.isEmpty(condition)){ + condition = condition.trim(); + } + QueryWrapper<Order> wrapper = new QueryWrapper<>(); excludeTrash(param); - wrapper.eq(Order::getStatus, 1); - wrapper.eq(Order::getHostId, getHostId()); + wrapper.eq("status", 1); + wrapper.eq("host_id", getHostId()); if (!Cools.isEmpty(param.get("order_no"))) { - wrapper.eq(Order::getOrderNo, param.get("order_no")); + wrapper.eq("order_no", param.get("order_no")); } if (!Cools.isEmpty(param.get("create_time"))) { String[] range = param.get("create_time").toString().split(RANGE_TIME_LINK); - wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0])); - wrapper.le(Order::getCreateTime, DateUtils.convert(range[1])); + wrapper.ge("create_time", DateUtils.convert(range[0])); + wrapper.le("create_time", DateUtils.convert(range[1])); } if (!Cools.isEmpty(param.get("doc_type"))) { - wrapper.eq(Order::getDocType, param.get("doc_type")); + wrapper.eq("doc_type", param.get("doc_type")); } if (!Cools.isEmpty(param.get("docName"))) { - DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocName, param.get("docName"))); - wrapper.eq(Order::getDocType, docType.getDocId()); + String docName = URLDecoder.decode(param.get("docName").toString(), "UTF-8"); + DocType docType = docTypeService.getOne(new LambdaQueryWrapper<DocType>().eq(DocType::getDocName, docName)); + wrapper.eq("doc_type", docType.getDocId()); } if (!Cools.isEmpty(param.get("settle"))) { - wrapper.eq(Order::getSettle, param.get("settle")); + wrapper.eq("settle", param.get("settle")); } + + param.remove("order_no"); + allLike(Order.class, param.keySet(), wrapper, condition); + wrapper.orderByDesc("create_time"); return R.ok(orderService.page(new Page<>(curr, limit), wrapper)); } @@ -138,6 +200,30 @@ } if (!orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId))) { throw new CoolException("鍒犻櫎鍗曟嵁鏄庣粏澶辫触"); + } + return R.ok(); + } + + @RequestMapping(value = "/order/dy") + @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟") + @Transactional + public R dy(@RequestParam Long orderId){ + List<OrderDetl> list = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId)); + for (OrderDetl orderDetl : list) { + Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, orderDetl.getMatnr())); + LocInPrintMat locInPrintMat = new LocInPrintMat(); + locInPrintMat.setMatnr(orderDetl.getMatnr()); + locInPrintMat.setMaktx(orderDetl.getMaktx()); + locInPrintMat.setStatus(1); + locInPrintMat.setOrderNo(orderDetl.getOrderNo()); + locInPrintMat.setBatch(orderDetl.getBatch()); + locInPrintMat.setCreateBy(getUserId()); + locInPrintMat.setCreateTime(new Date()); + locInPrintMat.setUpdateTime(new Date()); + if(!Cools.isEmpty(mat)){ + locInPrintMat.setDecrees(mat.getDecrees()); + } + locInPrintMatService.save(locInPrintMat); } return R.ok(); } @@ -185,10 +271,12 @@ double totalQty = 0; double wrkQty = 0; double lackQty = 0; + double endQty = 0; for (OrderDetl orderDetl : orderDetls) { totalQty = totalQty + orderDetl.getAnfme(); - wrkQty = wrkQty + orderDetl.getQty(); - double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D); + wrkQty = wrkQty + orderDetl.getWorkQty(); + endQty = endQty + orderDetl.getQty(); + double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); if (issued > 0.0) { List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), hostId); for (LocDetl locDetl : locDetls) { @@ -210,6 +298,9 @@ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMast::getIoTime, wrkDetl.getIoTime())); if (wrkMast == null) { WrkMastLog wrkMastLog = wrkMastLogService.getOne(new LambdaQueryWrapper<WrkMastLog>().eq(WrkMastLog::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMastLog::getIoTime, wrkDetl.getIoTime())); + if (wrkMastLog.getIoType()==103){ + wrkMastLog = wrkMastLogService.getOne(new LambdaQueryWrapper<WrkMastLog>().eq(WrkMastLog::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMastLog::getIoTime, wrkDetl.getIoTime()).eq(WrkMastLog::getIoType,53)); + } if (wrkMastLog != null) { wrkMast = new WrkMast(); BeanUtils.copyProperties(wrkMastLog, wrkMast); @@ -238,6 +329,7 @@ .add("totalQty", totalQty) .add("wrkQty", wrkQty) .add("lackQty", lackQty) + .add("endQty",endQty) ); } @@ -300,7 +392,7 @@ for (OrderDetl orderDetl : param.getOrderDetlList()) { DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); if (DetlDto.has(list, dto)) { - OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); + OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), getHostId()); item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); if (!orderDetlService.updateById(item)) { throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); @@ -315,6 +407,7 @@ orderDetl.setUpdateTime(now); orderDetl.setStatus(1); orderDetl.setQty(0.0D); + orderDetl.setWorkQty(0.0D); if (!orderDetlService.save(orderDetl)) { throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); } @@ -352,4 +445,104 @@ return R.ok().add(orders); } + @RequestMapping(value = "/order/form/modify/auth") + @ManagerAuth(memo = "鎵嬪姩淇敼璁㈠崟") + @Transactional + public R formModify(@RequestBody OrderDomainParam param){ + Order order = orderService.getOne(new LambdaQueryWrapper<Order>() + .eq(Order::getId, param.getOrderId()) + .eq(Order::getHostId, getHostId())); + if (order == null || order.getStatus() == 0) { + return R.error("璁㈠崟涓嶅瓨鍦�"); + } + Date now = new Date(); + Long userId = getUserId(); + // 淇敼涓绘。 + if (!param.getDocType().equals(order.getDocType())) { + order.setDocType(param.getDocType()); + order.setUpdateBy(userId); + order.setUpdateTime(now); + if (!orderService.updateById(order)) { + throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触"); + } + } + // 淇敼鏄庣粏妗� +// List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); + // 1.娓呯┖鏄庣粏妗� + if (!orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()))) { + throw new CoolException("娓呯┖璁㈠崟鏄庣粏澶辫触"); + } + // 2.閲嶇粍鏁版嵁 + List<DetlDto> list = new ArrayList<>(); + for (OrderDetl orderDetl : param.getOrderDetlList()) { + DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); + if (DetlDto.has(list, dto)) { + OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(), getHostId()); + item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); + if (!orderDetlService.updateById(item)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } + } else { + list.add(dto); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(getUserId()); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(getUserId()); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + if (!orderDetlService.save(orderDetl)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } + } + } + return R.ok("璁㈠崟淇敼鎴愬姛"); + } + + @RequestMapping(value = "/order/export/auth") + @ManagerAuth(memo = "璁㈠崟鏄庣粏瀵煎嚭") + public synchronized R export(@RequestBody JSONObject param){ + List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); + QueryWrapper<OrderDetl> wrapper = new QueryWrapper<>(); + JSONArray orderNo = param.getJSONArray("orderNo"); + List<String> orderNoList = new ArrayList<>(); + for (int i = 0; i < orderNo.size(); i++) { + Object o = orderNo.get(i); + orderNoList.add(o.toString()); + } + List<OrderDetl> list = orderDetlService.list(new QueryWrapper<OrderDetl>().in("order_no", orderNoList)); + return R.ok(exportSupport(list, fields)); + } + + private <T> void convert(Map<String, Object> map, QueryWrapper<T> wrapper){ + for (Map.Entry<String, Object> entry : map.entrySet()){ + if(Cools.eq(entry.getKey(),"curr") + || Cools.eq(entry.getKey(),"limit") + || Cools.eq(entry.getKey(),"unreason") + || Cools.eq(entry.getKey(),"orderByField") + || Cools.eq(entry.getKey(),"orderByType") + || Cools.eq(entry.getKey(),"row") + || Cools.eq(entry.getKey(),"condition")){ + continue; + } + + if(Cools.isEmpty(entry.getValue())){ + continue; + } + + String val = String.valueOf(entry.getValue()); + if (val.contains(RANGE_TIME_LINK)){ + String[] dates = val.split(RANGE_TIME_LINK); + wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); + wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else { + if (entry.getKey().equals("locNo")) { + wrapper.eq("loc_no", String.valueOf(entry.getValue())); + } else { + wrapper.like(entry.getKey(), String.valueOf(entry.getValue())); + } + } + } + } } -- Gitblit v1.9.1