自动化立体仓库 - WMS系统
cca40ca8d275faa8b5cc9501ce4f09b81cfbd7fc..2e82ef6fd6dfbcb1eb88a8d4b705eae7fb99065b
14 小时以前 zhang
123
2e82ef 对比 | 目录
22 小时以前 zhang
123
ac46ea 对比 | 目录
22 小时以前 zhang
123
949488 对比 | 目录
23 小时以前 zhang
123
d6a7dc 对比 | 目录
20个文件已修改
762 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/InventoryCheckOrderController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/StockOutParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WorkService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/WcsController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/PlanOrderTask.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/asrs/WrkDetlMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/pakStore/locCheckOut.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/inventoryCheckOrder/inventoryCheckOrder.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pakStore/locCheckOut.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/InventoryCheckOrderController.java
@@ -22,6 +22,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
@RestController
public class InventoryCheckOrderController extends BaseController {
@@ -63,14 +64,14 @@
    @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);
@@ -82,6 +83,15 @@
        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) {
@@ -90,24 +100,26 @@
    @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]));
@@ -117,21 +129,21 @@
        }
    }
    @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);
@@ -142,7 +154,7 @@
            return R.parse("单据编号已经存在:" + orderNo);
        }
        inventoryCheckOrder.setCreateBy(getUserId().toString());
        inventoryCheckOrder.setCreateBy(getUserId());
        inventoryCheckOrder.setCreateTime(new Date());
        inventoryCheckOrder.setStatus("1");
@@ -150,10 +162,10 @@
        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);
@@ -162,8 +174,8 @@
    @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();
@@ -171,7 +183,7 @@
    @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"));
@@ -187,7 +199,7 @@
        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());
@@ -200,7 +212,7 @@
    @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();
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -247,6 +247,28 @@
        return R.ok().add(matParam);
    }
    @RequestMapping(value = "/mat/auth")
    @ManagerAuth
    public R pdaSearchV3(@RequestParam String matnr) {
        EntityWrapper<NccJcQilibcBarcodeflowWms> wrapper = new EntityWrapper<>();
        wrapper.eq("VBARCODE", matnr).orderBy("ts", false);
        NccJcQilibcBarcodeflowWms nccJcQilibcBarcodeflowWms = nccJcQilibcBarcodeflowWmsService.selectOne(wrapper);
        if (null == nccJcQilibcBarcodeflowWms) {
            return R.error("未找到此条码");
        } else {
            if (!nccJcQilibcBarcodeflowWms.getInfla().equals("出库")) {
                return R.error("该条码最后一次不是出库");
            }
        }
        Mat mat = matService.selectByMatnr(nccJcQilibcBarcodeflowWms.getWlbm());
        MatParam matParam = new MatParam();
        Synchro.Copy(mat, matParam);
        matParam.setBatch(nccJcQilibcBarcodeflowWms.getVbatchcode());
        matParam.setAnfme(nccJcQilibcBarcodeflowWms.getAsnnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getAsnnum().doubleValue());
        matParam.setAnfme2(nccJcQilibcBarcodeflowWms.getNastnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getNastnum().doubleValue());
        return R.ok().add(matParam);
    }
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam) {
src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java
@@ -54,11 +54,11 @@
     */
    @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;
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java
@@ -1,16 +1,17 @@
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")
@@ -18,48 +19,49 @@
    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;
@@ -81,18 +83,18 @@
//            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":
@@ -102,18 +104,18 @@
        }
    }
    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 "平";
        }
    }
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -32,21 +32,21 @@
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @ApiModelProperty(value = "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 订单内码
     */
    @ApiModelProperty(value= "订单内码")
    @ApiModelProperty(value = "订单内码")
    @TableField("order_id")
    private Long orderId;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    @ApiModelProperty(value = "单据编号")
    @TableField("order_no")
    private String orderNo;
@@ -54,311 +54,312 @@
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    @ApiModelProperty(value = "数量")
    private Double anfme;
    /**
     * 作业数量
     *
     *  入库 : 组托完成,组托档、工作档、入库完成数量
     *  出库 : 工作档、出库完成数量
     * <p>
     * 入库 : 组托完成,组托档、工作档、入库完成数量
     * 出库 : 工作档、出库完成数量
     */
    @ApiModelProperty(value= "作业数量")
    @ApiModelProperty(value = "作业数量")
    @TableField("work_qty")
    private Double workQty;
    /**
     * 完成数量
     *
     *  入库 : qty 👆
     *  出库 : qty 👆
     * <p>
     * 入库 : qty 👆
     * 出库 : qty 👆
     */
    @ApiModelProperty(value= "完成数量")
    @ApiModelProperty(value = "完成数量")
    private Double qty;
    /**
     * 商品编码
     */
    @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 String specs;
    /**
     * 型号
     */
    @ApiModelProperty(value= "型号")
    @ApiModelProperty(value = "型号")
    private String model;
    /**
     * 颜色
     */
    @ApiModelProperty(value= "颜色")
    @ApiModelProperty(value = "颜色")
    private String color;
    /**
     * 品牌
     */
    @ApiModelProperty(value= "品牌")
    @ApiModelProperty(value = "品牌")
    private String brand;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    @ApiModelProperty(value = "单位")
    private String unit;
    /**
     * 单价
     */
    @ApiModelProperty(value= "单价")
    @ApiModelProperty(value = "单价")
    private Double price;
    /**
     * sku
     */
    @ApiModelProperty(value= "sku")
    @ApiModelProperty(value = "sku")
    private String sku;
    /**
     * 单位量
     */
    @ApiModelProperty(value= "单位量")
    @ApiModelProperty(value = "单位量")
    private Double units;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    @ApiModelProperty(value = "条码")
    private String barcode;
    /**
     * 产地
     */
    @ApiModelProperty(value= "产地")
    @ApiModelProperty(value = "产地")
    private String origin;
    /**
     * 厂家
     */
    @ApiModelProperty(value= "仓库编码")
    @ApiModelProperty(value = "仓库编码")
    private String manu;
    /**
     * 生产日期
     */
    @ApiModelProperty(value= "生产日期")
    @ApiModelProperty(value = "生产日期")
    @TableField("manu_date")
    private String manuDate;
    /**
     * 品项数
     */
    @ApiModelProperty(value= "品项数")
    @ApiModelProperty(value = "品项数")
    @TableField("item_num")
    private String itemNum;
    /**
     * 安全库存量
     */
    @ApiModelProperty(value= "安全库存量")
    @ApiModelProperty(value = "安全库存量")
    @TableField("safe_qty")
    private Double safeQty;
    /**
     * 重量
     */
    @ApiModelProperty(value= "重量")
    @ApiModelProperty(value = "重量")
    private Double weight;
    /**
     * 长度
     */
    @ApiModelProperty(value= "长度")
    @ApiModelProperty(value = "长度")
    @TableField("man_length")
    private Double manLength;
    /**
     * 体积
     */
    @ApiModelProperty(value= "体积")
    @ApiModelProperty(value = "体积")
    private Double volume;
    /**
     * 三方编码
     */
    @ApiModelProperty(value= "三方编码")
    @ApiModelProperty(value = "三方编码")
    @TableField("three_code")
    private String threeCode;
    /**
     * 供应商
     */
    @ApiModelProperty(value= "供应商")
    @ApiModelProperty(value = "供应商")
    private String supp;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    @ApiModelProperty(value = "供应商编码")
    @TableField("supp_code")
    private String suppCode;
    /**
     * 是否批次 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否批次 1: 是  0: 否  ")
    @ApiModelProperty(value = "是否批次 1: 是  0: 否  ")
    @TableField("be_batch")
    private Integer beBatch;
    /**
     * 保质期
     */
    @ApiModelProperty(value= "保质期")
    @ApiModelProperty(value = "保质期")
    @TableField("dead_time")
    private String deadTime;
    /**
     * 预警天数
     */
    @ApiModelProperty(value= "预警天数")
    @ApiModelProperty(value = "预警天数")
    @TableField("dead_warn")
    private Integer deadWarn;
    /**
     * 制购 1: 制造  2: 采购  3: 外协     、、宜科:  是否确认   1: 确认  2: 未确认
     */
    @ApiModelProperty(value= "制购 1: 制造  2: 采购  3: 外协  ")
    @ApiModelProperty(value = "制购 1: 制造  2: 采购  3: 外协  ")
    private Integer source;
    /**
     * 要求检验 1: 是  0: 否
     */
    @ApiModelProperty(value= "要求检验 1: 是  0: 否  ")
    @ApiModelProperty(value = "要求检验 1: 是  0: 否  ")
    private Integer inspect;
    /**
     * 危险品 1: 是  0: 否
     */
    @ApiModelProperty(value= "危险品 1: 是  0: 否  ")
    @ApiModelProperty(value = "危险品 1: 是  0: 否  ")
    private Integer danger;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
    @ApiModelProperty(value = "状态 1: 正常  0: 禁用  ")
    private Integer status;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    @ApiModelProperty(value = "添加人员")
    @TableField("create_by")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @ApiModelProperty(value = "添加时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @ApiModelProperty(value = "修改人员")
    @TableField("update_by")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @ApiModelProperty(value = "修改时间")
    @TableField("update_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    @ApiModelProperty(value = "备注")
    private String memo;
    /**
     * 状态 0:未知,1:入库,2:出库
     */
    @ApiModelProperty(value= "入出库类型(0:未知,1:入库,2:出库)")
    @ApiModelProperty(value = "入出库类型(0:未知,1:入库,2:出库)")
    @TableField("pakin_pakout_status")
    private Integer pakinPakoutStatus;
    /**
     * 行号
     */
    @ApiModelProperty(value= "行号")
    @ApiModelProperty(value = "行号")
    @TableField("line_number")
    private Long lineNumber;
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    @ApiModelProperty(value = "备用1")
    private String standby1 = "";
    /**
     * 备用2
     */
    @ApiModelProperty(value= "备用2")
    @ApiModelProperty(value = "备用2")
    private String standby2 = "";
    /**
     * 备用3
     */
    @ApiModelProperty(value= "备用3")
    @ApiModelProperty(value = "备用3")
    private String standby3 = "";
    /**
     * 备用1
     */
    @ApiModelProperty(value= "备用1")
    @ApiModelProperty(value = "备用1")
    @TableField("box_type1")
    private String boxType1 = "";
    /**
     * 备用2
     */
    @ApiModelProperty(value= "备用2")
    @ApiModelProperty(value = "备用2")
    @TableField("box_type2")
    private String boxType2 = "";
    /**
     * 备用3
     */
    @ApiModelProperty(value= "备用3")
    @ApiModelProperty(value = "备用3")
    @TableField("box_type3")
    private String boxType3 = "";
    @ApiModelProperty(value= "备注")
    @ApiModelProperty(value = "备注")
    @TableField("remark")
    private String remark;
    public OrderDetl() {}
    public OrderDetl() {
    }
    public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double manLength, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
        this.orderId = orderId;
@@ -450,18 +451,20 @@
    }
    public String getOrderId$(){
    public String getOrderId$() {
        OrderService service = SpringUtils.getBean(OrderService.class);
        Order order = service.selectById(this.orderId);
        if (!Cools.isEmpty(order)){
        if (!Cools.isEmpty(order)) {
            return String.valueOf(order.getId());
        }
        return null;
    }
    public String getBeBatch$(){
        if (null == this.beBatch){ return null; }
        switch (this.beBatch){
    public String getBeBatch$() {
        if (null == this.beBatch) {
            return null;
        }
        switch (this.beBatch) {
            case 1:
                return "是";
            case 0:
@@ -471,9 +474,11 @@
        }
    }
    public String getSource$(){
        if (null == this.source){ return null; }
        switch (this.source){
    public String getSource$() {
        if (null == this.source) {
            return null;
        }
        switch (this.source) {
            case 1:
                return "制造";
            case 2:
@@ -485,9 +490,11 @@
        }
    }
    public String getInspect$(){
        if (null == this.inspect){ return null; }
        switch (this.inspect){
    public String getInspect$() {
        if (null == this.inspect) {
            return null;
        }
        switch (this.inspect) {
            case 1:
                return "是";
            case 0:
@@ -497,9 +504,11 @@
        }
    }
    public String getDanger$(){
        if (null == this.danger){ return null; }
        switch (this.danger){
    public String getDanger$() {
        if (null == this.danger) {
            return null;
        }
        switch (this.danger) {
            case 1:
                return "是";
            case 0:
@@ -509,9 +518,11 @@
        }
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
    public String getStatus$() {
        if (null == this.status) {
            return null;
        }
        switch (this.status) {
            case 1:
                return "正常";
            case 0:
@@ -521,33 +532,33 @@
        }
    }
    public String getCreateBy$(){
    public String getCreateBy$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.createBy);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
    public String getCreateTime$() {
        if (Cools.isEmpty(this.createTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
    public String getUpdateBy$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.updateBy);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
    public String getUpdateTime$() {
        if (Cools.isEmpty(this.updateTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
@@ -563,18 +574,47 @@
        return null;
    }
    public String getQty$(){
        if (getAnfme().equals(getQty())){
    public String getQty$() {
        if (getAnfme().equals(getQty())) {
            return "已完成";
        }
        return "未完成";
    }
    public boolean beSimilar(OrderDetl orderDetl){
    public boolean beSimilar(OrderDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.batch.equals(orderDetl.getBatch())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
                        && this.standby3.equals(orderDetl.getStandby3())
                        && this.boxType1.equals(orderDetl.getBoxType1())
                        && this.boxType2.equals(orderDetl.getBoxType2())
                        && this.boxType3.equals(orderDetl.getBoxType3())
        );
    }
    public boolean beSimilar(WrkDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.batch.equals(orderDetl.getBatch())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
                        && this.standby3.equals(orderDetl.getStandby3())
                        && this.boxType1.equals(orderDetl.getBoxType1())
                        && this.boxType2.equals(orderDetl.getBoxType2())
                        && this.boxType3.equals(orderDetl.getBoxType3())
        );
    }
    public boolean beSimilarByWrkDetl(WrkDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
                        && this.brand.equals(orderDetl.getBrand())
                        && this.standby1.equals(orderDetl.getStandby1())
                        && this.standby2.equals(orderDetl.getStandby2())
@@ -596,7 +636,7 @@
    }
    public boolean beSimilar2(OrderDetl orderDetl){
    public boolean beSimilar2(OrderDetl orderDetl) {
        return (
                this.orderNo.equals(orderDetl.getOrderNo())
                        && this.matnr.equals(orderDetl.getMatnr())
@@ -628,9 +668,9 @@
        return null;
    }
    public String getPakinPakoutStatus$(){
    public String getPakinPakoutStatus$() {
        if (Cools.isEmpty(this.pakinPakoutStatus)) return null;
        switch (this.pakinPakoutStatus){
        switch (this.pakinPakoutStatus) {
            case 1:
                return "Y";
            case 2:
@@ -640,19 +680,19 @@
        }
    }
    public String getBoxType1$(){
    public String getBoxType1$() {
        BasProcessProceduresService service = SpringUtils.getBean(BasProcessProceduresService.class);
        BasProcessProcedures processProcedures = service.selectOne(new EntityWrapper<BasProcessProcedures>().eq("box_type", this.boxType1));
        if (!Cools.isEmpty(processProcedures)){
        if (!Cools.isEmpty(processProcedures)) {
            return String.valueOf(processProcedures.getBoxSpecs());
        }
        return this.boxType1;
    }
    public String getBoxType2$(){
    public String getBoxType2$() {
        BasQualityTestingService service = SpringUtils.getBean(BasQualityTestingService.class);
        BasQualityTesting basQualityTesting = service.selectOne(new EntityWrapper<BasQualityTesting>().eq("box_type", this.boxType1));
        if (!Cools.isEmpty(basQualityTesting)){
        if (!Cools.isEmpty(basQualityTesting)) {
            return String.valueOf(basQualityTesting.getBoxSpecs());
        }
        return this.boxType1;
src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -15,6 +15,9 @@
    // 出站口
    private Integer outSite;
    //
    private String checkId;
    // 物料编号集合
    private List<LocDetl> locDetls;
src/main/java/com/zy/asrs/service/WorkService.java
@@ -38,7 +38,7 @@
     * @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);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -76,6 +76,12 @@
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private AdjDetlService adjDetlService;
    @Resource
@@ -597,6 +603,7 @@
                }
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setWeight(detlDto.getWeight());
                waitPakin.setBatch(detlDto.getBatch());
                waitPakin.setZpallet(param.getBarcode());   // 托盘码
                waitPakin.setIoStatus("N");     // 入出状态
@@ -786,6 +793,9 @@
                            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();
                }
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -293,31 +293,7 @@
        return data;
    }
    private Object processZKCK(Order order, List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
        whsTransBillHeaderVO.setPk_org("FYT");
        whsTransBillHeaderVO.setCotherwhid(order.getItemId());
        whsTransBillHeaderVO.setCtrantypeid("4K-01");
        WhsTransBillBodyVO whsTransBillBodyVO = null;
        List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            whsTransBillBodyVO = new WhsTransBillBodyVO();
            String remark = orderDetl.getRemark();
            //if (!Cools.isEmpty(remark)) {
            //NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
            whsTransBillBodyVO.setNnum(orderDetl.getQty());
            whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
            //}
            whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
        }
        data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
        data.put("WhsTransBillBodyVO", whsTransBillBodyVOS);
        return data;
    }
    private Object processCGDH(List<OrderDetl> orderDetls) {
@@ -325,7 +301,7 @@
        Map<String, Object> data = new HashMap<String, Object>();
        ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
        ic_purchasein_h.setPk_org("FYT");
        ic_purchasein_h.setCwarehouseid("6301");
        //ic_purchasein_h.setCwarehouseid("6301");
        ic_purchasein_h.setCfanaceorgoid("FYT");
        ic_purchasein_b ic_purchasein_b = null;
        List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>();
@@ -344,6 +320,7 @@
                ic_purchasein_b.setCsourcetype(nccCgCgdhdWms.getDhlxbm());
                ic_purchasein_b.setVbatchcode(orderDetl.getBatch());
            }
            ic_purchasein_h.setCwarehouseid(orderDetl.getStandby1());
            ic_purchasein_bs.add(ic_purchasein_b);
        }
        data.put("ic_purchasein_h", ic_purchasein_h);
@@ -351,34 +328,39 @@
        return data;
    }
    /**
     * @param orderDetls
     * @return
     */
    private Object processGENERALOUT(List<OrderDetl> orderDetls) {
    private Object processZKCK(Order order, List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_generalout_h generalout_h = new ic_generalout_h();
        generalout_h.setPk_org("FYT");
        generalout_h.setCwarehouseid("6101");
        ic_generalout_b generalout_b = null;
        List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
        WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
        whsTransBillHeaderVO.setPk_org("FYT");
        whsTransBillHeaderVO.setCotherwhid(order.getItemId());
        whsTransBillHeaderVO.setCtrantypeid("4K-01");
        WhsTransBillBodyVO whsTransBillBodyVO = null;
        List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            generalout_b = new ic_generalout_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                generalout_b.setCmaterialvid(orderDetl.getMatnr());
                generalout_b.setNshouldassistnum(orderDetl.getQty());
                generalout_b.setVbatchcode(orderDetl.getBatch());
            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetl.getBatch()).eq("wlbm", orderDetl.getMatnr()));
            if (nccScPcdaWms == null) {
                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetl.getBatch() + orderDetl.getMatnr());
            }
            ic_purchasein_bs.add(generalout_b);
            whsTransBillBodyVO = new WhsTransBillBodyVO();
            whsTransBillBodyVO.setCstateid(nccScPcdaWms.getVcode());
            String remark = orderDetl.getRemark();
            //if (!Cools.isEmpty(remark)) {
            //NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
            whsTransBillBodyVO.setNnum(orderDetl.getQty());
            whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
            //}
            whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
        }
        data.put("ic_generalout_h", generalout_h);
        data.put("ic_generalout_b", ic_purchasein_bs);
        data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
        data.put("WhsTransBillBodyVO", whsTransBillBodyVOS);
        return data;
    }
    /**
     * @param orderDetls
@@ -398,27 +380,29 @@
        Map<String, Object> data = new HashMap<String, Object>();
        ic_generalout_h generalout_h = new ic_generalout_h();
        generalout_h.setPk_org("FYT");
        generalout_h.setCwarehouseid("6101");
        //generalout_h.setCwarehouseid("6101");
        ic_generalout_b generalout_b = null;
        List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
        for (int i = 0; i < orderDetls.size(); i++) {
            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr()));
            if (nccScPcdaWms == null) {
                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr());
            }
//            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr()));
//            if (nccScPcdaWms == null) {
//                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr());
//            }
            OrderDetl orderDetl = orderDetls.get(i);
            generalout_h.setCwarehouseid(orderDetl.getStandby1());
            generalout_b = new ic_generalout_b();
            generalout_b.setCsourcebillbid(s.get(i));
            generalout_b.setCsourcetype("4K-01");
            generalout_b.setCsourcebillhid(cspecialhid);
            generalout_b.setCmaterialvid(orderDetl.getMatnr());
            generalout_b.setCstateid(nccScPcdaWms.getVcode());
            //generalout_b.setCstateid(nccScPcdaWms.getVcode());
            StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1()));
            generalout_b.setCdptvid(storeType.getDepartmentId());
            generalout_b.setBillmaker(renyuan);
            StoreType storeType2 = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", rukucangku));
            generalout_b.setCotherwhid(rukucangku);
            generalout_b.setCothercalbodyvid(storeType2.getDepartmentId());
            generalout_b.setNshouldassistnum(orderDetl.getQty());
            generalout_b.setVbatchcode(orderDetl.getBatch());
            ic_purchasein_bs.add(generalout_b);
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -94,6 +94,12 @@
    @Resource
    private OrderPakoutService orderPakOutService;
    @Autowired
    private InventoryCheckOrderService checkOrderService;
    @Autowired
    private InventoryCheckOrderDetlService checkOrderDetlService;
    @Override
    @Transactional
    public String startupFullPutStore(FullStoreParam param, Long userId) {
@@ -199,7 +205,7 @@
            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$());
            }
@@ -288,7 +294,7 @@
    @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<>();
@@ -315,6 +321,15 @@
                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;
            // 获取库位
@@ -372,6 +387,17 @@
                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.拣料/盘点/并板出库中
@@ -705,7 +731,7 @@
            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$());
            }
@@ -1408,7 +1434,9 @@
////                        stockOutRe(wrkMast, wrkDetls);
//            }
//        }
        if (wrkMast.getIoType() == 107) {
            checkOrderDetlService.delete(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo));
        }
        // 取消操作人员记录
        wrkMast.setManuType("手动取消");
        wrkMast.setModiUser(userId);
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -188,7 +188,8 @@
            }
        }
        if (complete) {
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) {
            List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId());
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) {
                throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
            }
            List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(order.getOrderNo());
@@ -196,13 +197,27 @@
                OrderDetl orderDetl = new OrderDetl();
                orderDetl.sync(wrkDetl);
                orderDetl.setQty(wrkDetl.getAnfme());
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setOrderId(orderSou.getId());
                orderDetl.setOrderNo(orderSou.getOrderNo());
                orderDetl.setStatus(1);
                orderDetl.setCreateTime(order.getCreateTime());
                orderDetl.setCreateBy(order.getCreateBy());
                orderDetl.setUpdateTime(order.getUpdateTime());
                orderDetl.setUpdateBy(order.getUpdateBy());
                orderDetl.setCreateTime(orderSou.getCreateTime());
                orderDetl.setCreateBy(orderSou.getCreateBy());
                orderDetl.setUpdateTime(orderSou.getUpdateTime());
                orderDetl.setUpdateBy(orderSou.getUpdateBy());
                orderDetl.setId(null);
                //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况
                for (OrderDetl xxx : old) {
                    if (xxx.beSimilar(wrkDetl)) {
                        orderDetl.setRemark(xxx.getRemark());
                    }
                }
                if (Cools.isEmpty(orderDetl.getRemark())) {
                    for (OrderDetl xxx : old) {
                        if (xxx.beSimilarByWrkDetl(wrkDetl)) {
                            orderDetl.setRemark(xxx.getRemark());
                        }
                    }
                }
                if (!orderDetlService.insert(orderDetl)) {
                    throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败");
                }
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -248,6 +248,8 @@
                        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());
@@ -331,19 +333,19 @@
                        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")) {
src/main/java/com/zy/common/web/WcsController.java
@@ -170,15 +170,15 @@
        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();
        // 生成工作档
src/main/java/com/zy/nc/task/PlanOrderTask.java
@@ -183,20 +183,20 @@
     *
     * @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());
//            }
//        }
//    }
}
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java
@@ -270,40 +270,40 @@
     *
     * @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;
//    }
    /**
src/main/resources/mapper/asrs/WrkDetlMapper.xml
@@ -88,9 +88,16 @@
    </update>
    <select id="selectAndLogByOrderNo" resultMap="BaseResultMap">
        select * from asr_wrk_detl where order_no = #{orderNo} and io_type != 53
        select awd.*
        from asr_wrk_detl awd
                 left join asr_wrk_mast awm on awd.wrk_no = awm.wrk_no and awd.io_time = awm.io_time
        where order_no = #{orderNo}
        union
        select * from asr_wrk_detl_log where order_no = #{orderNo} and io_type != 53
        select distinct awdl.*
        from asr_wrk_detl_log awdl
                 left join asr_wrk_mast_log awml on awdl.wrk_no = awml.wrk_no and awdl.io_time = awml.io_time
        where awdl.order_no = #{orderNo}
          and (awml.manu_type is null or awml.manu_type != '手动取消')
    </select>
    <update id="updateInspect">
src/main/webapp/static/js/common.js
@@ -201,7 +201,7 @@
    ,{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}
@@ -227,6 +227,7 @@
    ,{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: '型号'}
@@ -244,7 +245,6 @@
    ,{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}
src/main/webapp/static/js/pakStore/locCheckOut.js
@@ -32,6 +32,7 @@
            tableMerge.render(this);
            limit();
            getOutBound();
            getCheckOrder();
        }
    });
@@ -43,12 +44,14 @@
                    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({
@@ -97,6 +100,30 @@
        })
    }
    // 获取盘点单
    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({
src/main/webapp/views/inventoryCheckOrder/inventoryCheckOrder.html
@@ -151,9 +151,9 @@
    <!--    </div>-->
<!--    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="submitERP"><i class="layui-icon">&#xe681;</i>提交ERP</button>-->
    <button id="submitERP" class="layui-btn icon-btn btn-add" lay-event="submitERP"><i class="layui-icon">&#xe681;</i>提交ERP</button>
    <button id="showFormBtn" class="layui-btn icon-btn"  lay-submit>
        <i class="layui-icon">&#xe654;</i>添加单据
    </button>
<!--    <button id="showFormBtn" class="layui-btn icon-btn"  lay-submit>-->
<!--        <i class="layui-icon">&#xe654;</i>添加单据-->
<!--    </button>-->
</script>
<!-- 行工具栏 -->
src/main/webapp/views/pakStore/locCheckOut.html
@@ -100,6 +100,12 @@
                <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>
@@ -120,6 +126,12 @@
    {{/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>