自动化立体仓库 - WMS系统
1
zhang
3 天以前 6d3b7e69524cdc6fd4c44fe9f37661a19a56c6ff
1
23个文件已修改
490 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetlPakin.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/OrderDetlPakout.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WaitPakin.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WaitPakinLog.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetlLog.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/MatParam.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/OrderDetlPakoutMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OrderDetlPakoutService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OrderDetlPakoutServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccJcQilibcBarcodeflowWms.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/entity/NccScZkmxbWms.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/PlanOrderTask.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/asrs/OrderDetlPakoutMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -240,6 +240,7 @@
        Mat mat = matService.selectByMatnr(nccJcQilibcBarcodeflowWms.getWlbm());
        MatParam matParam = new MatParam();
        Synchro.Copy(mat, matParam);
        matParam.setOrderNo(nccJcQilibcBarcodeflowWms.getZkdh());
        matParam.setBatch(nccJcQilibcBarcodeflowWms.getVbatchcode());
        matParam.setAnfme(nccJcQilibcBarcodeflowWms.getAsnnum() == null ? 0.0D : nccJcQilibcBarcodeflowWms.getAsnnum().doubleValue());
        return R.ok().add(matParam);
src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -7,10 +7,7 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.LocOwnerService;
import com.zy.asrs.service.*;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -337,6 +334,15 @@
        }
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public String getBoxType1$(){
        BasProcessProceduresService service = SpringUtils.getBean(BasProcessProceduresService.class);
        BasProcessProcedures processProcedures = service.selectOne(new EntityWrapper<BasProcessProcedures>().eq("box_type", this.boxType1));
src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -585,6 +586,31 @@
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public boolean beSimilar2(OrderDetl 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())
                        && this.standby3.equals(orderDetl.getStandby3())
                        && this.boxType1.equals(orderDetl.getBoxType1())
                        && this.boxType2.equals(orderDetl.getBoxType2())
                        && this.boxType3.equals(orderDetl.getBoxType3())
        );
    }
    public static OrderDetl find(List<OrderDetl> detlDtos, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) {
        if (Cools.isEmpty(matnr)) {
            return null;
src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -546,6 +547,17 @@
        return this.boxType1;
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public boolean beSimilar(OrderDetlPakin orderDetlPakin){
        return (
                this.orderNo.equals(orderDetlPakin.getOrderNo())
src/main/java/com/zy/asrs/entity/OrderDetlPakout.java
@@ -10,6 +10,7 @@
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -562,6 +563,18 @@
        );
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -7,6 +7,7 @@
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -268,6 +269,16 @@
        return this.boxType1;
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public String getBoxType2$(){
        BasQualityTestingService service = SpringUtils.getBean(BasQualityTestingService.class);
        BasQualityTesting basQualityTesting = service.selectOne(new EntityWrapper<BasQualityTesting>().eq("box_type", this.boxType1));
src/main/java/com/zy/asrs/entity/WaitPakinLog.java
@@ -7,6 +7,7 @@
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasProcessProceduresService;
import com.zy.asrs.service.BasQualityTestingService;
import com.zy.asrs.service.StoreTypeService;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -220,6 +221,15 @@
        }
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public String getInspect$(){
        if (null == this.inspect){ return null; }
        switch (this.inspect){
src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotations.TableName;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -23,302 +24,304 @@
    /**
     * 工作号
     */
    @ApiModelProperty(value= "工作号")
    @ApiModelProperty(value = "工作号")
    @TableField("wrk_no")
    private Integer wrkNo;
    /**
     * 工作时间
     */
    @ApiModelProperty(value= "工作时间")
    @ApiModelProperty(value = "工作时间")
    @TableField("io_time")
    private Date ioTime;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    @ApiModelProperty(value = "数量")
    private Double anfme;
    /**
     * 托盘条码
     */
    @ApiModelProperty(value= "托盘条码")
    @ApiModelProperty(value = "托盘条码")
    private String zpallet;
    /**
     * 物料
     */
    @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 = "单据编号")
    @TableField("order_no")
    private String orderNo;
    /**
     * 规格
     */
    @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: 外协
     */
    @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;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    @ApiModelProperty(value = "修改人员")
    @TableField("modi_user")
    private Long modiUser;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @ApiModelProperty(value = "修改时间")
    @TableField("modi_time")
    private Date modiTime;
    /**
     * 创建者
     */
    @ApiModelProperty(value= "创建者")
    @ApiModelProperty(value = "创建者")
    @TableField("appe_user")
    private Long appeUser;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @ApiModelProperty(value = "添加时间")
    @TableField("appe_time")
    private Date appeTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    @ApiModelProperty(value = "备注")
    private String memo;
    /**
     * 备用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 = "";
    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 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:
@@ -328,9 +331,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:
@@ -342,9 +347,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:
@@ -354,9 +361,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:
@@ -366,33 +375,42 @@
        }
    }
    public String getModiUser$(){
    public String getModiUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.modiUser);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getModiTime$(){
        if (Cools.isEmpty(this.modiTime)){
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public String getModiTime$() {
        if (Cools.isEmpty(this.modiTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
    }
    public String getAppeUser$(){
    public String getAppeUser$() {
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.selectById(this.appeUser);
        if (!Cools.isEmpty(user)){
        if (!Cools.isEmpty(user)) {
            return String.valueOf(user.getUsername());
        }
        return null;
    }
    public String getAppeTime$(){
        if (Cools.isEmpty(this.appeTime)){
    public String getAppeTime$() {
        if (Cools.isEmpty(this.appeTime)) {
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotations.TableName;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.service.StoreTypeService;
import com.zy.common.utils.Synchro;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
@@ -398,6 +399,15 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public String getStandby1$() {
        StoreTypeService service = SpringUtils.getBean(StoreTypeService.class);
        StoreType storeType = service.selectById(this.standby1);
        if (!Cools.isEmpty(storeType)) {
            return String.valueOf(storeType.getStoreName());
        }
        return null;
    }
    public void sync(Object source) {
        Synchro.Copy(source, this);
    }
src/main/java/com/zy/asrs/entity/param/MatParam.java
@@ -196,5 +196,9 @@
     * 备注
     */
    private Integer times = 0;
    /**
     * 单据单号
     */
    private String orderNo;
}
src/main/java/com/zy/asrs/mapper/OrderDetlPakoutMapper.java
@@ -48,6 +48,8 @@
                             @Param("boxType2")String boxType2,
                             @Param("boxType3")String boxType3, @Param("qty")Double qty);
    int  increaseQtyById(@Param("id")Long id, @Param("qty")Double qty);
    int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("brand")String brand,
                        @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3, @Param("boxType1")String boxType1,
                        @Param("boxType2")String boxType2,
src/main/java/com/zy/asrs/service/OrderDetlPakoutService.java
@@ -28,6 +28,7 @@
    boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double qty);
    boolean increaseQtyById(Long id, Double qty);
    /**
     * 入出库任务生成时,更新单据表中作业数量
     * @param orderId
src/main/java/com/zy/asrs/service/impl/OrderDetlPakoutServiceImpl.java
@@ -81,6 +81,11 @@
        return this.baseMapper.increaseQtyByOrderNo(orderNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3, qty) > 0;
    }
    @Override
    public boolean increaseQtyById(Long id, Double qty) {
        return this.baseMapper.increaseQtyById(id, qty) > 0;
    }
    /**
     * 入出库任务生成时,更新单据表中作业数量
     * @param orderId
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -457,6 +457,7 @@
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            wrkDetl.setThreeCode(orderDetl.getId() + "");
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            }
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -112,8 +112,8 @@
//        }
    }
    @Scheduled(cron = "0/5 * * * * ? ")
    @Async("orderThreadPool")
    //@Scheduled(cron = "0/5 * * * * ? ")
    //@Async("orderThreadPool")
    public void completeAndReportOrderInAndOutUtil2() {
//        String erpReport = Parameter.get().getErpReport();
//        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -121,9 +121,9 @@
        if (null == docType) {
            return SUCCESS;
        }
        if (docType.getDocName().equals("销售发货")) {
            return SUCCESS;
        }
//        if (docType.getDocName().equals("销售发货")) {
//            return SUCCESS;
//        }
        Order orderSou = orderService.selectByNo(order.getOrderNo());
        if (!orderSou.getSettle().equals(2L)) {
            return FAIL.setMsg("订单状态不正确,请联系管理员");
@@ -137,15 +137,29 @@
                if (orderDetl.getQty().equals(0D)) {
                    continue;
                }
                if (orderDetlSou.beSimilar(orderDetl)) {
                    double v = orderDetlSou.getAnfme() - orderDetlSou.getQty();
                    if (v < orderDetl.getQty() || orderDetl.getQty().equals(v)) {
                        orderDetlSou.setQty(orderDetlSou.getAnfme());
                        orderDetl.setQty(orderDetl.getQty() - v);
                        break;
                    } else {
                        orderDetlSou.setQty(orderDetlSou.getQty() + orderDetl.getQty());
                        orderDetl.setQty(0D);
                if (!Cools.isEmpty(orderDetlSou.getBatch())){
                    if (orderDetlSou.beSimilar(orderDetl)) {
                        double v = orderDetlSou.getAnfme() - orderDetlSou.getQty();
                        if (v < orderDetl.getQty() || orderDetl.getQty().equals(v)) {
                            orderDetlSou.setQty(orderDetlSou.getAnfme());
                            orderDetl.setQty(orderDetl.getQty() - v);
                            break;
                        } else {
                            orderDetlSou.setQty(orderDetlSou.getQty() + orderDetl.getQty());
                            orderDetl.setQty(0D);
                        }
                    }
                }else {
                    if (orderDetlSou.beSimilar2(orderDetl)) {
                        double v = orderDetlSou.getAnfme() - orderDetlSou.getQty();
                        if (v < orderDetl.getQty() || orderDetl.getQty().equals(v)) {
                            orderDetlSou.setQty(orderDetlSou.getAnfme());
                            orderDetl.setQty(orderDetl.getQty() - v);
                            break;
                        } else {
                            orderDetlSou.setQty(orderDetlSou.getQty() + orderDetl.getQty());
                            orderDetl.setQty(0D);
                        }
                    }
                }
            }
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -215,26 +215,32 @@
                        }
                        // 更新订单完成数量
                        addOrderDetlQty(wrkMast, wrkDetl);
//                        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 (orderDetlPakout == null) {
//                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
//                        }
//                        try {
//                            if (!Cools.isEmpty(orderDetlPakout)) {
////                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
////                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
////                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
//
//                                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())) {
////                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
////                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore) {
//                        }
                        //addOrderDetlQty(wrkMast, wrkDetl);
                        OrderDetlPakout orderDetlPakout;
                        if (!Cools.isEmpty(wrkDetl.getThreeCode())) {
                            orderDetlPakout = orderDetlPakoutService.selectById(Long.parseLong(wrkDetl.getThreeCode()));
                        } else {
                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            if (orderDetlPakout == null) {
                                orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            }
                        }
                        try {
                            if (!Cools.isEmpty(orderDetlPakout)) {
//                                if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
//                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
//                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
                                if (!orderDetlPakoutService.increaseQtyById(orderDetlPakout.getId(), 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())) {
//                                    exceptionHandle("拣料入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("拣料入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore) {
                        }
                    }
                    // 修改库位状态 Q ====>> F
@@ -436,22 +442,28 @@
                    }
                    for (WrkDetl wrkDetl : wrkDetls101) {
                        // 更新订单完成数量
                        addOrderDetlQty(wrkMast, wrkDetl);
//                        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 (orderDetlPakout == null) {
//                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
//                        }
//                        try {
//                            if (!Cools.isEmpty(orderDetlPakout)) {
//                                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())) {
////                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
////                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
//                                }
//                            }
//                        } catch (Exception ignore) {
//                        }
                        //addOrderDetlQty(wrkMast, wrkDetl);
                        OrderDetlPakout orderDetlPakout;
                        if (!Cools.isEmpty(wrkDetl.getThreeCode())) {
                            orderDetlPakout = orderDetlPakoutService.selectById(Long.parseLong(wrkDetl.getThreeCode()));
                        } else {
                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            if (orderDetlPakout == null) {
                                orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                            }
                        }
                        try {
                            if (!Cools.isEmpty(orderDetlPakout)) {
                                if (!orderDetlPakoutService.increaseQtyById(orderDetlPakout.getId(), wrkDetl.getAnfme())) {
//                                    exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]",
//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                    return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                }
                            }
                        } catch (Exception ignore) {
                        }
                    }
                    // 删除工作档源库位的库存明细
                    if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
@@ -543,7 +555,10 @@
            OrderDetlPakout orderDetlPakout;
            switch (order.getDocType$()) {
                case "销售发货":
                    orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                    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)) {
                        orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null, wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                    }
                    if (!Cools.isEmpty(orderDetlPakout)) {
                        OrderDetl orderDetl = orderDetlService.selectItem(orderDetlPakout.getOrderNo(), orderDetlPakout.getMatnr(), wrkDetl.getBatch(), orderDetlPakout.getBrand(), orderDetlPakout.getStandby1(), orderDetlPakout.getStandby2(), orderDetlPakout.getStandby3(), orderDetlPakout.getBoxType1(), orderDetlPakout.getBoxType2(), orderDetlPakout.getBoxType3());
                        if (orderDetl == null) {
src/main/java/com/zy/nc/entity/NccJcQilibcBarcodeflowWms.java
@@ -20,6 +20,10 @@
    private String pkBarcode;
    /**
     *
     */
    private String zkdh;
    /**
     * 
     */
    private String ts;
src/main/java/com/zy/nc/entity/NccScZkmxbWms.java
@@ -314,6 +314,8 @@
     */
    private String wmsMemo;
    @Override
    public boolean equals(Object that) {
        if (this == that) {
src/main/java/com/zy/nc/task/PlanOrderTask.java
@@ -53,12 +53,7 @@
            if (wmsFlag == null || wmsFlag.isEmpty()) {
                return;
            }
            ReturnT<String> returnT;
            if (wmsFlag.get(0).getNastnum().doubleValue() > 0) {
                returnT = planOrderHandler.start1(wmsFlag);
            } else {
                returnT = planOrderHandler.start1In(wmsFlag);
            }
            ReturnT<String> returnT = planOrderHandler.start1(wmsFlag);
            if (!returnT.isSuccess()) {
                for (NccSaleXsfhmxWms wms : wmsFlag) {
                    wms.setWmsMemo(returnT.getMsg());
@@ -66,8 +61,13 @@
                }
                log.error(returnT.getMsg());
            }
        }
//            if (wmsFlag.get(0).getNastnum().doubleValue() > 0) {
//                returnT = planOrderHandler.start1(wmsFlag);
//            } else {
//                returnT = planOrderHandler.start1In(wmsFlag);
//            }
        }
    }
    /**
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@@ -66,27 +67,43 @@
    @Transactional
    public ReturnT<String> start1(List<NccSaleXsfhmxWms> wmsFlag) {
        try {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccSaleXsfhmxWms nccSaleXsfhmxWms : wmsFlag) {
                param.setOrderType("销售发货");
                detlDto = new DetlDto();
                detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm());
                detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue());
                detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms));
                orderDetails.add(detlDto);
                log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms));
                i++;
                nccSaleXsfhmxWms.setWmsFlag(1);
                param.setOrderNo(nccSaleXsfhmxWms.getVbillcode());
            HashMap<String, List<NccSaleXsfhmxWms>> map = new HashMap<>();
            List<NccSaleXsfhmxWms> fenzu;
            for (NccSaleXsfhmxWms wms : wmsFlag) {
                if (map.get(wms.getFhckbm()) == null) {
                    fenzu = new ArrayList<>();
                    fenzu.add(wms);
                    map.put(wms.getFhckbm(), fenzu);
                } else {
                    fenzu = map.get(wms.getFhckbm());
                    fenzu.add(wms);
                    map.put(wms.getFhckbm(), fenzu);
                }
            }
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccSaleXsfhmxWmsService.updateBatchById(wmsFlag);
            int size = 1;
            for (String key : map.keySet()) {
                OpenOrderPakoutParam param = new OpenOrderPakoutParam();
                DetlDto detlDto;
                List<DetlDto> orderDetails = new ArrayList<>();
                long i = 1;
                for (NccSaleXsfhmxWms nccSaleXsfhmxWms : map.get(key)) {
                    param.setOrderType("销售发货");
                    detlDto = new DetlDto();
                    detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm());
                    detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue());
                    detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm());
                    detlDto.setLineNumber(i);
                    detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms));
                    orderDetails.add(detlDto);
                    log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms));
                    i++;
                    nccSaleXsfhmxWms.setWmsFlag(1);
                    param.setOrderNo(nccSaleXsfhmxWms.getVbillcode() + "-" + size);
                }
                param.setOrderDetails(orderDetails);
                openService.pakoutOrderCreate(param);
                nccSaleXsfhmxWmsService.updateBatchById(map.get(key));
            }
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
src/main/resources/mapper/asrs/OrderDetlPakoutMapper.xml
@@ -232,6 +232,13 @@
        <include refid="standbyAll"></include>
    </update>
    <update id="increaseQtyById">
        update man_order_detl_pakout
        set qty = qty + #{qty}
        where id = #{id}
    </update>
    <update id="increaseWorkQty">
        update man_order_detl_pakout
        set work_qty = work_qty + #{workQty}
src/main/webapp/static/js/common.js
@@ -188,12 +188,12 @@
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', width: 200}
    // ,{field: 'name', align: 'center',title: '别名'}
    ,{field: 'specs', align: 'center',title: '规格'}
    ,{field: 'model', align: 'center',title: '代码', hide: true}
    ,{field: 'model', align: 'center',title: '型号'}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: false}
    ,{field: 'price', align: 'center',title: '单价', hide: true}
    ,{field: 'sku', align: 'center',title: 'sku', hide: true}
    ,{field: 'sku', align: 'center',title: '物料简称'}
    ,{field: 'units', align: 'center',title: '单位量', hide: true}
    ,{field: 'barcode', align: 'center',title: '条码', hide: true}
    ,{field: 'origin', align: 'center',title: '产地', hide: true}
@@ -225,12 +225,13 @@
    {field: 'matnr', align: 'center',title: '商品编号(品号)', sort:true}
    ,{field: 'maktx', align: 'center',title: '商品名称(品名)', sort:true}
    ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false}
    ,{field: 'batch', align: 'center',title: '货品特征', sort:true}
    ,{field: 'batch', align: 'center',title: '批次'}
    ,{field: 'anfme', align: 'center',title: '数量', hide: false}
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false}
    ,{field: 'specs', align: 'center',title: '规格', hide: false}
    ,{field: 'model', align: 'center',title: '代码', hide: true}
    ,{field: 'model', align: 'center',title: '型号'}
    ,{field: 'supp', align: 'center',title: '客户'}
    ,{field: 'standby1$', align: 'center',title: '仓库'}
    ,{field: 'color', align: 'center',title: '颜色', hide: true}
    ,{field: 'brand', align: 'center',title: '品牌', hide: true}
    ,{field: 'unit', align: 'center',title: '单位', hide: false}
@@ -247,12 +248,10 @@
    ,{field: 'length', align: 'center',title: '单箱毛重', hide: true}
    ,{field: 'volume', align: 'center',title: '单箱体积', hide: true}
    ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true}
    ,{field: 'supp', align: 'center',title: '供应商', hide: true}
    ,{field: 'suppCode', align: 'center',title: '供应商编码', hide: true}
    ,{field: 'beBatch$', align: 'center',title: '是否批次', hide: true}
    ,{field: 'deadTime', align: 'center',title: '保质期', hide: true}
    ,{field: 'deadWarn', align: 'center',title: '预警天数', hide: true}
    ,{field: 'source$', align: 'center',title: '制购', hide: true}
    ,{field: 'check$', align: 'center',title: '要求检验', hide: true}
    ,{field: 'danger$', align: 'center',title: '危险品', hide: true}
    ,{field: 'frozen$', align: 'center',title: '冻结否',hide: true,