|  |  | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | @RestController | 
 |  |  | public class InventoryCheckOrderController extends BaseController { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping("/inventoryCheckOrder/select/status/1") | 
 |  |  |     @ManagerAuth() | 
 |  |  |     public R availableTakeCheckSite(){ | 
 |  |  |     public R availableTakeCheckSite() { | 
 |  |  |         return R.ok().add(inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>().eq("status", "1"))); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/nav/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R navList(@RequestParam(required = false) String orderNo){ | 
 |  |  |     public R navList(@RequestParam(required = false) String orderNo) { | 
 |  |  |         EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); | 
 |  |  |         if (!Cools.isEmpty(orderNo)) { | 
 |  |  |             wrapper.like("order_no", orderNo); | 
 |  |  | 
 |  |  |         return R.ok().add(orders); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/nav/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R navList() { | 
 |  |  |         EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); | 
 |  |  |         List<InventoryCheckOrder> orders = inventoryCheckOrderService.selectList(wrapper.eq("status", "1")); | 
 |  |  |         List<String> locNoList = orders.stream().map(InventoryCheckOrder::getOrderNo).distinct().collect(Collectors.toList()); | 
 |  |  |         return R.ok().add(locNoList); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/{id}/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R get(@PathVariable("id") String id) { | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R list(@RequestParam(defaultValue = "1")Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10")Integer limit, | 
 |  |  |                   @RequestParam(required = false)String orderByField, | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam(required = false)String condition, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |     public R list(@RequestParam(defaultValue = "1") Integer curr, | 
 |  |  |                   @RequestParam(defaultValue = "10") Integer limit, | 
 |  |  |                   @RequestParam(required = false) String orderByField, | 
 |  |  |                   @RequestParam(required = false) String orderByType, | 
 |  |  |                   @RequestParam(required = false) String condition, | 
 |  |  |                   @RequestParam Map<String, Object> param) { | 
 |  |  |         EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         allLike(InventoryCheckOrder.class, param.keySet(), wrapper, condition); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  |         if (!Cools.isEmpty(orderByField)) { | 
 |  |  |             wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); | 
 |  |  |         } | 
 |  |  |         return R.ok(inventoryCheckOrderService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()){ | 
 |  |  |     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) { | 
 |  |  |         for (Map.Entry<String, Object> entry : map.entrySet()) { | 
 |  |  |             String val = String.valueOf(entry.getValue()); | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)){ | 
 |  |  |             if (val.contains(RANGE_TIME_LINK)) { | 
 |  |  |                 String[] dates = val.split(RANGE_TIME_LINK); | 
 |  |  |                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); | 
 |  |  |                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @PostMapping (value = "/inventoryCheckOrder/add/auth") | 
 |  |  |     @PostMapping(value = "/inventoryCheckOrder/add/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R add(@RequestBody InventoryCheckOrder inventoryCheckOrder) { | 
 |  |  |         String orderNo = inventoryCheckOrder.getOrderNo(); | 
 |  |  |         long time = new Date().getTime(); | 
 |  |  |         if (Cools.isEmpty(orderNo)) { | 
 |  |  |             switch (inventoryCheckOrder.getArea()){ | 
 |  |  |             switch (inventoryCheckOrder.getArea()) { | 
 |  |  |                 case "堆垛机": | 
 |  |  |                     orderNo = "DDJ"+time; | 
 |  |  |                     orderNo = "DDJ" + time; | 
 |  |  |                     break; | 
 |  |  |                 case "四向库": | 
 |  |  |                     orderNo = "SXK"+time; | 
 |  |  |                     orderNo = "SXK" + time; | 
 |  |  |                     break; | 
 |  |  |                 case "CTU": | 
 |  |  |                     orderNo = "CTU"+time; | 
 |  |  |                     orderNo = "CTU" + time; | 
 |  |  |                     break; | 
 |  |  |             } | 
 |  |  |             inventoryCheckOrder.setOrderNo(orderNo); | 
 |  |  | 
 |  |  |             return R.parse("单据编号已经存在:" + orderNo); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         inventoryCheckOrder.setCreateBy(getUserId().toString()); | 
 |  |  |         inventoryCheckOrder.setCreateBy(getUserId()); | 
 |  |  |         inventoryCheckOrder.setCreateTime(new Date()); | 
 |  |  |         inventoryCheckOrder.setStatus("1"); | 
 |  |  |  | 
 |  |  | 
 |  |  |         return R.ok(orderNo + "新增成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/update/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R update(InventoryCheckOrder inventoryCheckOrder){ | 
 |  |  |         if (Cools.isEmpty(inventoryCheckOrder) || null==inventoryCheckOrder.getId()){ | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/update/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R update(InventoryCheckOrder inventoryCheckOrder) { | 
 |  |  |         if (Cools.isEmpty(inventoryCheckOrder) || null == inventoryCheckOrder.getId()) { | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         inventoryCheckOrderService.updateById(inventoryCheckOrder); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/delete/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R delete(@RequestParam(value="ids[]") Long[] ids){ | 
 |  |  |          for (Long id : ids){ | 
 |  |  |     public R delete(@RequestParam(value = "ids[]") Long[] ids) { | 
 |  |  |         for (Long id : ids) { | 
 |  |  |             inventoryCheckOrderService.deleteById(id); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/inventoryCheckOrder/export/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R export(@RequestBody JSONObject param){ | 
 |  |  |     public R export(@RequestBody JSONObject param) { | 
 |  |  |         EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); | 
 |  |  |         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); | 
 |  |  |         Map<String, Object> map = excludeTrash(param.getJSONObject("inventoryCheckOrder")); | 
 |  |  | 
 |  |  |         wrapper.like("id", condition); | 
 |  |  |         Page<InventoryCheckOrder> page = inventoryCheckOrderService.selectPage(new Page<>(0, 1000), wrapper); | 
 |  |  |         List<Map<String, Object>> result = new ArrayList<>(); | 
 |  |  |         for (InventoryCheckOrder inventoryCheckOrder : page.getRecords()){ | 
 |  |  |         for (InventoryCheckOrder inventoryCheckOrder : page.getRecords()) { | 
 |  |  |             Map<String, Object> map = new HashMap<>(); | 
 |  |  |             map.put("id", inventoryCheckOrder.getId()); | 
 |  |  |             map.put("value", inventoryCheckOrder.getId()); | 
 |  |  | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R query(@RequestBody JSONObject param) { | 
 |  |  |         Wrapper<InventoryCheckOrder> wrapper = new EntityWrapper<InventoryCheckOrder>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); | 
 |  |  |         if (null != inventoryCheckOrderService.selectOne(wrapper)){ | 
 |  |  |         if (null != inventoryCheckOrderService.selectOne(wrapper)) { | 
 |  |  |             return R.parse(BaseRes.REPEAT).add(getComment(InventoryCheckOrder.class, String.valueOf(param.get("key")))); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "创建人") | 
 |  |  |     @TableField("create_by") | 
 |  |  |     private String createBy; | 
 |  |  |     private Long createBy; | 
 |  |  |  | 
 |  |  |     public InventoryCheckOrder() {} | 
 |  |  |  | 
 |  |  |     public InventoryCheckOrder(Integer id,String orderNo,String area,Date createTime,String createBy) { | 
 |  |  |     public InventoryCheckOrder(Integer id,String orderNo,String area,Date createTime,Long createBy) { | 
 |  |  |         this.id = id; | 
 |  |  |         this.orderNo = orderNo; | 
 |  |  |         this.area = area; | 
 
 |  |  | 
 |  |  | package com.zy.asrs.entity; | 
 |  |  |  | 
 |  |  | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; | 
 |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.Date; | 
 |  |  | import org.springframework.format.annotation.DateTimeFormat; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableId; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableName; | 
 |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import io.swagger.annotations.ApiModelProperty; | 
 |  |  | import lombok.Data; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableName; | 
 |  |  | import org.springframework.format.annotation.DateTimeFormat; | 
 |  |  |  | 
 |  |  | import java.io.Serializable; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.Date; | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @TableName("man_Inventory_check_order_detl") | 
 |  |  | 
 |  |  |  | 
 |  |  |     private static final long serialVersionUID = 1L; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     @TableId(value = "id", type = IdType.AUTO) | 
 |  |  |     private Integer id; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     @TableField("order_no") | 
 |  |  |     private String orderNo; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private String matnr; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private String maktx; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private String batch; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private Double anfme; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private String area; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     private String status; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     @TableField("loc_no") | 
 |  |  |     private String locNo; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     @TableField("check_anfme") | 
 |  |  |     private Double checkAnfme; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty(value= "") | 
 |  |  |     @ApiModelProperty(value = "") | 
 |  |  |     @TableField("io_time") | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date ioTime; | 
 |  |  |  | 
 |  |  |     public InventoryCheckOrderDetl() {} | 
 |  |  |     public InventoryCheckOrderDetl() { | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public InventoryCheckOrderDetl(String orderNo,String matnr,String maktx,String batch,Double anfme,String area,String locNo,Date ioTime) { | 
 |  |  |     public InventoryCheckOrderDetl(String orderNo, String matnr, String maktx, String batch, Double anfme, String area, String locNo, Date ioTime) { | 
 |  |  |         this.orderNo = orderNo; | 
 |  |  |         this.matnr = matnr; | 
 |  |  |         this.maktx = maktx; | 
 |  |  | 
 |  |  | //            null    //  | 
 |  |  | //    ); | 
 |  |  |  | 
 |  |  |     public String getIoTime$(){ | 
 |  |  |         if (Cools.isEmpty(this.ioTime)){ | 
 |  |  |     public String getIoTime$() { | 
 |  |  |         if (Cools.isEmpty(this.ioTime)) { | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getStatus$(){ | 
 |  |  |         if (Cools.isEmpty(this.status)){ | 
 |  |  |             return ""; | 
 |  |  |     public String getStatus$() { | 
 |  |  |         if (Cools.isEmpty(this.status)) { | 
 |  |  |             return "待盘"; | 
 |  |  |         } | 
 |  |  |         switch (this.status){ | 
 |  |  |         switch (this.status) { | 
 |  |  |             case "1": | 
 |  |  |                 return "待盘"; | 
 |  |  |             case "2": | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getProfit$(){ | 
 |  |  |         if (Cools.isEmpty(this.status) && !this.status.equals("1")){ | 
 |  |  |     public String getProfit$() { | 
 |  |  |         if (Cools.isEmpty(this.status) || !this.status.equals("1")) { | 
 |  |  |             return "未盘点"; | 
 |  |  |         } | 
 |  |  |         if (Cools.isEmpty(this.anfme) || Cools.isEmpty(this.checkAnfme)){ | 
 |  |  |         if (Cools.isEmpty(this.anfme) || Cools.isEmpty(this.checkAnfme)) { | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |         if (this.anfme > this.checkAnfme){ | 
 |  |  |         if (this.anfme > this.checkAnfme) { | 
 |  |  |             return "盘亏"; | 
 |  |  |         }else if (this.anfme < this.checkAnfme){ | 
 |  |  |         } else if (this.anfme < this.checkAnfme) { | 
 |  |  |             return "盘盈"; | 
 |  |  |         }else { | 
 |  |  |         } else { | 
 |  |  |             return "平"; | 
 |  |  |         } | 
 |  |  |     } | 
 
 |  |  | 
 |  |  |     // 出站口 | 
 |  |  |     private Integer outSite; | 
 |  |  |  | 
 |  |  |     // | 
 |  |  |     private String checkId; | 
 |  |  |  | 
 |  |  |     // 物料编号集合 | 
 |  |  |     private List<LocDetl> locDetls; | 
 |  |  |  | 
 
 |  |  | 
 |  |  |      * @param locDetls 待出库物料 | 
 |  |  |      * @param ioType 入出库类型 | 
 |  |  |      */ | 
 |  |  |     void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId); | 
 |  |  |     void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String checkOrderNo); | 
 |  |  |  | 
 |  |  |     void stockOut(BasDevp staNo, TaskDto taskDto, Long userId); | 
 |  |  |  | 
 
 |  |  | 
 |  |  |     private ManLocDetlMapper manLocDetlMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private InventoryCheckOrderService inventoryCheckOrderService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private AdjDetlService adjDetlService; | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  | 
 |  |  |                 } | 
 |  |  |                 WaitPakin waitPakin = new WaitPakin(); | 
 |  |  |                 waitPakin.sync(mat); | 
 |  |  |                 waitPakin.setWeight(detlDto.getWeight()); | 
 |  |  |                 waitPakin.setBatch(detlDto.getBatch()); | 
 |  |  |                 waitPakin.setZpallet(param.getBarcode());   // 托盘码 | 
 |  |  |                 waitPakin.setIoStatus("N");     // 入出状态 | 
 |  |  | 
 |  |  |                             throw new CoolException(wrkMast.getWrkNo() + "盘点任务," + wrkDetl.getMatnr() + "商品," + wrkDetl.getBatch() + "批号修改数量失败"); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     //如果已经拣料回库,就需要取locNo字段 | 
 |  |  | //                    String locNo =Cools.isEmpty(wrkMast.getLocNo())?  wrkMast.getSourceLocNo():wrkMast.getLocNo(); | 
 |  |  | //                    inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no",locNo)) | 
 |  |  |                     iterator.remove(); | 
 |  |  |                     iterator1.remove(); | 
 |  |  |                 } | 
 
 |  |  | 
 |  |  |     @Resource | 
 |  |  |     private OrderPakoutService orderPakOutService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private InventoryCheckOrderService checkOrderService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private InventoryCheckOrderDetlService checkOrderDetlService; | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public String startupFullPutStore(FullStoreParam param, Long userId) { | 
 |  |  | 
 |  |  |             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); | 
 |  |  |             if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { | 
 |  |  |                 // 启动出库开始 101.出库 | 
 |  |  |                 stockOut(staNo, locDetlDtos, null, userId); | 
 |  |  |                 stockOut(staNo, locDetlDtos, null, userId, null); | 
 |  |  |             } else { | 
 |  |  |                 throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); | 
 |  |  |             } | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { | 
 |  |  |     public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String checkOrderNo) { | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 合并同类项 | 
 |  |  |         Set<String> locNos = new HashSet<>(); | 
 |  |  | 
 |  |  |                 ioType = dto.isAll() ? 101 : 103; | 
 |  |  |             } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { | 
 |  |  |                 ioType = 107; | 
 |  |  |                 if (Cools.isEmpty(checkOrderNo)) { | 
 |  |  |                     checkOrderNo = DateUtils.createTimeStamp(); | 
 |  |  |                     InventoryCheckOrder checkOrder = new InventoryCheckOrder(); | 
 |  |  |                     checkOrder.setCreateBy(userId); | 
 |  |  |                     checkOrder.setStatus("1"); | 
 |  |  |                     checkOrder.setCreateTime(new Date()); | 
 |  |  |                     checkOrder.setOrderNo(checkOrderNo); | 
 |  |  |                     checkOrderService.insert(checkOrder); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             assert ioType != null; | 
 |  |  |             // 获取库位 | 
 |  |  | 
 |  |  |                 wrkDetl.setModiUser(userId); | 
 |  |  |                 if (!wrkDetlService.insert(wrkDetl)) { | 
 |  |  |                     throw new CoolException("保存工作档明细失败"); | 
 |  |  |                 } | 
 |  |  |                 if (ioType == 107) { | 
 |  |  |                     InventoryCheckOrderDetl checkOrderDetl = new InventoryCheckOrderDetl(); | 
 |  |  |                     checkOrderDetl.setOrderNo(checkOrderNo); | 
 |  |  |                     checkOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr()); | 
 |  |  |                     checkOrderDetl.setMaktx(detlDto.getLocDetl().getMaktx()); | 
 |  |  |                     checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch()); | 
 |  |  |                     checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo()); | 
 |  |  |                     checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme()); | 
 |  |  |                     checkOrderDetl.setStatus("0"); | 
 |  |  |                     checkOrderDetlService.insert(checkOrderDetl); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 | 
 |  |  | 
 |  |  |             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); | 
 |  |  |             if (locMast.getLocSts().equals("F")) { | 
 |  |  |                 // 启动出库开始 107.盘点出库 | 
 |  |  |                 stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); | 
 |  |  |                 stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId, param.getCheckId()); | 
 |  |  |             } else { | 
 |  |  |                 throw new CoolException("所选库位存在状态不为F的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); | 
 |  |  |             } | 
 |  |  | 
 |  |  | ////                        stockOutRe(wrkMast, wrkDetls); | 
 |  |  | //            } | 
 |  |  | //        } | 
 |  |  |  | 
 |  |  |         if (wrkMast.getIoType() == 107) { | 
 |  |  |             checkOrderDetlService.delete(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo)); | 
 |  |  |         } | 
 |  |  |         // 取消操作人员记录 | 
 |  |  |         wrkMast.setManuType("手动取消"); | 
 |  |  |         wrkMast.setModiUser(userId); | 
 
 |  |  | 
 |  |  |                         locMast.setLocSts("F"); | 
 |  |  |                         locMast.setBarcode(wrkMast.getBarcode()); | 
 |  |  |                         locMast.setIoTime(now); | 
 |  |  |                         //标记该库位已经拣料过 | 
 |  |  |                         locMast.setPdcType("pick"); | 
 |  |  |                         locMast.setModiTime(now); | 
 |  |  |                         if (!locMastService.updateById(locMast)) { | 
 |  |  | //                            exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); | 
 |  |  | 
 |  |  |                         return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); | 
 |  |  |                     } | 
 |  |  |                     for (WrkDetl wrkDetl : wrkDetls57) { | 
 |  |  |                         if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
 |  |  |                             // 更新订单完成数量 | 
 |  |  |                             OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  |                             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())) { | 
 |  |  |                                 if (!orderDetlPakoutService.increaseQtyByOrderNo(orderDetlPakout.getOrderNo(), orderDetlPakout.getMatnr(), orderDetlPakout.getBatch(), orderDetlPakout.getBrand(), orderDetlPakout.getStandby1(), orderDetlPakout.getStandby2(), orderDetlPakout.getStandby3(), orderDetlPakout.getBoxType1(), orderDetlPakout.getBoxType2(), orderDetlPakout.getBoxType3(), wrkDetl.getAnfme())) { | 
 |  |  |                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |                                     return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  |                                 } | 
 |  |  |                             } | 
 |  |  |                         } | 
 |  |  | //                        if (!Cools.isEmpty(wrkDetl.getOrderNo())) { | 
 |  |  | //                            // 更新订单完成数量 | 
 |  |  | //                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); | 
 |  |  | //                            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())) { | 
 |  |  | //                                if (!orderDetlPakoutService.increaseQtyByOrderNo(orderDetlPakout.getOrderNo(), orderDetlPakout.getMatnr(), orderDetlPakout.getBatch(), orderDetlPakout.getBrand(), orderDetlPakout.getStandby1(), orderDetlPakout.getStandby2(), orderDetlPakout.getStandby3(), orderDetlPakout.getBoxType1(), orderDetlPakout.getBoxType2(), orderDetlPakout.getBoxType3(), wrkDetl.getAnfme())) { | 
 |  |  | //                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  | //                                    return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); | 
 |  |  | //                                } | 
 |  |  | //                            } | 
 |  |  | //                        } | 
 |  |  |                     } | 
 |  |  |                     // 修改库位状态 Q ====>> F | 
 |  |  |                     if (locMast.getLocSts().equals("Q")) { | 
 
 |  |  | 
 |  |  |         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); | 
 |  |  |  | 
 |  |  |         //TODO 测试 | 
 |  |  |         StartupDto dto = new StartupDto(); | 
 |  |  |         dto.setCrnNo(1); | 
 |  |  |         dto.setSourceStaNo(devpNo); | 
 |  |  |         dto.setStaNo(103); | 
 |  |  |         LocMast locMastxx = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O")); | 
 |  |  |         dto.setLocNo(locMastxx.getLocNo()); | 
 |  |  |         dto.setWorkNo(Integer.parseInt(Math.random() * 1000 + "")); | 
 |  |  | //        StartupDto dto = new StartupDto(); | 
 |  |  | //        dto.setCrnNo(1); | 
 |  |  | //        dto.setSourceStaNo(devpNo); | 
 |  |  | //        dto.setStaNo(103); | 
 |  |  | //        LocMast locMastxx = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O")); | 
 |  |  | //        dto.setLocNo(locMastxx.getLocNo()); | 
 |  |  | //        dto.setWorkNo(Integer.parseInt(Math.random() * 1000 + "")); | 
 |  |  |  | 
 |  |  |         //StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); | 
 |  |  |         StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); | 
 |  |  |         int workNo = dto.getWorkNo(); | 
 |  |  |         Date now = new Date(); | 
 |  |  |         // 生成工作档 | 
 
 |  |  | 
 |  |  |      * | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Scheduled(cron = "0/3 * * * * ? ") | 
 |  |  |     public void execute4() { | 
 |  |  |         List<String> strings = nccCkPddWmsService.selectPdd(); | 
 |  |  |         for (String string : strings) { | 
 |  |  |             List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1).eq("FBILLFLAG", 4).eq("hdr", 0).eq("bdr", 0)); | 
 |  |  |             ReturnT<String> returnT = planOrderHandler.start4(wmsFlag); | 
 |  |  |             if (!returnT.isSuccess()) { | 
 |  |  |                 for (NccCkPddWms wms : wmsFlag) { | 
 |  |  |                     wms.setWmsMemo(returnT.getMsg()); | 
 |  |  |                     wms.setWmsFlag(0); | 
 |  |  |                     nccCkPddWmsService.updateById(wms); | 
 |  |  |                 } | 
 |  |  |                 log.error(returnT.getMsg()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | //    @Scheduled(cron = "0/3 * * * * ? ") | 
 |  |  | //    public void execute4() { | 
 |  |  | //        List<String> strings = nccCkPddWmsService.selectPdd(); | 
 |  |  | //        for (String string : strings) { | 
 |  |  | //            List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1).eq("FBILLFLAG", 4).eq("hdr", 0).eq("bdr", 0)); | 
 |  |  | //            ReturnT<String> returnT = planOrderHandler.start4(wmsFlag); | 
 |  |  | //            if (!returnT.isSuccess()) { | 
 |  |  | //                for (NccCkPddWms wms : wmsFlag) { | 
 |  |  | //                    wms.setWmsMemo(returnT.getMsg()); | 
 |  |  | //                    wms.setWmsFlag(0); | 
 |  |  | //                    nccCkPddWmsService.updateById(wms); | 
 |  |  | //                } | 
 |  |  | //                log.error(returnT.getMsg()); | 
 |  |  | //            } | 
 |  |  | //        } | 
 |  |  | //    } | 
 |  |  | } | 
 
 |  |  | 
 |  |  |      * | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Transactional | 
 |  |  |     public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) { | 
 |  |  |         try { | 
 |  |  |             InventoryCheckOrder param = new InventoryCheckOrder(); | 
 |  |  |             InventoryCheckOrderDetl checkOrderDetl = null; | 
 |  |  |             for (NccCkPddWms nccScZkmxbWms : wmsFlag) { | 
 |  |  |                 log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); | 
 |  |  |                 Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm()); | 
 |  |  |                 if (Cools.isEmpty(mat)) { | 
 |  |  |                     throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品"); | 
 |  |  |                 } | 
 |  |  |                 checkOrderDetl = new InventoryCheckOrderDetl(); | 
 |  |  |                 checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm()); | 
 |  |  |                 checkOrderDetl.setMaktx(mat.getMaktx()); | 
 |  |  |                 checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode()); | 
 |  |  |                 checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue()); | 
 |  |  |                 checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode()); | 
 |  |  |                 inventoryCheckOrderDetlService.insert(checkOrderDetl); | 
 |  |  |                 nccScZkmxbWms.setWmsFlag(1); | 
 |  |  |                 param.setOrderNo(nccScZkmxbWms.getVbillcode()); | 
 |  |  |                 param.setCreateBy(nccScZkmxbWms.getPdrmc()); | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |             param.setCreateTime(new Date()); | 
 |  |  |             param.setStatus("1"); | 
 |  |  |             inventoryCheckOrderService.insert(param); | 
 |  |  |             nccCkPddWmsService.updateBatchById(wmsFlag); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  |             return FAIL.setMsg(e.getMessage()); | 
 |  |  |         } | 
 |  |  |         return SUCCESS; | 
 |  |  |     } | 
 |  |  | //    @Transactional | 
 |  |  | //    public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) { | 
 |  |  | //        try { | 
 |  |  | //            InventoryCheckOrder param = new InventoryCheckOrder(); | 
 |  |  | //            InventoryCheckOrderDetl checkOrderDetl = null; | 
 |  |  | //            for (NccCkPddWms nccScZkmxbWms : wmsFlag) { | 
 |  |  | //                log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); | 
 |  |  | //                Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm()); | 
 |  |  | //                if (Cools.isEmpty(mat)) { | 
 |  |  | //                    throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品"); | 
 |  |  | //                } | 
 |  |  | //                checkOrderDetl = new InventoryCheckOrderDetl(); | 
 |  |  | //                checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm()); | 
 |  |  | //                checkOrderDetl.setMaktx(mat.getMaktx()); | 
 |  |  | //                checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode()); | 
 |  |  | //                checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue()); | 
 |  |  | //                checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode()); | 
 |  |  | //                inventoryCheckOrderDetlService.insert(checkOrderDetl); | 
 |  |  | //                nccScZkmxbWms.setWmsFlag(1); | 
 |  |  | //                param.setOrderNo(nccScZkmxbWms.getVbillcode()); | 
 |  |  | //                param.setCreateBy(nccScZkmxbWms.getPdrmc()); | 
 |  |  | // | 
 |  |  | //            } | 
 |  |  | //            param.setCreateTime(new Date()); | 
 |  |  | //            param.setStatus("1"); | 
 |  |  | //            inventoryCheckOrderService.insert(param); | 
 |  |  | //            nccCkPddWmsService.updateBatchById(wmsFlag); | 
 |  |  | //        } catch (Exception e) { | 
 |  |  | //            e.printStackTrace(); | 
 |  |  | //            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
 |  |  | //            return FAIL.setMsg(e.getMessage()); | 
 |  |  | //        } | 
 |  |  | //        return SUCCESS; | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 
 |  |  | 
 |  |  |     ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} | 
 |  |  |     ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} | 
 |  |  |     ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} | 
 |  |  |     ,{field: 'weight', align: 'center',title: '单箱净重', hide: true} | 
 |  |  |     //,{field: 'weight', align: 'center',title: '单箱净重', hide: true} | 
 |  |  |     ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} | 
 |  |  |     ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} | 
 |  |  |     ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} | 
 |  |  | 
 |  |  |     ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} | 
 |  |  |     ,{field: 'batch', align: 'center',title: '批次'} | 
 |  |  |     ,{field: 'anfme', align: 'center',title: '数量', hide: false} | 
 |  |  |     ,{field: 'weight', align: 'center',title: '辅数量'} | 
 |  |  |     ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false} | 
 |  |  |     ,{field: 'specs', align: 'center',title: '规格', hide: false} | 
 |  |  |     ,{field: 'model', align: 'center',title: '型号'} | 
 |  |  | 
 |  |  |     ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} | 
 |  |  |     ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} | 
 |  |  |     ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} | 
 |  |  |     ,{field: 'weight', align: 'center',title: '辅数量'} | 
 |  |  |     ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} | 
 |  |  |     ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} | 
 |  |  |     ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} | 
 
 |  |  | 
 |  |  |             tableMerge.render(this); | 
 |  |  |             limit(); | 
 |  |  |             getOutBound(); | 
 |  |  |             getCheckOrder(); | 
 |  |  |         } | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     layer.msg('请先添加盘点库存', {icon: 2}); | 
 |  |  |                 } else { | 
 |  |  |                     var staNo = $("#staNoSelect").val(); | 
 |  |  |                     var checkId = $("#checkIdSelect").val(); | 
 |  |  |                     if (staNo === "" || staNo === null){ | 
 |  |  |                         layer.msg("请选择盘点站", {icon: 2}); | 
 |  |  |                         return; | 
 |  |  |                     } | 
 |  |  |                     let param = { | 
 |  |  |                         outSite: staNo, | 
 |  |  |                         checkId: checkId, | 
 |  |  |                         locDetls: locDetlData | 
 |  |  |                     } | 
 |  |  |                     $.ajax({ | 
 |  |  | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     // 获取盘点单 | 
 |  |  |     function getCheckOrder(){ | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+"/inventoryCheckOrder/nav/auth", | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             async: false, | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     var tpl = $("#takeCheckSelectTemplate").html(); | 
 |  |  |                     var template = Handlebars.compile(tpl); | 
 |  |  |                     var html = template(res); | 
 |  |  |                     $('#checkIdSelect').append(html); | 
 |  |  |                     form.render('select'); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     top.location.href = baseUrl+"/"; | 
 |  |  |                 }else { | 
 |  |  |                     layer.msg(res.msg) | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }) | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     $(document).on('click','#mat-query', function () { | 
 |  |  |         let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); | 
 |  |  |         locDetlLayerIdx = layer.open({ | 
 
 |  |  | 
 |  |  |     <!--    </div>--> | 
 |  |  | <!--    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="submitERP"><i class="layui-icon"></i>提交ERP</button>--> | 
 |  |  |     <button id="submitERP" class="layui-btn icon-btn btn-add" lay-event="submitERP"><i class="layui-icon"></i>提交ERP</button> | 
 |  |  |     <button id="showFormBtn" class="layui-btn icon-btn"  lay-submit> | 
 |  |  |         <i class="layui-icon"></i>添加单据 | 
 |  |  |     </button> | 
 |  |  | <!--    <button id="showFormBtn" class="layui-btn icon-btn"  lay-submit>--> | 
 |  |  | <!--        <i class="layui-icon"></i>添加单据--> | 
 |  |  | <!--    </button>--> | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <!-- 行工具栏 --> | 
 
 |  |  | 
 |  |  |                 <select id="staNoSelect" lay-verify="required"> | 
 |  |  |                     <option value="">请选择站点</option> | 
 |  |  |                 </select> | 
 |  |  |  | 
 |  |  |                 <!-- 1.选择盘点单 --> | 
 |  |  |                 <span id="checkId">盘点单:</span> | 
 |  |  |                 <select id="checkIdSelect" lay-verify="required"> | 
 |  |  |                     <option value="">请选择盘点单</option> | 
 |  |  |                 </select> | 
 |  |  |                 <!-- 2.启动出库 --> | 
 |  |  |                 <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">盘点出库</button> | 
 |  |  |             </div> | 
 |  |  | 
 |  |  |     {{/each}} | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <script type="text/template" id="takeCheckSelectTemplate"> | 
 |  |  |     {{#each data}} | 
 |  |  |     <option value="{{this}}">{{this}}</option> | 
 |  |  |     {{/each}} | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> | 
 |  |  | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> | 
 |  |  | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |