src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/Order.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/OrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/OrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -55,7 +55,7 @@ return openService.grouping(param); } @PostMapping("/barcodeVerificatio") @PostMapping("/barcodeVerificatio") @AppAuth(memo = "AGV调用校验条码") public synchronized R barcodeVerificatio(@RequestHeader(required = false) String appkey, @RequestBody(required = false) Map<String,String> param, src/main/java/com/zy/asrs/entity/Order.java
@@ -165,7 +165,7 @@ /** * 结算天数 */ @ApiModelProperty(value= "结算天数") @ApiModelProperty(value= "0默认,1已生成入库通知档") @TableField("account_day") private Integer accountDay; src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -23,4 +23,14 @@ Order selectOrderMoveStatus(); Order selectOrderMoveStatusInitial(); /** * 扫描出待处理,未生成入库通知档的入库单据 */ List<Order> selectNotGroupingList(); /** * 更新订单状态和组托状态 */ int updateSettleAndGroupingFlag(@Param("orderId")Long orderId, @Param("settle")Long settle, @Param("account_day")Integer flag); } src/main/java/com/zy/asrs/task/AutoGroupingScheduler.java
New file @@ -0,0 +1,40 @@ package com.zy.asrs.task; import com.zy.asrs.entity.Order; import com.zy.asrs.mapper.OrderMapper; import com.zy.asrs.task.handler.AutoGroupingHandler; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @author pang.jiabao * @description 自动组托定时任务 * @createDate 2024/10/23 13:13 */ @Component public class AutoGroupingScheduler { @Resource private OrderMapper orderMapper; @Resource private AutoGroupingHandler autoGroupingHandler; // 自动组托 // 扫描单据进行组托 order表 account_day 0默认,1已生成入库通知档 @Scheduled(cron = "0/3 * * * * ? ") private void autoGrouping() { // 扫描未生成入库通知档单据 List<Order> orderList = orderMapper.selectNotGroupingList(); for (Order order : orderList) { autoGroupingHandler.autoGrouping(order); } } } src/main/java/com/zy/asrs/task/handler/AutoGroupingHandler.java
New file @@ -0,0 +1,92 @@ package com.zy.asrs.task.handler; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.mapper.OrderMapper; import com.zy.asrs.service.MatService; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.service.WaitPakinService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * @author pang.jiabao * @description 自动组托定时任务处理器 * @createDate 2024/10/23 13:14 */ @Slf4j @Service public class AutoGroupingHandler { @Resource private OrderDetlService orderDetlService; @Resource private MatService matService; @Resource private WaitPakinService waitPakinService; @Resource private OrderService orderService; @Resource private OrderMapper orderMapper; public void autoGrouping(Order order) { Date now = new Date(); // 获取订单明细 List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo())); // 生成入库通知档 for (OrderDetl orderDetl : orderDetlList) { if (orderDetl.getAnfme() > orderDetl.getEnableQty()) { throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); } // 修改订单作业数量 if (!orderDetlService.increaseWorkQty(orderDetl, orderDetl.getAnfme())) { throw new CoolException("修改单据作业数量失败"); } Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(orderDetl.getMatnr() + "商品档案不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setOrderNo(order.getOrderNo()); // 单据编号 waitPakin.setBatch(orderDetl.getBatch()); // 序列码 waitPakin.setZpallet(orderDetlList.size() == 1 ? order.getTemp2() : orderDetl.getTemp2()); // 托盘码 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(orderDetl.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeTime(now); waitPakin.setModiTime(now); // @可以了主、从表中Temp2存的就是托盘号,如果一托一个单子存的就是主表的Temp2字段, // 否则存的就是从表的Temp2字段,从表中:产品ID:ItemId,产品代号:ItemCode,批号:ItemBatch, // 属性:ProType,颜色:sColor,订单号:OrderNo,炉号:LuHao,客户ID:Packing,工单号:sPgNo waitPakin.setSPgNO(orderDetl.getSPgNO()); waitPakin.setOutOrderNo(orderDetl.getOutOrderNo()); waitPakin.setProType(orderDetl.getProType()); waitPakin.setLuHao(orderDetl.getLuHao()); waitPakin.setPacking(orderDetl.getPacking()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } } orderMapper.updateSettleAndGroupingFlag(order.getId(), 2L, 1); } } src/main/resources/mapper/OrderMapper.xml
@@ -58,6 +58,17 @@ where 1=1 and id = #{orderId} </update> <update id="updateSettleAndGroupingFlag"> update man_order set settle = #{settle}, account_day = #{account_day} , update_time = getdate() where 1 = 1 and id = #{orderId} </update> <select id="selectWork" resultMap="BaseResultMap"> select top 5 * @@ -113,5 +124,17 @@ and move_status = 1 order by update_time </select> <select id="selectNotGroupingList" resultMap="BaseResultMap"> select * from man_order mo left join man_doc_type mdt on mo.doc_type = mdt.doc_id where mdt.pakin = 1 and mo.account_day = 0 and mo.settle = 1 </select> </mapper>