diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java index ae9f37ac..bd213682 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseBarcodeInfo.java @@ -2,7 +2,10 @@ package com.hw.mes.api.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.List; + import com.fasterxml.jackson.annotation.JsonFormat; +import com.hw.mes.api.domain.vo.MesPurchaseOrderVo; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.hw.common.core.annotation.Excel; @@ -187,6 +190,10 @@ public class MesBaseBarcodeInfo extends BaseEntity private String bindOrFlag;//如果是1,查询条码连着配对码一起查询 + private List mesSaleOrderRelateList; + + + public String getLocationCode() { return locationCode; } @@ -595,6 +602,14 @@ public class MesBaseBarcodeInfo extends BaseEntity this.bindOrFlag = bindOrFlag; } + public List getMesSaleOrderRelateList() { + return mesSaleOrderRelateList; + } + + public void setMesSaleOrderRelateList(List mesSaleOrderRelateList) { + this.mesSaleOrderRelateList = mesSaleOrderRelateList; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseMaterialInfo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseMaterialInfo.java index 32b15bf9..c74e4c8a 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseMaterialInfo.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesBaseMaterialInfo.java @@ -105,6 +105,10 @@ public class MesBaseMaterialInfo extends BaseEntity @Excel(name = "所属产线;多个用,隔开") private String prodlineId; + + //物料分类:1ERP同步,2虚拟物料,3,MES物料 + private String materialClassfication; + /** 激活标识:1-是;0-否 */ @Excel(name = "激活标识:1-是;0-否") private String activeFlag; @@ -341,6 +345,15 @@ public class MesBaseMaterialInfo extends BaseEntity { return prodlineId; } + + public String getMaterialClassfication() { + return materialClassfication; + } + + public void setMaterialClassfication(String materialClassfication) { + this.materialClassfication = materialClassfication; + } + public void setActiveFlag(String activeFlag) { this.activeFlag = activeFlag; diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesOrderBind.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesOrderBind.java new file mode 100644 index 00000000..fb4f3ccd --- /dev/null +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesOrderBind.java @@ -0,0 +1,332 @@ +package com.hw.mes.api.domain; + +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Objects; + +/** + * 采购销售订单绑定信息对象 mes_order_bind + * + * @author xins + * @date 2024-05-16 + */ +public class MesOrderBind extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + private Long orderBindId; + + /** + * 安全库存标识(1是,0否) + */ + @Excel(name = "安全库存标识(1是,0否)") + private String safeFlag; + + /** + * 销售订单ID;对应FID + */ + @Excel(name = "销售订单ID;对应FID") + private Long saleOrderId; + + /** + * 销售订单编号 + */ + @Excel(name = "销售订单编号") + private String saleOrderCode; + + /** + * ERP成品ID + */ + @Excel(name = "ERP成品ID") + private Long productId; + + /** + * 成品编号 + */ + @Excel(name = "成品编号") + private String productCode; + + /** + * 成品名称 + */ + @Excel(name = "成品名称") + private String productName; + + /** + * 采购订单ID + */ + @Excel(name = "采购订单ID") + private Long purchaseOrderId; + + /** + * 采购订单编号 + */ + @Excel(name = "采购订单编号") + private String poNo; + + /** + * ERP物料ID + */ + @Excel(name = "ERP物料ID") + private Long materialId; + + /** + * 物料编号 + */ + @Excel(name = "物料编号") + private String materialCode; + + /** + * 物料名称 + */ + @Excel(name = "物料名称") + private String materialName; + + /** + * 绑定数量 + */ + @Excel(name = "绑定数量") + private BigDecimal bindAmount; + + /** + * 已生成条码数量 + */ + private BigDecimal barcodeAmount; + + private String productSpec; + + private String materialSpec; + + private String specificationParameter; + + private BigDecimal saleOrderAmount; + + private BigDecimal availableAmount;//可用数量 + + private int index;//序号 + + private String mergeFlag;//合并新增条码时使用 + + private String singleFlag;//单独新增条码时使用 + + public void setOrderBindId(Long orderBindId) { + this.orderBindId = orderBindId; + } + + public Long getOrderBindId() { + return orderBindId; + } + + public void setSafeFlag(String safeFlag) { + this.safeFlag = safeFlag; + } + + public String getSafeFlag() { + return safeFlag; + } + + public void setSaleOrderId(Long saleOrderId) { + this.saleOrderId = saleOrderId; + } + + public Long getSaleOrderId() { + return saleOrderId; + } + + public void setSaleOrderCode(String saleOrderCode) { + this.saleOrderCode = saleOrderCode; + } + + public String getSaleOrderCode() { + return saleOrderCode; + } + + public void setProductId(Long productId) { + this.productId = productId; + } + + public Long getProductId() { + return productId; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductCode() { + return productCode; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getProductName() { + return productName; + } + + public void setPurchaseOrderId(Long purchaseOrderId) { + this.purchaseOrderId = purchaseOrderId; + } + + public Long getPurchaseOrderId() { + return purchaseOrderId; + } + + public void setPoNo(String poNo) { + this.poNo = poNo; + } + + public String getPoNo() { + return poNo; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getMaterialName() { + return materialName; + } + + public void setBindAmount(BigDecimal bindAmount) { + this.bindAmount = bindAmount; + } + + public BigDecimal getBindAmount() { + return bindAmount; + } + + public BigDecimal getBarcodeAmount() { + return barcodeAmount; + } + + public void setBarcodeAmount(BigDecimal barcodeAmount) { + this.barcodeAmount = barcodeAmount; + } + + public String getProductSpec() { + return productSpec; + } + + public void setProductSpec(String productSpec) { + this.productSpec = productSpec; + } + + public String getMaterialSpec() { + return materialSpec; + } + + public void setMaterialSpec(String materialSpec) { + this.materialSpec = materialSpec; + } + + public String getSpecificationParameter() { + return specificationParameter; + } + + public void setSpecificationParameter(String specificationParameter) { + this.specificationParameter = specificationParameter; + } + + public BigDecimal getSaleOrderAmount() { + return saleOrderAmount; + } + + public void setSaleOrderAmount(BigDecimal saleOrderAmount) { + this.saleOrderAmount = saleOrderAmount; + } + + public BigDecimal getAvailableAmount() { + return availableAmount; + } + + public void setAvailableAmount(BigDecimal availableAmount) { + this.availableAmount = availableAmount; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public String getMergeFlag() { + return mergeFlag; + } + + public void setMergeFlag(String mergeFlag) { + this.mergeFlag = mergeFlag; + } + + public String getSingleFlag() { + return singleFlag; + } + + public void setSingleFlag(String singleFlag) { + this.singleFlag = singleFlag; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("orderBindId", getOrderBindId()) + .append("safeFlag", getSafeFlag()) + .append("saleOrderId", getSaleOrderId()) + .append("saleOrderCode", getSaleOrderCode()) + .append("productId", getProductId()) + .append("productCode", getProductCode()) + .append("productName", getProductName()) + .append("purchaseOrderId", getPurchaseOrderId()) + .append("poNo", getPoNo()) + .append("materialId", getMaterialId()) + .append("materialCode", getMaterialCode()) + .append("materialName", getMaterialName()) + .append("bindAmount", getBindAmount()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MesOrderBind that = (MesOrderBind) o; + return Objects.equals(orderBindId, that.orderBindId) + && bindAmount.compareTo(that.bindAmount) == 0 + && barcodeAmount.compareTo(that.barcodeAmount) == 0; + } + + @Override + public int hashCode() { + return Objects.hash(orderBindId, bindAmount, barcodeAmount); + } +} diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java new file mode 100644 index 00000000..b448b4c2 --- /dev/null +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesSaleOrderRelate.java @@ -0,0 +1,179 @@ +package com.hw.mes.api.domain; + +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 销售订单关联信息对象 mes_sale_order_relate + * + * @author xins + * @date 2024-09-09 + */ +public class MesSaleOrderRelate extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long saleOrderRelateId; + + /** 销售订单ID */ + @Excel(name = "销售订单ID") + private Long saleOrderId; + + /** 条码信息 */ + private String barcodeInfo; + + /** 采购订单绑定销售订单ID */ + private Long orderBindId; + + + /** 关联销售订单ID */ + @Excel(name = "关联销售订单ID") + private Long relateSaleOrderId; + + private Long materialId; + + /** 采购订单ID */ + private Long purchaseOrderId; + + /** 关联销售订单的数量,有可能小于原销售订单的订单数量 */ + @Excel(name = "关联销售订单的数量,有可能小于原销售订单的订单数量") + private BigDecimal relateSaleOrderAmount; + + private String productCode; + + private String productName; + + private String productSpec; + + /** + * 此字段不保存 + */ + private Date planDeliveryDate; + + private int index; + + public void setSaleOrderRelateId(Long saleOrderRelateId) + { + this.saleOrderRelateId = saleOrderRelateId; + } + + public Long getSaleOrderRelateId() + { + return saleOrderRelateId; + } + public void setSaleOrderId(Long saleOrderId) + { + this.saleOrderId = saleOrderId; + } + + public Long getSaleOrderId() + { + return saleOrderId; + } + + public String getBarcodeInfo() { + return barcodeInfo; + } + + public void setBarcodeInfo(String barcodeInfo) { + this.barcodeInfo = barcodeInfo; + } + + public Long getOrderBindId() { + return orderBindId; + } + + public void setOrderBindId(Long orderBindId) { + this.orderBindId = orderBindId; + } + + public void setRelateSaleOrderId(Long relateSaleOrderId) + { + this.relateSaleOrderId = relateSaleOrderId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getPurchaseOrderId() { + return purchaseOrderId; + } + + public void setPurchaseOrderId(Long purchaseOrderId) { + this.purchaseOrderId = purchaseOrderId; + } + + public Long getRelateSaleOrderId() + { + return relateSaleOrderId; + } + + public BigDecimal getRelateSaleOrderAmount() { + return relateSaleOrderAmount; + } + + public void setRelateSaleOrderAmount(BigDecimal relateSaleOrderAmount) { + this.relateSaleOrderAmount = relateSaleOrderAmount; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getProductSpec() { + return productSpec; + } + + public void setProductSpec(String productSpec) { + this.productSpec = productSpec; + } + + public Date getPlanDeliveryDate() { + return planDeliveryDate; + } + + public void setPlanDeliveryDate(Date planDeliveryDate) { + this.planDeliveryDate = planDeliveryDate; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("saleOrderRelateId", getSaleOrderRelateId()) + .append("saleOrderId", getSaleOrderId()) + .append("relateSaleOrderId", getRelateSaleOrderId()) + .append("relateSaleOrderAmout", getRelateSaleOrderAmount()) + .toString(); + } +} diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPurchaseOrderVo.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPurchaseOrderVo.java new file mode 100644 index 00000000..26348fd0 --- /dev/null +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/vo/MesPurchaseOrderVo.java @@ -0,0 +1,51 @@ +package com.hw.mes.api.domain.vo; + +import com.hw.mes.api.domain.MesBaseBarcodeInfo; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; +import java.util.Objects; + +/** + * @Description: 采购订单VO对象 + * @ClassName: MesPurchaseOrderVo + * @Author : xins + * @Date :2024-09-07 16:29 + * @Version :1.0 + */ +@Data +public class MesPurchaseOrderVo { + + //序号 + @NotNull(message = "序号不能为空") + private int index; + + //采购订单ID + @NotNull(message = "采购订单ID为空") + private Long purchaseOrderId; + + //ERP物料ID + @NotNull(message = "ERP物料ID为空") + private Long materialId; + + //采购数量 + @NotNull(message = "采购数量为空") + private BigDecimal orderAmount; + + //订单已绑定的数量-订单已生成的条码数量 + @NotBlank(message = "订单已绑定的数量(中间以-分开)订单已生成的条码数量") + private String orderBindBarcodeAmount; + +// //采购数量 +// @NotBlank(message = "安全库存的数量(中间以-分开)安全库存已生成的条码数量") +// private String safeBindBarcodeAmount; + + //物料编码 + @NotBlank(message = "物料编码") + private String materialCode; + + +} diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java index eed990bb..758435b2 100644 --- a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/RemoteWmsService.java @@ -4,6 +4,7 @@ import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.ServiceNameConstants; import com.hw.common.core.domain.R; import com.hw.common.core.web.domain.AjaxResult; +import com.hw.wms.api.domain.WmsWarehouseMaterial; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import com.hw.wms.api.factory.RemoteWmsFallbackFactory; @@ -60,4 +61,8 @@ public interface RemoteWmsService { @PostMapping("/api/synchronizeProductOutstockInformationToERP/{days}") public R synchronizeProductOutstockInformationToERP(@PathVariable("days") Integer days, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @PostMapping("/wmswarehouse/allocateVirtualMaterial") + public R allocateVirtualMaterial(@RequestBody WmsWarehouseMaterial wmsWarehouseMaterial, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/WmsWarehouseMaterial.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/WmsWarehouseMaterial.java new file mode 100644 index 00000000..49defc82 --- /dev/null +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/domain/WmsWarehouseMaterial.java @@ -0,0 +1,118 @@ +package com.hw.wms.api.domain; + +import com.hw.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 仓库可储存物料信息对象 wms_warehouse_material + * + * @author xins + * @date 2024-01-09 + */ +public class WmsWarehouseMaterial extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + private Long warehouseMaterialId; + + /** 仓库ID */ + private Long warehouseId; + + private Integer warehouseFloor; + + /** 库位编码;单独需要针对库位设置的,后续扩展使用 */ + private String locationCode; + + /** 存储类型(1、物料,2、物料类型);先支持物料 */ + private String storageType; + + /** 根据存储类型对应各自表的主键 */ + private Long storageId; + + private String materialCode; + + private String materialName; + + public Long getWarehouseMaterialId() { + return warehouseMaterialId; + } + + public void setWarehouseMaterialId(Long warehouseMaterialId) { + this.warehouseMaterialId = warehouseMaterialId; + } + + public void setWarehouseId(Long warehouseId) + { + this.warehouseId = warehouseId; + } + + public Long getWarehouseId() + { + return warehouseId; + } + + public Integer getWarehouseFloor() { + return warehouseFloor; + } + + public void setWarehouseFloor(Integer warehouseFloor) { + this.warehouseFloor = warehouseFloor; + } + + public void setLocationCode(String locationCode) + { + this.locationCode = locationCode; + } + + public String getLocationCode() + { + return locationCode; + } + public void setStorageType(String storageType) + { + this.storageType = storageType; + } + + public String getStorageType() + { + return storageType; + } + public void setStorageId(Long storageId) + { + this.storageId = storageId; + } + + public Long getStorageId() + { + return storageId; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("warehouseId", getWarehouseId()) + .append("locationCode", getLocationCode()) + .append("storageType", getStorageType()) + .append("storageId", getStorageId()) + .append("createTime", getCreateTime()) + .append("createBy", getCreateBy()) + .toString(); + } +} diff --git a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java index 2dda4639..d0a9905d 100644 --- a/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java +++ b/hw-api/hw-api-wms/src/main/java/com/hw/wms/api/factory/RemoteWmsFallbackFactory.java @@ -3,6 +3,7 @@ package com.hw.wms.api.factory; import com.hw.common.core.domain.R; import com.hw.common.core.web.domain.AjaxResult; import com.hw.wms.api.RemoteWmsService; +import com.hw.wms.api.domain.WmsWarehouseMaterial; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import org.slf4j.Logger; @@ -54,6 +55,11 @@ public class RemoteWmsFallbackFactory implements FallbackFactory allocateVirtualMaterial(WmsWarehouseMaterial wmsWarehouseMaterial, String source) { + return R.fail("配置仓库虚拟物料失败:" + throwable.getMessage()); + } + }; } } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java index 2b39c2e7..24a30078 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java @@ -124,6 +124,7 @@ public class MesConstants { /** * 校验类型(0不校验,1人工校验,2自动校验) */ + public static final String MES_MATERIAL_BOM_CHECK_TYPE_NO = "0";//不校验 public static final String MES_MATERIAL_BOM_CHECK_TYPE_MANUAL = "1";//人工校验 @@ -216,4 +217,52 @@ public class MesConstants { * 采购订单采购状态 */ public static final String MES_PURCHASE_ORDER_STATUS_TOPURCHASE = "1";//待采购 + + + /** + * 物料大类(1,原材料 3,成品) + */ + public static final String MES_MATERIAL_CATEGORIES_RAW= "1"; //原材料 + + + /** + * 物料分类:1ERP同步,2虚拟物料,3,MES物料 + */ + public static final String MES_MATERIAL_CLASSFICATION_VIRTUAL= "2"; //虚拟物料 + + /** + * 销售订单状态 + */ + public static final String MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH = "0";//待发布工单 + + /** + * 采购订单分类:1ERP同步,2虚拟采购订单 + */ + public static final String MES_PURCHASE_ORDER_CLASSFICATION_VIRTUAL= "2"; //虚拟采购订单 + + + /** + * 销售订单分类:1ERP同步,2虚拟采购订单 + */ + public static final String MES_SALE_ORDER_CLASSFICATION_VIRTUAL= "2"; //虚拟销售订单 + + + /** + * 绑定标识(1待绑定 2绑定中 3绑定完成) + */ + public static final String MES_PURCHASE_ORDER_IS_FLAG_BIND_FINISHEED = "3";//绑定完成 + + + /** + * 物料BOM信息状态 + */ + public static final String MES_MATERIAL_BOM_ACTIVE_FLAG_NORMAL = "1";//正常 + public static final String MES_MATERIAL_BOM_ACTIVE_FLAG_STOP = "0";//停用 + + + /** + * 物料BOM信息顶级标识 + */ + public static final long MES_MATERIAL_BOM_TOP_FLAG_YES = 1;//是 + public static final long MES_MATERIAL_BOM_TOP_FLAG_NO = 0;//否 } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/enums/WmsLocationStatus.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/enums/WmsLocationStatus.java index 1508c15d..17a1161f 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/enums/WmsLocationStatus.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/enums/WmsLocationStatus.java @@ -12,7 +12,8 @@ import java.util.stream.Collectors; public enum WmsLocationStatus { NORMAL("1", "正常"), AUTOLOCK("2", "自动锁定"), MANUALLOCK("3", "人工锁定"), - MOVELOCK("4", "移库锁定"), MERGELOCK("5", "合库锁定"); + MOVELOCK("4", "移库锁定"), MERGELOCK("5", "合库锁定"), + OUTLOCK("6", "出库锁定"),OUTSIDELOCATIONABNORMAL("8", "因浅库位异常导致深库位不可用"),ABNORMAL("9", "异常"); private final String code; private final String info; diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/MailUtils.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/MailUtils.java new file mode 100644 index 00000000..ed6d6804 --- /dev/null +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/MailUtils.java @@ -0,0 +1,51 @@ +package com.hw.common.core.utils; + +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.Properties; + +public class MailUtils { + + public static void main(String[] args) { + // 设置发件人、收件人、SMTP服务器等信息 + String senderEmail = "chencheng01@jsjyep.com"; + String receiverEmail = "chencheng01@jsjyep.com"; + String password = "QH6faJaWw5rgvM4u"; + String host = "smtp.exmail.qq.com"; // SMTP服务器地址 + int port = 465; // 端口号,如果是SSL连接常用465,非SSL常用587或25 + + // 设置邮件服务器的属性 + Properties props = new Properties(); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.ssl.enable", "true"); // 启用SSL + props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // 设置SSL/TLS版本 + +// props.put("mail.smtp.starttls.enable", "true"); // 如果是SSL连接,则不需要这行 + props.put("mail.smtp.host", host); + props.put("mail.smtp.port", port); + + // 创建会话 + Session session = Session.getInstance(props, new Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(senderEmail, password); + } + }); + + try { + // 创建邮件消息 + Message message = new MimeMessage(session); + message.setFrom(new InternetAddress(senderEmail)); + message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiverEmail)); + message.setSubject("测试"); + message.setText("测试正文内容"); + + // 发送邮件 + Transport.send(message); + System.out.println("邮件已成功发送!"); + } catch (MessagingException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } +} diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/dd.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/dd.java new file mode 100644 index 00000000..67167f14 --- /dev/null +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/dd.java @@ -0,0 +1,4 @@ +package com.hw.common.core.utils; + +public class dd { +} diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/uuid/Seq.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/uuid/Seq.java index f6ed17bc..e644e5b8 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/uuid/Seq.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/uuid/Seq.java @@ -282,6 +282,26 @@ public class Seq { public static final String stopUsingCode = "DEL"; + // 虚拟销售订单编码 + public static final String mesVirtualSaleOrderSeqType = "virtualsaleorder"; + + // 虚拟销售订单信息的接口序列数 + private static AtomicInteger mesVirtualSaleOrderSeq = new AtomicInteger(1); + + // 虚拟销售订单信息的记录标识 + public static final String mesVirtualSaleOrderCode = "VS"; + + + // 虚拟采购订单编码 + public static final String mesVirtualPurchaseOrderSeqType = "virtualpurchaseorder"; + + // 虚拟采购订单信息的接口序列数 + private static AtomicInteger mesVirtualPurchasaeOrderSeq = new AtomicInteger(1); + + // 虚拟采购订单信息的记录标识 + public static final String mesVirtualPurchaseOrderCode = "VP"; + + /** * 获取通用序列号 * @@ -390,6 +410,10 @@ public class Seq { atomicInt = mesBindBarcodeSeq; }else if (stopUsingSeqType.equals(type)) { atomicInt = stopUsingSeq; + }else if (mesVirtualSaleOrderSeqType.equals(type)) { + atomicInt = mesVirtualSaleOrderSeq; + }else if (mesVirtualPurchaseOrderSeqType.equals(type)) { + atomicInt = mesVirtualPurchasaeOrderSeq; } return getId(atomicInt, 3, code); } diff --git a/hw-modules/hw-dms/src/main/java/com/hw/dms/controller/DmsPlanLubeController.java b/hw-modules/hw-dms/src/main/java/com/hw/dms/controller/DmsPlanLubeController.java index 932123ba..795cc8cd 100644 --- a/hw-modules/hw-dms/src/main/java/com/hw/dms/controller/DmsPlanLubeController.java +++ b/hw-modules/hw-dms/src/main/java/com/hw/dms/controller/DmsPlanLubeController.java @@ -1,34 +1,20 @@ package com.hw.dms.controller; -import java.util.Date; -import java.util.List; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; - -import com.hw.common.core.constant.SecurityConstants; -import com.hw.dms.domain.DmsBaseMaintStation; -import com.hw.job.api.RemoteJobService; -import com.hw.job.api.domain.SysJob; -import com.hw.job.api.util.CronUtils; -import com.hw.system.api.model.LoginUser; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.hw.common.core.utils.poi.ExcelUtil; +import com.hw.common.core.web.controller.BaseController; +import com.hw.common.core.web.domain.AjaxResult; +import com.hw.common.core.web.page.TableDataInfo; import com.hw.common.log.annotation.Log; import com.hw.common.log.enums.BusinessType; import com.hw.common.security.annotation.RequiresPermissions; import com.hw.dms.domain.DmsPlanLube; import com.hw.dms.service.IDmsPlanLubeService; -import com.hw.common.core.web.controller.BaseController; -import com.hw.common.core.web.domain.AjaxResult; -import com.hw.common.core.utils.poi.ExcelUtil; -import com.hw.common.core.web.page.TableDataInfo; +import com.hw.job.api.RemoteJobService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * 润滑计划Controller diff --git a/hw-modules/hw-dms/src/main/java/com/hw/dms/domain/DmsInspectProjectDevice.java b/hw-modules/hw-dms/src/main/java/com/hw/dms/domain/DmsInspectProjectDevice.java new file mode 100644 index 00000000..f346e424 --- /dev/null +++ b/hw-modules/hw-dms/src/main/java/com/hw/dms/domain/DmsInspectProjectDevice.java @@ -0,0 +1,63 @@ +package com.hw.dms.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; + +/** + * 点巡检项目关联物料信息对象 dms_inspect_project_device + * + * @author xins + * @date 2024-09-12 + */ +public class DmsInspectProjectDevice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 点巡检项目ID */ + private Long inspectProjectId; + + /** 关联类型(1设备类型) */ + private String targetType; + + /** 关联类型为1时关联dms_base_device_type的主键 */ + private Long targetId; + + public void setInspectProjectId(Long inspectProjectId) + { + this.inspectProjectId = inspectProjectId; + } + + public Long getInspectProjectId() + { + return inspectProjectId; + } + public void setTargetType(String targetType) + { + this.targetType = targetType; + } + + public String getTargetType() + { + return targetType; + } + public void setTargetId(Long targetId) + { + this.targetId = targetId; + } + + public Long getTargetId() + { + return targetId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("inspectProjectId", getInspectProjectId()) + .append("targetType", getTargetType()) + .append("targetId", getTargetId()) + .toString(); + } +} diff --git a/hw-modules/hw-dms/src/main/java/com/hw/dms/mapper/DmsInspectProjectDeviceMapper.java b/hw-modules/hw-dms/src/main/java/com/hw/dms/mapper/DmsInspectProjectDeviceMapper.java new file mode 100644 index 00000000..a65a9900 --- /dev/null +++ b/hw-modules/hw-dms/src/main/java/com/hw/dms/mapper/DmsInspectProjectDeviceMapper.java @@ -0,0 +1,61 @@ +package com.hw.dms.mapper; + +import java.util.List; +import com.hw.dms.domain.DmsInspectProjectDevice; + +/** + * 点巡检项目关联物料信息Mapper接口 + * + * @author xins + * @date 2024-09-12 + */ +public interface DmsInspectProjectDeviceMapper +{ + /** + * 查询点巡检项目关联物料信息 + * + * @param inspectProjectId 点巡检项目关联物料信息主键 + * @return 点巡检项目关联物料信息 + */ + public DmsInspectProjectDevice selectDmsInspectProjectDeviceByInspectProjectId(Long inspectProjectId); + + /** + * 查询点巡检项目关联物料信息列表 + * + * @param dmsInspectProjectDevice 点巡检项目关联物料信息 + * @return 点巡检项目关联物料信息集合 + */ + public List selectDmsInspectProjectDeviceList(DmsInspectProjectDevice dmsInspectProjectDevice); + + /** + * 新增点巡检项目关联物料信息 + * + * @param dmsInspectProjectDevice 点巡检项目关联物料信息 + * @return 结果 + */ + public int insertDmsInspectProjectDevice(DmsInspectProjectDevice dmsInspectProjectDevice); + + /** + * 修改点巡检项目关联物料信息 + * + * @param dmsInspectProjectDevice 点巡检项目关联物料信息 + * @return 结果 + */ + public int updateDmsInspectProjectDevice(DmsInspectProjectDevice dmsInspectProjectDevice); + + /** + * 删除点巡检项目关联物料信息 + * + * @param inspectProjectId 点巡检项目关联物料信息主键 + * @return 结果 + */ + public int deleteDmsInspectProjectDeviceByInspectProjectId(Long inspectProjectId); + + /** + * 批量删除点巡检项目关联物料信息 + * + * @param inspectProjectIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteDmsInspectProjectDeviceByInspectProjectIds(Long[] inspectProjectIds); +} diff --git a/hw-modules/hw-dms/src/main/java/com/hw/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java b/hw-modules/hw-dms/src/main/java/com/hw/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java index 0b29a750..52a7b356 100644 --- a/hw-modules/hw-dms/src/main/java/com/hw/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java +++ b/hw-modules/hw-dms/src/main/java/com/hw/dms/service/impl/DmsBillsInspectInstanceServiceImpl.java @@ -7,10 +7,7 @@ import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.security.utils.SecurityUtils; -import com.hw.dms.domain.DmsBillsInspectInstance; -import com.hw.dms.domain.DmsBillsInspectInstanceActivity; -import com.hw.dms.domain.DmsInspectInstanceDetail; -import com.hw.dms.domain.DmsInspectInstanceDetailProject; +import com.hw.dms.domain.*; import com.hw.dms.domain.vo.DmsBillsInspectInstanceScanVo; import com.hw.dms.mapper.*; import com.hw.dms.service.IDmsBillsInspectInstanceService; @@ -47,6 +44,10 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta @Autowired private DmsInspectInstanceDetailProjectMapper dmsInspectInstanceDetailPrjectMapper; @Autowired + private DmsInspectRouteDetailMapper dmsInspectRouteDetailMapper; + @Autowired + private DmsInspectProjectDeviceMapper dmsInspectProjectDeviceMapper; + @Autowired private RemoteSysCommonService remoteSysCommonService; /** @@ -88,6 +89,7 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta * @return 结果 */ @Override + @Transactional(rollbackFor = Exception.class) public int insertDmsBillsInspectInstance(DmsBillsInspectInstance dmsBillsInspectInstance) { LoginUser user = SecurityUtils.getLoginUser(); //写死105,也可根据传入对象的wfprocessid作为传参。 @@ -100,9 +102,9 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta dmsBillsInspectInstance.setCreateTime(DateUtils.getNowDate()); dmsBillsInspectInstance.setIsFlag("1"); dmsBillsInspectInstance.setInspectStatus(DmsConstants.DMS_BILLS_INSPECT_INSTANCE_INSPECT_STATUS_TO_INSPECT); - dmsBillsInspectInstance.setCreateBy(user.getUsername()); + dmsBillsInspectInstance.setCreateBy(SecurityUtils.getUsername()); int i = dmsBillsInspectInstanceMapper.insertDmsBillsInspectInstance(dmsBillsInspectInstance); - List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); +// List dmsBillsInspectInstances = dmsBillsInspectInstanceMapper.selectDmsBillsInspectInstanceList(dmsBillsInspectInstance); //新建第一步工单实例节点 DmsBillsInspectInstanceActivity dmsBillsInspectInstanceActivity = new DmsBillsInspectInstanceActivity(); dmsBillsInspectInstanceActivity.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId()); @@ -112,6 +114,35 @@ public class DmsBillsInspectInstanceServiceImpl implements IDmsBillsInspectInsta dmsBillsInspectInstanceActivity.setProcessStepOrder(1l); dmsBillsInspectInstanceActivity.setProcessActivityId(aLong); dmsBillsInspectInstanceActivityMapper.insertDmsBillsInspectInstanceActivity(dmsBillsInspectInstanceActivity); + + //新建点巡检工单明细 + DmsInspectRouteDetail queryInspectRouteDetail = new DmsInspectRouteDetail(); + queryInspectRouteDetail.setInspectRouteId(dmsBillsInspectInstance.getInspectRouteId()); + List dmsInspectRouteDetails = dmsInspectRouteDetailMapper.selectDmsInspectRouteDetailList(queryInspectRouteDetail); + for(DmsInspectRouteDetail dmsInspectRouteDetail:dmsInspectRouteDetails){ + DmsInspectInstanceDetail dmsInspectInstanceDetail = new DmsInspectInstanceDetail(); + Long deviceId = dmsInspectRouteDetail.getDeviceId(); + dmsInspectInstanceDetail.setInspectInstanceId(dmsBillsInspectInstance.getInspectInstanceId()); + dmsInspectInstanceDetail.setLineStep(dmsInspectRouteDetail.getLineStep()); + dmsInspectInstanceDetail.setDeviceId(deviceId); + dmsInspectInstanceDetail.setInstanceDetailStatus("1"); + dmsInspectInstanceDetail.setInspectStandard(dmsInspectRouteDetail.getInspectStandard()); + dmsInspectInstanceDetailMapper.insertDmsInspectInstanceDetail(dmsInspectInstanceDetail); + + DmsInspectProjectDevice queryInspectProjectDevice = new DmsInspectProjectDevice(); + queryInspectProjectDevice.setTargetType("2"); + queryInspectProjectDevice.setTargetId(deviceId); + List dmsInspectProjectDevices = dmsInspectProjectDeviceMapper.selectDmsInspectProjectDeviceList(queryInspectProjectDevice); + for(DmsInspectProjectDevice dmsInspectProjectDevice:dmsInspectProjectDevices){ + DmsInspectInstanceDetailProject dmsInspectInstanceDetailProject = new DmsInspectInstanceDetailProject(); + dmsInspectInstanceDetailProject.setInstanceDetailId(dmsInspectInstanceDetail.getInstanceDetailId()); + dmsInspectInstanceDetailProject.setInspectProjectId(dmsInspectProjectDevice.getInspectProjectId()); + dmsInspectInstanceDetailProject.setCreateTime(new Date()); + dmsInspectInstanceDetailProjectMapper.insertDmsInspectInstanceDetailProject(dmsInspectInstanceDetailProject); + } + + } + return i; } diff --git a/hw-modules/hw-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailProjectMapper.xml b/hw-modules/hw-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailProjectMapper.xml index 5fd27453..36acba60 100644 --- a/hw-modules/hw-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailProjectMapper.xml +++ b/hw-modules/hw-dms/src/main/resources/mapper/dms/DmsInspectInstanceDetailProjectMapper.xml @@ -130,9 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + and target_id = #{targetId} + and target_type = #{targetType} + + + + + + + insert into dms_inspect_project_device + + inspect_project_id, + target_type, + target_id, + + + #{inspectProjectId}, + #{targetType}, + #{targetId}, + + + + + update dms_inspect_project_device + + target_type = #{targetType}, + target_id = #{targetId}, + + where inspect_project_id = #{inspectProjectId} + + + + delete from dms_inspect_project_device where inspect_project_id = #{inspectProjectId} + + + + delete from dms_inspect_project_device where inspect_project_id in + + #{inspectProjectId} + + + \ No newline at end of file diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java index 0c077d30..25b416cd 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java @@ -31,6 +31,10 @@ public class MesConfig private Long laserProcessId; + /**五楼原料周转区仓库ID*/ + private Long fifthCabinetWarehouseId; + + public String getSocketServerHost() { return socketServerHost; } @@ -62,4 +66,12 @@ public class MesConfig public void setLaserProcessId(Long laserProcessId) { this.laserProcessId = laserProcessId; } + + public Long getFifthCabinetWarehouseId() { + return fifthCabinetWarehouseId; + } + + public void setFifthCabinetWarehouseId(Long fifthCabinetWarehouseId) { + this.fifthCabinetWarehouseId = fifthCabinetWarehouseId; + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java index 6e209cdf..6d96c4c7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesBaseBarcodeInfoController.java @@ -360,4 +360,17 @@ public class MesBaseBarcodeInfoController extends BaseController return R.ok(mesBaseBarcodeInfoService.transferBaseBarcodeInfos(mesBaseBarcodeInfos)); } + + + /** + * 合并采购订单新增条码信息 + */ + @RequiresPermissions("mes:barcode:mergeAdd") + @Log(title = "条码信息", businessType = BusinessType.INSERT) + @PostMapping("/mergeAdd") + public AjaxResult mergeAdd(@RequestBody MesBaseBarcodeInfo mesBaseBarcodeInfo) + { + return toAjax(mesBaseBarcodeInfoService.generateMergeRawBarcode(mesBaseBarcodeInfo)); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java index f853cc94..47cfa0cf 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java @@ -1,10 +1,11 @@ package com.hw.mes.controller; import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.domain.MesSaleOrder; +import com.hw.mes.service.IMesOrderBindService; import com.hw.mes.service.IMesSaleOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -41,6 +42,9 @@ public class MesPurchaseOrderController extends BaseController @Autowired private IMesSaleOrderService mesSaleOrderService; + @Autowired + private IMesOrderBindService mesOrderBindService; + /** * 查询采购订单信息列表 */ @@ -212,4 +216,21 @@ public class MesPurchaseOrderController extends BaseController return toAjax(mesPurchaseOrderService.deleteMesOrderBindByOrderBindIds(orderBindIds)); } + + + + + + /** + * 查询采购订单信息绑定销售订单信息列表 + */ +// @RequiresPermissions("mes:purchaseOrder:list") + @GetMapping("/getOrderBinds") + public TableDataInfo getOrderBinds(MesOrderBind mesOrderBind) + { + startPage(); + List list = mesOrderBindService.selectMesOrderBindJoinList(mesOrderBind); + return getDataTable(list); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java index 729f7095..d6955990 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialBom.java @@ -22,6 +22,16 @@ public class MesMaterialBom extends TreeEntity { */ private Long materialBomId; + /** + *物料分类:1ERP同步,2虚拟物料,3,MES物料 + */ + private String materialClassfication; + + /** + *物料信息表的ERPID + */ + private Long erpMaterialId; + /** * 物料ID */ @@ -121,6 +131,7 @@ public class MesMaterialBom extends TreeEntity { return materialBomId; } + public void setMaterialId(Long materialId) { this.materialId = materialId; } @@ -129,6 +140,22 @@ public class MesMaterialBom extends TreeEntity { return materialId; } + public String getMaterialClassfication() { + return materialClassfication; + } + + public void setMaterialClassfication(String materialClassfication) { + this.materialClassfication = materialClassfication; + } + + public Long getErpMaterialId() { + return erpMaterialId; + } + + public void setErpMaterialId(Long erpMaterialId) { + this.erpMaterialId = erpMaterialId; + } + public void setMaterialName(String materialName) { this.materialName = materialName; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesOrderBind.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesOrderBind.java index 1ce0cc69..243d8f26 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesOrderBind.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesOrderBind.java @@ -1,260 +1,270 @@ -package com.hw.mes.domain; - -import java.math.BigDecimal; -import java.util.Objects; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.hw.common.core.annotation.Excel; -import com.hw.common.core.web.domain.BaseEntity; - -/** - * 采购销售订单绑定信息对象 mes_order_bind - * - * @author xins - * @date 2024-05-16 - */ -public class MesOrderBind extends BaseEntity { - private static final long serialVersionUID = 1L; - - /** - * 主键标识 - */ - private Long orderBindId; - - /** - * 安全库存标识(1是,0否) - */ - @Excel(name = "安全库存标识(1是,0否)") - private String safeFlag; - - /** - * 销售订单ID;对应FID - */ - @Excel(name = "销售订单ID;对应FID") - private Long saleOrderId; - - /** - * 销售订单编号 - */ - @Excel(name = "销售订单编号") - private String saleOrderCode; - - /** - * ERP成品ID - */ - @Excel(name = "ERP成品ID") - private Long productId; - - /** - * 成品编号 - */ - @Excel(name = "成品编号") - private String productCode; - - /** - * 成品名称 - */ - @Excel(name = "成品名称") - private String productName; - - /** - * 采购订单ID - */ - @Excel(name = "采购订单ID") - private Long purchaseOrderId; - - /** - * 采购订单编号 - */ - @Excel(name = "采购订单编号") - private String poNo; - - /** - * ERP物料ID - */ - @Excel(name = "ERP物料ID") - private Long materialId; - - /** - * 物料编号 - */ - @Excel(name = "物料编号") - private String materialCode; - - /** - * 物料名称 - */ - @Excel(name = "物料名称") - private String materialName; - - /** - * 绑定数量 - */ - @Excel(name = "绑定数量") - private BigDecimal bindAmount; - - /** - * 绑定条码数量 - */ - private BigDecimal barcodeAmount; - - private String productSpec; - - public void setOrderBindId(Long orderBindId) { - this.orderBindId = orderBindId; - } - - public Long getOrderBindId() { - return orderBindId; - } - - public void setSafeFlag(String safeFlag) { - this.safeFlag = safeFlag; - } - - public String getSafeFlag() { - return safeFlag; - } - - public void setSaleOrderId(Long saleOrderId) { - this.saleOrderId = saleOrderId; - } - - public Long getSaleOrderId() { - return saleOrderId; - } - - public void setSaleOrderCode(String saleOrderCode) { - this.saleOrderCode = saleOrderCode; - } - - public String getSaleOrderCode() { - return saleOrderCode; - } - - public void setProductId(Long productId) { - this.productId = productId; - } - - public Long getProductId() { - return productId; - } - - public void setProductCode(String productCode) { - this.productCode = productCode; - } - - public String getProductCode() { - return productCode; - } - - public void setProductName(String productName) { - this.productName = productName; - } - - public String getProductName() { - return productName; - } - - public void setPurchaseOrderId(Long purchaseOrderId) { - this.purchaseOrderId = purchaseOrderId; - } - - public Long getPurchaseOrderId() { - return purchaseOrderId; - } - - public void setPoNo(String poNo) { - this.poNo = poNo; - } - - public String getPoNo() { - return poNo; - } - - public void setMaterialId(Long materialId) { - this.materialId = materialId; - } - - public Long getMaterialId() { - return materialId; - } - - public void setMaterialCode(String materialCode) { - this.materialCode = materialCode; - } - - public String getMaterialCode() { - return materialCode; - } - - public void setMaterialName(String materialName) { - this.materialName = materialName; - } - - public String getMaterialName() { - return materialName; - } - - public void setBindAmount(BigDecimal bindAmount) { - this.bindAmount = bindAmount; - } - - public BigDecimal getBindAmount() { - return bindAmount; - } - - public BigDecimal getBarcodeAmount() { - return barcodeAmount; - } - - public void setBarcodeAmount(BigDecimal barcodeAmount) { - this.barcodeAmount = barcodeAmount; - } - - public String getProductSpec() { - return productSpec; - } - - public void setProductSpec(String productSpec) { - this.productSpec = productSpec; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("orderBindId", getOrderBindId()) - .append("safeFlag", getSafeFlag()) - .append("saleOrderId", getSaleOrderId()) - .append("saleOrderCode", getSaleOrderCode()) - .append("productId", getProductId()) - .append("productCode", getProductCode()) - .append("productName", getProductName()) - .append("purchaseOrderId", getPurchaseOrderId()) - .append("poNo", getPoNo()) - .append("materialId", getMaterialId()) - .append("materialCode", getMaterialCode()) - .append("materialName", getMaterialName()) - .append("bindAmount", getBindAmount()) - .append("remark", getRemark()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - MesOrderBind that = (MesOrderBind) o; - return Objects.equals(orderBindId, that.orderBindId) && barcodeAmount.compareTo(that.barcodeAmount) == 0; - } - - @Override - public int hashCode() { - return Objects.hash(orderBindId, barcodeAmount); - } -} +//package com.hw.mes.domain; +// +//import java.math.BigDecimal; +//import java.util.Objects; +// +//import org.apache.commons.lang3.builder.ToStringBuilder; +//import org.apache.commons.lang3.builder.ToStringStyle; +//import com.hw.common.core.annotation.Excel; +//import com.hw.common.core.web.domain.BaseEntity; +// +///** +// * 采购销售订单绑定信息对象 mes_order_bind +// * +// * @author xins +// * @date 2024-05-16 +// */ +//public class MesOrderBind extends BaseEntity { +// private static final long serialVersionUID = 1L; +// +// /** +// * 主键标识 +// */ +// private Long orderBindId; +// +// /** +// * 安全库存标识(1是,0否) +// */ +// @Excel(name = "安全库存标识(1是,0否)") +// private String safeFlag; +// +// /** +// * 销售订单ID;对应FID +// */ +// @Excel(name = "销售订单ID;对应FID") +// private Long saleOrderId; +// +// /** +// * 销售订单编号 +// */ +// @Excel(name = "销售订单编号") +// private String saleOrderCode; +// +// /** +// * ERP成品ID +// */ +// @Excel(name = "ERP成品ID") +// private Long productId; +// +// /** +// * 成品编号 +// */ +// @Excel(name = "成品编号") +// private String productCode; +// +// /** +// * 成品名称 +// */ +// @Excel(name = "成品名称") +// private String productName; +// +// /** +// * 采购订单ID +// */ +// @Excel(name = "采购订单ID") +// private Long purchaseOrderId; +// +// /** +// * 采购订单编号 +// */ +// @Excel(name = "采购订单编号") +// private String poNo; +// +// /** +// * ERP物料ID +// */ +// @Excel(name = "ERP物料ID") +// private Long materialId; +// +// /** +// * 物料编号 +// */ +// @Excel(name = "物料编号") +// private String materialCode; +// +// /** +// * 物料名称 +// */ +// @Excel(name = "物料名称") +// private String materialName; +// +// /** +// * 绑定数量 +// */ +// @Excel(name = "绑定数量") +// private BigDecimal bindAmount; +// +// /** +// * 绑定条码数量 +// */ +// private BigDecimal barcodeAmount; +// +// private String productSpec; +// +// private String materialSpec; +// +// public void setOrderBindId(Long orderBindId) { +// this.orderBindId = orderBindId; +// } +// +// public Long getOrderBindId() { +// return orderBindId; +// } +// +// public void setSafeFlag(String safeFlag) { +// this.safeFlag = safeFlag; +// } +// +// public String getSafeFlag() { +// return safeFlag; +// } +// +// public void setSaleOrderId(Long saleOrderId) { +// this.saleOrderId = saleOrderId; +// } +// +// public Long getSaleOrderId() { +// return saleOrderId; +// } +// +// public void setSaleOrderCode(String saleOrderCode) { +// this.saleOrderCode = saleOrderCode; +// } +// +// public String getSaleOrderCode() { +// return saleOrderCode; +// } +// +// public void setProductId(Long productId) { +// this.productId = productId; +// } +// +// public Long getProductId() { +// return productId; +// } +// +// public void setProductCode(String productCode) { +// this.productCode = productCode; +// } +// +// public String getProductCode() { +// return productCode; +// } +// +// public void setProductName(String productName) { +// this.productName = productName; +// } +// +// public String getProductName() { +// return productName; +// } +// +// public void setPurchaseOrderId(Long purchaseOrderId) { +// this.purchaseOrderId = purchaseOrderId; +// } +// +// public Long getPurchaseOrderId() { +// return purchaseOrderId; +// } +// +// public void setPoNo(String poNo) { +// this.poNo = poNo; +// } +// +// public String getPoNo() { +// return poNo; +// } +// +// public void setMaterialId(Long materialId) { +// this.materialId = materialId; +// } +// +// public Long getMaterialId() { +// return materialId; +// } +// +// public void setMaterialCode(String materialCode) { +// this.materialCode = materialCode; +// } +// +// public String getMaterialCode() { +// return materialCode; +// } +// +// public void setMaterialName(String materialName) { +// this.materialName = materialName; +// } +// +// public String getMaterialName() { +// return materialName; +// } +// +// public void setBindAmount(BigDecimal bindAmount) { +// this.bindAmount = bindAmount; +// } +// +// public BigDecimal getBindAmount() { +// return bindAmount; +// } +// +// public BigDecimal getBarcodeAmount() { +// return barcodeAmount; +// } +// +// public void setBarcodeAmount(BigDecimal barcodeAmount) { +// this.barcodeAmount = barcodeAmount; +// } +// +// public String getProductSpec() { +// return productSpec; +// } +// +// public void setProductSpec(String productSpec) { +// this.productSpec = productSpec; +// } +// +// public String getMaterialSpec() { +// return materialSpec; +// } +// +// public void setMaterialSpec(String materialSpec) { +// this.materialSpec = materialSpec; +// } +// +// @Override +// public String toString() { +// return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) +// .append("orderBindId", getOrderBindId()) +// .append("safeFlag", getSafeFlag()) +// .append("saleOrderId", getSaleOrderId()) +// .append("saleOrderCode", getSaleOrderCode()) +// .append("productId", getProductId()) +// .append("productCode", getProductCode()) +// .append("productName", getProductName()) +// .append("purchaseOrderId", getPurchaseOrderId()) +// .append("poNo", getPoNo()) +// .append("materialId", getMaterialId()) +// .append("materialCode", getMaterialCode()) +// .append("materialName", getMaterialName()) +// .append("bindAmount", getBindAmount()) +// .append("remark", getRemark()) +// .append("createBy", getCreateBy()) +// .append("createTime", getCreateTime()) +// .append("updateBy", getUpdateBy()) +// .append("updateTime", getUpdateTime()) +// .toString(); +// } +// +// @Override +// public boolean equals(Object o) { +// if (this == o) return true; +// if (o == null || getClass() != o.getClass()) return false; +// MesOrderBind that = (MesOrderBind) o; +// return Objects.equals(orderBindId, that.orderBindId) && barcodeAmount.compareTo(that.barcodeAmount) == 0; +// } +// +// @Override +// public int hashCode() { +// return Objects.hash(orderBindId, barcodeAmount); +// } +//} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java index e0efc392..5b1fb60c 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrder.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Objects; import com.fasterxml.jackson.annotation.JsonFormat; +import com.hw.mes.api.domain.MesOrderBind; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.hw.common.core.annotation.Excel; @@ -67,6 +68,12 @@ public class MesPurchaseOrder extends BaseEntity { @Excel(name = "物料名称;对应FMaterialId.FName") private String materialName; + /** + * 采购订单分类:1ERP同步,2虚拟采购订单 + */ + private String purchaseOrderClassfication; + + /** * 订单计划数量;对应FQty */ @@ -404,6 +411,14 @@ public class MesPurchaseOrder extends BaseEntity { return materialName; } + public String getPurchaseOrderClassfication() { + return purchaseOrderClassfication; + } + + public void setPurchaseOrderClassfication(String purchaseOrderClassfication) { + this.purchaseOrderClassfication = purchaseOrderClassfication; + } + public void setOrderAmount(BigDecimal orderAmount) { this.orderAmount = orderAmount; } @@ -655,12 +670,20 @@ public class MesPurchaseOrder extends BaseEntity { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MesPurchaseOrder that = (MesPurchaseOrder) o; - return Objects.equals(purchaseOrderId, that.purchaseOrderId) && orderAmount.compareTo(that.orderAmount) == 0 && boundAmount.compareTo(that.boundAmount) == 0 - && safeAmount.compareTo(that.safeAmount) == 0 && Objects.equals(orderBindBarcodeAmount, that.orderBindBarcodeAmount); + boundAmount = boundAmount == null ? BigDecimal.ZERO : boundAmount; + safeAmount = safeAmount == null ? BigDecimal.ZERO : safeAmount; + that.boundAmount = that.boundAmount == null ? BigDecimal.ZERO : that.boundAmount; + that.safeAmount = that.safeAmount == null ? BigDecimal.ZERO : that.safeAmount; + return Objects.equals(purchaseOrderId, that.purchaseOrderId) + && orderAmount.compareTo(that.orderAmount) == 0 //订单数量 + && boundAmount.compareTo(that.boundAmount) == 0 //已绑定所有销售订单的总数量 + && safeAmount.compareTo(that.safeAmount) == 0 //安全库存数量 + && Objects.equals(orderBindBarcodeAmount, that.orderBindBarcodeAmount)//订单已绑定的数量-订单已生成的条码数量 + && Objects.equals(safeBindBarcodeAmount, that.safeBindBarcodeAmount); //安全库存的数量-安全库存已生成的条码数量 } @Override public int hashCode() { - return Objects.hash(purchaseOrderId, orderAmount, boundAmount, safeAmount, orderBindBarcodeAmount); + return Objects.hash(purchaseOrderId, orderAmount, boundAmount, safeAmount, orderBindBarcodeAmount, safeBindBarcodeAmount); } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrderRelate.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrderRelate.java new file mode 100644 index 00000000..51b929e2 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesPurchaseOrderRelate.java @@ -0,0 +1,80 @@ +package com.hw.mes.domain; + +import java.math.BigDecimal; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; + +/** + * 采购订单关联信息对象 mes_purchase_order_relate + * + * @author xins + * @date 2024-09-09 + */ +public class MesPurchaseOrderRelate extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long purchaseOrderRelateId; + + /** 采购订单ID,MES生成的 */ + @Excel(name = "采购订单ID,MES生成的") + private Long purchaseOrderId; + + /** 关联采购订单ID */ + @Excel(name = "关联采购订单ID") + private Long relatePurchaseOrderId; + + /** 关联采购订单的订单数量 */ + @Excel(name = "关联采购订单的订单数量") + private BigDecimal relatePurchaseOrderAmount; + + public void setPurchaseOrderRelateId(Long purchaseOrderRelateId) + { + this.purchaseOrderRelateId = purchaseOrderRelateId; + } + + public Long getPurchaseOrderRelateId() + { + return purchaseOrderRelateId; + } + public void setPurchaseOrderId(Long purchaseOrderId) + { + this.purchaseOrderId = purchaseOrderId; + } + + public Long getPurchaseOrderId() + { + return purchaseOrderId; + } + public void setRelatePurchaseOrderId(Long relatePurchaseOrderId) + { + this.relatePurchaseOrderId = relatePurchaseOrderId; + } + + public Long getRelatePurchaseOrderId() + { + return relatePurchaseOrderId; + } + public void setRelatePurchaseOrderAmount(BigDecimal relatePurchaseOrderAmount) + { + this.relatePurchaseOrderAmount = relatePurchaseOrderAmount; + } + + public BigDecimal getRelatePurchaseOrderAmount() + { + return relatePurchaseOrderAmount; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("purchaseOrderRelateId", getPurchaseOrderRelateId()) + .append("purchaseOrderId", getPurchaseOrderId()) + .append("relatePurchaseOrderId", getRelatePurchaseOrderId()) + .append("relatePurchaseOrderAmount", getRelatePurchaseOrderAmount()) + .toString(); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java index efd91de6..ed312fa0 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java @@ -178,6 +178,8 @@ public class MesSaleOrder extends BaseEntity { */ private String materialModel; + private String saleOrderClassfication; + private String materialSpec; private Long erpMaterialId; @@ -192,6 +194,14 @@ public class MesSaleOrder extends BaseEntity { this.materialModel = materialModel; } + public String getSaleOrderClassfication() { + return saleOrderClassfication; + } + + public void setSaleOrderClassfication(String saleOrderClassfication) { + this.saleOrderClassfication = saleOrderClassfication; + } + public void setSaleOrderId(Long saleOrderId) { this.saleOrderId = saleOrderId; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrderRelate.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrderRelate.java new file mode 100644 index 00000000..127efb07 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrderRelate.java @@ -0,0 +1,106 @@ +//package com.hw.mes.domain; +// +//import java.math.BigDecimal; +//import java.util.Date; +// +//import org.apache.commons.lang3.builder.ToStringBuilder; +//import org.apache.commons.lang3.builder.ToStringStyle; +//import com.hw.common.core.annotation.Excel; +//import com.hw.common.core.web.domain.BaseEntity; +// +///** +// * 销售订单关联信息对象 mes_sale_order_relate +// * +// * @author xins +// * @date 2024-09-09 +// */ +//public class MesSaleOrderRelate extends BaseEntity +//{ +// private static final long serialVersionUID = 1L; +// +// /** 主键 */ +// private Long saleOrderRelateId; +// +// /** 销售订单ID */ +// @Excel(name = "销售订单ID") +// private Long saleOrderId; +// +// /** 关联销售订单ID */ +// @Excel(name = "关联销售订单ID") +// private Long relateSaleOrderId; +// +// /** 采购订单ID */ +// private Long purchaseOrderId; +// +// /** 关联销售订单的数量,有可能小于原销售订单的订单数量 */ +// @Excel(name = "关联销售订单的数量,有可能小于原销售订单的订单数量") +// private BigDecimal relateSaleOrderAmout; +// +// /** +// * 此字段不保存 +// */ +// private Date planDeliveryDate; +// +// public void setSaleOrderRelateId(Long saleOrderRelateId) +// { +// this.saleOrderRelateId = saleOrderRelateId; +// } +// +// public Long getSaleOrderRelateId() +// { +// return saleOrderRelateId; +// } +// public void setSaleOrderId(Long saleOrderId) +// { +// this.saleOrderId = saleOrderId; +// } +// +// public Long getSaleOrderId() +// { +// return saleOrderId; +// } +// public void setRelateSaleOrderId(Long relateSaleOrderId) +// { +// this.relateSaleOrderId = relateSaleOrderId; +// } +// +// public Long getPurchaseOrderId() { +// return purchaseOrderId; +// } +// +// public void setPurchaseOrderId(Long purchaseOrderId) { +// this.purchaseOrderId = purchaseOrderId; +// } +// +// public Long getRelateSaleOrderId() +// { +// return relateSaleOrderId; +// } +// public void setRelateSaleOrderAmout(BigDecimal relateSaleOrderAmout) +// { +// this.relateSaleOrderAmout = relateSaleOrderAmout; +// } +// +// public BigDecimal getRelateSaleOrderAmout() +// { +// return relateSaleOrderAmout; +// } +// +// public Date getPlanDeliveryDate() { +// return planDeliveryDate; +// } +// +// public void setPlanDeliveryDate(Date planDeliveryDate) { +// this.planDeliveryDate = planDeliveryDate; +// } +// +// @Override +// public String toString() { +// return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +// .append("saleOrderRelateId", getSaleOrderRelateId()) +// .append("saleOrderId", getSaleOrderId()) +// .append("relateSaleOrderId", getRelateSaleOrderId()) +// .append("relateSaleOrderAmout", getRelateSaleOrderAmout()) +// .toString(); +// } +//} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesOrderBindVo.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesOrderBindVo.java index 9bb45297..28f70396 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesOrderBindVo.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesOrderBindVo.java @@ -1,7 +1,6 @@ package com.hw.mes.domain.vo; -import com.hw.mes.domain.MesOrderBind; -import com.hw.mes.domain.MesProductPlan; +import com.hw.mes.api.domain.MesOrderBind; import lombok.Data; import javax.validation.constraints.NotEmpty; diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesOrderBindMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesOrderBindMapper.java index 57f65e57..33c5d3c5 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesOrderBindMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesOrderBindMapper.java @@ -1,7 +1,7 @@ package com.hw.mes.mapper; import java.util.List; -import com.hw.mes.domain.MesOrderBind; +import com.hw.mes.api.domain.MesOrderBind; /** * 采购销售订单绑定信息Mapper接口 @@ -58,4 +58,13 @@ public interface MesOrderBindMapper * @return 结果 */ public int deleteMesOrderBindByOrderBindIds(Long[] orderBindIds); + + /** + * 查询采购销售订单绑定信息列表,Join material + * + * @param mesOrderBind 采购销售订单绑定信息 + * @return 采购销售订单绑定信息集合 + */ + public List selectMesOrderBindJoinList(MesOrderBind mesOrderBind); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java index b96a344b..d91deb1f 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderMapper.java @@ -2,7 +2,7 @@ package com.hw.mes.mapper; import java.util.List; -import com.hw.mes.domain.MesOrderBind; +import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.domain.MesPurchaseOrder; import org.apache.ibatis.annotations.Param; diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderRelateMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderRelateMapper.java new file mode 100644 index 00000000..32632436 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesPurchaseOrderRelateMapper.java @@ -0,0 +1,70 @@ +package com.hw.mes.mapper; + +import java.util.List; +import com.hw.mes.domain.MesPurchaseOrderRelate; + +/** + * 采购订单关联信息Mapper接口 + * + * @author xins + * @date 2024-09-09 + */ +public interface MesPurchaseOrderRelateMapper +{ + /** + * 查询采购订单关联信息 + * + * @param purchaseOrderRelateId 采购订单关联信息主键 + * @return 采购订单关联信息 + */ + public MesPurchaseOrderRelate selectMesPurchaseOrderRelateByPurchaseOrderRelateId(Long purchaseOrderRelateId); + + /** + * 查询采购订单关联信息列表 + * + * @param mesPurchaseOrderRelate 采购订单关联信息 + * @return 采购订单关联信息集合 + */ + public List selectMesPurchaseOrderRelateList(MesPurchaseOrderRelate mesPurchaseOrderRelate); + + /** + * 新增采购订单关联信息 + * + * @param mesPurchaseOrderRelate 采购订单关联信息 + * @return 结果 + */ + public int insertMesPurchaseOrderRelate(MesPurchaseOrderRelate mesPurchaseOrderRelate); + + /** + * 修改采购订单关联信息 + * + * @param mesPurchaseOrderRelate 采购订单关联信息 + * @return 结果 + */ + public int updateMesPurchaseOrderRelate(MesPurchaseOrderRelate mesPurchaseOrderRelate); + + /** + * 删除采购订单关联信息 + * + * @param purchaseOrderRelateId 采购订单关联信息主键 + * @return 结果 + */ + public int deleteMesPurchaseOrderRelateByPurchaseOrderRelateId(Long purchaseOrderRelateId); + + /** + * 批量删除采购订单关联信息 + * + * @param purchaseOrderRelateIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesPurchaseOrderRelateByPurchaseOrderRelateIds(Long[] purchaseOrderRelateIds); + + + /** + * 批量新增采购订单关联信息 + * + * @param mesPurchaseOrderRelateList 采购订单关联信息列表 + * @return 结果 + */ + public int batchMesPurchaseOrderRelate(List mesPurchaseOrderRelateList); +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderMapper.java index 0b324282..01648ad5 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderMapper.java @@ -67,4 +67,5 @@ public interface MesSaleOrderMapper */ public List selectMesSaleOrderJoinMaterialList(MesSaleOrder mesSaleOrder); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderRelateMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderRelateMapper.java new file mode 100644 index 00000000..f4ed36b8 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesSaleOrderRelateMapper.java @@ -0,0 +1,69 @@ +package com.hw.mes.mapper; + +import java.util.List; +import com.hw.mes.api.domain.MesSaleOrderRelate; + +/** + * 销售订单关联信息Mapper接口 + * + * @author xins + * @date 2024-09-09 + */ +public interface MesSaleOrderRelateMapper +{ + /** + * 查询销售订单关联信息 + * + * @param saleOrderRelateId 销售订单关联信息主键 + * @return 销售订单关联信息 + */ + public MesSaleOrderRelate selectMesSaleOrderRelateBySaleOrderRelateId(Long saleOrderRelateId); + + /** + * 查询销售订单关联信息列表 + * + * @param mesSaleOrderRelate 销售订单关联信息 + * @return 销售订单关联信息集合 + */ + public List selectMesSaleOrderRelateList(MesSaleOrderRelate mesSaleOrderRelate); + + /** + * 新增销售订单关联信息 + * + * @param mesSaleOrderRelate 销售订单关联信息 + * @return 结果 + */ + public int insertMesSaleOrderRelate(MesSaleOrderRelate mesSaleOrderRelate); + + /** + * 修改销售订单关联信息 + * + * @param mesSaleOrderRelate 销售订单关联信息 + * @return 结果 + */ + public int updateMesSaleOrderRelate(MesSaleOrderRelate mesSaleOrderRelate); + + /** + * 删除销售订单关联信息 + * + * @param saleOrderRelateId 销售订单关联信息主键 + * @return 结果 + */ + public int deleteMesSaleOrderRelateBySaleOrderRelateId(Long saleOrderRelateId); + + /** + * 批量删除销售订单关联信息 + * + * @param saleOrderRelateIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesSaleOrderRelateBySaleOrderRelateIds(Long[] saleOrderRelateIds); + + /** + * 批量新增销售订单关联信息 + * + * @param mesSaleOrderRelateList 销售订单关联信息列表 + * @return 结果 + */ + public int batchMesSaleOrderRelate(List mesSaleOrderRelateList); +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java index 2ed63270..b3e4ef2b 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesBaseBarcodeInfoService.java @@ -193,4 +193,10 @@ public interface IMesBaseBarcodeInfoService * @return 结果 */ public boolean transferBaseBarcodeInfos(List mesBaseBarcodeInfos); + + /** + * 合并采购订单生成原材料条码 + * @param mesBaseBarcodeInfo + */ + public int generateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesOrderBindService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesOrderBindService.java index 7afb5a75..486a2e70 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesOrderBindService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesOrderBindService.java @@ -1,7 +1,7 @@ package com.hw.mes.service; import java.util.List; -import com.hw.mes.domain.MesOrderBind; +import com.hw.mes.api.domain.MesOrderBind; /** * 采购销售订单绑定信息Service接口 @@ -58,4 +58,13 @@ public interface IMesOrderBindService * @return 结果 */ public int deleteMesOrderBindByOrderBindId(Long orderBindId); + + + /** + * 查询采购销售订单绑定信息列表,Join material + * + * @param mesOrderBind 采购销售订单绑定信息 + * @return 采购销售订单绑定信息 + */ + public List selectMesOrderBindJoinList(MesOrderBind mesOrderBind); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java index f5cda1d5..02596314 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java @@ -1,14 +1,9 @@ package com.hw.mes.service.impl; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; -import com.hw.common.core.constant.Constants; -import com.hw.common.core.constant.MesConstants; -import com.hw.common.core.constant.QmsConstants; -import com.hw.common.core.constant.SecurityConstants; +import com.hw.common.core.constant.*; import com.hw.common.core.domain.R; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; @@ -17,6 +12,9 @@ import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo; +import com.hw.mes.api.domain.MesOrderBind; +import com.hw.mes.api.domain.MesSaleOrderRelate; +import com.hw.mes.config.MesConfig; import com.hw.mes.domain.*; import com.hw.mes.domain.vo.MesBindBarcodeVo; import com.hw.mes.mapper.*; @@ -27,6 +25,7 @@ import com.hw.printer.api.RemotePrinterService; import com.hw.printer.api.domain.vo.PrintContentVo; import com.hw.printer.api.domain.vo.PrinterVo; import com.hw.wms.api.RemoteWmsService; +import com.hw.wms.api.domain.WmsWarehouseMaterial; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; import org.springframework.beans.factory.annotation.Autowired; @@ -72,6 +71,21 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService @Autowired private MesProductPlanDetailMapper mesProductPlanDetailMapper; + @Autowired + private MesPurchaseOrderMapper mesPurchaseOrderMapper; + + @Autowired + private MesSaleOrderMapper mesSaleOrderMapper; + + @Autowired + private MesMaterialBomMapper mesMaterialBomMapper; + + @Autowired + private MesSaleOrderRelateMapper mesSaleOrderRelateMapper; + + @Autowired + private MesConfig mesConfig; + @Resource private RemoteWmsService remoteWmsService; @@ -180,7 +194,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService if (canBindAmount.compareTo(BigDecimal.ONE) >= 0) { for (int i = 0; i < canBindAmount.intValue(); i++) { // 生成数量条的不同条码内容 - toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, batchCode, userName, currentDate); + toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode), batchCode, userName, currentDate); toInsertedBarcodeInfo.setSaleOrderId(mesOrderBind.getSaleOrderId()); toInsertedBarcodeInfo.setSaleorderCode(mesOrderBind.getSaleOrderCode()); @@ -202,7 +216,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService String batchCode = Seq.getId(Seq.mesBatchCodeSeqType, Seq.mesBatchCodeCode); for (long i = 0; i < barcodeAmount.intValue(); i++) { // 生成条码数量的不同条码内容 - toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, batchCode, userName, currentDate); + toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode), batchCode, userName, currentDate); toInsertedBarcodeInfo.setSaleOrderId(0L); toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_YES); mesBaseBarcodeInfoMapper.insertMesBaseBarcodeInfo(toInsertedBarcodeInfo); @@ -247,7 +261,7 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService String batchCode = Seq.getId(Seq.mesBatchCodeSeqType, Seq.mesBatchCodeCode); for (long i = 0; i < barcodeAmount.intValue(); i++) { // 生成数量条的不同条码内容 - toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, batchCode, userName, currentDate); + toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode), batchCode, userName, currentDate); toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_YES); toInsertedBarcodeInfo.setSaleOrderId(0L); toInsertedBarcodeInfos.add(toInsertedBarcodeInfo); @@ -493,14 +507,14 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService } - public MesBaseBarcodeInfo getInsertedBarcodeInfo(MesBaseBarcodeInfo mesBaseBarcodeInfo, String batchCode, String userName, Date currentDate) { + public MesBaseBarcodeInfo getInsertedBarcodeInfo(MesBaseBarcodeInfo mesBaseBarcodeInfo, String barcodeInfo, String batchCode, String userName, Date currentDate) { MesBaseBarcodeInfo toInsertedBarcodeInfo = new MesBaseBarcodeInfo(); //同一批次的批次代码相同 toInsertedBarcodeInfo.setBatchCode(batchCode); toInsertedBarcodeInfo.setPurchaseOrderId(mesBaseBarcodeInfo.getPurchaseOrderId()); toInsertedBarcodeInfo.setPoNo(mesBaseBarcodeInfo.getPoNo()); toInsertedBarcodeInfo.setBarcodeType(MesConstants.MES_BARCODE_TYPE_RAW); - toInsertedBarcodeInfo.setBarcodeInfo(Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode)); + toInsertedBarcodeInfo.setBarcodeInfo(barcodeInfo); toInsertedBarcodeInfo.setMaterialId(mesBaseBarcodeInfo.getMaterialId()); toInsertedBarcodeInfo.setProductionDate(mesBaseBarcodeInfo.getProductionDate()); toInsertedBarcodeInfo.setLastOutstockDate(mesBaseBarcodeInfo.getLastOutstockDate()); @@ -1114,4 +1128,450 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService return updateSize > 0; } + + + /** + * 合并采购订单生成原材料条码 + * + * @param mesBaseBarcodeInfo 条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int generateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { + Date currentDate = new Date(); + String userName = SecurityUtils.getUsername(); + List mesSaleOrderRelateList = mesBaseBarcodeInfo.getMesSaleOrderRelateList(); + + List toUpdatedMaterialBoms = new ArrayList<>(); + StringBuilder errorMsgBuilder = new StringBuilder(); + + for (MesSaleOrderRelate mesSaleOrderRelate : mesSaleOrderRelateList) { + Long orderBindId = mesSaleOrderRelate.getOrderBindId(); + MesOrderBind dbOrderBind = mesOrderBindMapper.selectMesOrderBindByOrderBindId(orderBindId); + if (dbOrderBind.getBindAmount().compareTo(BigDecimal.ONE)!=0) { + errorMsgBuilder.append(String.format("序号%s:订单绑定数量需要为1", mesSaleOrderRelate.getIndex())); + } + if(dbOrderBind.getBarcodeAmount().compareTo(BigDecimal.ONE)>=0){ + errorMsgBuilder.append(String.format("序号%s:已经生成条码,不能再次选择", mesSaleOrderRelate.getIndex())); + } + + Long relateSaleOrderId = mesSaleOrderRelate.getRelateSaleOrderId(); + MesSaleOrderRelate querySaleOrderRelate = new MesSaleOrderRelate(); + querySaleOrderRelate.setRelateSaleOrderId(relateSaleOrderId); + List mesSaleOrderRelates = mesSaleOrderRelateMapper.selectMesSaleOrderRelateList(querySaleOrderRelate); + if (mesSaleOrderRelates != null && !mesSaleOrderRelates.isEmpty()) { + errorMsgBuilder.append(String.format("序号%s:销售订单已经关联过;", mesSaleOrderRelate.getIndex())); + } + + MesSaleOrder saleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(relateSaleOrderId); + BigDecimal saleOrderAmount = saleOrder.getOrderAmount(); + BigDecimal availableAmount = mesSaleOrderRelate.getRelateSaleOrderAmount(); + + if (availableAmount.compareTo(BigDecimal.ONE) != 0) { + errorMsgBuilder.append(String.format("序号%s:需要选择可用数量为1的信息;", mesSaleOrderRelate.getIndex())); + } + + if (!saleOrder.getIsRelease().equals(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH)) { + errorMsgBuilder.append(String.format("序号%s:销售订单已经发布工单,不能合并;", mesSaleOrderRelate.getIndex())); + } + + if (saleOrderAmount.compareTo(availableAmount) != 0) { + errorMsgBuilder.append(String.format("序号%s:需要选择销售订单数量为1的信息;", mesSaleOrderRelate.getIndex())); + } + + Long erpMaterialId = saleOrder.getMaterialId(); + MesMaterialBom queryMaterialBom = new MesMaterialBom(); + queryMaterialBom.setErpMaterialId(erpMaterialId); + queryMaterialBom.setActiveFlag(MesConstants.MES_MATERIAL_BOM_ACTIVE_FLAG_NORMAL); + queryMaterialBom.setParentId(0L); + List mesMaterialBoms = mesMaterialBomMapper.selectMesMaterialBomList(queryMaterialBom); + if (mesMaterialBoms == null || mesMaterialBoms.isEmpty()) { + errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":销售订单成品没有配置bom信息[成品编号:") + .append(mesSaleOrderRelate.getProductCode()).append("成品名称:").append(mesSaleOrderRelate.getProductName()) + .append("成品规格").append(mesSaleOrderRelate.getProductSpec()); + } else if (mesMaterialBoms.size() > 1) { + errorMsgBuilder.append("序号").append(mesSaleOrderRelate.getIndex()).append(":销售订单成品配置bom信息多余一条[成品编号:") + .append(mesSaleOrderRelate.getProductCode()).append("成品名称:").append(mesSaleOrderRelate.getProductName()) + .append("成品规格").append(mesSaleOrderRelate.getProductSpec()); + } else { + MesMaterialBom mesMaterialBom = mesMaterialBoms.get(0); + toUpdatedMaterialBoms.add(mesMaterialBom); + } + + //更新采购订单和销售订单绑定信息的条码数量 + dbOrderBind.setBarcodeAmount(dbOrderBind.getBarcodeAmount().add(availableAmount)); + dbOrderBind.setUpdateTime(currentDate); + dbOrderBind.setUpdateBy(userName); + + mesOrderBindMapper.updateMesOrderBind(dbOrderBind); +// materialCodes.add(mesPurchaseOrderVo.getMaterialCode()); + } + + if (errorMsgBuilder.length() > 0) { + throw new ServiceException(errorMsgBuilder.toString()); + } + + //新建虚拟物料 + String barcodeInfo = Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode); + Long materialId = this.insertNewVirtualMaterial(barcodeInfo, userName, currentDate); + + //创建虚拟销售订单,保存对应的销售订单列表 + MesSaleOrder virtualSaleOrder = this.insertNewVirtualSaleOrder(materialId, barcodeInfo, mesSaleOrderRelateList, userName, currentDate); + + //创建虚拟bom,并合并销售订单的bom信息 + this.insertVirtualMaterialBom(materialId, barcodeInfo, toUpdatedMaterialBoms, userName, currentDate); + + //生成条码 + String batchCode = Seq.getId(Seq.mesBatchCodeSeqType, Seq.mesBatchCodeCode); + mesBaseBarcodeInfo.setBatchFlag(MesConstants.NOT_IS_BATCH); + MesBaseBarcodeInfo toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, barcodeInfo, batchCode, userName, currentDate); + toInsertedBarcodeInfo.setPurchaseOrderId(-1L); + toInsertedBarcodeInfo.setMaterialId(materialId); + toInsertedBarcodeInfo.setSaleOrderId(virtualSaleOrder.getSaleOrderId()); + toInsertedBarcodeInfo.setSaleorderCode(virtualSaleOrder.getSaleorderCode()); + toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); +// toInsertedBarcodeInfo.setBarcodeSpec(materialCodes.toString()); + + mesBaseBarcodeInfoMapper.insertMesBaseBarcodeInfo(toInsertedBarcodeInfo); + + //更新warehouse配置 + WmsWarehouseMaterial warehouseMaterial = new WmsWarehouseMaterial(); + warehouseMaterial.setWarehouseId(mesConfig.getFifthCabinetWarehouseId()); + warehouseMaterial.setWarehouseFloor(5); + warehouseMaterial.setStorageType(WmsConstants.WMS_WAREHOUSE_MATERIAL_STORAGE_TYPE_MATERIAL); + warehouseMaterial.setStorageId(materialId); + + + R isAllocateMaterial = remoteWmsService.allocateVirtualMaterial(warehouseMaterial, SecurityConstants.INNER); + if (!isAllocateMaterial.getData()) { + throw new RuntimeException("仓库配置物料失败,请重试或联系管理员"); + } + return 1; + } + + + public long insertNewVirtualMaterial(String barcodeInfo, String userName, Date currentDate) { + //虚拟成品和虚拟原材料用一个物料 + MesBaseMaterialInfo mesBaseMaterialInfo = new MesBaseMaterialInfo(); + mesBaseMaterialInfo.setMaterialCode(barcodeInfo); + mesBaseMaterialInfo.setMaterialName(barcodeInfo); + mesBaseMaterialInfo.setBatchFlag(MesConstants.NOT_IS_BATCH); +// mesBaseMaterialInfo.setMaterialCategories(MesConstants.MES_MATERIAL_CATEGORIES_RAW); + mesBaseMaterialInfo.setActiveFlag(MesConstants.MES_MATERIAL_ALWAYS_FLAG_NO); + mesBaseMaterialInfo.setMaterialClassfication(MesConstants.MES_MATERIAL_CLASSFICATION_VIRTUAL); + mesBaseMaterialInfo.setActiveFlag(MesConstants.MES_MATERIAL_ACTIVE_FLAG_NORMAL); + mesBaseMaterialInfo.setApplyFlag(MesConstants.MES_MATERIAL_APPLY_FLAG_YES); + mesBaseMaterialInfo.setCreateBy(userName); + mesBaseMaterialInfo.setCreateTime(currentDate); + + mesBaseMaterialInfoMapper.insertMesBaseMaterialInfo(mesBaseMaterialInfo); + return mesBaseMaterialInfo.getMaterialId(); + + } + + public MesSaleOrder insertNewVirtualSaleOrder(Long materialId, String barcodeInfo, + List mesSaleOrderRelates, String userName, Date currentDate) { + + +// Optional minMesSaleOrderRelate = mesSaleOrderRelates.stream() +// .filter(msor -> msor.getPlanDeliveryDate() != null) +// .min((obj1, obj2) -> obj1.getPlanDeliveryDate().compareTo(obj2.getPlanDeliveryDate())); + + + MesSaleOrder mesSaleOrder = new MesSaleOrder(); + mesSaleOrder.setMaterialId(materialId); + mesSaleOrder.setMaterialCode(barcodeInfo); + mesSaleOrder.setMaterialName(barcodeInfo); + mesSaleOrder.setOrderAmount(BigDecimal.ONE); + mesSaleOrder.setSaleorderCode(Seq.getId(Seq.mesVirtualSaleOrderSeqType, Seq.mesVirtualSaleOrderCode)); + mesSaleOrder.setIsRelease(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH); +// mesSaleOrder.setPlanDeliveryDate(); + mesSaleOrder.setSaleOrderClassfication(MesConstants.MES_SALE_ORDER_CLASSFICATION_VIRTUAL); + mesSaleOrder.setCreateBy(userName); + mesSaleOrder.setCreateTime(currentDate); + mesSaleOrderMapper.insertMesSaleOrder(mesSaleOrder); + + mesSaleOrderRelates.forEach(msor -> { + msor.setSaleOrderId(mesSaleOrder.getSaleOrderId()); + msor.setBarcodeInfo(barcodeInfo); + }); + mesSaleOrderRelateMapper.batchMesSaleOrderRelate(mesSaleOrderRelates); + + return mesSaleOrder; + + } + + public void insertVirtualMaterialBom(Long materialId, String barcodeInfo, List toUpdatedMaterialBoms, String userName, Date currentDate) { + MesMaterialBom virtualMaterialBom = new MesMaterialBom(); + virtualMaterialBom.setMaterialBomDesc(barcodeInfo); + virtualMaterialBom.setParentId(0L); + virtualMaterialBom.setAncestors("0"); + virtualMaterialBom.setMaterialClassfication(MesConstants.MES_MATERIAL_CLASSFICATION_VIRTUAL); + virtualMaterialBom.setErpMaterialId(0L); + virtualMaterialBom.setMaterialId(materialId); + virtualMaterialBom.setMaterialName(barcodeInfo); + virtualMaterialBom.setStandardAmount(BigDecimal.ONE); + virtualMaterialBom.setTopFlag(MesConstants.MES_MATERIAL_BOM_TOP_FLAG_YES); + virtualMaterialBom.setCheckType(MesConstants.MES_MATERIAL_BOM_CHECK_TYPE_NO); + virtualMaterialBom.setActiveFlag(MesConstants.MES_MATERIAL_ACTIVE_FLAG_NORMAL); + virtualMaterialBom.setCreateBy(userName); + virtualMaterialBom.setCreateTime(currentDate); + mesMaterialBomMapper.insertMesMaterialBom(virtualMaterialBom); + + toUpdatedMaterialBoms.forEach(umb -> { + umb.setParentId(virtualMaterialBom.getMaterialBomId()); + umb.setAncestors(umb.getAncestors() + "," + umb.getParentId()); + umb.setTopFlag(MesConstants.MES_MATERIAL_BOM_TOP_FLAG_NO); + umb.setUpdateBy(userName); + umb.setUpdateTime(currentDate); + mesMaterialBomMapper.updateMesMaterialBom(umb); + }); + + } + + +// public MesPurchaseOrder insertVirtualPurchaseOrder(Long materialId, String barcodeInfo, BigDecimal sumOrderAmount, +// List mesPurchaseOrderRelates,String userName, Date currentDate) { +// MesPurchaseOrder virtualPurchaseOrder = new MesPurchaseOrder(); +// virtualPurchaseOrder.setMaterialId(materialId); +// virtualPurchaseOrder.setMaterialCode(barcodeInfo); +// virtualPurchaseOrder.setMaterialName(barcodeInfo); +// virtualPurchaseOrder.setOrderAmount(sumOrderAmount); +// virtualPurchaseOrder.setPoNo(Seq.getId(Seq.mesVirtualPurchaseOrderSeqType,Seq.mesVirtualPurchaseOrderCode)); +// virtualPurchaseOrder.setIsFlag(MesConstants.MES_PURCHASE_ORDER_IS_FLAG_BIND_FINISHEED); +// virtualPurchaseOrder.setOrderStatus(MesConstants.MES_PURCHASE_ORDER_STATUS_TOPURCHASE); +// virtualPurchaseOrder.setPurchaseOrderClassfication(MesConstants.MES_PURCHASE_ORDER_CLASSFICATION_VIRTUAL); +// +// virtualPurchaseOrder.setCreateBy(userName); +// virtualPurchaseOrder.setCreateTime(currentDate); +// +// +// long purchaseOrderId = mesPurchaseOrderMapper.insertMesPurchaseOrder(virtualPurchaseOrder); +// virtualPurchaseOrder.setPurchaseOrderId(purchaseOrderId); +// +// mesPurchaseOrderRelates.forEach(mpor -> { +// mpor.setPurchaseOrderId(purchaseOrderId); +// }); +// +// mesPurchaseOrderRelateMapper.batchMesPurchaseOrderRelate(mesPurchaseOrderRelates); +// +// return virtualPurchaseOrder; +// +// } + + +// @Transactional(rollbackFor = Exception.class) +// public void generateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { +// Date currentDate = new Date(); +// String userName = SecurityUtils.getUsername(); +// List purchaseOrderVoList = mesBaseBarcodeInfo.getPurchaseOrderVoList(); +//// MesPurchaseOrderVo firstPurchaseOrderVo = purchaseOrderVoList.get(0); +// +//// List> allMesOrderBindsMap = new ArrayList<>(); +// +// List materialCodes = new ArrayList<>(); +// for (MesPurchaseOrderVo mesPurchaseOrderVo : purchaseOrderVoList) { +// Long purchaseOrderId = mesPurchaseOrderVo.getPurchaseOrderId(); +//// MesOrderBind queryOrderBind = new MesOrderBind(); +//// queryOrderBind.setPurchaseOrderId(purchaseOrderId); +//// List mesOrderBinds = mesOrderBindMapper.selectMesOrderBindList(queryOrderBind); +//// if (mesOrderBinds == null || mesOrderBinds.isEmpty()) { +//// throw new ServiceException("请将选择的所有采购订单明细都绑定销售订单"); +//// } +// //根据采购订单号来分组 +//// Map mesOrderBindsMap = mesOrderBinds.stream().filter(ob -> +//// ob.getBindAmount().compareTo(ob.getBarcodeAmount()) > 0) +//// .collect(Collectors.toMap(MesOrderBind::getPoNo, e -> e)); +//// +//// allMesOrderBindsMap.add(mesOrderBindsMap); +// +// Long erpMaterialId = mesPurchaseOrderVo.getMaterialId(); +// materialCodes.add(mesPurchaseOrderVo.getMaterialCode()); +// +// MesPurchaseOrder queryPurchaseOrder = new MesPurchaseOrder(); +// queryPurchaseOrder.setPurchaseOrderId(purchaseOrderId); +// List dbPurchaseOrders = mesPurchaseOrderMapper.selectPurchaseOrderBindList(queryPurchaseOrder); +// MesPurchaseOrder dbPurchaseOrder = dbPurchaseOrders.get(0); +// +// MesPurchaseOrder mesPurchaseOrder = new MesPurchaseOrder(); +// mesPurchaseOrder.setPurchaseOrderId(purchaseOrderId); +// mesPurchaseOrder.setOrderAmount(mesPurchaseOrderVo.getOrderAmount()); +// mesPurchaseOrder.setOrderBindBarcodeAmount(mesPurchaseOrderVo.getOrderBindBarcodeAmount()); +// mesPurchaseOrder.setSafeBindBarcodeAmount(mesPurchaseOrderVo.getSafeBindBarcodeAmount()); +// +// if (!mesPurchaseOrder.equals(dbPurchaseOrder)) { +// throw new ServiceException("数据有变化,请重新更新"); +// } +// +// } +// +// // 收集Map的key集合 +//// List> allSaleOrderCodeSets = new ArrayList<>(); +//// for (Map allMesOrderBindMap : allMesOrderBindsMap) { +//// allSaleOrderCodeSets.add(allMesOrderBindMap.keySet()); +//// } +// +// //取saleordercode的交集,saleordercode相同,但是saleorderid可以不相同 +//// Set saleOrderCodeIntersection = allSaleOrderCodeSets.stream() +//// .reduce((set1, set2) -> { +//// set1.retainAll(set2); // 保留交集部分 +//// return set1; +//// }) +//// .orElse(Collections.emptySet()); // 如果没有交集,则返回一个空集合 +//// +//// if (saleOrderCodeIntersection.isEmpty()) { +//// throw new ServiceException("选择的采购订单信息没有绑定同一销售订单号"); +//// } +// +// +// //更新绑定信息的条码数量 +//// Long saleOrderId = saleOrderIdIntersection.stream().findFirst().get(); +// String saleorderCode = "", safeFlag = ""; +// for (Map allMesOrderBindMap : allMesOrderBindsMap) { +// MesOrderBind toUpdatedMesOrderBind = allMesOrderBindMap.get(saleOrderId); +// saleorderCode = toUpdatedMesOrderBind.getSaleOrderCode(); +// safeFlag = toUpdatedMesOrderBind.getSafeFlag(); +// toUpdatedMesOrderBind.setBarcodeAmount(toUpdatedMesOrderBind.getBarcodeAmount().add(BigDecimal.ONE)); +// toUpdatedMesOrderBind.setUpdateBy(userName); +// toUpdatedMesOrderBind.setUpdateTime(currentDate); +// mesOrderBindMapper.updateMesOrderBind(toUpdatedMesOrderBind); +// } +// +// //新建物料 +// String barcodeInfo = Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode); +// Long materialId = this.insertNewVirtualMaterial(barcodeInfo, userName, currentDate); +// +// +// //合并采购订单 +// +// +// //生成条码 +// String batchCode = Seq.getId(Seq.mesBatchCodeSeqType, Seq.mesBatchCodeCode); +// mesBaseBarcodeInfo.setBatchFlag(MesConstants.NOT_IS_BATCH); +// MesBaseBarcodeInfo toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, barcodeInfo, batchCode, userName, currentDate); +//// toInsertedBarcodeInfo.setPurchaseOrderId(); +//// toInsertedBarcodeInfo.setPoNo(); +// toInsertedBarcodeInfo.setMaterialId(materialId); +// toInsertedBarcodeInfo.setSaleOrderId(saleOrderId); +// toInsertedBarcodeInfo.setSaleorderCode(saleorderCode); +// toInsertedBarcodeInfo.setSafeFlag(safeFlag); +// toInsertedBarcodeInfo.setBarcodeSpec(materialCodes.toString()); +// +// mesBaseBarcodeInfoMapper.insertMesBaseBarcodeInfo(toInsertedBarcodeInfo); +// +// //更新warehouse配置 +// +// } + + +// /** +// * 合并采购订单生成原材料条码 +// * @param mesBaseBarcodeInfo 条码信息 +// */ +// @Override +// @Transactional(rollbackFor = Exception.class) +// public int generateMergeRawBarcode(MesBaseBarcodeInfo mesBaseBarcodeInfo) { +// Date currentDate = new Date(); +// String userName = SecurityUtils.getUsername(); +// List mesOrderBinds = mesBaseBarcodeInfo.getMesOrderBinds(); +// +// List materialCodes = new ArrayList<>(); +// List toInsertSaleOrderRelates = new ArrayList<>(); +// +// for (MesOrderBind mesOrderBind : mesOrderBinds) { +// Long purchaseOrderId = mesPurchaseOrderVo.getPurchaseOrderId(); +// +//// Long erpMaterialId = mesPurchaseOrderVo.getMaterialId(); +// materialCodes.add(mesPurchaseOrderVo.getMaterialCode()); +// +// MesPurchaseOrder queryPurchaseOrder = new MesPurchaseOrder(); +// queryPurchaseOrder.setPurchaseOrderId(purchaseOrderId); +// List dbPurchaseOrders = mesPurchaseOrderMapper.selectPurchaseOrderBindList(queryPurchaseOrder); +// MesPurchaseOrder dbPurchaseOrder = dbPurchaseOrders.get(0); +// dbPurchaseOrder.setSafeBindBarcodeAmount(""); +// MesPurchaseOrder mesPurchaseOrder = new MesPurchaseOrder(); +// mesPurchaseOrder.setPurchaseOrderId(purchaseOrderId); +// +// mesPurchaseOrder.setOrderAmount(mesPurchaseOrderVo.getOrderAmount()); +// mesPurchaseOrder.setOrderBindBarcodeAmount(mesPurchaseOrderVo.getOrderBindBarcodeAmount()); +// mesPurchaseOrder.setSafeBindBarcodeAmount(""); +// +// if (!mesPurchaseOrder.equals(dbPurchaseOrder)) { +// throw new ServiceException("数据有变化,请重新更新"); +// } +// +// //只生成采购订单绑定销售订单的,安全库存的不绑定 +// MesOrderBind queryOrderBind = new MesOrderBind(); +// queryOrderBind.setPurchaseOrderId(purchaseOrderId); +// List mesOrderBinds = mesOrderBindMapper.selectMesOrderBindList(queryOrderBind); +// if (mesOrderBinds == null || mesOrderBinds.isEmpty()) { +// throw new ServiceException("请将选择的所有采购订单明细都绑定销售订单"); +// } +// +// mesOrderBinds.stream().filter(mob -> mob.getBindAmount().compareTo(mob.getBarcodeAmount()) > 0 && mob.getSaleOrderId() > 0) +// .forEach(filterMob -> { +// Long saleOrderId = filterMob.getSaleOrderId(); +// MesSaleOrder saleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(saleOrderId); +// BigDecimal saleOrderAmount = saleOrder.getOrderAmount(); +// BigDecimal barcodeAmount = filterMob.getBindAmount().subtract(filterMob.getBarcodeAmount()); +// if (saleOrderAmount.compareTo(barcodeAmount) < 0) { +// throw new ServiceException(String.format("销售订单数量[%s]小于可用采购绑定数量[%s],请通知管理员修改采购订单绑定销售订单信息", saleOrderAmount, barcodeAmount)); +// } +// +// +// //校验对应的销售订单合并后的销售数量 +//// MesSaleOrderRelate querySaleOrderRelate = new MesSaleOrderRelate(); +//// querySaleOrderRelate.setRelateSaleOrderId(saleOrderId); +//// List mesSaleOrderRelates = mesSaleOrderRelateMapper.selectMesSaleOrderRelateList(querySaleOrderRelate); +// +// MesSaleOrderRelate mesSaleOrderRelate = new MesSaleOrderRelate(); +// mesSaleOrderRelate.setRelateSaleOrderId(saleOrderId); +// mesSaleOrderRelate.setRelateSaleOrderAmout(barcodeAmount); +// mesSaleOrderRelate.setPurchaseOrderId(purchaseOrderId); +// mesSaleOrderRelate.setPlanDeliveryDate(saleOrder.getPlanDeliveryDate()); +// +// toInsertSaleOrderRelates.add(mesSaleOrderRelate); +// +// filterMob.setBarcodeAmount(filterMob.getBindAmount()); +// filterMob.setUpdateTime(currentDate); +// filterMob.setUpdateBy(userName); +// +// mesOrderBindMapper.updateMesOrderBind(filterMob); +// }); +// +// +//// +// } +// +// +// //新建虚拟物料 +// String barcodeInfo = Seq.getId(Seq.mesBarcodeSeqType, Seq.mesBarcodeCode); +// Long materialId = this.insertNewVirtualMaterial(barcodeInfo, userName, currentDate); +// +// //创建虚拟销售订单,保存对应的销售订单列表 +// BigDecimal sumOrderAmount = +// toInsertSaleOrderRelates.stream() +// .map(MesSaleOrderRelate::getRelateSaleOrderAmout) +// .reduce(BigDecimal.ZERO, BigDecimal::add); +// MesSaleOrder virtualSaleOrder = this.insertNewVirtualSaleOrder(materialId, barcodeInfo,sumOrderAmount, toInsertSaleOrderRelates, userName, currentDate); +// +// +// //生成条码 +// String batchCode = Seq.getId(Seq.mesBatchCodeSeqType, Seq.mesBatchCodeCode); +// mesBaseBarcodeInfo.setBatchFlag(MesConstants.NOT_IS_BATCH); +// MesBaseBarcodeInfo toInsertedBarcodeInfo = getInsertedBarcodeInfo(mesBaseBarcodeInfo, barcodeInfo, batchCode, userName, currentDate); +// toInsertedBarcodeInfo.setPurchaseOrderId(0L); +// toInsertedBarcodeInfo.setMaterialId(materialId); +// toInsertedBarcodeInfo.setSaleOrderId(virtualSaleOrder.getSaleOrderId()); +// toInsertedBarcodeInfo.setSaleorderCode(virtualSaleOrder.getSaleorderCode()); +// toInsertedBarcodeInfo.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); +// toInsertedBarcodeInfo.setBarcodeSpec(materialCodes.toString()); +// +// mesBaseBarcodeInfoMapper.insertMesBaseBarcodeInfo(toInsertedBarcodeInfo); +// +// //更新warehouse配置 +// +// return 1; +// } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseMaterialInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseMaterialInfoServiceImpl.java index 405833b5..9aee034d 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseMaterialInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseMaterialInfoServiceImpl.java @@ -9,11 +9,8 @@ import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; -import com.hw.mes.api.domain.MesBaseBarcodeInfo; -import com.hw.mes.domain.MesOrderBind; import com.hw.mes.mapper.MesBaseBarcodeInfoMapper; import com.hw.mes.mapper.MesOrderBindMapper; -import org.apache.poi.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.mapper.MesBaseMaterialInfoMapper; diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesOrderBindServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesOrderBindServiceImpl.java index 65576dd2..328d4e68 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesOrderBindServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesOrderBindServiceImpl.java @@ -1,96 +1,107 @@ package com.hw.mes.service.impl; import java.util.List; + import com.hw.common.core.utils.DateUtils; +import com.hw.common.core.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.mapper.MesOrderBindMapper; -import com.hw.mes.domain.MesOrderBind; +import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.service.IMesOrderBindService; /** * 采购销售订单绑定信息Service业务层处理 - * + * * @author xins * @date 2024-05-16 */ @Service -public class MesOrderBindServiceImpl implements IMesOrderBindService -{ +public class MesOrderBindServiceImpl implements IMesOrderBindService { @Autowired private MesOrderBindMapper mesOrderBindMapper; /** * 查询采购销售订单绑定信息 - * + * * @param orderBindId 采购销售订单绑定信息主键 * @return 采购销售订单绑定信息 */ @Override - public MesOrderBind selectMesOrderBindByOrderBindId(Long orderBindId) - { + public MesOrderBind selectMesOrderBindByOrderBindId(Long orderBindId) { return mesOrderBindMapper.selectMesOrderBindByOrderBindId(orderBindId); } /** * 查询采购销售订单绑定信息列表 - * + * * @param mesOrderBind 采购销售订单绑定信息 * @return 采购销售订单绑定信息 */ @Override - public List selectMesOrderBindList(MesOrderBind mesOrderBind) - { + public List selectMesOrderBindList(MesOrderBind mesOrderBind) { return mesOrderBindMapper.selectMesOrderBindList(mesOrderBind); } /** * 新增采购销售订单绑定信息 - * + * * @param mesOrderBind 采购销售订单绑定信息 * @return 结果 */ @Override - public int insertMesOrderBind(MesOrderBind mesOrderBind) - { + public int insertMesOrderBind(MesOrderBind mesOrderBind) { mesOrderBind.setCreateTime(DateUtils.getNowDate()); return mesOrderBindMapper.insertMesOrderBind(mesOrderBind); } /** * 修改采购销售订单绑定信息 - * + * * @param mesOrderBind 采购销售订单绑定信息 * @return 结果 */ @Override - public int updateMesOrderBind(MesOrderBind mesOrderBind) - { + public int updateMesOrderBind(MesOrderBind mesOrderBind) { mesOrderBind.setUpdateTime(DateUtils.getNowDate()); return mesOrderBindMapper.updateMesOrderBind(mesOrderBind); } /** * 批量删除采购销售订单绑定信息 - * + * * @param orderBindIds 需要删除的采购销售订单绑定信息主键 * @return 结果 */ @Override - public int deleteMesOrderBindByOrderBindIds(Long[] orderBindIds) - { + public int deleteMesOrderBindByOrderBindIds(Long[] orderBindIds) { return mesOrderBindMapper.deleteMesOrderBindByOrderBindIds(orderBindIds); } /** * 删除采购销售订单绑定信息信息 - * + * * @param orderBindId 采购销售订单绑定信息主键 * @return 结果 */ @Override - public int deleteMesOrderBindByOrderBindId(Long orderBindId) - { + public int deleteMesOrderBindByOrderBindId(Long orderBindId) { return mesOrderBindMapper.deleteMesOrderBindByOrderBindId(orderBindId); } + + + /** + * 查询采购销售订单绑定信息列表,Join material + * + * @param mesOrderBind 采购销售订单绑定信息 + * @return 采购销售订单绑定信息 + */ + @Override + public List selectMesOrderBindJoinList(MesOrderBind mesOrderBind) { + mesOrderBind.setMaterialSpec(StringUtils.isNotEmpty(mesOrderBind.getMaterialSpec()) + ? mesOrderBind.getMaterialSpec().replaceAll("\\s+", "") : ""); + mesOrderBind.setSpecificationParameter(StringUtils.isNotEmpty(mesOrderBind.getSpecificationParameter()) + ? mesOrderBind.getSpecificationParameter().replaceAll("\\s+", "") : ""); + return mesOrderBindMapper.selectMesOrderBindJoinList(mesOrderBind); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java index b43f53ad..fe736f31 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java @@ -11,11 +11,9 @@ import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.security.utils.SecurityUtils; -import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo; -import com.hw.mes.domain.MesOrderBind; +import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.domain.MesSaleOrder; -import com.hw.mes.domain.vo.MesOrderBindVo; import com.hw.mes.mapper.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -349,13 +347,13 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { orderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); orderBind.setSaleOrderId(saleOrderId); orderBind.setSaleOrderCode(saleOrder.getSaleorderCode()); - orderBind.setProductId(purchaseOrder.getMaterialId()); - orderBind.setProductCode(purchaseOrder.getMaterialCode()); - orderBind.setProductName(purchaseOrder.getMaterialName()); + orderBind.setProductId(saleOrder.getMaterialId()); + orderBind.setProductCode(saleOrder.getMaterialCode()); + orderBind.setProductName(saleOrder.getMaterialName()); orderBind.setPurchaseOrderId(purchaseOrderId); - orderBind.setMaterialId(saleOrder.getMaterialId()); - orderBind.setMaterialCode(saleOrder.getMaterialCode()); - orderBind.setMaterialName(saleOrder.getMaterialName()); + orderBind.setMaterialId(purchaseOrder.getMaterialId()); + orderBind.setMaterialCode(purchaseOrder.getMaterialCode()); + orderBind.setMaterialName(purchaseOrder.getMaterialName()); orderBind.setBindAmount(purchaseOrder.getUpdateAmount()); orderBind.setPoNo(purchaseOrder.getPoNo()); orderBind.setCreateTime(currentDate); diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml index c186e84b..6a8dec08 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesBaseMaterialInfoMapper.xml @@ -27,6 +27,7 @@ + @@ -65,6 +66,7 @@ bmi.create_org_id, bmi.purchase_price_unit_id, bmi.use_org_id, + bmi.material_classfication, bmi.prodline_id, bmi.active_flag, bmi.deleted_flag, @@ -146,6 +148,7 @@ create_org_id, use_org_id, prodline_id, + material_classfication, active_flag, deleted_flag, remark, @@ -175,6 +178,8 @@ #{createOrgId}, #{useOrgId}, #{prodlineId}, + #{materialClassfication}, + #{activeFlag}, #{deletedFlag}, #{remark}, diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml index 5f2fb50a..a4fa5d3a 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml @@ -8,6 +8,8 @@ + + @@ -32,6 +34,8 @@ select material_bom_id, parent_id, ancestors, + material_classfication, + erp_material_id, material_id, material_name, material_bom_desc, @@ -56,6 +60,7 @@ and parent_id = #{parentId} and ancestors like concat('%', #{ancestors},'%') and material_id = #{materialId} + and erp_material_id = #{erpMaterialId} and material_name like concat('%', #{materialName}, '%') @@ -80,6 +85,8 @@ parent_id, ancestors, + material_classfication, + erp_material_id, material_id, material_name, material_bom_desc, @@ -98,6 +105,8 @@ #{parentId}, #{ancestors}, + #{materialClassfication}, + #{erpMaterialId}, #{materialId}, #{materialName}, #{materialBomDesc}, diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml index d7c18ea6..7d478552 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesOrderBindMapper.xml @@ -24,6 +24,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + @@ -130,4 +135,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{orderBindId} + + + + + + \ No newline at end of file diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml index 30ea19b7..586c905a 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml @@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -140,6 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_id, material_code, material_name, + purchase_order_classfication, order_amount, complete_amount, approve_date, @@ -164,6 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{materialId}, #{materialCode}, #{materialName}, + #{purchaseOrderClassfication}, #{orderAmount}, #{completeAmount}, #{approveDate}, @@ -250,7 +253,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mpo.fentry_id, mpo.po_no, mpo.document_status, - mpo.material_id, + mpo.material_id as erp_material_id, + mbmi.material_id, mbmi.material_code, mbmi.material_name, mbmi.material_spec, @@ -330,7 +334,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mob.order_bind_id from mes_order_bind mob left join mes_purchase_order mpo on mpo.purchase_order_id = mob.purchase_order_id - left join mes_base_material_info mbmi on mbmi.material_id = mpo.material_id + left join mes_base_material_info mbmi on mbmi.material_id = mob.material_id and mob.sale_order_id = #{saleOrderId} and mpo.po_no = #{poNo} @@ -376,6 +380,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and mbmi.material_name like concat('%', #{materialName}, '%') and mpo.specification_parameter like concat('%', #{specificationParameter}, '%') and mbmi.material_spec like concat('%', #{materialSpec}, '%') + + and mpo.purchase_order_id = #{purchaseOrderId} + order by mpo.erp_modify_date desc,mpo.po_no ,mpo.material_name diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderRelateMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderRelateMapper.xml new file mode 100644 index 00000000..27cf73ad --- /dev/null +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderRelateMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + select purchase_order_relate_id, purchase_order_id, relate_purchase_order_id, relate_purchase_order_amount from mes_purchase_order_relate + + + + + + + + insert into mes_purchase_order_relate + + purchase_order_id, + relate_purchase_order_id, + relate_purchase_order_amount, + + + #{purchaseOrderId}, + #{relatePurchaseOrderId}, + #{relatePurchaseOrderAmount}, + + + + + update mes_purchase_order_relate + + purchase_order_id = #{purchaseOrderId}, + relate_purchase_order_id = #{relatePurchaseOrderId}, + relate_purchase_order_amount = #{relatePurchaseOrderAmount}, + + where purchase_order_relate_id = #{purchaseOrderRelateId} + + + + delete from mes_purchase_order_relate where purchase_order_relate_id = #{purchaseOrderRelateId} + + + + delete from mes_purchase_order_relate where purchase_order_relate_id in + + #{purchaseOrderRelateId} + + + + + + insert into mes_purchase_order_relate( purchase_order_id, relate_purchase_order_id, relate_purchase_order_amount) values + + ( #{item.purchaseOrderId}, #{item.relatePurchaseOrderId}, #{item.relatePurchaseOrderAmount}) + + + \ No newline at end of file diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml index 056f1c1b..594d1f9c 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderMapper.xml @@ -29,6 +29,7 @@ + @@ -54,6 +55,7 @@ material_name, material_model, matkl, + sale_order_classfication, order_amount, complete_amount, release_qty, @@ -127,6 +129,7 @@ order_amount, complete_amount, release_qty, + sale_order_classfication, is_release, approve_date, erp_modify_date, @@ -156,6 +159,7 @@ #{orderAmount}, #{completeAmount}, #{releaseQty}, + #{saleOrderClassfication}, #{isRelease}, #{approveDate}, #{erpModifyDate}, @@ -264,4 +268,5 @@ order by mso.erp_modify_date desc + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderRelateMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderRelateMapper.xml new file mode 100644 index 00000000..bee075f2 --- /dev/null +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesSaleOrderRelateMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + select sale_order_relate_id, sale_order_id,barcode_info, order_bind_id,relate_sale_order_id,material_id, relate_sale_order_amount from mes_sale_order_relate + + + + + + + + insert into mes_sale_order_relate + + sale_order_id, + barcode_info, + order_bind_id, + relate_sale_order_id, + material_id, + purchase_order_id, + relate_sale_order_amount, + + + #{saleOrderId}, + #{barcodeInfo}, + #{orderBindId}, + #{relateSaleOrderId}, + #{materialId}, + #{purchaseOrderId}, + #{relateSaleOrderAmount}, + + + + + update mes_sale_order_relate + + sale_order_id = #{saleOrderId}, + relate_sale_order_id = #{relateSaleOrderId}, + relate_sale_order_amount = #{relateSaleOrderAmount}, + + where sale_order_relate_id = #{saleOrderRelateId} + + + + delete from mes_sale_order_relate where sale_order_relate_id = #{saleOrderRelateId} + + + + delete from mes_sale_order_relate where sale_order_relate_id in + + #{saleOrderRelateId} + + + + + + insert into mes_sale_order_relate( sale_order_id, barcode_info,order_bind_id,relate_sale_order_id,material_id, purchase_order_id,relate_sale_order_amount) values + + ( #{item.saleOrderId}, #{item.barcodeInfo}, #{item.orderBindId}, #{item.relateSaleOrderId}, #{item.materialId},#{item.purchaseOrderId}, #{item.relateSaleOrderAmount}) + + + \ No newline at end of file diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/config/WmsConfig.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/config/WmsConfig.java index 5612653f..ff954935 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/config/WmsConfig.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/config/WmsConfig.java @@ -28,6 +28,11 @@ public class WmsConfig { */ private Long fifthSemiWarehouseId; + /** + * 五楼原料周转区仓库ID + */ + private Long fifthCabinetWarehouseId; + /** * 一楼成品仓库ID */ @@ -82,6 +87,14 @@ public class WmsConfig { this.fifthSemiWarehouseId = fifthSemiWarehouseId; } + public Long getFifthCabinetWarehouseId() { + return fifthCabinetWarehouseId; + } + + public void setFifthCabinetWarehouseId(Long fifthCabinetWarehouseId) { + this.fifthCabinetWarehouseId = fifthCabinetWarehouseId; + } + public Long getFirstFloorProductWarehouseId() { return firstFloorProductWarehouseId; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsBaseWarehouseController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsBaseWarehouseController.java index 8d3c120b..b9426a08 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsBaseWarehouseController.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/controller/WmsBaseWarehouseController.java @@ -4,8 +4,12 @@ import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import com.hw.common.core.domain.R; +import com.hw.common.security.annotation.InnerAuth; import com.hw.wms.domain.WmsBaseCategory; -import com.hw.wms.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.WmsWarehouseMaterial; +import com.hw.wms.domain.vo.WmsWarehouseMaterialCheckFormVo; +import com.hw.wms.domain.vo.WmsWarehouseMaterialCheckVo; import com.hw.wms.service.IWmsBaseCategoryService; import com.hw.wms.service.IWmsWarehouseMaterialService; import org.springframework.beans.factory.annotation.Autowired; @@ -152,6 +156,25 @@ public class WmsBaseWarehouseController extends BaseController { return toAjax(wmsWarehouseMaterialService.deleteWmsWarehouseMaterialByWarehouseMaterialIds(warehouseMaterialIds)); } + /** + * 校验仓库配置信息 + */ + @PostMapping("/checkWarehouseMaterials") + public AjaxResult checkWarehouseMaterials(@RequestBody List wmsWarehouseMaterialCheckVos) { + return toAjax(wmsWarehouseMaterialService.checkWarehouseMaterials(wmsWarehouseMaterialCheckVos)); + } + + + + @Log(title = "仓库管理", businessType = BusinessType.ALLOCATE) + @PostMapping("/allocateVirtualMaterial") + @InnerAuth + public R allocateVirtualMaterial(@RequestBody WmsWarehouseMaterial wmsWarehouseMaterial) { + boolean isSuccess = wmsWarehouseMaterialService.insertWmsWarehouseMaterial(wmsWarehouseMaterial) > 0; + return R.ok(isSuccess); + } + + // /** // * 根据仓库分配可入库物料信息 diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsBaseLocation.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsBaseLocation.java index 50cda47d..13d5be49 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsBaseLocation.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsBaseLocation.java @@ -48,6 +48,8 @@ public class WmsBaseLocation extends BaseEntity @Excel(name = "列") private Long locColumn; + private Long locDeep; + /** 激活标记 1是 0否 */ @Excel(name = "激活标记 1是 0否") private String activeFlag; @@ -231,6 +233,15 @@ public class WmsBaseLocation extends BaseEntity { return locColumn; } + + public Long getLocDeep() { + return locDeep; + } + + public void setLocDeep(Long locDeep) { + this.locDeep = locDeep; + } + public void setActiveFlag(String activeFlag) { this.activeFlag = activeFlag; diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsWarehouseMaterial.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsWarehouseMaterial.java index d62e3a35..fbebf49d 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsWarehouseMaterial.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsWarehouseMaterial.java @@ -1,119 +1,119 @@ -package com.hw.wms.domain; - -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.hw.common.core.annotation.Excel; -import com.hw.common.core.web.domain.BaseEntity; - -/** - * 仓库可储存物料信息对象 wms_warehouse_material - * - * @author xins - * @date 2024-01-09 - */ -public class WmsWarehouseMaterial extends BaseEntity -{ - private static final long serialVersionUID = 1L; - - private Long warehouseMaterialId; - - /** 仓库ID */ - private Long warehouseId; - - private Integer warehouseFloor; - - /** 库位编码;单独需要针对库位设置的,后续扩展使用 */ - private String locationCode; - - /** 存储类型(1、物料,2、物料类型);先支持物料 */ - private String storageType; - - /** 根据存储类型对应各自表的主键 */ - private Long storageId; - - private String materialCode; - - private String materialName; - - public Long getWarehouseMaterialId() { - return warehouseMaterialId; - } - - public void setWarehouseMaterialId(Long warehouseMaterialId) { - this.warehouseMaterialId = warehouseMaterialId; - } - - public void setWarehouseId(Long warehouseId) - { - this.warehouseId = warehouseId; - } - - public Long getWarehouseId() - { - return warehouseId; - } - - public Integer getWarehouseFloor() { - return warehouseFloor; - } - - public void setWarehouseFloor(Integer warehouseFloor) { - this.warehouseFloor = warehouseFloor; - } - - public void setLocationCode(String locationCode) - { - this.locationCode = locationCode; - } - - public String getLocationCode() - { - return locationCode; - } - public void setStorageType(String storageType) - { - this.storageType = storageType; - } - - public String getStorageType() - { - return storageType; - } - public void setStorageId(Long storageId) - { - this.storageId = storageId; - } - - public Long getStorageId() - { - return storageId; - } - - public String getMaterialCode() { - return materialCode; - } - - public void setMaterialCode(String materialCode) { - this.materialCode = materialCode; - } - - public String getMaterialName() { - return materialName; - } - - public void setMaterialName(String materialName) { - this.materialName = materialName; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("warehouseId", getWarehouseId()) - .append("locationCode", getLocationCode()) - .append("storageType", getStorageType()) - .append("storageId", getStorageId()) - .append("createTime", getCreateTime()) - .append("createBy", getCreateBy()) - .toString(); - } -} +//package com.hw.wms.domain; +// +//import org.apache.commons.lang3.builder.ToStringBuilder; +//import org.apache.commons.lang3.builder.ToStringStyle; +//import com.hw.common.core.annotation.Excel; +//import com.hw.common.core.web.domain.BaseEntity; +// +///** +// * 仓库可储存物料信息对象 wms_warehouse_material +// * +// * @author xins +// * @date 2024-01-09 +// */ +//public class WmsWarehouseMaterial extends BaseEntity +//{ +// private static final long serialVersionUID = 1L; +// +// private Long warehouseMaterialId; +// +// /** 仓库ID */ +// private Long warehouseId; +// +// private Integer warehouseFloor; +// +// /** 库位编码;单独需要针对库位设置的,后续扩展使用 */ +// private String locationCode; +// +// /** 存储类型(1、物料,2、物料类型);先支持物料 */ +// private String storageType; +// +// /** 根据存储类型对应各自表的主键 */ +// private Long storageId; +// +// private String materialCode; +// +// private String materialName; +// +// public Long getWarehouseMaterialId() { +// return warehouseMaterialId; +// } +// +// public void setWarehouseMaterialId(Long warehouseMaterialId) { +// this.warehouseMaterialId = warehouseMaterialId; +// } +// +// public void setWarehouseId(Long warehouseId) +// { +// this.warehouseId = warehouseId; +// } +// +// public Long getWarehouseId() +// { +// return warehouseId; +// } +// +// public Integer getWarehouseFloor() { +// return warehouseFloor; +// } +// +// public void setWarehouseFloor(Integer warehouseFloor) { +// this.warehouseFloor = warehouseFloor; +// } +// +// public void setLocationCode(String locationCode) +// { +// this.locationCode = locationCode; +// } +// +// public String getLocationCode() +// { +// return locationCode; +// } +// public void setStorageType(String storageType) +// { +// this.storageType = storageType; +// } +// +// public String getStorageType() +// { +// return storageType; +// } +// public void setStorageId(Long storageId) +// { +// this.storageId = storageId; +// } +// +// public Long getStorageId() +// { +// return storageId; +// } +// +// public String getMaterialCode() { +// return materialCode; +// } +// +// public void setMaterialCode(String materialCode) { +// this.materialCode = materialCode; +// } +// +// public String getMaterialName() { +// return materialName; +// } +// +// public void setMaterialName(String materialName) { +// this.materialName = materialName; +// } +// +// @Override +// public String toString() { +// return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +// .append("warehouseId", getWarehouseId()) +// .append("locationCode", getLocationCode()) +// .append("storageType", getStorageType()) +// .append("storageId", getStorageId()) +// .append("createTime", getCreateTime()) +// .append("createBy", getCreateBy()) +// .toString(); +// } +//} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckFormVo.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckFormVo.java new file mode 100644 index 00000000..73b5e1f7 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckFormVo.java @@ -0,0 +1,23 @@ +package com.hw.wms.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 校验物料仓库配置VO from对象 + * @ClassName: WmsWarehouseMaterialCheckVo + * @Author : xins + * @Date :2024-09-10 18:17 + * @Version :1.0 + */ +@Data +public class WmsWarehouseMaterialCheckFormVo { + + private String flag; + + private List wmsWarehouseMaterialCheckVos; + +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckVo.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckVo.java new file mode 100644 index 00000000..2b007bf8 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/vo/WmsWarehouseMaterialCheckVo.java @@ -0,0 +1,33 @@ +package com.hw.wms.domain.vo; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 校验物料仓库配置VO对象 + * @ClassName: WmsWarehouseMaterialCheckVo + * @Author : xins + * @Date :2024-03-29 11:27 + * @Version :1.0 + */ +@Data +public class WmsWarehouseMaterialCheckVo { + + //物料ID +// @NotNull(message="materialId必须输入") + private Long materialId; + +// @NotEmpty(message="物料编码必须输入") + private String materialCode; + +// @NotEmpty(message="物料名称必须输入") + private String materialName; + + private String materialSpec; + +// @NotNull(message="序号必须输入") +// private int index; +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsWarehouseMaterialMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsWarehouseMaterialMapper.java index d6e31579..a57822ad 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsWarehouseMaterialMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsWarehouseMaterialMapper.java @@ -2,7 +2,7 @@ package com.hw.wms.mapper; import java.util.List; -import com.hw.wms.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.WmsWarehouseMaterial; /** * 仓库可储存物料信息Mapper接口 diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsWarehouseMaterialService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsWarehouseMaterialService.java index 6bc8b3c6..1086ab9c 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsWarehouseMaterialService.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/IWmsWarehouseMaterialService.java @@ -1,7 +1,8 @@ package com.hw.wms.service; import java.util.List; -import com.hw.wms.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.WmsWarehouseMaterial; +import com.hw.wms.domain.vo.WmsWarehouseMaterialCheckVo; /** * 仓库可储存物料信息Service接口 @@ -76,4 +77,13 @@ public interface IWmsWarehouseMaterialService * @param materialIds 物料组 */ public void batchInsertWarehouseMaterial(Long warehouseId, Integer warehouseFloor, Long[] materialIds); + + + /** + * 校验仓库物料配置信息 + * + * @param wmsWarehouseMaterialCheckVos 需要校验的物料VO对象 + * @return 结果 + */ + public int checkWarehouseMaterials(List wmsWarehouseMaterialCheckVos); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsBaseLocationServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsBaseLocationServiceImpl.java index 54cb85cc..0adc3207 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsBaseLocationServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsBaseLocationServiceImpl.java @@ -164,7 +164,7 @@ public class WmsBaseLocationServiceImpl implements IWmsBaseLocationService { if (locationStatus.equals(WmsLocationStatus.NORMAL.getCode())) { return 1; } - if (!locationStatus.equals(WmsLocationStatus.MANUALLOCK.getCode())) { + if (!locationStatus.equals(WmsLocationStatus.MANUALLOCK.getCode()) && !locationStatus.equals(WmsLocationStatus.OUTSIDELOCATIONABNORMAL.getCode())) { throw new ServiceException("库位状态为" + WmsLocationStatus.locationStatusMap.get(locationStatus) + ",不能解锁"); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java index cb64a673..2fba13d1 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsRawOutstockServiceImpl.java @@ -713,7 +713,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { } /** - * AGV原材料出库 + * AGV原材料出库(弃用) * * @param wmsAgvRawOutstockVo * @return @@ -868,7 +868,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { rawOutstockDetail.setLocationCode(oriBaseLocation.getLocationCode()); rawOutstockDetail.setMaterialBarcode(moveMaterialBarcode); rawOutstockDetail.setMaterialId(moveMaterialId); - rawOutstockDetail.setPlanAmount(new BigDecimal(1));//todo: agv数量默认1 + rawOutstockDetail.setPlanAmount(new BigDecimal(1)); rawOutstockDetail.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE); rawOutstockDetail.setOutstockWay(WmsConstants.WMS_STOCK_WAY_AGV); wmsRawOutstockDetailMapper.insertWmsRawOutstockDetail(rawOutstockDetail); @@ -898,7 +898,7 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService { // rawInstockDetail.setLocationCode(targetBaseLocation.getLocationCode()); // rawInstockDetail.setMaterialBarcode(moveMaterialBarcode); // rawInstockDetail.setMaterialId(moveMaterialId); -// rawInstockDetail.setPlanAmount(new BigDecimal(1));//todo: agv数量默认1 +// rawInstockDetail.setPlanAmount(new BigDecimal(1)); // rawInstockDetail.setExecuteStatus(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE); // rawInstockDetail.setInstockWay(WmsConstants.WMS_STOCK_WAY_AGV); // wmsRawInstockDetailMapper.insertWmsRawInstockDetail(rawInstockDetail); diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsWarehouseMaterialServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsWarehouseMaterialServiceImpl.java index 55905547..3b65d31f 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsWarehouseMaterialServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsWarehouseMaterialServiceImpl.java @@ -5,13 +5,16 @@ import java.util.Date; import java.util.List; import com.hw.common.core.constant.WmsConstants; +import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.security.utils.SecurityUtils; +import com.hw.wms.config.WmsConfig; +import com.hw.wms.domain.vo.WmsWarehouseMaterialCheckVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.wms.mapper.WmsWarehouseMaterialMapper; -import com.hw.wms.domain.WmsWarehouseMaterial; +import com.hw.wms.api.domain.WmsWarehouseMaterial; import com.hw.wms.service.IWmsWarehouseMaterialService; /** @@ -25,6 +28,9 @@ public class WmsWarehouseMaterialServiceImpl implements IWmsWarehouseMaterialSer @Autowired private WmsWarehouseMaterialMapper wmsWarehouseMaterialMapper; + @Autowired + private WmsConfig wmsConfig; + /** * 查询仓库可储存物料信息 * @@ -56,6 +62,7 @@ public class WmsWarehouseMaterialServiceImpl implements IWmsWarehouseMaterialSer @Override public int insertWmsWarehouseMaterial(WmsWarehouseMaterial wmsWarehouseMaterial) { wmsWarehouseMaterial.setCreateTime(DateUtils.getNowDate()); + wmsWarehouseMaterial.setCreateBy(SecurityUtils.getUsername()); return wmsWarehouseMaterialMapper.insertWmsWarehouseMaterial(wmsWarehouseMaterial); } @@ -133,4 +140,44 @@ public class WmsWarehouseMaterialServiceImpl implements IWmsWarehouseMaterialSer } + /** + * 校验仓库物料配置信息 + * + * @param wmsWarehouseMaterialCheckVos 需要校验的物料VO对象 + * @return 结果 + */ + @Override + public int checkWarehouseMaterials(List wmsWarehouseMaterialCheckVos) { + StringBuilder errorMsgBuilder = new StringBuilder(); + wmsWarehouseMaterialCheckVos.forEach(wmcv -> { + WmsWarehouseMaterial queryWarehouseMaterial = new WmsWarehouseMaterial(); + queryWarehouseMaterial.setStorageId(wmcv.getMaterialId()); + queryWarehouseMaterial.setStorageType(WmsConstants.WMS_WAREHOUSE_MATERIAL_STORAGE_TYPE_MATERIAL); + List wmsWarehouseMaterials = wmsWarehouseMaterialMapper.selectWmsWarehouseMaterialList(queryWarehouseMaterial); + if (wmsWarehouseMaterials == null || wmsWarehouseMaterials.isEmpty()) { + errorMsgBuilder.append("没有配置仓库信息['").append(",物料编码:").append(wmcv.getMaterialCode()) + .append(",物料名称:").append(wmcv.getMaterialName()).append(",物料规格:").append(wmcv.getMaterialSpec()) + .append("];"); + }else{ + WmsWarehouseMaterial wmsWarehouseMaterial = wmsWarehouseMaterials.get(0); + Long warehouseId = wmsWarehouseMaterial.getWarehouseId(); + if(!warehouseId.equals(wmsConfig.getFifthCabinetWarehouseId())){ + errorMsgBuilder.append("仓库信息配置不正确['").append(",物料编码:").append(wmcv.getMaterialCode()) + .append(",物料名称:").append(wmcv.getMaterialName()).append(",物料规格:").append(wmcv.getMaterialSpec()) + .append("];"); + } + } + + + + }); + + if (errorMsgBuilder.length() > 0) { + throw new ServiceException(errorMsgBuilder.toString()); + } + + return 1; + } + + } diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml index 548f31d4..a26da98e 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml @@ -15,6 +15,7 @@ + @@ -244,7 +245,8 @@ + and storage_type = #{storageType} + and storage_id = #{storageId} diff --git a/hw-ui/src/api/mes/barcode.js b/hw-ui/src/api/mes/barcode.js index f10e3ac9..34a6e2c6 100644 --- a/hw-ui/src/api/mes/barcode.js +++ b/hw-ui/src/api/mes/barcode.js @@ -167,3 +167,13 @@ export function reprintBarcodes(barcodeIds) { method: 'get' }) } + + +// 合并采购订单新增原材料条码信息 +export function mergeAddBarcode(data) { + return request({ + url: '/mes/barcode/mergeAdd', + method: 'post', + data: data + }) +} diff --git a/hw-ui/src/api/mes/purchaseOrder.js b/hw-ui/src/api/mes/purchaseOrder.js index 6e35646c..1a1b0b3d 100644 --- a/hw-ui/src/api/mes/purchaseOrder.js +++ b/hw-ui/src/api/mes/purchaseOrder.js @@ -127,3 +127,14 @@ export function selectPurchaseOrderBindList(query) { params: query }) } + + + +// 获取销售订单已绑定采购订单List,for 新增原材料条码 +export function getOrderBinds(query) { + return request({ + url: '/mes/purchaseOrder/getOrderBinds', + method: 'get', + params: query + }) +} diff --git a/hw-ui/src/api/wms/wmswarehouse.js b/hw-ui/src/api/wms/wmswarehouse.js index 381615bc..062cdaba 100644 --- a/hw-ui/src/api/wms/wmswarehouse.js +++ b/hw-ui/src/api/wms/wmswarehouse.js @@ -98,3 +98,13 @@ export function unallocateMaterials(data) { params: data }) } + +// 校验仓库分配的物料信息列表 +export function checkWarehouseMaterials(data) { + return request({ + url: '/wms/wmswarehouse/checkWarehouseMaterials', + method: 'post', + data: data + }) +} + diff --git a/hw-ui/src/views/board/common/applyRawOutstock.vue b/hw-ui/src/views/board/common/applyRawOutstock.vue index 9a3e4b72..c5d94e63 100644 --- a/hw-ui/src/views/board/common/applyRawOutstock.vue +++ b/hw-ui/src/views/board/common/applyRawOutstock.vue @@ -249,6 +249,10 @@ export default { this.queryParams.planDetailCode = this.form.planDetailCode; getStockTotal(this.queryParams).then(e => { this.total = e.total; + // e.rows.forEach(ee =>{ + // alert(parseFloat(ee.totalAmount-ee.occupyAmount).toFixed(2)) + // }); + this.wmsRawOutstockDetailList = e.rows.map(r => { return { stockTotalId: r.stockTotalId, @@ -257,9 +261,9 @@ export default { materialName: r.materialName, materialSpec: r.materialSpec, safeFlag: r.safeFlag, - availableAmount: r.totalAmount - r.occupyAmount - r.frozenAmount, - unavailableAmount: r.occupyAmount + r.frozenAmount, - outstockAmount: r.outstockAmount, + availableAmount: parseFloat(r.totalAmount - r.occupyAmount - r.frozenAmount).toFixed(2), + unavailableAmount: parseFloat(r.occupyAmount + r.frozenAmount).toFixed(2), + outstockAmount: parseFloat(r.outstockAmount ? r.outstockAmount : 0).toFixed(2), planAmount: this.planAmount } }) diff --git a/hw-ui/src/views/board/fifthFloor/index.vue b/hw-ui/src/views/board/fifthFloor/index.vue index a5925d8b..c91dac33 100644 --- a/hw-ui/src/views/board/fifthFloor/index.vue +++ b/hw-ui/src/views/board/fifthFloor/index.vue @@ -723,14 +723,14 @@ export default { // }); // }, 60 * 1000) getLoginStationInfo().then(e => { - if(!e.data){ - this.$modal.msgError("登录工位有误"); - return; - } - this.loginStationInfo = e.data; + // if(!e.data){ + // this.$modal.msgError("登录工位有误"); + // return; + // } + // this.loginStationInfo = e.data; //TODO - // this.loginStationInfo = {stationId:"1",stationCode:"ZP_02"} + this.loginStationInfo = {stationId:"1",stationCode:"ZP_02"} this.getProductPlans(); this.getChartData(); }); diff --git a/hw-ui/src/views/board/fourthFloor/laserLight.vue b/hw-ui/src/views/board/fourthFloor/laserLight.vue index 7516d38a..65257031 100644 --- a/hw-ui/src/views/board/fourthFloor/laserLight.vue +++ b/hw-ui/src/views/board/fourthFloor/laserLight.vue @@ -215,7 +215,8 @@ - @@ -223,13 +224,13 @@ + placeholder="请输入数量" style="width:360px"> @@ -252,6 +253,7 @@ import { } from "@/api/board"; import {monitorSerialData} from "@/utils/serial" +import {addWmslocation, updateWmslocation} from "@/api/wms/wmslocation"; const setState = (e) => { if (e === '1') { @@ -325,11 +327,13 @@ export default { }, - STOCK_TYPE:{ - INSTOCK:"1",//入库 - OUTSTOCK:"2",//出库 - RETURN:"3",//退库 - } + STOCK_TYPE: { + INSTOCK: "1",//入库 + OUTSTOCK: "2",//出库 + RETURN: "3",//退库 + }, + + submitLoading: false } }, async mounted() { @@ -999,7 +1003,7 @@ export default { this.checkConnectSerial(); }, - checkConnectSerial(){ + checkConnectSerial() { if (!this.checkSerialConnected()) { this.$confirm('请连接条码枪', '提示', { confirmButtonText: '连接', @@ -1027,87 +1031,104 @@ export default { }, submitRawStock() { - if (this.stockType === this.STOCK_TYPE.INSTOCK) {//入库 - addRawInstock(this.wmsForm).then(response => { - this.$modal.msgSuccess("板材入库成功"); - this.cancel(); - }); - } else if (this.stockType === this.STOCK_TYPE.OUTSTOCK) {//出库 - this.wmsForm.outstockAmount = this.wmsForm.instockAmount; - this.wmsForm.planCode = this.form.planCode; - this.wmsForm.planDetailCode = this.form.planDetailCode; - this.wmsForm.operationType = '1';//人工 - this.wmsForm.taskType = '1';//生产领料 - this.wmsForm.saleOrderId = this.form.saleOrderId; + this.$refs["wmsForm"].validate(valid => { + if (valid) { + this.submitLoading = true; + if (this.stockType === this.STOCK_TYPE.INSTOCK) {//入库 + addRawInstock(this.wmsForm).then(response => { + this.$modal.msgSuccess("板材入库成功"); + this.cancel(); + }).finally(e => { + this.submitLoading = false; + }); + } else if (this.stockType === this.STOCK_TYPE.OUTSTOCK) {//出库 + this.wmsForm.outstockAmount = this.wmsForm.instockAmount; + this.wmsForm.planCode = this.form.planCode; + this.wmsForm.planDetailCode = this.form.planDetailCode; + this.wmsForm.operationType = '1';//人工 + this.wmsForm.taskType = '1';//生产领料 + this.wmsForm.saleOrderId = this.form.saleOrderId; - this.directRawOutstock(); + this.directRawOutstock(); - //板材为固定条码,不需要校验是否是安全库存 - // checkSuitableSaleOrderMaterial(this.wmsForm).then(response => { - // let returnCode = response.data.code; - // let returnMsg = response.data.msg; - // if (returnCode === this.OUTSTOCKCODE.directOutstockCode) { - // this.directRawOutstock(); - // } else if (returnCode === this.OUTSTOCKCODE.confirmOutstockCode) { - // this.$confirm('此库存为安全库存,确认要出安全库存么?有以下销售订单库存可以优先出:' + returnMsg, '提示', { - // confirmButtonText: '确定', - // cancelButtonText: '取消', - // type: 'warning' - // }).then(() => { - // this.directRawOutstock(); - // }).catch(() => { - // }); - // - // } else { - // this.$modal.msgWarning("请出库:" + returnMsg); - // } - // - // }); + //板材为固定条码,不需要校验是否是安全库存 + // checkSuitableSaleOrderMaterial(this.wmsForm).then(response => { + // let returnCode = response.data.code; + // let returnMsg = response.data.msg; + // if (returnCode === this.OUTSTOCKCODE.directOutstockCode) { + // this.directRawOutstock(); + // } else if (returnCode === this.OUTSTOCKCODE.confirmOutstockCode) { + // this.$confirm('此库存为安全库存,确认要出安全库存么?有以下销售订单库存可以优先出:' + returnMsg, '提示', { + // confirmButtonText: '确定', + // cancelButtonText: '取消', + // type: 'warning' + // }).then(() => { + // this.directRawOutstock(); + // }).catch(() => { + // }); + // + // } else { + // this.$modal.msgWarning("请出库:" + returnMsg); + // } + // + // }); + + } else if (this.stockType === this.STOCK_TYPE.RETURN) {//退库 + this.wmsForm.returnAmount = this.wmsForm.instockAmount; + this.wmsForm.planCode = this.form.planCode; + this.wmsForm.planDetailCode = this.form.planDetailCode; + this.wmsForm.operationType = '1';//人工 + this.wmsForm.taskType = '1';//余料退料 + this.wmsForm.saleOrderId = this.form.saleOrderId; + + directRawReturn(this.wmsForm).then(response => { + this.$modal.msgSuccess("板材退库成功"); + this.cancel(); + }).finally(e => { + this.submitLoading = false; + }); + + + //板材为固定条码,不需要校验是否是安全库存 + // checkSuitableSaleOrderMaterial(this.wmsForm).then(response => { + // let returnCode = response.data.code; + // let returnMsg = response.data.msg; + // if (returnCode === this.OUTSTOCKCODE.directOutstockCode) { + // this.directRawOutstock(); + // } else if (returnCode === this.OUTSTOCKCODE.confirmOutstockCode) { + // this.$confirm('此库存为安全库存,确认要出安全库存么?有以下销售订单库存可以优先出:' + returnMsg, '提示', { + // confirmButtonText: '确定', + // cancelButtonText: '取消', + // type: 'warning' + // }).then(() => { + // this.directRawOutstock(); + // }).catch(() => { + // }); + // + // } else { + // this.$modal.msgWarning("请出库:" + returnMsg); + // } + // + // }); + + } + + } + }); - } else if (this.stockType === this.STOCK_TYPE.RETURN) {//出库 - this.wmsForm.returnAmount = this.wmsForm.instockAmount; - this.wmsForm.planCode = this.form.planCode; - this.wmsForm.planDetailCode = this.form.planDetailCode; - this.wmsForm.operationType = '1';//人工 - this.wmsForm.taskType = '1';//余料退料 - this.wmsForm.saleOrderId = this.form.saleOrderId; - directRawReturn(this.wmsForm).then(response => { - this.$modal.msgSuccess("板材退库成功"); - this.cancel(); - }); - //板材为固定条码,不需要校验是否是安全库存 - // checkSuitableSaleOrderMaterial(this.wmsForm).then(response => { - // let returnCode = response.data.code; - // let returnMsg = response.data.msg; - // if (returnCode === this.OUTSTOCKCODE.directOutstockCode) { - // this.directRawOutstock(); - // } else if (returnCode === this.OUTSTOCKCODE.confirmOutstockCode) { - // this.$confirm('此库存为安全库存,确认要出安全库存么?有以下销售订单库存可以优先出:' + returnMsg, '提示', { - // confirmButtonText: '确定', - // cancelButtonText: '取消', - // type: 'warning' - // }).then(() => { - // this.directRawOutstock(); - // }).catch(() => { - // }); - // - // } else { - // this.$modal.msgWarning("请出库:" + returnMsg); - // } - // - // }); - } }, directRawOutstock() { directRawOutstock(this.wmsForm).then(response => { this.$modal.msgSuccess("板材领取成功"); this.cancel(); + }).finally(e => { + this.submitLoading = false; }); }, diff --git a/hw-ui/src/views/dms/base/devicetype/index.vue b/hw-ui/src/views/dms/base/devicetype/index.vue index 062a3af6..2b1acb6e 100644 --- a/hw-ui/src/views/dms/base/devicetype/index.vue +++ b/hw-ui/src/views/dms/base/devicetype/index.vue @@ -67,7 +67,6 @@ @click="toggleExpandAll" >展开/折叠 - 导出 - diff --git a/hw-ui/src/views/dms/debugging/index.vue b/hw-ui/src/views/dms/debugging/index.vue index 588e41fd..0e7072bc 100644 --- a/hw-ui/src/views/dms/debugging/index.vue +++ b/hw-ui/src/views/dms/debugging/index.vue @@ -125,7 +125,6 @@ v-hasPermi="['dms:debugging:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsBaseInspectProject/index.vue b/hw-ui/src/views/dms/dmsBaseInspectProject/index.vue index e9a19e12..7ac76e29 100644 --- a/hw-ui/src/views/dms/dmsBaseInspectProject/index.vue +++ b/hw-ui/src/views/dms/dmsBaseInspectProject/index.vue @@ -114,7 +114,6 @@ v-hasPermi="['dms:dmsBaseInspectProject:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsBaseInspectRoute/index.vue b/hw-ui/src/views/dms/dmsBaseInspectRoute/index.vue index 378c6f0c..f893f62a 100644 --- a/hw-ui/src/views/dms/dmsBaseInspectRoute/index.vue +++ b/hw-ui/src/views/dms/dmsBaseInspectRoute/index.vue @@ -105,7 +105,6 @@ v-hasPermi="['dms:dmsBaseInspectRoute:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsBaseInspectStandard/index.vue b/hw-ui/src/views/dms/dmsBaseInspectStandard/index.vue index 4d5da312..e9749922 100644 --- a/hw-ui/src/views/dms/dmsBaseInspectStandard/index.vue +++ b/hw-ui/src/views/dms/dmsBaseInspectStandard/index.vue @@ -98,7 +98,6 @@ v-hasPermi="['dms:dmsBaseInspectStandard:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsBillsLubeDetail/index.vue b/hw-ui/src/views/dms/dmsBillsLubeDetail/index.vue index 9d6630af..a8ae0713 100644 --- a/hw-ui/src/views/dms/dmsBillsLubeDetail/index.vue +++ b/hw-ui/src/views/dms/dmsBillsLubeDetail/index.vue @@ -98,7 +98,6 @@ v-hasPermi="['dms:billslubedetail:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsBillsMaintDetail/index.vue b/hw-ui/src/views/dms/dmsBillsMaintDetail/index.vue index cfed5918..bc8bd240 100644 --- a/hw-ui/src/views/dms/dmsBillsMaintDetail/index.vue +++ b/hw-ui/src/views/dms/dmsBillsMaintDetail/index.vue @@ -98,7 +98,6 @@ v-hasPermi="['dms:billsmaintdetail:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsInfo/index.vue b/hw-ui/src/views/dms/dmsInfo/index.vue index 7a6700ca..b52d1e4e 100644 --- a/hw-ui/src/views/dms/dmsInfo/index.vue +++ b/hw-ui/src/views/dms/dmsInfo/index.vue @@ -113,7 +113,6 @@ v-hasPermi="['dms:dmsInfo:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsInspectRouteDetail/index.vue b/hw-ui/src/views/dms/dmsInspectRouteDetail/index.vue index c2844646..01ff501e 100644 --- a/hw-ui/src/views/dms/dmsInspectRouteDetail/index.vue +++ b/hw-ui/src/views/dms/dmsInspectRouteDetail/index.vue @@ -123,7 +123,6 @@ - diff --git a/hw-ui/src/views/dms/dmsPlanInspect/index.vue b/hw-ui/src/views/dms/dmsPlanInspect/index.vue index a678cb44..77d9807f 100644 --- a/hw-ui/src/views/dms/dmsPlanInspect/index.vue +++ b/hw-ui/src/views/dms/dmsPlanInspect/index.vue @@ -130,7 +130,6 @@ v-hasPermi="['dms:dmsPlanInspect:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsRecordInspect/index.vue b/hw-ui/src/views/dms/dmsRecordInspect/index.vue index 54961c72..0e571fe9 100644 --- a/hw-ui/src/views/dms/dmsRecordInspect/index.vue +++ b/hw-ui/src/views/dms/dmsRecordInspect/index.vue @@ -141,7 +141,6 @@ v-hasPermi="['dms:dmsRecordInspect:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsRecordLube/index.vue b/hw-ui/src/views/dms/dmsRecordLube/index.vue index 417db086..a59e4302 100644 --- a/hw-ui/src/views/dms/dmsRecordLube/index.vue +++ b/hw-ui/src/views/dms/dmsRecordLube/index.vue @@ -174,7 +174,6 @@ v-hasPermi="['dms:dmsRecordLube:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsRepair/index.vue b/hw-ui/src/views/dms/dmsRepair/index.vue index 479322c2..36d7c833 100644 --- a/hw-ui/src/views/dms/dmsRepair/index.vue +++ b/hw-ui/src/views/dms/dmsRepair/index.vue @@ -123,7 +123,6 @@ v-hasPermi="['dms:dmsRepair:export']" >导出 - diff --git a/hw-ui/src/views/dms/dmsRepairDetail/index.vue b/hw-ui/src/views/dms/dmsRepairDetail/index.vue index a4831e77..144ae9f6 100644 --- a/hw-ui/src/views/dms/dmsRepairDetail/index.vue +++ b/hw-ui/src/views/dms/dmsRepairDetail/index.vue @@ -121,7 +121,7 @@ - + diff --git a/hw-ui/src/views/dms/info/index.vue b/hw-ui/src/views/dms/info/index.vue index fbb84b90..eb8fee1c 100644 --- a/hw-ui/src/views/dms/info/index.vue +++ b/hw-ui/src/views/dms/info/index.vue @@ -128,7 +128,6 @@ v-hasPermi="['dms:info:export']" >导出 - diff --git a/hw-ui/src/views/dms/install/index.vue b/hw-ui/src/views/dms/install/index.vue index 2f21a8eb..a1cabd8b 100644 --- a/hw-ui/src/views/dms/install/index.vue +++ b/hw-ui/src/views/dms/install/index.vue @@ -111,7 +111,6 @@ v-hasPermi="['dms:install:export']" >导出 - diff --git a/hw-ui/src/views/dms/knowledgeLube/index.vue b/hw-ui/src/views/dms/knowledgeLube/index.vue index fb3872cd..1f49df3c 100644 --- a/hw-ui/src/views/dms/knowledgeLube/index.vue +++ b/hw-ui/src/views/dms/knowledgeLube/index.vue @@ -80,7 +80,7 @@ v-hasPermi="['dms:knowledgeLube:export']" >导出 - + diff --git a/hw-ui/src/views/dms/knowledgeRepair/index.vue b/hw-ui/src/views/dms/knowledgeRepair/index.vue index 1fe2cd8d..62a1eddb 100644 --- a/hw-ui/src/views/dms/knowledgeRepair/index.vue +++ b/hw-ui/src/views/dms/knowledgeRepair/index.vue @@ -76,7 +76,7 @@ v-hasPermi="['dms:knowledgeRepair:export']" >导出 - + diff --git a/hw-ui/src/views/dms/konwledgeMaint/index.vue b/hw-ui/src/views/dms/konwledgeMaint/index.vue index 087bd1ca..9145c6bf 100644 --- a/hw-ui/src/views/dms/konwledgeMaint/index.vue +++ b/hw-ui/src/views/dms/konwledgeMaint/index.vue @@ -78,7 +78,7 @@ v-hasPermi="['dms:konwledgeMaint:export']" >导出 - + diff --git a/hw-ui/src/views/dms/ledger/index.vue b/hw-ui/src/views/dms/ledger/index.vue index aa950f7b..9bc2f01e 100644 --- a/hw-ui/src/views/dms/ledger/index.vue +++ b/hw-ui/src/views/dms/ledger/index.vue @@ -166,7 +166,7 @@ v-hasPermi="['dms:ledger:export']" >导出 - + 导出 - + diff --git a/hw-ui/src/views/dms/lubeStandard/index.vue b/hw-ui/src/views/dms/lubeStandard/index.vue index 387e4057..a2332156 100644 --- a/hw-ui/src/views/dms/lubeStandard/index.vue +++ b/hw-ui/src/views/dms/lubeStandard/index.vue @@ -90,7 +90,7 @@ v-hasPermi="['dms:lubeStandard:export']" >导出 - + diff --git a/hw-ui/src/views/dms/maint/index.vue b/hw-ui/src/views/dms/maint/index.vue index 5b2f5690..ed16794e 100644 --- a/hw-ui/src/views/dms/maint/index.vue +++ b/hw-ui/src/views/dms/maint/index.vue @@ -124,7 +124,7 @@ v-hasPermi="['dms:maint:export']" >导出 - + diff --git a/hw-ui/src/views/dms/maintDetail/index.vue b/hw-ui/src/views/dms/maintDetail/index.vue index f86f1f6d..080944f9 100644 --- a/hw-ui/src/views/dms/maintDetail/index.vue +++ b/hw-ui/src/views/dms/maintDetail/index.vue @@ -142,7 +142,7 @@ v-hasPermi="['dms:maintDetail:add']" >新增 - + diff --git a/hw-ui/src/views/dms/param/index.vue b/hw-ui/src/views/dms/param/index.vue index fe9997a6..b350d57f 100644 --- a/hw-ui/src/views/dms/param/index.vue +++ b/hw-ui/src/views/dms/param/index.vue @@ -114,7 +114,7 @@ v-hasPermi="['dms:param:export']" >导出 - + diff --git a/hw-ui/src/views/dms/specialDeviceParam/index.vue b/hw-ui/src/views/dms/specialDeviceParam/index.vue index d1c7a389..8e6e7257 100644 --- a/hw-ui/src/views/dms/specialDeviceParam/index.vue +++ b/hw-ui/src/views/dms/specialDeviceParam/index.vue @@ -106,7 +106,7 @@ v-hasPermi="['dms:specialDeviceParam:export']" >导出 - + diff --git a/hw-ui/src/views/dms/standard/index.vue b/hw-ui/src/views/dms/standard/index.vue index cd52b587..c2b339cd 100644 --- a/hw-ui/src/views/dms/standard/index.vue +++ b/hw-ui/src/views/dms/standard/index.vue @@ -98,7 +98,7 @@ v-hasPermi="['dms:standard:export']" >导出 - + diff --git a/hw-ui/src/views/dms/station/index.vue b/hw-ui/src/views/dms/station/index.vue index aa9861df..bba9207a 100644 --- a/hw-ui/src/views/dms/station/index.vue +++ b/hw-ui/src/views/dms/station/index.vue @@ -91,7 +91,6 @@ v-hasPermi="['dms:station:export']" >导出 - diff --git a/hw-ui/src/views/ems/base/HistoryElectricity/index.vue b/hw-ui/src/views/ems/base/HistoryElectricity/index.vue index fa3bc2d2..b0704756 100644 --- a/hw-ui/src/views/ems/base/HistoryElectricity/index.vue +++ b/hw-ui/src/views/ems/base/HistoryElectricity/index.vue @@ -83,7 +83,7 @@ @click="handleExport" >导出 - + diff --git a/hw-ui/src/views/ems/base/WholePointData/index.vue b/hw-ui/src/views/ems/base/WholePointData/index.vue index bb34dbb4..36f9267e 100644 --- a/hw-ui/src/views/ems/base/WholePointData/index.vue +++ b/hw-ui/src/views/ems/base/WholePointData/index.vue @@ -122,11 +122,11 @@ >导出 - + + + + + 导出 - + + + + + - + + + + 共{{list.length}}条 - + 导出 - + diff --git a/hw-ui/src/views/ems/base/communicate/index.vue b/hw-ui/src/views/ems/base/communicate/index.vue index 5790f110..33f1fdc9 100644 --- a/hw-ui/src/views/ems/base/communicate/index.vue +++ b/hw-ui/src/views/ems/base/communicate/index.vue @@ -84,10 +84,10 @@ >导出 - + + + + 共{{list.length}}条 - + + + + 导出 - + diff --git a/hw-ui/src/views/ems/base/exception/data/index.vue b/hw-ui/src/views/ems/base/exception/data/index.vue index fa00498e..b8690624 100644 --- a/hw-ui/src/views/ems/base/exception/data/index.vue +++ b/hw-ui/src/views/ems/base/exception/data/index.vue @@ -48,7 +48,7 @@ v-hasPermi="['energy:data:export']" >导出 - + diff --git a/hw-ui/src/views/ems/base/exception/rule/index.vue b/hw-ui/src/views/ems/base/exception/rule/index.vue index 29722194..1c401e51 100644 --- a/hw-ui/src/views/ems/base/exception/rule/index.vue +++ b/hw-ui/src/views/ems/base/exception/rule/index.vue @@ -80,7 +80,7 @@ v-hasPermi="['energy:rule:export']" >导出 - + diff --git a/hw-ui/src/views/ems/base/info/index.vue b/hw-ui/src/views/ems/base/info/index.vue index 20846c67..06eba2f7 100644 --- a/hw-ui/src/views/ems/base/info/index.vue +++ b/hw-ui/src/views/ems/base/info/index.vue @@ -80,7 +80,7 @@ v-hasPermi="['energy:info:export']" >导出 - + diff --git a/hw-ui/src/views/ems/base/lineMonitor/index.vue b/hw-ui/src/views/ems/base/lineMonitor/index.vue index 74149b66..a9b00fb2 100644 --- a/hw-ui/src/views/ems/base/lineMonitor/index.vue +++ b/hw-ui/src/views/ems/base/lineMonitor/index.vue @@ -79,10 +79,10 @@ 共{{list.length}}条 - + + + + 导出 - + + + + 共{{list.length}}条 - + 导出 - + diff --git a/hw-ui/src/views/ems/base/type/index.vue b/hw-ui/src/views/ems/base/type/index.vue index 126514e8..e14d02ee 100644 --- a/hw-ui/src/views/ems/base/type/index.vue +++ b/hw-ui/src/views/ems/base/type/index.vue @@ -66,7 +66,7 @@ v-hasPermi="['energy:type:export']" >导出 - + diff --git a/hw-ui/src/views/ems/base/typeRelation/index.vue b/hw-ui/src/views/ems/base/typeRelation/index.vue index 3b0ddd35..5f76acf4 100644 --- a/hw-ui/src/views/ems/base/typeRelation/index.vue +++ b/hw-ui/src/views/ems/base/typeRelation/index.vue @@ -73,7 +73,7 @@ v-hasPermi="['base:typeRelation:export']" >导出 - + diff --git a/hw-ui/src/views/mes/barcode/index.vue b/hw-ui/src/views/mes/barcode/index.vue index 57b81d25..bbde26e5 100644 --- a/hw-ui/src/views/mes/barcode/index.vue +++ b/hw-ui/src/views/mes/barcode/index.vue @@ -88,6 +88,18 @@ + + 采购合并新增 + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -575,18 +664,24 @@ import { listBarcode, getBarcode, delBarcode, addBarcode, reprintBarcodes, printBarcodes, getMaterialInfoByErpId, selectProductBarcodeInfoByBarcodeInfo, - addInternalBarcode, regenerateBarcode, checkRawStock, addNoPurchaseBarcode, addRegularBarcode + addInternalBarcode, regenerateBarcode, checkRawStock, addNoPurchaseBarcode, addRegularBarcode, + mergeAddBarcode, } from "@/api/mes/barcode"; -import addPurchaseOrder from '@//views/mes/purchaseOrder/addPurchaseOrder.vue'; + +import {checkWarehouseMaterials} from "@/api/wms/wmswarehouse"; + +import selectOrderBind from '@//views/mes/purchaseOrder/selectOrderBind.vue'; import selectMaterial from '@//views/mes/materialinfo/selectMaterial.vue'; + export default { name: "Barcode", dicts: ['bind_status', 'active_flag', 'barcode_type', 'mes_safe_flag', 'mes_print_flag'], components: { - 'add-purchaseOrder': addPurchaseOrder, + 'select-orderBind': selectOrderBind, 'select-material': selectMaterial }, + data() { return { // 遮罩层 @@ -649,7 +744,7 @@ export default { bindBy: null, bindTime: null, updateBy: null, - updateTime: null + updateTime: null, }, // 表单参数 form: {}, @@ -777,7 +872,38 @@ export default { BATCH_FLAG: { YES: '1', NO: '0' - } + }, + + + // 子表选中数据 + checkedMesBaseMaterialRelate: [], + // 关联的物料信息;用来在创建虚拟物料时,关联的物料信息表格数据 + + barcodeData: {}, + + materialRelateTitle: '', + materialRelateOpen: false, + // 对内条码表单参数 + materialRelateForm: {}, + // 表单校验 + materialRelateRules: { + productBarcode: [ + {required: true, message: "成品条码不能为空", trigger: "change"} + ], + batchFlag: [ + {required: true, message: "批次标识不能为空", trigger: "change"} + ], + amount: [ + {required: true, message: "批次数量不能为空", trigger: "change"} + ], + barcodeType: [ + {required: true, message: "条码类型不能为空", trigger: "change"} + ], + poNo: [ + {required: true, message: "采购信息不能为空", trigger: "blur"} + ], + }, + }; }, created() { @@ -876,80 +1002,227 @@ export default { handlePurchaseOrderAdd() { this.purchaseOrderOpen = true; }, + + + findAllDuplicates(arrayOfObjects, property) { + const duplicates = {}; + arrayOfObjects.forEach(obj => { + const value = obj[property]; + if (!duplicates[value]) { + duplicates[value] = []; + } + duplicates[value].push(obj); + }); + return Object.values(duplicates).filter(group => group.length > 1); + }, + /** 提交采购订单按钮 */ submitPurchaseOrderForm() { - let selectedRow = this.$refs.purchaseOrderRef.selectedRow; - this.form.batchFlag = null; - this.form.amount = null; - this.form.materialCode = null; - this.form.materialId = null; - this.form.materialName = null; - this.form.materialSpec = null; - this.form.barcodeSpec = null; - this.form.projectNo = null; - this.form.purchaseOrderId = null; - //本次待生成订单条码数量 - this.form.currentOrderBindAmount = null; - //本次待生成安全库存条码数量 - this.form.currentSafeBindAmount = null; - //本次生成条码总数量 - this.form.barcodeAmount = null; - this.form.poNo = null; - - let currentOrderBindAmount = parseInt(selectedRow.orderBindAmount) - parseInt(selectedRow.orderBarcodeAmount); - let currentSafeBindAmount = parseInt(selectedRow.safeBindAmount) - parseInt(selectedRow.safeBarcodeAmount) - let canBindAmount = currentOrderBindAmount + currentSafeBindAmount; - if (selectedRow.mesMaterialId === null || selectedRow.mesMaterialId === '' || selectedRow.mesMaterialId === 0) { - this.$modal.msgError("物料信息不存在"); - return; - } - - if (canBindAmount <= 0) { - this.$modal.msgError("无可生成条码数量"); - return; - } - - - this.$set(this.form, "poNo", selectedRow.poNo); - this.form.barcodeType = '1';//条码类型(1原材料,2半成品,3成品,4背板) - // this.form.materialId = selectedRow.materialId;//在物料信息中对应的是ERPID - this.form.materialId = selectedRow.mesMaterialId;//物料信息表中物料ID主键 - this.form.materialCode = selectedRow.materialCode; - this.form.materialName = selectedRow.materialName; - this.form.materialSpec = selectedRow.materialSpec; - this.form.projectNo = selectedRow.projectNo; - this.form.purchaseOrderId = selectedRow.purchaseOrderId; - this.form.barcodeSpec = selectedRow.specificationParameter; - //本次待生成订单条码数量 - this.form.currentOrderBindAmount = currentOrderBindAmount; - //本次待生成安全库存条码数量 - this.form.currentSafeBindAmount = currentSafeBindAmount; - //本次生成条码总数量 - this.form.barcodeAmount = canBindAmount; - - - if (selectedRow.batchFlag != null && selectedRow.batchFlag !== '') { - this.saleBatchFlagDisable = true; - this.form.batchFlag = selectedRow.batchFlag; - if (this.form.batchFlag === this.BATCH_FLAG.YES) { - this.form.amount = selectedRow.batchAmount; - } else { - this.form.amount = 1; + if (this.materialRelateOpen) { + let selectedRows = this.$refs.purchaseOrderRef.selectedRows; + if (!selectedRows || selectedRows.length <= 0) { + this.$modal.msgWarning("请选择采购订单"); + return; + } + + let firstRow = selectedRows[0]; + let firstRowPoNo = firstRow.poNo; + let firstRowSaleOrderCode = firstRow.saleOrderCode; + if (this.materialRelateForm.poNo && this.materialRelateForm.poNo !== '') { + if (firstRowPoNo !== this.materialRelateForm.poNo) { + this.$modal.msgError("已选择采购订单号为:" + firstRowPoNo + ",本次选择采购订单号与此不同"); + return; + } + + if (firstRowSaleOrderCode !== this.materialRelateForm.saleOrderCode) { + this.$modal.msgError("已选择销售订单号为:" + firstRowSaleOrderCode + ",本次选择销售订单号与此不同"); + return; + } } - } else { - this.saleBatchFlagDisable = false; - } - getMaterialInfoByErpId(selectedRow.materialId).then(response => { - if (response.data == null) { - this.$modal.msgError("物料信息不存在"); + let differentPoNoSelectedRow = selectedRows.find(item => { + return item.poNo !== firstRowPoNo || item.saleOrderCode !== firstRowSaleOrderCode; + }); + + if (differentPoNoSelectedRow != null && differentPoNoSelectedRow !== '') { + this.$modal.msgError("本次选择信息采购订单号或销售订单号不一致"); + return; + } + + let unavailableAmountResult = selectedRows.find(item => { + return parseInt(item.relateSaleOrderAmount) !== 1; + }); + + if (unavailableAmountResult != null && unavailableAmountResult !== '') { + this.$modal.msgError("需要选择可用数量为1的信息"); + return; + } + + //可能获取几组数组相同saleorderid的数据 + let sameSaleOrderIdsData = this.findAllDuplicates(selectedRows, "saleOrderId"); + if (sameSaleOrderIdsData != null && sameSaleOrderIdsData.length > 0) { + let errorMsg = ""; + let index = 1; + for (let sameDataGroup of sameSaleOrderIdsData) { + errorMsg += index + "."; + for (let ssoid of sameDataGroup) { + errorMsg += "销售订单号:" + ssoid.saleOrderCode + ",成品编码:" + ssoid.productCode + ",成品名称:" + ssoid.productName + ",成品规格:" + ssoid.productSpec + ";"; + } + + index++; + } + + this.$modal.msgError("选择的销售订单明细不能相同" + errorMsg); return; } - this.purchaseOrderOpen = false; - }); + let wmsWarehouseMaterialCheckVos = []; + selectedRows.forEach(item => { + // let obj = { + // materialId: item.materialId, + // materialCode: item.materialCode, + // materialName: item.materialName, + // materialSpec: item.materialSpec + // }; + wmsWarehouseMaterialCheckVos.push(item); + }) + + + //校验仓库配置信息,warehousematerial + checkWarehouseMaterials(wmsWarehouseMaterialCheckVos).then(response => { + selectedRows.forEach(item => { + //同样的不能再添加 + const filterMaterialRelateList = this.materialRelateForm.mesSaleOrderRelateList.filter(formItem => { + return formItem.orderBindId === item.orderBindId; + }); + + //同样销售订单的 + const filterSaleOrderIdMaterialRelateList = this.materialRelateForm.mesSaleOrderRelateList.filter(formItem => { + return formItem.relateSaleOrderId === item.saleOrderId; + }); + + if(filterSaleOrderIdMaterialRelateList!=null && filterSaleOrderIdMaterialRelateList.length >0){ + let errorMsg = "选择的信息跟已经选择的销售订单号明细相同."; + alert(JSON.stringify(filterSaleOrderIdMaterialRelateList)) + for (let ssoid of filterSaleOrderIdMaterialRelateList) { + errorMsg += "销售订单号:" + ssoid.saleOrderCode + ",成品编码:" + ssoid.productCode + ",成品名称:" + ssoid.productName + ",成品规格:" + ssoid.productSpec + ";"; + } + + this.$modal.msgError(errorMsg); + return; + } + + + if (filterMaterialRelateList.length <= 0) { + let mesSaleOrderRelate = { + index: item.index, + orderBindId: item.orderBindId, + relateSaleOrderId: item.saleOrderId, + saleOrderCode:item.saleOrderCode, + productId: item.productId, + productCode:item.productCode, + productName:item.productName, + productSpec:item.productSpec, + purchaseOrderId: item.purchaseOrderId, + materialId: item.materialId, + materialCode:item.materialCode, + materialName:item.materialName, + materialSpec:item.materialSpec, + specificationParameter:item.specificationParameter, + relateSaleOrderAmount: item.relateSaleOrderAmount + }; + + this.materialRelateForm.mesSaleOrderRelateList.push(mesSaleOrderRelate); + } + }); + + this.materialRelateForm.poNo = firstRowPoNo; + this.materialRelateForm.saleOrderCode = firstRowSaleOrderCode; + this.purchaseOrderOpen = false; + }) + + + // alert(JSON.stringify(selectedRows)); + } else { + + let selectedRow = this.$refs.purchaseOrderRef.selectedRow; + this.form.batchFlag = null; + this.form.amount = null; + this.form.materialCode = null; + this.form.materialId = null; + this.form.materialName = null; + this.form.materialSpec = null; + this.form.barcodeSpec = null; + this.form.projectNo = null; + this.form.purchaseOrderId = null; + //本次待生成订单条码数量 + this.form.currentOrderBindAmount = null; + //本次待生成安全库存条码数量 + this.form.currentSafeBindAmount = null; + //本次生成条码总数量 + this.form.barcodeAmount = null; + this.form.poNo = null; + + let currentOrderBindAmount = parseInt(selectedRow.orderBindAmount) - parseInt(selectedRow.orderBarcodeAmount); + let currentSafeBindAmount = parseInt(selectedRow.safeBindAmount) - parseInt(selectedRow.safeBarcodeAmount) + let canBindAmount = currentOrderBindAmount + currentSafeBindAmount; + if (selectedRow.mesMaterialId === null || selectedRow.mesMaterialId === '' || selectedRow.mesMaterialId === 0) { + this.$modal.msgError("物料信息不存在"); + return; + } + + if (canBindAmount <= 0) { + this.$modal.msgError("无可生成条码数量"); + return; + } + + + this.$set(this.form, "poNo", selectedRow.poNo); + this.form.barcodeType = '1';//条码类型(1原材料,2半成品,3成品,4背板) + // this.form.materialId = selectedRow.materialId;//在物料信息中对应的是ERPID + this.form.materialId = selectedRow.mesMaterialId;//物料信息表中物料ID主键 + this.form.materialCode = selectedRow.materialCode; + this.form.materialName = selectedRow.materialName; + this.form.materialSpec = selectedRow.materialSpec; + this.form.projectNo = selectedRow.projectNo; + this.form.purchaseOrderId = selectedRow.purchaseOrderId; + this.form.barcodeSpec = selectedRow.specificationParameter; + //本次待生成订单条码数量 + this.form.currentOrderBindAmount = currentOrderBindAmount; + //本次待生成安全库存条码数量 + this.form.currentSafeBindAmount = currentSafeBindAmount; + //本次生成条码总数量 + this.form.barcodeAmount = canBindAmount; + + + if (selectedRow.batchFlag != null && selectedRow.batchFlag !== '') { + this.saleBatchFlagDisable = true; + this.form.batchFlag = selectedRow.batchFlag; + if (this.form.batchFlag === this.BATCH_FLAG.YES) { + this.form.amount = selectedRow.batchAmount; + } else { + this.form.amount = 1; + } + } else { + this.saleBatchFlagDisable = false; + } + + + getMaterialInfoByErpId(selectedRow.materialId).then(response => { + if (response.data == null) { + this.$modal.msgError("物料信息不存在"); + return; + } + + + this.purchaseOrderOpen = false; + }); + + } + + }, /** 新增按钮操作 */ handleAdd() { @@ -1003,7 +1276,7 @@ export default { }, - reprintBarcodes(row){ + reprintBarcodes(row) { this.loading = true; const barcodeId = row.barcodeId; const barcodeInfo = row.barcodeInfo; @@ -1377,6 +1650,100 @@ export default { }, + rowMesBaseMaterialRelateIndex({row, rowIndex}) { + row.index = rowIndex + 1; + }, + + /** 复选框选中数据 */ + handleMesBaseMaterialRelateSelectionChange(selection) { + this.checkedMesBaseMaterialRelate = selection.map(item => item.index) + }, + + + // 表单重置 + resetRelate() { + this.materialRelateForm = { + barcodeId: null, + printTime: null, + printPerson: null, + batchFlag: null, + barcodeType: '1', + barcodeInfo: null, + batchCode: null, + palletInfoCode: null, + materialId: null, + materialCode: null, + materialName: null, + materialSpec: null, + barcodeSpec: null, + manufacturerId: null, + amount: null, + barcodeAmount: 1, + machineName: null, + printNumber: null, + poNo: null, + productionDate: null, + acceptedDate: null, + lastOutstockDate: null, + planCode: null, + planDetailCode: null, + saleOrderId: null, + saleorderCode: null, + projectNo: null, + serialNumber: null, + remark: null, + bindStatus: null, + bindBy: null, + bindTime: null, + updateBy: null, + updateTime: null, + currentOrderBindAmount: 0, + currentSafeBindAmount: 0, + mesSaleOrderRelateList: [] + }; + this.resetForm("materialRelateForm"); + }, + + + /** 新增按钮操作 */ + handleRelateAdd() { + this.resetRelate(); + this.materialRelateOpen = true; + this.materialRelateTitle = "添加合并原材料条码信息"; + }, + + + /** 批量选择采购订单按钮操作 */ + handlePurchaseOrderBatchAdd() { + this.barcodeData = {mergeFlag: '1'}; + this.purchaseOrderOpen = true; + }, + + + // 取消按钮 + cancelRelate() { + this.resetRelate(); + this.materialRelateOpen = false; + }, + + /** 提交按钮 */ + submitRelateForm() { + this.$refs["materialRelateForm"].validate(valid => { + if (valid) { + this.submitLoading = true; + alert(JSON.stringify(this.materialRelateForm.mesSaleOrderRelateList)) + mergeAddBarcode(this.materialRelateForm).then(response => { + this.$modal.msgSuccess("新增成功"); + this.materialRelateOpen = false; + this.getList(); + }).finally(e => { + this.submitLoading = false; + }); + + } + }); + }, + } }; diff --git a/hw-ui/src/views/mes/barcode/tergumIndex.vue b/hw-ui/src/views/mes/barcode/tergumIndex.vue index 04989495..96416834 100644 --- a/hw-ui/src/views/mes/barcode/tergumIndex.vue +++ b/hw-ui/src/views/mes/barcode/tergumIndex.vue @@ -272,7 +272,7 @@ v-hasPermi="['mes:barcode:export']" >导出 - + diff --git a/hw-ui/src/views/mes/baseRoute/index.vue b/hw-ui/src/views/mes/baseRoute/index.vue index cfd7912d..9070c011 100644 --- a/hw-ui/src/views/mes/baseRoute/index.vue +++ b/hw-ui/src/views/mes/baseRoute/index.vue @@ -62,7 +62,7 @@ >导出 - + diff --git a/hw-ui/src/views/mes/materialBom/addBom.vue b/hw-ui/src/views/mes/materialBom/addBom.vue index 0c900018..1827ad94 100644 --- a/hw-ui/src/views/mes/materialBom/addBom.vue +++ b/hw-ui/src/views/mes/materialBom/addBom.vue @@ -43,7 +43,7 @@ - + 导出 - + diff --git a/hw-ui/src/views/mes/productplan/index.vue b/hw-ui/src/views/mes/productplan/index.vue index cd389116..8feb6361 100644 --- a/hw-ui/src/views/mes/productplan/index.vue +++ b/hw-ui/src/views/mes/productplan/index.vue @@ -100,7 +100,7 @@ v-hasPermi="['mes:productplan:export']" >导出 - + diff --git a/hw-ui/src/views/mes/projectinfo/index.vue b/hw-ui/src/views/mes/projectinfo/index.vue index fc5becd2..57b6471b 100644 --- a/hw-ui/src/views/mes/projectinfo/index.vue +++ b/hw-ui/src/views/mes/projectinfo/index.vue @@ -116,7 +116,7 @@ >导出 - + diff --git a/hw-ui/src/views/mes/purchaseOrder/addPurchaseOrder.vue b/hw-ui/src/views/mes/purchaseOrder/addPurchaseOrder.vue index 09181466..0bbe94fa 100644 --- a/hw-ui/src/views/mes/purchaseOrder/addPurchaseOrder.vue +++ b/hw-ui/src/views/mes/purchaseOrder/addPurchaseOrder.vue @@ -57,7 +57,7 @@ @row-click="handleRowClick" highlight-current-row > - + @@ -145,6 +145,12 @@ import { export default { name: "PurchaseOrder", dicts: ['active_flag', 'order_status', 'document_status'], + props: { + defineData: { + type: Object, + default: {} + } + }, data() { return { // 遮罩层 @@ -165,6 +171,7 @@ export default { title: "", // 是否显示弹出层 open: false, + selectionVisible:false, // 查询参数 queryParams: { pageNum: 1, @@ -228,12 +235,23 @@ export default { {key: 21, label: `更新人`, visible: false}, {key: 22, label: `更新时间`, visible: false}, ], + selectedRows:[] }; }, created() { + this.getData(); this.getList(); }, methods: { + getData() { + if (this.defineData.batchFlag) { + this.selectionVisible = true; + }else{ + this.selectionVisible = false; + } + + }, + /** 查询采购订单信息列表 */ getList() { this.loading = true; @@ -302,6 +320,7 @@ export default { // 多选框选中数据 handleSelectionChange(selection) { this.ids = selection.map(item => item.purchaseOrderId) + this.selectedRows = selection.map(item => item) this.single = selection.length !== 1 this.multiple = !selection.length }, diff --git a/hw-ui/src/views/mes/purchaseOrder/selectOrderBind.vue b/hw-ui/src/views/mes/purchaseOrder/selectOrderBind.vue new file mode 100644 index 00000000..09ebdb3f --- /dev/null +++ b/hw-ui/src/views/mes/purchaseOrder/selectOrderBind.vue @@ -0,0 +1,303 @@ + + + diff --git a/hw-ui/src/views/mes/saleOrder/index.vue b/hw-ui/src/views/mes/saleOrder/index.vue index c460608c..56fce7d0 100644 --- a/hw-ui/src/views/mes/saleOrder/index.vue +++ b/hw-ui/src/views/mes/saleOrder/index.vue @@ -174,7 +174,7 @@ type="text" icon="el-icon-edit" @click="handleBindingPurchase(scope.row)" - v-hasPermi="['mes:purchaseOrder:bind']" + v-hasPermi="['mes:saleOrder:bind']" >绑定 diff --git a/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue b/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue new file mode 100644 index 00000000..ae35d823 --- /dev/null +++ b/hw-ui/src/views/mes/saleOrder/selectSaleOrder.vue @@ -0,0 +1,233 @@ + + + diff --git a/hw-ui/src/views/wms/base/wmslocation/correlationBarCode.vue b/hw-ui/src/views/wms/base/wmslocation/correlationBarCode.vue index 42e87167..69c53a77 100644 --- a/hw-ui/src/views/wms/base/wmslocation/correlationBarCode.vue +++ b/hw-ui/src/views/wms/base/wmslocation/correlationBarCode.vue @@ -63,6 +63,14 @@ v-hasPermi="['wms:wmslocation:remove']" >删除 + 关闭 + + + + + + + - + - + 导出 - + @@ -242,27 +258,31 @@ - + + + - - - - - - - - - + + + + + + + + + + + + + + + - +