并板入库,并板途中拣料,拣料途中并板,以及相关查询接口
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.CombParam; | 
 |  |  | import com.zy.asrs.entity.param.GDYKConfirmGoodsParam; | 
 |  |  | import com.zy.asrs.entity.param.MobileAdjustParam; | 
 |  |  | import com.zy.asrs.entity.param.OffSaleParam; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  | import com.zy.asrs.entity.result.MobileAdjustResult; | 
 |  |  | import com.zy.asrs.mapper.ManLocDetlMapper; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import javax.annotation.Resource; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 移动端接口控制器 | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WrkDetlLogService wrkDetlLogService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private StaDescService staDescService; | 
 |  |  |  | 
 |  |  |     @RequestMapping("/pda/WarehouseOut/v1") | 
 |  |  |     @ManagerAuth(memo = "并板途中拣料-参考念初") | 
 |  |  |     public R WarehouseOutV1(@RequestBody CombParam combParam) { | 
 |  |  |         return mobileService.WarehouseOutV1(combParam, getHostId(), getUserId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/pda/WarehouseOutPickMerge/v1") | 
 |  |  |     @ManagerAuth(memo = "拣料途中并板") | 
 |  |  |     public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) { | 
 |  |  |         if (Cools.isEmpty(param,param.getLocNo(),param.getBarcode(),param.getCombMats())) { | 
 |  |  |             return R.parse("参数不能为空!"); | 
 |  |  |         } | 
 |  |  |         return mobileService.WarehouseOutPickMergeV1(param, getHostId(), getUserId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/pick/in") | 
 |  |  |     @ManagerAuth(memo = "并板入库") | 
 |  |  |     public R pickConfirm(@RequestBody PickConfirmParam param) { | 
 |  |  |  | 
 |  |  |         if(Cools.isEmpty(param,param.getList(),param.getLocNo(),param.getStaNo())) { | 
 |  |  |             return R.parse("参数不完整"); | 
 |  |  |         } | 
 |  |  |         return mobileService.pickConfirm(param, getUserId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/barcode/list/all") | 
 |  |  |     @ManagerAuth(memo = "并板入库途中拣料出库获取任务信息") | 
 |  |  |     public R orderOutListOrder(@RequestParam(required = false) String barcode) { | 
 |  |  |         return mobileService.orderOutListOrder(barcode, getUserId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/barcode/list/pick") | 
 |  |  |     @ManagerAuth(memo = "拣料入库途中并板获取任务信息") | 
 |  |  |     public R orderOutListOrderPick(@RequestParam(required = false) String barcode) { | 
 |  |  |         return mobileService.orderOutListOrderPick(barcode, getUserId()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/loc/f/list") | 
 |  |  |     @ManagerAuth(memo = "获取在库库位") | 
 |  |  |     public R locNoF(@RequestParam(required = false) String locNo) { | 
 |  |  |         Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>() | 
 |  |  |                 .eq("loc_sts", "F"); | 
 |  |  |         if (!Cools.isEmpty(locNo)) { | 
 |  |  |             wrapper.like("loc_no", locNo); | 
 |  |  |         } | 
 |  |  |         List<LocMast> list = locMastService.selectList(wrapper); | 
 |  |  |         return R.ok().add(list); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/pick/sta/list") | 
 |  |  |     @ManagerAuth(memo = "获取并板站") | 
 |  |  |     public R pickSta() { | 
 |  |  |         List<StaDesc> list = staDescService.selectList(new EntityWrapper<StaDesc>() | 
 |  |  |                 .eq("type_no", 104)); | 
 |  |  |         return R.ok().add(list); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping("/pick/mat/list") | 
 |  |  |     @ManagerAuth(memo = "获取并板物料") | 
 |  |  |     public R pickMats(@RequestParam(required = false) String matnr, @RequestParam(required = false) String orderNo) { | 
 |  |  |         return mobileService.pickMats(matnr, orderNo); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // 商品上架 | 
 |  |  |     @RequestMapping("/mat/onSale/auth") | 
 
 |  |  | 
 |  |  |             DocType docType = docTypeService.selectById(param.getDocType()); | 
 |  |  |             if(!Cools.isEmpty(docType)){ | 
 |  |  |                 prefix = docType.getPakin() == 1 ? "RK" : "CK"; | 
 |  |  |                 status = (prefix == "RK" ? 1 : (prefix == "CK" ? 2 : 0)); | 
 |  |  |                 status = (prefix.equals("RK") ? 1 : (prefix.equals("CK") ? 2 : 0)); | 
 |  |  |             } | 
 |  |  |             param.setOrderNo(prefix + snowflakeIdWorker.nextId()); | 
 |  |  |         } else { | 
 
 |  |  | 
 |  |  | package com.zy.asrs.entity.param; | 
 |  |  |  | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |     private String barcode; | 
 |  |  |  | 
 |  |  |     // 库位编号 | 
 |  |  |     private String locno; | 
 |  |  |     private String locNo; | 
 |  |  |  | 
 |  |  |     private List<CombMat> combMats; | 
 |  |  |  | 
 |  |  |     @Data | 
 |  |  |     public static class CombMat { | 
 |  |  |  | 
 |  |  |         private String orderNo; | 
 |  |  |  | 
 |  |  |         // 物料编号 | 
 |  |  |         private String matnr = ""; | 
 |  |  |  | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity.param; | 
 |  |  |  | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | public class PickConfirmParam { | 
 |  |  |  | 
 |  |  |     private String locNo; | 
 |  |  |  | 
 |  |  |     private Integer staNo; | 
 |  |  |  | 
 |  |  |     private List<PickMatParam> list; | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity.param; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | public class PickMatParam { | 
 |  |  |  | 
 |  |  |     private String matnr; | 
 |  |  |  | 
 |  |  |     private String batch; | 
 |  |  |  | 
 |  |  |     private String brand; | 
 |  |  |  | 
 |  |  |     private String orderNo; | 
 |  |  |  | 
 |  |  |     private Long orderId; | 
 |  |  |  | 
 |  |  |     private Double count; | 
 |  |  |  | 
 |  |  |     private Double useCount; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用1 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用1") | 
 |  |  |     private String standby1 = ""; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用2 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用2") | 
 |  |  |     private String standby2 = ""; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用3 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用3") | 
 |  |  |     private String standby3 = ""; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用1 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用1") | 
 |  |  |     @TableField("box_type1") | 
 |  |  |     private String boxType1 = "1"; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用2 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用2") | 
 |  |  |     @TableField("box_type2") | 
 |  |  |     private String boxType2 = "1"; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 备用3 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "备用3") | 
 |  |  |     @TableField("box_type3") | 
 |  |  |     private String boxType3 = "1"; | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  | package com.zy.asrs.entity.param; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  | 
 |  |  |         // 数量 | 
 |  |  |         private Double count; | 
 |  |  |  | 
 |  |  |         private String brand; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用1 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用1") | 
 |  |  |         private String standby1 = ""; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用2 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用2") | 
 |  |  |         private String standby2 = ""; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用3 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用3") | 
 |  |  |         private String standby3 = ""; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用1 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用1") | 
 |  |  |         @TableField("box_type1") | 
 |  |  |         private String boxType1 = "1"; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用2 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用2") | 
 |  |  |         @TableField("box_type2") | 
 |  |  |         private String boxType2 = "1"; | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          * 备用3 | 
 |  |  |          */ | 
 |  |  |         @ApiModelProperty(value= "备用3") | 
 |  |  |         @TableField("box_type3") | 
 |  |  |         private String boxType3 = "1"; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | package com.zy.asrs.entity.param; | 
 |  |  |  | 
 |  |  | import com.zy.asrs.entity.OrderDetl; | 
 |  |  | import lombok.Data; | 
 |  |  |  | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | public class WarehouseOutPickMergeParam { | 
 |  |  |  | 
 |  |  |     // 单据编号 | 
 |  |  |     private String orderNo; | 
 |  |  |  | 
 |  |  |     // 库位编号 | 
 |  |  |     private String locNo; | 
 |  |  |  | 
 |  |  |     // 条码 | 
 |  |  |     private String barcode; | 
 |  |  |  | 
 |  |  |     //组托物料 | 
 |  |  |     private List<OrderDetl> combMats; | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     Integer listByPageCount(Map<String, Object> map); | 
 |  |  |  | 
 |  |  |     LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); | 
 |  |  |     LocDetl selectItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, | 
 |  |  |                        @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, | 
 |  |  |                        @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); | 
 |  |  |  | 
 |  |  |     int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); | 
 |  |  |     int deleteItem(@Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, | 
 |  |  |                    @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, | 
 |  |  |                    @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); | 
 |  |  |  | 
 |  |  |     int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch); | 
 |  |  |     int updateAnfme(@Param("anfme")Double anfme, @Param("locNo")String locNo, @Param("matnr")String matnr, @Param("batch")String batch, | 
 |  |  |                     @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2, | 
 |  |  |                     @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3 ); | 
 |  |  |  | 
 |  |  |     List<LocDetl> getStockOutPage(Map<String, Object> map); | 
 |  |  |  | 
 
 |  |  | 
 |  |  |             , @Param("boxType1")String boxType1, | 
 |  |  |                         @Param("boxType2")String boxType2, | 
 |  |  |                         @Param("boxType3")String boxType3, @Param("workQty")Double workQty); | 
 |  |  |     int increaseWorkQtyByOrderNo(@Param("orderNo") String orderNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("qty") Double qty); | 
 |  |  |  | 
 |  |  |     int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("brand")String brand, @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3, @Param("workQty")Double workQty); | 
 |  |  |  | 
 |  |  | } | 
 
 |  |  | 
 |  |  |     int selectAllCount(LocDetlDTO locDetlDTO); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     LocDetl selectItem(String locNo, String matnr, String batch); | 
 |  |  |     LocDetl selectItem(String locNo, String matnr, String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3); | 
 |  |  |  | 
 |  |  |     Page<LocDetl> getStockOut(Page<LocDetl> page); | 
 |  |  |  | 
 |  |  | 
 |  |  |     /** | 
 |  |  |      * 修改库存明细数量,如果数量为0,则删除记录 | 
 |  |  |      */ | 
 |  |  |     boolean updateAnfme(Double anfme, String locNo, String matnr, String batch); | 
 |  |  |     boolean updateAnfme(Double anfme, String locNo, String matnr | 
 |  |  |             ,String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3); | 
 |  |  |  | 
 |  |  |     boolean updateLocNo(String newLocNo, String oldLocNo); | 
 |  |  |  | 
 
 |  |  | 
 |  |  | package com.zy.asrs.service; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.core.common.R; | 
 |  |  | import com.zy.asrs.entity.BasDevp; | 
 |  |  | import com.zy.asrs.entity.LocDetl; | 
 |  |  | import com.zy.asrs.entity.OrderDetl; | 
 |  |  | import com.zy.asrs.entity.param.CombParam; | 
 |  |  | import com.zy.asrs.entity.param.MobileAdjustParam; | 
 |  |  | import com.zy.asrs.entity.param.OffSaleParam; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  |  | 
 |  |  | import java.util.Date; | 
 |  |  |  | 
 |  |  | public interface MobileService { | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 并板途中拣料 | 
 |  |  |      */ | 
 |  |  |     R WarehouseOutV1(CombParam combParam, Long hostId, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 拣料途中并板 | 
 |  |  |      */ | 
 |  |  |     R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 并板入库 | 
 |  |  |      */ | 
 |  |  |     R pickConfirm(PickConfirmParam param, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 并板入库途中拣料出库获取任务信息 | 
 |  |  |      */ | 
 |  |  |     R orderOutListOrder(String barcode, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 拣料入库途中并板获取任务信息 | 
 |  |  |      */ | 
 |  |  |     R orderOutListOrderPick(String barcode, Long userId); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      *获取并板物料 | 
 |  |  |      */ | 
 |  |  |     R pickMats(String matnr, String orderNo); | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 组托 | 
 |  |  |      */ | 
 |  |  |     void comb(CombParam param, Long userId); | 
 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { | 
 |  |  |     public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch, | 
 |  |  |                                String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) { | 
 |  |  |         if (anfme <= 0) { | 
 |  |  |             return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; | 
 |  |  |             return this.baseMapper.deleteItem(locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0; | 
 |  |  |         } else { | 
 |  |  |             return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0; | 
 |  |  |             return baseMapper.updateAnfme(anfme, locNo, matnr, batch, brand, standby1, standby2, standby3, boxType1, boxType2, boxType3) > 0; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public LocDetl selectItem(String locNo, String matnr, String batch) { | 
 |  |  |         return this.baseMapper.selectItem(locNo, matnr, batch); | 
 |  |  |     public LocDetl selectItem(String locNo, String matnr, String batch,String brand,String standby1,String standby2,String standby3,String boxType1,String boxType2,String boxType3) { | 
 |  |  |         return this.baseMapper.selectItem(locNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 
 |  |  | 
 |  |  | import com.core.common.*; | 
 |  |  | import com.core.exception.CoolException; | 
 |  |  | import com.zy.asrs.entity.*; | 
 |  |  | import com.zy.asrs.entity.param.CombParam; | 
 |  |  | import com.zy.asrs.entity.param.MobileAdjustParam; | 
 |  |  | import com.zy.asrs.entity.param.OffSaleParam; | 
 |  |  | import com.zy.asrs.entity.param.OpenOrderPakinParam; | 
 |  |  | import com.zy.asrs.entity.param.*; | 
 |  |  | import com.zy.asrs.mapper.LocMastMapper; | 
 |  |  | import com.zy.asrs.mapper.ManLocDetlMapper; | 
 |  |  | import com.zy.asrs.service.*; | 
 |  |  | import com.zy.asrs.utils.MatUtils; | 
 |  |  | import com.zy.asrs.utils.OrderInAndOutUtil; | 
 |  |  | import com.zy.common.CodeRes; | 
 |  |  | import com.zy.common.constant.MesConstant; | 
 |  |  | import com.zy.common.entity.Parameter; | 
 |  |  | import com.zy.common.model.DetlDto; | 
 |  |  | import com.zy.common.model.MesCombParam; | 
 |  |  | import com.zy.common.model.enums.WorkNoType; | 
 |  |  | import com.zy.common.service.CommonService; | 
 |  |  | import com.zy.common.utils.HttpHandler; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  |  | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.Iterator; | 
 |  |  | import java.util.List; | 
 |  |  | import javax.annotation.Resource; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 移动端服务核心类 | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private ManLocDetlMapper manLocDetlMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private AdjDetlService adjDetlService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private LocMastMapper locMastMapper; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private DocTypeService docTypeService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private OrderDetlPakinService orderDetlPakinService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private OrderPakinService orderPakinService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private OrderPakoutService orderPakoutService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private OrderDetlPakoutService orderDetlPakoutService; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) { | 
 |  |  |         //判断库位状态 | 
 |  |  |         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo())); | 
 |  |  |         if (Cools.isEmpty(locMast)){ | 
 |  |  |             return R.error("该库位不存在"); | 
 |  |  |         } | 
 |  |  |         if (!locMast.getLocSts().equals("P")){ | 
 |  |  |             return R.error("该库位状态为:"+locMast.getLocSts()+",不满足拣料途中并板条件!!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 创建入库工作主档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  |         wrkMast.setWrkNo(commonService.getWorkNo(0)); | 
 |  |  |         wrkMast.setIoTime(now); | 
 |  |  |         wrkMast.setWrkSts(4L); // 工作状态:入库完成 | 
 |  |  |         wrkMast.setIoType(8); // 入出库状态:8.拣料途中并板 | 
 |  |  |         wrkMast.setIoPri(13D); // 优先级 | 
 |  |  |         wrkMast.setCrnNo(1); | 
 |  |  |         wrkMast.setSourceStaNo(1); | 
 |  |  |         wrkMast.setStaNo(1); | 
 |  |  |         wrkMast.setLocNo(param.getLocNo()); | 
 |  |  |         wrkMast.setBarcode(param.getBarcode()); // 托盘码 | 
 |  |  |         wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  |         wrkMast.setPicking("N"); // 拣料 | 
 |  |  |         wrkMast.setExitMk("N"); // 退出 | 
 |  |  |         wrkMast.setEmptyMk("N"); // 空板 | 
 |  |  |         wrkMast.setLinkMis("Y"); | 
 |  |  |         wrkMast.setCtnType(0); // 容器类型 | 
 |  |  |         // 操作人员数据 | 
 |  |  |         wrkMast.setAppeTime(now); | 
 |  |  |         wrkMast.setModiTime(now); | 
 |  |  |         wrkMast.setAppeUser(userId); | 
 |  |  |         wrkMast.setModiUser(userId); | 
 |  |  |         wrkMastService.insert(wrkMast); | 
 |  |  |  | 
 |  |  |         for (OrderDetl orderDetl : param.getCombMats()) { | 
 |  |  |             Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",orderDetl.getMatnr())); | 
 |  |  |             if (mat == null) { | 
 |  |  |                 throw new CoolException("保存工作档失败,物料信息不存在:" + orderDetl.getMatnr()); | 
 |  |  |             } | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |             wrkDetl.sync(mat); | 
 |  |  |             wrkDetl.setOrderNo(orderDetl.getOrderNo()); | 
 |  |  |             wrkDetl.setWrkNo(wrkMast.getWrkNo()); | 
 |  |  |             wrkDetl.setIoTime(now); | 
 |  |  |             wrkDetl.setAnfme(orderDetl.getAnfme()); // 数量 | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setAppeUser(userId); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setModiUser(userId); | 
 |  |  |             wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |             wrkDetl.setBatch(orderDetl.getBatch()); | 
 |  |  |             if(Cools.isEmpty(orderDetl.getBatch())){ | 
 |  |  |                 wrkDetl.setBatch(""); | 
 |  |  |             } | 
 |  |  |             wrkDetl.setBoxType1(orderDetl.getBoxType1()); | 
 |  |  |             wrkDetl.setBoxType2(orderDetl.getBoxType2()); | 
 |  |  |             wrkDetl.setBoxType3(orderDetl.getBoxType3()); | 
 |  |  |             wrkDetl.setStandby1(orderDetl.getStandby1()); | 
 |  |  |             wrkDetl.setStandby2(orderDetl.getStandby2()); | 
 |  |  |             wrkDetl.setStandby3(orderDetl.getStandby3()); | 
 |  |  |             // 生成工作档明细 | 
 |  |  |             wrkDetlService.insert(wrkDetl); | 
 |  |  |  | 
 |  |  |             if (!Cools.isEmpty(orderDetl.getOrderNo())) { | 
 |  |  |                 OrderPakin order = orderPakinService.selectByNo(orderDetl.getOrderNo()); | 
 |  |  |                 if (Cools.isEmpty(order)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()); | 
 |  |  |                 if (Cools.isEmpty(orderDetlPakin)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (orderDetlPakin.getAnfme() < (orderDetlPakin.getWorkQty() + orderDetl.getAnfme())) { | 
 |  |  |                     throw new CoolException("并板数量出错,订单剩余出库数量小于已出库数量与将并板数量之和!!!"); | 
 |  |  |                 } | 
 |  |  |                 // 修改订单明细作业数量 | 
 |  |  |                 if (!orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), orderDetlPakin.getMatnr(), orderDetlPakin.getBatch(), orderDetlPakin.getBrand(), | 
 |  |  |                         orderDetlPakin.getStandby1(), orderDetlPakin.getStandby2(), orderDetlPakin.getStandby3(), orderDetlPakin.getBoxType1(), orderDetlPakin.getBoxType2(), orderDetlPakin.getBoxType3(),orderDetl.getAnfme())) { | 
 |  |  |                     throw new CoolException("修改单据明细工作数量失败"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 if (order.getSettle() == 1){ | 
 |  |  |                     orderPakinService.updateSettle(order.getId(), 2L, userId); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public R pickConfirm(PickConfirmParam param,Long userId) { | 
 |  |  |  | 
 |  |  |         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() | 
 |  |  |                 .eq("loc_no", param.getLocNo())); | 
 |  |  |         if (!locMast.getLocSts().equals("F")) { | 
 |  |  |             return R.error("库位状态不是在库"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 判断库位是否冻结 | 
 |  |  |         String sourceLocFrozen = locMastMapper.findFirstFrozenLocNo(Collections.singletonList(locMast.getLocNo())); | 
 |  |  |         if (sourceLocFrozen != null) { | 
 |  |  |             throw new CoolException(sourceLocFrozen + "库位已被冻结!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() | 
 |  |  |                 .eq("type_no", 104) | 
 |  |  |                 .eq("stn_no", param.getStaNo())); | 
 |  |  |         if (staDesc == null) { | 
 |  |  |             return R.error("站点不存在"); | 
 |  |  |         } | 
 |  |  |         OrderDetlPakin orderDetlPakin = null; | 
 |  |  |         //检验传参是否和订单明细匹配 | 
 |  |  |         for (PickMatParam matParam : param.getList()) { | 
 |  |  |             orderDetlPakin = orderDetlPakinService.selectItem | 
 |  |  |                     (matParam.getOrderNo(), matParam.getMatnr(),matParam.getBatch(),matParam.getBrand(), | 
 |  |  |                             matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(), | 
 |  |  |                             matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3()); | 
 |  |  |             if (orderDetlPakin == null) { | 
 |  |  |                 return R.error("物料数据不存在"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //剩余可用数量 | 
 |  |  |             double count = orderDetlPakin.getAnfme() - orderDetlPakin.getWorkQty(); | 
 |  |  |             if (matParam.getCount() != count) { | 
 |  |  |                 return R.error("物料数据已过期"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (matParam.getUseCount() > count) { | 
 |  |  |                 return R.error("可用数量不足"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作号 | 
 |  |  |         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(104)); | 
 |  |  |         // 生成工作档 | 
 |  |  |         WrkMast wrkMast = new WrkMast(); | 
 |  |  |         wrkMast.setWrkNo(workNo); | 
 |  |  |         wrkMast.setIoTime(now); | 
 |  |  |         wrkMast.setWrkSts(11L); // 工作状态:101.生成出库 | 
 |  |  |         wrkMast.setIoType(104); // 入出库状态 | 
 |  |  |         wrkMast.setIoPri(13D); // 优先级:13 | 
 |  |  |         wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 | 
 |  |  |         wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 | 
 |  |  |         wrkMast.setSourceLocNo(param.getLocNo()); // 源库位 | 
 |  |  |         wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  |         wrkMast.setPicking("Y"); // 拣料 | 
 |  |  |         wrkMast.setExitMk("N"); // 退出 | 
 |  |  |         wrkMast.setEmptyMk("N"); // 空板 | 
 |  |  |         wrkMast.setBarcode(locMast.getBarcode()); | 
 |  |  |         wrkMast.setAppeUser(userId); // 操作人员数据 | 
 |  |  |         wrkMast.setAppeTime(now); | 
 |  |  |         wrkMast.setModiUser(userId); | 
 |  |  |         wrkMast.setModiTime(now); | 
 |  |  |         wrkMast.setCrnNo(staDesc.getCrnNo()); | 
 |  |  |         if (!wrkMastService.insert(wrkMast)) { | 
 |  |  |             throw new CoolException("保存工作档失败,出库库位号:" + param.getLocNo()); | 
 |  |  |         } | 
 |  |  |         // 生成工作档明细 | 
 |  |  |         for (PickMatParam matParam : param.getList()) { | 
 |  |  |             Wrapper<Mat> wrapper = new EntityWrapper<>(); | 
 |  |  |             wrapper.eq("status", 1); | 
 |  |  |             wrapper.eq("matnr", matParam.getMatnr()); | 
 |  |  |             Mat mat = matService.selectOne(wrapper); | 
 |  |  |             if (mat == null) { | 
 |  |  |                 throw new CoolException("保存工作档失败,物料信息不存在:" + matParam.getMatnr()); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |             wrkDetl.sync(mat); | 
 |  |  |             wrkDetl.setBatch(matParam.getBatch()); | 
 |  |  |             wrkDetl.setOrderNo(matParam.getOrderNo()); | 
 |  |  |             wrkDetl.setWrkNo(workNo); | 
 |  |  |             wrkDetl.setIoTime(now); | 
 |  |  |             wrkDetl.setAnfme(matParam.getUseCount()); // 数量 | 
 |  |  |             wrkDetl.setAppeTime(now); | 
 |  |  |             wrkDetl.setAppeUser(userId); | 
 |  |  |             wrkDetl.setModiTime(now); | 
 |  |  |             wrkDetl.setModiUser(userId); | 
 |  |  |             wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |             if(Cools.isEmpty(matParam.getBatch())){ | 
 |  |  |                 wrkDetl.setBatch(""); | 
 |  |  |             } | 
 |  |  |             if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                 throw new CoolException("保存工作档明细失败"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //更新订单工作数量 | 
 |  |  |             orderDetlPakinService.increaseWorkQty(orderDetlPakin.getOrderId(), matParam.getMatnr(), | 
 |  |  |                     matParam.getBatch(),matParam.getBrand(),matParam.getStandby1(),matParam.getStandby2(),matParam.getStandby3(), | 
 |  |  |                     matParam.getBoxType1(),matParam.getBoxType2(),matParam.getBoxType3(),matParam.getUseCount()); | 
 |  |  |             // 更新工作档状态 | 
 |  |  |             orderPakinService.updateSettle(orderDetlPakin.getOrderId(),2L,userId); | 
 |  |  |         } | 
 |  |  |         // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 | 
 |  |  |         locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo())); | 
 |  |  |         if (locMast.getLocSts().equals("F")) { | 
 |  |  |             locMast.setLocSts("P"); | 
 |  |  |             locMast.setModiUser(userId); | 
 |  |  |             locMast.setModiTime(now); | 
 |  |  |             if (!locMastService.updateById(locMast)) { | 
 |  |  |                 throw new CoolException("预约库位状态失败,库位号:" + param.getLocNo()); | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             throw new CoolException(param.getLocNo() + "库位不是在库状态"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public R WarehouseOutV1(CombParam combParam, Long hostId, Long userId) { | 
 |  |  |         //判断库位状态 | 
 |  |  |         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo())); | 
 |  |  |         if (Cools.isEmpty(locMast)){ | 
 |  |  |             return R.error("该库位不存在"); | 
 |  |  |         } | 
 |  |  |         if (!locMast.getLocSts().equals("P")){ | 
 |  |  |             return R.error("该库位状态为:"+locMast.getLocSts()+",不满足并板途中拣选条件!!!"); | 
 |  |  |         } | 
 |  |  |         //查询库存数据 | 
 |  |  |         for (CombParam.CombMat combMat :combParam.getCombMats()){ | 
 |  |  |             List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>() | 
 |  |  |                             .eq("loc_no", combParam.getLocNo()) | 
 |  |  |                             .eq("matnr", combMat.getMatnr()) | 
 |  |  |             ); | 
 |  |  |             if (locDetlList.isEmpty()){ | 
 |  |  |                 return R.error("未查询到库存数据"); | 
 |  |  |             } | 
 |  |  |             if (locDetlList.size()>1){ | 
 |  |  |                 return R.error("库存数据大于1条,为保证数据准确性,请用正常流程出库!!!"); | 
 |  |  |             } | 
 |  |  |             LocDetl locDetl = locDetlList.get(0); | 
 |  |  |             if (combMat.getAnfme() > locDetl.getAnfme()){ | 
 |  |  |                 return R.error("拣选数量错误,超出库存数量"); | 
 |  |  |             } | 
 |  |  |             if (!Cools.isEmpty(combMat.getOrderNo())){ | 
 |  |  |                 OrderPakout orderPakout = orderPakoutService.selectByNo(combMat.getOrderNo()); | 
 |  |  |                 if (Cools.isEmpty(orderPakout)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (orderPakout.getSettle() == 1){ | 
 |  |  |                     OrderInAndOutUtil.updateOrder(false,orderPakout.getId(), 2L, 9527L); | 
 |  |  |                 } | 
 |  |  |                 OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(orderPakout.getId(), combMat.getMatnr(), combMat.getBatch(), | 
 |  |  |                         combMat.getBrand(), combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3()); | 
 |  |  |                 if (Cools.isEmpty(orderDetlPakout)){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 if (orderDetlPakout.getAnfme() < (orderDetlPakout.getWorkQty()+combMat.getAnfme())){ | 
 |  |  |                     throw new CoolException("拣选数量出错,订单剩余出库数量小于已出库数量与将拣选数量之和!!!"); | 
 |  |  |                 } | 
 |  |  |                 // 修改订单明细作业数量 | 
 |  |  |                 if (!orderDetlPakoutService.increaseWorkQty(orderDetlPakout.getOrderId(), combMat.getMatnr(), combMat.getBatch(), combMat.getBrand(), | 
 |  |  |                         combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(),combMat.getAnfme())) { | 
 |  |  |                     throw new CoolException("修改单据明细工作数量失败"); | 
 |  |  |                 } | 
 |  |  | //                // 修改订单明细完成数量 | 
 |  |  | //                if (!orderDetlPakoutService.increase(orderPakout.getId(),combMat.getMatnr(), combMat.getBatch(), combMat.getBrand(), | 
 |  |  | //                        combMat.getStandby1(), combMat.getStandby2(), combMat.getStandby3(), combMat.getBoxType1(), combMat.getBoxType2(), combMat.getBoxType3(),combMat.getAnfme())) { | 
 |  |  | //                    throw new CoolException("修改单据明细完成数量失败"); | 
 |  |  | //                } | 
 |  |  | //                // 修改订单状态 作业中 ===>> 已完成 | 
 |  |  | //                orderPakoutService.checkComplete(combMat.getOrderNo()); | 
 |  |  |             } | 
 |  |  |             try { | 
 |  |  |                 Date now = new Date(); | 
 |  |  |                 // 创建入库工作档 | 
 |  |  |                 WrkMast wrkMast = new WrkMast(); | 
 |  |  |                 wrkMast.setWrkNo(commonService.getWorkNo(2)); | 
 |  |  |                 wrkMast.setIoTime(now); | 
 |  |  |                 wrkMast.setWrkSts(14L); // 工作状态:出库完成 | 
 |  |  |                 wrkMast.setIoType(108); // 入出库状态:出库,拣料入库 | 
 |  |  |                 wrkMast.setIoPri(13D); // 优先级 | 
 |  |  |                 wrkMast.setCrnNo(1); | 
 |  |  |                 wrkMast.setSourceStaNo(1); | 
 |  |  |                 wrkMast.setStaNo(1); | 
 |  |  |                 wrkMast.setSourceLocNo(combParam.getLocNo()); | 
 |  |  |                 wrkMast.setBarcode(combParam.getBarcode()); // 托盘码 | 
 |  |  |                 wrkMast.setFullPlt("Y"); // 满板:Y | 
 |  |  |                 wrkMast.setPicking("N"); // 拣料 | 
 |  |  |                 wrkMast.setExitMk("N"); // 退出 | 
 |  |  |                 wrkMast.setEmptyMk("N"); // 空板 | 
 |  |  |                 wrkMast.setLinkMis("Y"); | 
 |  |  |                 wrkMast.setCtnType(0); // 容器类型 | 
 |  |  |                 // 操作人员数据 | 
 |  |  |                 wrkMast.setAppeTime(now); | 
 |  |  |                 wrkMast.setModiTime(now); | 
 |  |  |                 wrkMast.setAppeUser(userId); | 
 |  |  |                 wrkMast.setModiUser(userId); | 
 |  |  |                 wrkMastService.insert(wrkMast); | 
 |  |  |  | 
 |  |  |                 Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("matnr",combMat.getMatnr())); | 
 |  |  |                 if (mat == null) { | 
 |  |  |                     throw new CoolException("保存工作档失败,物料信息不存在:" + combMat.getMatnr()); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 WrkDetl wrkDetl = new WrkDetl(); | 
 |  |  |                 wrkDetl.sync(mat); | 
 |  |  |                 wrkDetl.setOrderNo(combMat.getOrderNo()); | 
 |  |  |                 wrkDetl.setWrkNo(wrkMast.getWrkNo()); | 
 |  |  |                 wrkDetl.setIoTime(now); | 
 |  |  |                 wrkDetl.setAnfme(combMat.getAnfme()); // 数量 | 
 |  |  |                 wrkDetl.setAppeTime(now); | 
 |  |  |                 wrkDetl.setAppeUser(userId); | 
 |  |  |                 wrkDetl.setModiTime(now); | 
 |  |  |                 wrkDetl.setModiUser(userId); | 
 |  |  |                 wrkDetl.setZpallet(wrkMast.getBarcode()); | 
 |  |  |                 wrkDetl.setBatch(combMat.getBatch()); | 
 |  |  |                 if(Cools.isEmpty(combMat.getBatch())){ | 
 |  |  |                     wrkDetl.setBatch(""); | 
 |  |  |                 } | 
 |  |  |                 wrkDetl.setBoxType1(combMat.getBoxType1()); | 
 |  |  |                 wrkDetl.setBoxType2(combMat.getBoxType2()); | 
 |  |  |                 wrkDetl.setBoxType3(combMat.getBoxType3()); | 
 |  |  |                 wrkDetl.setStandby1(combMat.getStandby1()); | 
 |  |  |                 wrkDetl.setStandby2(combMat.getStandby2()); | 
 |  |  |                 wrkDetl.setStandby3(combMat.getStandby3()); | 
 |  |  |                 // 生成工作档明细 | 
 |  |  |                 wrkDetlService.insert(wrkDetl); | 
 |  |  |                 System.out.println("正常"); | 
 |  |  |  | 
 |  |  |             }catch (Exception e) { | 
 |  |  |                 throw new CoolException("操作数据异常:"+e.getMessage()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok("操作成功!"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public R orderOutListOrder(String barcode, Long userId) { | 
 |  |  |         ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>(); | 
 |  |  |         if (Cools.isEmpty(barcode) || barcode.isEmpty()) { | 
 |  |  |             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .eq("wrk_sts", 14L) | 
 |  |  |                     .eq("io_type", 104)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts); | 
 |  |  |             List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .eq("wrk_sts", 14L) | 
 |  |  |                     .eq("io_type", 107)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts1); | 
 |  |  |         } else { | 
 |  |  |             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .like("barcode", barcode) | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 104)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts); | 
 |  |  |             List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .like("barcode", barcode) | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 107)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts1); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(wrkMastArrayList); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public R orderOutListOrderPick(String barcode, Long userId) { | 
 |  |  |         ArrayList<WrkMast> wrkMastArrayList = new ArrayList<>(); | 
 |  |  |         if (Cools.isEmpty(barcode) || barcode.isEmpty()) { | 
 |  |  |             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 103)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts); | 
 |  |  |             List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 107)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts1); | 
 |  |  |         } else { | 
 |  |  |             List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .like("barcode", barcode) | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 103) | 
 |  |  |             ); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts); | 
 |  |  |             List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() | 
 |  |  |                     .like("barcode", barcode) | 
 |  |  |                     .eq("wrk_sts", 199L) | 
 |  |  |                     .eq("io_type", 107)); | 
 |  |  |             wrkMastArrayList.addAll(wrkMasts1); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(wrkMastArrayList); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public R pickMats(String matnr, String orderNo) { | 
 |  |  |         List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().like("pakin", "1")); | 
 |  |  |         ArrayList<Long> typeList = new ArrayList<>(); | 
 |  |  |         for (DocType docType : docTypes) { | 
 |  |  |             typeList.add(docType.getDocId()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Wrapper<Order> wrapper = new EntityWrapper<>(); | 
 |  |  |         wrapper.eq("status", 1); | 
 |  |  |         wrapper.in("doc_type", typeList); | 
 |  |  |         List<Order> orders = orderService.selectList(wrapper); | 
 |  |  |  | 
 |  |  |         ArrayList<Long> orderIds = new ArrayList<>(); | 
 |  |  |         for (Order order : orders) { | 
 |  |  |             orderIds.add(order.getId()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //搜索明细 | 
 |  |  |         Wrapper<OrderDetl> wrapper1 = new EntityWrapper<>(); | 
 |  |  |         wrapper1.eq("status", 1); | 
 |  |  |         wrapper1.in("order_id", orderIds); | 
 |  |  |         wrapper1.orderBy("create_time",false); | 
 |  |  |         if (!Cools.isEmpty(matnr)) { | 
 |  |  |             wrapper1.like("matnr", matnr); | 
 |  |  |         } | 
 |  |  |         if (!Cools.isEmpty(orderNo)) { | 
 |  |  |             wrapper1.like("order_no", orderNo); | 
 |  |  |         } | 
 |  |  |         List<OrderDetl> list = orderDetlService.selectList(wrapper1); | 
 |  |  |  | 
 |  |  |         ArrayList<PickMatParam> maps = new ArrayList<>(); | 
 |  |  |         for (OrderDetl orderDetl : list) { | 
 |  |  |             //剩余可用数量 | 
 |  |  |             double count = orderDetl.getAnfme() - orderDetl.getWorkQty(); | 
 |  |  |             if (count <= 0) { | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             PickMatParam matParam = new PickMatParam(); | 
 |  |  |             matParam.setMatnr(orderDetl.getMatnr()); | 
 |  |  |             matParam.setBatch(orderDetl.getBatch()); | 
 |  |  |             matParam.setOrderNo(orderDetl.getOrderNo()); | 
 |  |  |             matParam.setOrderId(orderDetl.getOrderId()); | 
 |  |  |             matParam.setCount(count); | 
 |  |  |             matParam.setUseCount(count); | 
 |  |  |             maps.add(matParam); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(maps); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  | 
 |  |  |     public void onSale(CombParam param) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 获取库位号 | 
 |  |  |         String locno = param.getLocno(); | 
 |  |  |         String locno = param.getLocNo(); | 
 |  |  |         Node node = nodeService.selectByUuid(locno); | 
 |  |  |         if (Cools.isEmpty(node)) { | 
 |  |  |             throw new CoolException(param.getLocno() + ":库位不存在"); | 
 |  |  |             throw new CoolException(param.getLocNo() + ":库位不存在"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 获取商品列表 | 
 
 |  |  | 
 |  |  |         List<LocDetlDto> locDetlDtos = new ArrayList<>(); | 
 |  |  |         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { | 
 |  |  |             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { | 
 |  |  |                 LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); | 
 |  |  |                 LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() | 
 |  |  |                         ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); | 
 |  |  |                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |         List<LocDetlDto> locDetlDtos = new ArrayList<>(); | 
 |  |  |         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { | 
 |  |  |             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { | 
 |  |  |                 LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); | 
 |  |  |                 LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getBrand() | 
 |  |  |                         ,paramLocDetl.getStandby1(),paramLocDetl.getStandby2(),paramLocDetl.getStandby3(),paramLocDetl.getBoxType1(),paramLocDetl.getBoxType2(),paramLocDetl.getBoxType3()); | 
 |  |  |                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |                     if (!locDetl.getAnfme().equals(adjust.getCount())) { | 
 |  |  |                         // todo 盘点记录 | 
 |  |  |                         // 修改库存 | 
 |  |  |                         if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { | 
 |  |  |                         if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), | 
 |  |  |                                 locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { | 
 |  |  |                             throw new CoolException(locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号修改数量失败"); | 
 |  |  |                         } | 
 |  |  |                         // 保存调整记录 | 
 |  |  | 
 |  |  |         // 删除库存 | 
 |  |  |         for (LocDetl locDetl : locDetls) { | 
 |  |  |             // todo 盘点记录 | 
 |  |  |             if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { | 
 |  |  |             if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), | 
 |  |  |                     locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) { | 
 |  |  |                 throw new CoolException("删除" + locDetl.getLocNo() + "库位," + locDetl.getMatnr() + "商品," + locDetl.getBatch() + "批号库存明细失败"); | 
 |  |  |             } | 
 |  |  |             // 保存调整记录 | 
 
 |  |  | 
 |  |  |                     WrkDetl wrkDetl = iterator.next(); | 
 |  |  |                     if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
 |  |  | //                        orderService.checkComplete(wrkDetl.getOrderNo()); | 
 |  |  |                         if (wrkMast.getIoType() ==  1 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){ | 
 |  |  |                         if (wrkMast.getIoType() ==  1 || wrkMast.getIoType() == 8 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){ | 
 |  |  |                             OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo()); | 
 |  |  |                         } else { | 
 |  |  |                             OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo()); | 
 |  |  | 
 |  |  |                     if (!Cools.isEmpty(wrkMast.getBarcode())) { | 
 |  |  |                         // 保存入库通知档历史档 | 
 |  |  |                         if (!waitPakinLogService.save(wrkMast.getBarcode())) { | 
 |  |  |                             exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); | 
 |  |  | //                            exceptionHandle("保存入库通知档历史档[workNo={0}]失败", wrkMast.getWrkNo()); | 
 |  |  |                         } | 
 |  |  |                         // 删除入库通知档 | 
 |  |  |                         if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) { | 
 |  |  |                             exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); | 
 |  |  | //                            exceptionHandle("删除入库通知档[workNo={0}]失败", wrkMast.getWrkNo()); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  | //                    // 手动入库生成单据 【 上报三方平台 】 | 
 
 |  |  | 
 |  |  |                     // 遍历工作明细,更新库存明细和入库通知档 | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls) { | 
 |  |  |  | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() | 
 |  |  |                         ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (null != locDetl) { | 
 |  |  |                             if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { | 
 |  |  |                             if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() | 
 |  |  |                             ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { | 
 |  |  | //                                exceptionHandle("全板入库 ===>> 更新库存明细失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("全板入库 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 // 拣料途中并板 | 
 |  |  |                 case 8: | 
 |  |  |                     // 根据工作号,查询工作明细档 | 
 |  |  |                     List<WrkDetl> wrkDetls8 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); | 
 |  |  |                     if (wrkDetls8.isEmpty()) { | 
 |  |  |                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                         return FAIL.setMsg("拣料途中并板 ===>> 工作明细档不存在; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                     } | 
 |  |  |                     // 遍历工作明细,更新库存明细和入库通知档 | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls8) { | 
 |  |  |  | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand() | 
 |  |  |                                 , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  |                         if (null != locDetl) { | 
 |  |  |                             if (!locDetlService.updateAnfme(wrkDetl.getAnfme() + locDetl.getAnfme(), wrkMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3() | 
 |  |  |                                     , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) { | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("拣料途中并板 ===>> 更新库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                             } | 
 |  |  |                         } else { | 
 |  |  |                             locDetl = new LocDetl(); | 
 |  |  |                             locDetl.sync(wrkDetl); | 
 |  |  |                             locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 | 
 |  |  |                             locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 | 
 |  |  |                             locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 | 
 |  |  |                             locDetl.setModiTime(now); | 
 |  |  |                             locDetl.setAppeTime(now); | 
 |  |  |                             if (!locDetlService.insert(locDetl)) { | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("拣料途中并板 ===>> 添加库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                     wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), | 
 |  |  |                                     wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("拣料途中并板 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 // 拣料入库 | 
 |  |  |                 case 53: | 
 |  |  |                     // 根据工作号,查询工作明细档 | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls53) { | 
 |  |  |  | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() | 
 |  |  |                                 ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (null != locDetl) { | 
 |  |  |                             if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { | 
 |  |  |                             if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() | 
 |  |  |                                     ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { | 
 |  |  | //                                exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  | 
 |  |  |                     // 修改库存明细数量,如无库存,曾新增 | 
 |  |  |                     for (WrkDetl wrkDetl:wrkDetls54) { | 
 |  |  |  | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() | 
 |  |  |                                 ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (null != locDetl) { | 
 |  |  |                             if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { | 
 |  |  |                             if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() | 
 |  |  |                                     ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { | 
 |  |  | //                                exceptionHandle("并板入库 ===>> 修改库存明细数量失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("并板入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  | 
 |  |  |                             locDetl.setModiTime(now); | 
 |  |  |                             locDetl.setAppeTime(now); | 
 |  |  |                             if (!locDetlService.insert(locDetl)) { | 
 |  |  | //                                exceptionHandle("并板入库 ===>> 新增库存明细失败;[workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr()); | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("并板入库 ===>> 新增库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         // 更新订单完成数量 | 
 |  |  |                         OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(), wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         try { | 
 |  |  |                             if(!Cools.isEmpty(orderDetlPakin)){ | 
 |  |  |                                 if(!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakin.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("并板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } catch (Exception ignore){ | 
 |  |  |  | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                     // 修改库位状态 Q ====>> F | 
 |  |  |                     if (locMast.getLocSts().equals("Q")) { | 
 |  |  | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 // 并板途中捡料 | 
 |  |  |                 case 108: | 
 |  |  |                     // 根据工作号,查询工作明细档 | 
 |  |  |                     List<WrkDetl> wrkDetls108 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); | 
 |  |  |                     if (wrkDetls108.isEmpty()) { | 
 |  |  |                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                         return FAIL.setMsg("并板途中捡料 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                     } | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls108) { | 
 |  |  |                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand() | 
 |  |  |                                 ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         if (null != locDetl) { | 
 |  |  |                             if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3() | 
 |  |  |                                     ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) { | 
 |  |  |                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                 return FAIL.setMsg("并板途中捡料 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  |                         // 更新订单完成数量 | 
 |  |  |                         OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                 wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3()); | 
 |  |  |                         try { | 
 |  |  |                             if(!Cools.isEmpty(orderDetlPakout)){ | 
 |  |  |                                 if(!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), | 
 |  |  |                                         orderDetlPakout.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(), | 
 |  |  |                                         wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3(),wrkDetl.getAnfme())){ | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("并板途中捡料 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } catch (Exception ignore){} | 
 |  |  |                     } | 
 |  |  |                     break; | 
 |  |  |                 // 空板出库 | 
 |  |  |                 case 110: | 
 |  |  |                     // 修改库位状态 R ===>> O | 
 
 |  |  | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |     </sql> | 
 |  |  |     <sql id="batchSeqNew"> | 
 |  |  |         <choose> | 
 |  |  |             <when test="batch != null and batch != ''"> | 
 |  |  |                 and batch = #{batch} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (batch IS NULL OR batch = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="brand != null and brand != ''"> | 
 |  |  |                 and brand = #{brand} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (brand IS NULL OR brand = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby1 != null and standby1 != ''"> | 
 |  |  |                 and standby1 = #{standby1} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby1 IS NULL OR standby1 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby2 != null and standby2 != ''"> | 
 |  |  |                 and standby2 = #{standby2} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby2 IS NULL OR standby2 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby3 != null and standby3 != ''"> | 
 |  |  |                 and standby3 = #{standby3} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby3 IS NULL OR standby3 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType1 != null and boxType1 != ''"> | 
 |  |  |                 and box_type1 = #{boxType1} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type1 IS NULL OR box_type1 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType2 != null and boxType2 != ''"> | 
 |  |  |                 and box_type2 = #{boxType2} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type2 IS NULL OR box_type2 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType3 != null and boxType3 != ''"> | 
 |  |  |                 and box_type3 = #{boxType3} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type3 IS NULL OR box_type3 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |     </sql> | 
 |  |  |  | 
 |  |  |     <sql id="selectAllSql"> | 
 |  |  |         <if test="locNo!=null and locNo!='' "> | 
 |  |  | 
 |  |  |  | 
 |  |  |     <select id="selectItem" resultMap="BaseResultMap"> | 
 |  |  |         select top 1 * | 
 |  |  |         from asr_loc_detl | 
 |  |  |         from asr_loc_detl d | 
 |  |  |         where 1=1 | 
 |  |  |         and loc_no = #{locNo} | 
 |  |  |         and matnr = #{matnr} | 
 |  |  | 
 |  |  |         where 1=1 | 
 |  |  |         and loc_no = #{locNo} | 
 |  |  |         and matnr = #{matnr} | 
 |  |  |         <include refid="batchSeq"></include> | 
 |  |  |         <include refid="batchSeqNew"></include> | 
 |  |  |     </delete> | 
 |  |  |  | 
 |  |  |     <update id="updateAnfme"> | 
 |  |  | 
 |  |  |         where 1=1 | 
 |  |  |         and loc_no = #{locNo} | 
 |  |  |         and matnr = #{matnr} | 
 |  |  |         <include refid="batchSeq"></include> | 
 |  |  |         <include refid="batchSeqNew"></include> | 
 |  |  |     </update> | 
 |  |  |  | 
 |  |  |     <sql id="stockOutCondition"> | 
 
 |  |  | 
 |  |  |         <include refid="standbyAll"></include> | 
 |  |  |     </update> | 
 |  |  |  | 
 |  |  |     <update id="increaseWorkQtyByOrderNo"> | 
 |  |  |         update man_order_detl | 
 |  |  |         set work_qty = work_qty + #{qty} | 
 |  |  |         where 1=1 | 
 |  |  |         and order_no = #{orderNo} | 
 |  |  |         and matnr = #{matnr} | 
 |  |  |         <choose> | 
 |  |  |             <when test="batch != null and batch != ''"> | 
 |  |  |                 and batch = #{batch} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (batch IS NULL OR batch = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |     </update> | 
 |  |  |  | 
 |  |  | </mapper> | 
 
 |  |  | 
 |  |  |     </resultMap> | 
 |  |  |  | 
 |  |  |     <sql id="standbyAll"> | 
 |  |  |         and batch = #{batch} | 
 |  |  |         and brand = #{brand} | 
 |  |  |         and standby1 = #{standby1} | 
 |  |  |         and standby2 = #{standby2} | 
 |  |  |         and standby3 = #{standby3} | 
 |  |  |         and box_type1 = #{boxType1} | 
 |  |  |         and box_type2 = #{boxType2} | 
 |  |  |         and box_type3 = #{boxType3} | 
 |  |  |         <choose> | 
 |  |  |             <when test="batch != null and batch != ''"> | 
 |  |  |                 and batch = #{batch} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (batch IS NULL OR batch = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="brand != null and brand != ''"> | 
 |  |  |                 and brand = #{brand} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (brand IS NULL OR brand = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby1 != null and standby1 != ''"> | 
 |  |  |                 and standby1 = #{standby1} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby1 IS NULL OR standby1 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby2 != null and standby2 != ''"> | 
 |  |  |                 and standby2 = #{standby2} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby2 IS NULL OR standby2 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="standby3 != null and standby3 != ''"> | 
 |  |  |                 and standby3 = #{standby3} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (standby3 IS NULL OR standby3 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType1 != null and boxType1 != ''"> | 
 |  |  |                 and box_type1 = #{boxType1} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type1 IS NULL OR box_type1 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType2 != null and boxType2 != ''"> | 
 |  |  |                 and box_type2 = #{boxType2} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type2 IS NULL OR box_type2 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |         <choose> | 
 |  |  |             <when test="boxType3 != null and boxType3 != ''"> | 
 |  |  |                 and box_type3 = #{boxType3} | 
 |  |  |             </when> | 
 |  |  |             <otherwise> | 
 |  |  |                 and (box_type3 IS NULL OR box_type3 = '') | 
 |  |  |             </otherwise> | 
 |  |  |         </choose> | 
 |  |  |     </sql> | 
 |  |  |     <sql id="standbyAllMemo"> | 
 |  |  |         --         and line_number = #{lineNumber} |