| src/main/java/com/zy/asrs/entity/OrderDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/OrderReport.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/mapper/OrderReportMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/LocDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/OrderDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/OrderReportMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -446,7 +446,7 @@ public Double getEnableQty() { if (null != this.anfme && this.workQty != null) { return this.anfme - this.workQty; return this.anfme - this.workQty - this.qty; } // if (null != this.anfme && this.qty != null) { // return this.anfme - this.qty; src/main/java/com/zy/asrs/entity/OrderReport.java
New file @@ -0,0 +1,43 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.beans.BeanUtils; /** * @author pang.jiabao * @description * @createDate 2026/4/10 14:30 */ @Data @TableName("man_order_report") public class OrderReport { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField("order_no") private String orderNo; @TableField("matnr") private String matnr; @TableField("maktx") private String maktx; @TableField("batch") private String batch; @TableField("anfme") private Double anfme; public void sync(Object source) { BeanUtils.copyProperties(source,this); } } src/main/java/com/zy/asrs/mapper/OrderReportMapper.java
New file @@ -0,0 +1,23 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.OrderReport; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @author pang.jiabao * @description * @createDate 2026/4/10 14:28 */ @Mapper public interface OrderReportMapper extends BaseMapper<OrderReport> { int insertBatch(@Param("list") List<OrderReport> list); List<OrderReport> selectSummary(@Param("orderNo") String orderNo, @Param("matnr") String matnr); int moveToLog(@Param("orderNos") List<String> orderNos); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -13,6 +13,7 @@ import com.zy.asrs.entity.param.OpenOrderPakinParam; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.mapper.OrderReportMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.MatUtils; import com.zy.asrs.utils.SaasUtils; @@ -85,6 +86,9 @@ @Resource private OrderDetlMapper orderDetlMapper; @Resource private OrderReportMapper orderReportMapper; @Override @Transactional public R WarehouseOut(CombParam combParam, Long userId) { @@ -111,21 +115,27 @@ if (order.getSettle() == 1) { orderService.updateSettle(order.getId(), 2L, userId); } OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch()); OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), ""); 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) { // 修改订单明细完成数量 if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), "", combMat.getAnfme()) <= 0) { throw new CoolException("修改单据明细工作数量失败"); } // 修改订单明细完成数量 if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) { throw new CoolException("修改单据明细完成数量失败"); } // // 修改订单明细完成数量 // if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), "", combMat.getAnfme())) { // throw new CoolException("修改单据明细完成数量失败"); // } // 插入上报表 combMat.setOrderNo(combParam.getOrderNo()); OrderReport orderReport = new OrderReport(); orderReport.sync(combMat); orderReportMapper.insert(orderReport); // 修改订单状态 作业中 ===>> 已完成 orderService.checkComplete(combParam.getOrderNo()); } @@ -226,14 +236,19 @@ if (Cools.isEmpty(order)){ throw new CoolException("平库上架查询订单失败"); } OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch()); OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), ""); if (Cools.isEmpty(orderDetl)){ throw new CoolException("平库上架查询订单明细失败"); } // 修改订单明细完成数量 if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) { if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), "", waitPakin.getAnfme())) { throw new CoolException("修改单据明细数量失败"); } // 插入上报表 OrderReport orderReport = new OrderReport(); orderReport.sync(waitPakin); orderReportMapper.insert(orderReport); // 修改订单状态 作业中 ===>> 已完成 orderService.checkComplete(waitPakin.getOrderNo()); @@ -339,12 +354,12 @@ throw new CoolException("单据编号已完成:" + elem.getOrderNo()); } // 订单明细数量校验 OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), ""); if (elem.getAnfme() > orderDetl.getEnableQty()) { throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); } // 修改订单明细数量 if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), "", elem.getAnfme())) { throw new CoolException("修改单据明细数量失败"); } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -891,7 +891,7 @@ List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); for (WrkDetl wrkDetl : wrkDetls) { if (!Cools.isEmpty(wrkDetl.getOrderNo())) { if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), "", wrkDetl.getAnfme())) { throw new CoolException("订单数据回滚失败"); } src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,15 +2,18 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.DocType; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.OrderReport; import com.zy.asrs.entity.u8.ReportU8Vo; import com.zy.asrs.entity.u8.U8ResultVo; import com.zy.asrs.mapper.OrderMapper; import com.zy.asrs.mapper.OrderReportMapper; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.DocTypeService; import com.zy.asrs.service.OrderDetlService; @@ -51,7 +54,12 @@ @Autowired private DocTypeService docTypeService; @Resource private OrderReportMapper orderReportMapper; private static final String baseUrl = "192.168.4.189:10006/api/U8Server"; // private static final String baseUrl = "127.0.0.1:8080/jsjwms/open/asrs"; private static final Map<String, String> pathMap = new HashMap<String, String>() {{ put("采购到货单", "/purchasein_import"); put("销售发货单", "/saleout_import"); @@ -59,6 +67,12 @@ put("领料申请单", "/materialout_import"); put("其他入库单", "/otherin_import"); put("其他出库单", "/otherout_import"); // put("采购到货单", "/purchasein_import"); // put("销售发货单", "/purchasein_import"); // put("生产订单", "/purchasein_import"); // put("领料申请单", "/purchasein_import"); // put("其他入库单", "/purchasein_import"); // put("其他出库单", "/purchasein_import"); }}; @Resource private OrderMapper orderMapper; @@ -176,6 +190,7 @@ return SUCCESS; } @Transactional public void startNew(Map.Entry<String, List<Order>> orderMap) { String docName = orderMap.getKey(); List<Order> value = orderMap.getValue(); @@ -205,6 +220,10 @@ List<String> successReceiptNos = list.stream().filter(u8ResultVo -> "T".equals(u8ResultVo.getResult())).map(U8ResultVo::getReceiptNo).collect(Collectors.toList()); if (!successReceiptNos.isEmpty()) { orderMapper.batchUpdateSettleByOrderNos(successReceiptNos); // 上报表转历史 orderReportMapper.moveToLog(successReceiptNos); // 删除上报表数据 orderReportMapper.delete(new EntityWrapper<OrderReport>().in("order_no",successReceiptNos)); success = true; } log.info("单据上报成功,单据编号:{}", successReceiptNos); @@ -252,14 +271,17 @@ List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); String docType$ = order.getDocType$(); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setAutoidPo(orderDetl.getSku()); item.setPoautoidcol(docType$.equals("采购订单") ? "ID" : docType$.equals("采购到货单") || docType$.equals("委外到货单") ? "Autoid" : docType$.equals("委外订单") ? "MODetailsID" : ""); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setAutoidPo(orderDetl.getSku()); item.setPoautoidcol(docType$.equals("采购订单") ? "ID" : docType$.equals("采购到货单") || docType$.equals("委外到货单") ? "Autoid" : docType$.equals("委外订单") ? "MODetailsID" : ""); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); @@ -280,13 +302,16 @@ List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); // String docType$ = order.getDocType$(); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setAutoidSo(orderDetl.getSku()); item.setSoautoidcol("IDLSID"); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setAutoidSo(orderDetl.getSku()); item.setSoautoidcol("IDLSID"); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); @@ -306,13 +331,16 @@ List<ReportU8Vo.Item> itemList = new ArrayList<>(); List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setAutoidMo(orderDetl.getSku()); item.setMoautoidcol("MODID"); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setAutoidMo(orderDetl.getSku()); item.setMoautoidcol("MODID"); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); @@ -333,13 +361,16 @@ List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); // String docType$ = order.getDocType$(); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setAutoidAll(orderDetl.getSku()); item.setAllcautoidcol("AutoID"); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setAutoidAll(orderDetl.getSku()); item.setAllcautoidcol("AutoID"); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); @@ -359,11 +390,14 @@ List<ReportU8Vo.Item> itemList = new ArrayList<>(); List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); @@ -383,11 +417,14 @@ List<ReportU8Vo.Item> itemList = new ArrayList<>(); List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetlList) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderDetl.getQty()); item.setCbatch(orderDetl.getBatch()); itemList.add(item); List<OrderReport> orderReports = orderReportMapper.selectSummary(orderDetl.getOrderNo(), orderDetl.getMatnr()); for(OrderReport orderReport: orderReports) { ReportU8Vo.Item item = new ReportU8Vo.Item(); item.setCinvcode(orderDetl.getMatnr()); item.setIquantity(orderReport.getAnfme()); item.setCbatch(orderReport.getBatch()); itemList.add(item); } } reportU8Vo.setDetailList(itemList); list.add(reportU8Vo); src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -2,9 +2,11 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.OrderReport; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.OrderReportMapper; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; @@ -14,6 +16,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -39,21 +43,32 @@ @Autowired private OrderService orderService; @Resource private OrderReportMapper orderReportMapper; @Transactional public ReturnT<String> start(WrkMast wrkMast) { try { List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); List<OrderReport> orderReports = new ArrayList<>(); // 修改订单状态 作业中 ===>> 已完成 if (!Cools.isEmpty(wrkDetls)) { Iterator<WrkDetl> iterator = wrkDetls.iterator(); while (iterator.hasNext()) { WrkDetl wrkDetl = iterator.next(); if (!Cools.isEmpty(wrkDetl.getOrderNo())) { OrderReport orderReport = new OrderReport(); orderReport.sync(wrkDetl); orderReports.add(orderReport); orderService.checkComplete(wrkDetl.getOrderNo()); iterator.remove(); } } } // 插入上报表 if (!orderReports.isEmpty()) { orderReportMapper.insertBatch(orderReports); } // 入库 -------------------------------------------------------------------------------- if (wrkMast.getWrkSts() == 5) { src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -135,7 +135,7 @@ try { if(!Cools.isEmpty(orderDetl)){ if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetl.getBatch(),wrkDetl.getAnfme())){ "",wrkDetl.getAnfme())){ // exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -391,7 +391,7 @@ try { if(!Cools.isEmpty(orderDetl)){ if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), orderDetl.getBatch(),wrkDetl.getAnfme())){ "",wrkDetl.getAnfme())){ // exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", // wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); src/main/resources/mapper/LocDetlMapper.xml
@@ -166,10 +166,11 @@ select ROW_NUMBER() over (order by sum(a.anfme) desc) as row , a.matnr , a.batch , sum(a.anfme) as anfme from asr_loc_detl a where 1=1 group by a.matnr group by a.matnr,a.batch </select> <select id="selectPakoutByRule" resultMap="BaseResultMap"> src/main/resources/mapper/OrderDetlMapper.xml
@@ -127,7 +127,7 @@ <update id="increase"> update man_order_detl set qty = qty + #{qty} set qty = qty + #{qty},work_qty = work_qty - #{qty} where 1=1 and order_id = #{orderId} and matnr = #{matnr} @@ -170,7 +170,7 @@ <update id="increaseQtyByOrderNo"> update man_order_detl set qty = qty + #{qty} set qty = qty + #{qty},work_qty = work_qty - #{qty} where 1=1 and order_no = #{orderNo} and matnr = #{matnr} @@ -201,7 +201,7 @@ </update> <update id="increaseWorkQtyByOrderNo"> update man_order_detl set work_qty = work_qty + #{qty} set qty = qty + #{qty} where 1=1 and order_no = #{orderNo} and matnr = #{matnr} src/main/resources/mapper/OrderReportMapper.xml
New file @@ -0,0 +1,36 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.zy.asrs.mapper.OrderReportMapper"> <insert id="insertBatch"> INSERT INTO man_order_report (order_no, matnr, maktx, batch, anfme) <foreach collection="list" item="item" separator=" UNION ALL "> SELECT #{item.orderNo}, #{item.matnr}, #{item.maktx}, #{item.batch}, #{item.anfme} </foreach> </insert> <insert id="moveToLog"> INSERT INTO man_order_report_log (id, order_no, matnr, maktx, batch, anfme) SELECT id, order_no, matnr, maktx, batch, anfme FROM man_order_report WHERE order_no IN <foreach collection="orderNos" item="item" open="(" separator="," close=")"> #{item} </foreach> </insert> <select id="selectSummary" resultType="com.zy.asrs.entity.OrderReport"> SELECT order_no AS orderNo, matnr, batch, SUM(anfme) AS anfme FROM man_order_report WHERE order_no = #{orderNo} AND matnr = #{matnr} GROUP BY order_no, matnr, batch </select> </mapper>