src/main/java/com/zy/asrs/controller/WaitPakinController.java
@@ -14,6 +14,7 @@ import com.zy.asrs.entity.WrkDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.service.WaitPakinService; import com.zy.asrs.service.WrkMastService; import com.zy.common.web.BaseController; @@ -21,10 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; @RestController public class WaitPakinController extends BaseController { @@ -35,6 +33,8 @@ private OrderDetlService orderDetlService; @Autowired private WrkMastService wrkMastService; @Autowired private OrderService orderService; @RequestMapping(value = "/waitPakin/{id}/auth") @ManagerAuth @@ -97,6 +97,8 @@ if (Cools.isEmpty(list)){ return R.error("数据为空"); } //通过HashSet的非重复特性, 存储不同的order编号, 然后遍历,将符合条件的order状态恢复到待处理 HashSet<String> orderNos = new HashSet<>(); for (WaitPakin entity : list){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("barcode", entity.getZpallet())); if(!Cools.isEmpty(wrkMasts) || wrkMasts.size() > 0){ @@ -106,10 +108,17 @@ //订单关联,修改订单作业数量 if (!Cools.isEmpty(entity.getOrderNo())) { if (!orderDetlService.decrease(entity.getOrderNo(), entity.getMatnr(), entity.getBatch(), entity.getAnfme())) { return R.error("订单数据回滚失败"); }else { orderNos.add(entity.getOrderNo()); } } } for (String orderNo : orderNos) { orderService.BackToInit(orderNo); } return R.ok(); } src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -1,6 +1,7 @@ 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.core.common.Cools; import com.zy.common.utils.Synchro; @@ -17,6 +18,7 @@ private static final long serialVersionUID = 1L; @TableId("zpallet") @ApiModelProperty(value= "托盘条码") private String zpallet; @@ -27,12 +29,14 @@ @TableField("loc_no") private String locNo; @TableId("matnr") @ApiModelProperty(value= "商品编号") private String matnr; @ApiModelProperty(value= "商品名称") private String maktx; @TableId("batch") @ApiModelProperty(value= "批号") private String batch; src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
@@ -19,7 +19,7 @@ public List<MatParam> matDetails; @Data public class MatParam{ public static class MatParam{ /** * 商品编号 */ src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -17,4 +17,8 @@ List<Order> selectComplete(); int addToLogTable(Order order); Integer checkDetlWorkQtyLess0(@Param("orderNo") String orderNo); void updateSettleTo1(@Param("orderNo")String orderNo); } src/main/java/com/zy/asrs/service/OrderService.java
@@ -25,4 +25,7 @@ List<Order> selectComplete(); boolean addToLogTable(Order order); void BackToInit(String orderNo); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -96,6 +96,13 @@ if (countLoc > 0 || countWrk > 0) { throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); } //设置非null批号, for (CombParam.CombMat combMat : param.getCombMats()) { if (combMat.getBatch() == null){ combMat.setBatch(""); } } Date now = new Date(); src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -118,7 +118,14 @@ } OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setBatch(detlDto.getBatch()); //批号为空会出现问题,设置一个默认值 if (detlDto.getBatch() == null) { orderDetl.setBatch(""); }else { orderDetl.setBatch(detlDto.getBatch()); } orderDetl.setAnfme(detlDto.getAnfme()); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); @@ -519,8 +526,8 @@ } else { tagId = tagService.getTop().getId(); } mat.sync(param); // mat.setMatnr(param.getMatnr()); mat.sync(matParam); // mat.setMatnr(para); // mat.setMaktx(param.getMaktx()); // mat.setSpecs(param.getSpecs()); // mat.setModel(param.getModel()); src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -71,30 +71,13 @@ } } if (complete) { // 出库订单重新整理明细 DocType docType = docTypeService.selectById(order.getDocType()); if (null != docType && docType.getPakout() == 1) { if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); } List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo); for (WrkDetl wrkDetl : wrkDetls) { OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(wrkDetl); orderDetl.setQty(orderDetl.getAnfme()); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(orderNo); orderDetl.setStatus(1); orderDetl.setCreateTime(order.getCreateTime()); orderDetl.setCreateBy(order.getCreateBy()); orderDetl.setUpdateTime(order.getUpdateTime()); orderDetl.setUpdateBy(order.getUpdateBy()); if (!orderDetlService.insert(orderDetl)) { throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); } for (OrderDetl orderDetl : orderDetls) { //生成单据和入库通知档时,给batch为空的明细赋了一个 ="", 现在改为null,回传用 if (orderDetl.getBatch().equals("")){ orderDetl.setBatch(null); orderDetlService.updateById(orderDetl); } } if (!this.updateSettle(order.getId(), 4L, null)) { throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败"); } @@ -170,4 +153,18 @@ return this.baseMapper.addToLogTable(order) > 0; } /** * * @param orderNo * */ @Override public void BackToInit(String orderNo) { Integer count = this.baseMapper.checkDetlWorkQtyLess0(orderNo); //如果所有明细的工作数量和完成量都小于等于0, 那么将主档更新为“待处理”状态 if (count == 0 ){ this.baseMapper.updateSettleTo1(orderNo); } } } src/main/resources/application.yml
@@ -10,7 +10,7 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://192.168.4.15:1433;databasename=stasrs url: jdbc:sqlserver://10.10.10.100:1433;databasename=stasrs username: sa password: sa@123 mvc: src/main/resources/mapper/LocDetlMapper.xml
@@ -48,11 +48,11 @@ <sql id="batchSeq"> <choose> <when test="batch != null and batch != ''"> <when test="batch != null"> and batch = #{batch} </when> <otherwise> and (batch IS NULL OR batch = '') and (batch IS NULL) </otherwise> </choose> </sql> src/main/resources/mapper/OrderDetlMapper.xml
@@ -68,7 +68,7 @@ where 1=1 and order_no = #{orderNo} and matnr = #{matnr} <if test="batch!=null and batch!='' "> <if test="batch!=null"> and batch = #{batch} </if> </select> @@ -148,11 +148,11 @@ and order_no = #{orderNo} and matnr = #{matnr} <choose> <when test="batch != null and batch != ''"> <when test="batch != null"> and batch = #{batch} </when> <otherwise> and (batch IS NULL OR batch = '') and (batch IS NULL ) </otherwise> </choose> </update> src/main/resources/mapper/OrderMapper.xml
@@ -52,6 +52,12 @@ where 1=1 and id = #{orderId} </update> <update id="updateSettleTo1"> UPDATE man_order set settle = 1 WHERE order_no = #{orderNo} </update> <select id="checkDetlWorkQtyLess0" resultType="integer"> select count(*) FROM man_order_detl WHERE order_no = #{orderNo} and (work_qty > 0 or qty > 0) </select> <select id="selectComplete" resultMap="BaseResultMap"> select top 5 *