MES:
1、销售订单批量绑定采购订单功能完善,校验绑定数量和总榜定数量以及条码数量
2、条码中增加补打印的功能
master
xs 11 months ago
parent d2519c8549
commit 70b7fb9d54

@ -176,14 +176,14 @@ public class MesPurchaseOrderController extends BaseController
/** /**
* *
* @param purchaseOrderList * @param mesSaleOrder
* @return * @return
*/ */
@RequiresPermissions("mes:purchaseOrder:bind") @RequiresPermissions("mes:purchaseOrder:bind")
@Log(title = "采购订单信息", businessType = BusinessType.ALLOCATE) @Log(title = "采购订单信息", businessType = BusinessType.ALLOCATE)
@PutMapping("/saveSalesBindPurchase") @PutMapping("/saveSalesBindPurchase")
public AjaxResult saveSalesBindPurchase(@RequestBody List<MesPurchaseOrder> purchaseOrderList) { public AjaxResult saveSalesBindPurchase(@RequestBody MesSaleOrder mesSaleOrder) {
return success(mesPurchaseOrderService.saveSalesBindPurchase(purchaseOrderList)); return success(mesPurchaseOrderService.saveSalesBindPurchase(mesSaleOrder));
} }
/** /**

@ -43,7 +43,7 @@ public class MesSaleOrderController extends BaseController
public TableDataInfo list(MesSaleOrder mesSaleOrder) public TableDataInfo list(MesSaleOrder mesSaleOrder)
{ {
startPage(); startPage();
List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderList(mesSaleOrder); List<MesSaleOrder> list = mesSaleOrderService.selectMesSaleOrderJoinMaterialList(mesSaleOrder);
return getDataTable(list); return getDataTable(list);
} }

@ -3,6 +3,7 @@ package com.hw.mes.domain;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
@ -19,155 +20,235 @@ import com.hw.common.core.web.domain.BaseEntity;
public class MesPurchaseOrder extends BaseEntity { public class MesPurchaseOrder extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键标识 */ /**
*
*/
private Long purchaseOrderId; private Long purchaseOrderId;
/** ERP的主键信息;对应FID */ /**
* ERP;FID
*/
@Excel(name = "ERP的主键信息;对应FID") @Excel(name = "ERP的主键信息;对应FID")
private Long erpId; private Long erpId;
/** 对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID */ /**
* ERPID;FPOOrderEntry.FEntryID
*/
@Excel(name = "对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID") @Excel(name = "对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID")
private Long fentryId; private Long fentryId;
/** 采购订单编号;对应FBillNo */ /**
* ;FBillNo
*/
@Excel(name = "采购订单编号;对应FBillNo") @Excel(name = "采购订单编号;对应FBillNo")
private String poNo; private String poNo;
/** 单据状态;FDocumentStatus */ /**
* ;FDocumentStatus
*/
@Excel(name = "单据状态;FDocumentStatus") @Excel(name = "单据状态;FDocumentStatus")
private String documentStatus; private String documentStatus;
/** 物料ID,关联物料信息主键 */ /**
* ID,
*/
@Excel(name = "物料ID,关联物料信息主键") @Excel(name = "物料ID,关联物料信息主键")
private Long materialId; private Long materialId;
/** 物料编码;对应FMaterialId.FNumber */ /**
* ;FMaterialId.FNumber
*/
@Excel(name = "物料编码;对应FMaterialId.FNumber") @Excel(name = "物料编码;对应FMaterialId.FNumber")
private String materialCode; private String materialCode;
/** 物料名称;对应FMaterialId.FName */ /**
* ;FMaterialId.FName
*/
@Excel(name = "物料名称;对应FMaterialId.FName") @Excel(name = "物料名称;对应FMaterialId.FName")
private String materialName; private String materialName;
/** 订单计划数量;对应FQty */ /**
* ;FQty
*/
@Excel(name = "订单计划数量;对应FQty") @Excel(name = "订单计划数量;对应FQty")
private BigDecimal orderAmount; private BigDecimal orderAmount;
/** 完成采购数量 */ /**
*
*/
@Excel(name = "完成采购数量") @Excel(name = "完成采购数量")
private BigDecimal completeAmount; private BigDecimal completeAmount;
/** 审核日期;对应FApproveDate */ /**
* ;FApproveDate
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date approveDate; private Date approveDate;
/** ERP最后修改日期;对应FModifyDate */ /**
* ERP;FModifyDate
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date erpModifyDate; private Date erpModifyDate;
/** 计划交货日期;对应FDeliveryDate */ /**
* ;FDeliveryDate
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划交货日期;对应FDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划交货日期;对应FDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date planDeliveryDate; private Date planDeliveryDate;
/** 计划开始日期 */ /**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date beginDate; private Date beginDate;
/** 计划结束日期 */ /**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date endDate; private Date endDate;
/** 订单状态(1待采购2采购中3采购完成) */ /**
* (123)
*/
@Excel(name = "订单状态(1待采购2采购中3采购完成)") @Excel(name = "订单状态(1待采购2采购中3采购完成)")
private String orderStatus; private String orderStatus;
/** 完成日期 */ /**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date completeDate; private Date completeDate;
/** 是否标识1-是0-否 */ /**
* 1-0-
*/
@Excel(name = "是否标识1-是0-否") @Excel(name = "是否标识1-是0-否")
private String isFlag; private String isFlag;
/** 采购单位;FUnitId */ /**
* ;FUnitId
*/
@Excel(name = "采购单位;FUnitId") @Excel(name = "采购单位;FUnitId")
private Long unitId; private Long unitId;
/** 库存单位;FStockUnitID */ /**
* ;FStockUnitID
*/
@Excel(name = "库存单位;FStockUnitID") @Excel(name = "库存单位;FStockUnitID")
private Long stockUnitId; private Long stockUnitId;
/** 计价单位;FPriceUnitID */ /**
* ;FPriceUnitID
*/
@Excel(name = "计价单位;FPriceUnitID") @Excel(name = "计价单位;FPriceUnitID")
private Long priceUnitId; private Long priceUnitId;
/** 辅助属性;FAuxPropId */ /**
* ;FAuxPropId
*/
@Excel(name = "辅助属性;FAuxPropId") @Excel(name = "辅助属性;FAuxPropId")
private Long auxPropId; private Long auxPropId;
/** 源单编号;FSrcBillNo */ /**
* ;FSrcBillNo
*/
@Excel(name = "源单编号;FSrcBillNo") @Excel(name = "源单编号;FSrcBillNo")
private String srcBillNo; private String srcBillNo;
/** 采购组织;FPurchaseOrgId */ /**
* ;FPurchaseOrgId
*/
@Excel(name = "采购组织;FPurchaseOrgId") @Excel(name = "采购组织;FPurchaseOrgId")
private Long purchaseOrgId; private Long purchaseOrgId;
/** 京源项目;F_TOND_Base */ /**
* ;F_TOND_Base
*/
@Excel(name = "京源项目;F_TOND_Base") @Excel(name = "京源项目;F_TOND_Base")
private String tondBase; private String tondBase;
/** 供应商ID;FSupplierId */ /**
* ID;FSupplierId
*/
@Excel(name = "供应商ID;FSupplierId") @Excel(name = "供应商ID;FSupplierId")
private Long supplierId; private Long supplierId;
/** 采购销售订单绑定信息信息 */ /**
*
*/
private List<MesOrderBind> mesOrderBindList; private List<MesOrderBind> mesOrderBindList;
/**判断是否需要绑定*/ /**
*
*/
private String bindFlag; private String bindFlag;
/**规格参数*/ /**
*
*/
private String specificationParameter; private String specificationParameter;
/**物料规格*/ /**
*
*/
private String materialSpec; private String materialSpec;
/**销售订单主键*/ /**
*
*/
private Long saleOrderId; private Long saleOrderId;
/**采购销售订单绑定主键*/ /**
*
*/
private Long orderBindId; private Long orderBindId;
/** 已绑定数 */ /**
*
*/
private BigDecimal boundAmount; private BigDecimal boundAmount;
/** 销售订单已绑定数 */ /**
*
*/
private BigDecimal saleBindAmount; private BigDecimal saleBindAmount;
/** 安全库存数 */ /**
*
*/
private BigDecimal safeAmount; private BigDecimal safeAmount;
/** 条码数 */ /**
*
*/
private BigDecimal barcodeAmount; private BigDecimal barcodeAmount;
/** 更新绑定数量 */ /**
*
*/
private BigDecimal updateAmount; private BigDecimal updateAmount;
/** 序号 */ /**
*
*/
private Long serialNumber; private Long serialNumber;
/**订单绑定的数量和条码的数量,以-分割*/ /**
* ,-
*/
private String orderBindBarcodeAmount; private String orderBindBarcodeAmount;
/**安全库存绑定的数量和条码的数量,以-分割*/ /**
* -
*/
private String safeBindBarcodeAmount; private String safeBindBarcodeAmount;
private String batchFlag; private String batchFlag;
@ -259,248 +340,219 @@ public class MesPurchaseOrder extends BaseEntity {
this.specificationParameter = specificationParameter; this.specificationParameter = specificationParameter;
} }
public void setPurchaseOrderId(Long purchaseOrderId) public void setPurchaseOrderId(Long purchaseOrderId) {
{
this.purchaseOrderId = purchaseOrderId; this.purchaseOrderId = purchaseOrderId;
} }
public Long getPurchaseOrderId() public Long getPurchaseOrderId() {
{
return purchaseOrderId; return purchaseOrderId;
} }
public void setErpId(Long erpId)
{ public void setErpId(Long erpId) {
this.erpId = erpId; this.erpId = erpId;
} }
public Long getErpId() public Long getErpId() {
{
return erpId; return erpId;
} }
public void setFentryId(Long fentryId)
{ public void setFentryId(Long fentryId) {
this.fentryId = fentryId; this.fentryId = fentryId;
} }
public Long getFentryId() public Long getFentryId() {
{
return fentryId; return fentryId;
} }
public void setPoNo(String poNo)
{ public void setPoNo(String poNo) {
this.poNo = poNo; this.poNo = poNo;
} }
public String getPoNo() public String getPoNo() {
{
return poNo; return poNo;
} }
public void setDocumentStatus(String documentStatus)
{ public void setDocumentStatus(String documentStatus) {
this.documentStatus = documentStatus; this.documentStatus = documentStatus;
} }
public String getDocumentStatus() public String getDocumentStatus() {
{
return documentStatus; return documentStatus;
} }
public void setMaterialId(Long materialId)
{ public void setMaterialId(Long materialId) {
this.materialId = materialId; this.materialId = materialId;
} }
public Long getMaterialId() public Long getMaterialId() {
{
return materialId; return materialId;
} }
public void setMaterialCode(String materialCode)
{ public void setMaterialCode(String materialCode) {
this.materialCode = materialCode; this.materialCode = materialCode;
} }
public String getMaterialCode() public String getMaterialCode() {
{
return materialCode; return materialCode;
} }
public void setMaterialName(String materialName)
{ public void setMaterialName(String materialName) {
this.materialName = materialName; this.materialName = materialName;
} }
public String getMaterialName() public String getMaterialName() {
{
return materialName; return materialName;
} }
public void setOrderAmount(BigDecimal orderAmount)
{ public void setOrderAmount(BigDecimal orderAmount) {
this.orderAmount = orderAmount; this.orderAmount = orderAmount;
} }
public BigDecimal getOrderAmount() public BigDecimal getOrderAmount() {
{
return orderAmount; return orderAmount;
} }
public void setCompleteAmount(BigDecimal completeAmount)
{ public void setCompleteAmount(BigDecimal completeAmount) {
this.completeAmount = completeAmount; this.completeAmount = completeAmount;
} }
public BigDecimal getCompleteAmount() public BigDecimal getCompleteAmount() {
{
return completeAmount; return completeAmount;
} }
public void setApproveDate(Date approveDate)
{ public void setApproveDate(Date approveDate) {
this.approveDate = approveDate; this.approveDate = approveDate;
} }
public Date getApproveDate() public Date getApproveDate() {
{
return approveDate; return approveDate;
} }
public void setErpModifyDate(Date erpModifyDate)
{ public void setErpModifyDate(Date erpModifyDate) {
this.erpModifyDate = erpModifyDate; this.erpModifyDate = erpModifyDate;
} }
public Date getErpModifyDate() public Date getErpModifyDate() {
{
return erpModifyDate; return erpModifyDate;
} }
public void setPlanDeliveryDate(Date planDeliveryDate)
{ public void setPlanDeliveryDate(Date planDeliveryDate) {
this.planDeliveryDate = planDeliveryDate; this.planDeliveryDate = planDeliveryDate;
} }
public Date getPlanDeliveryDate() public Date getPlanDeliveryDate() {
{
return planDeliveryDate; return planDeliveryDate;
} }
public void setBeginDate(Date beginDate)
{ public void setBeginDate(Date beginDate) {
this.beginDate = beginDate; this.beginDate = beginDate;
} }
public Date getBeginDate() public Date getBeginDate() {
{
return beginDate; return beginDate;
} }
public void setEndDate(Date endDate)
{ public void setEndDate(Date endDate) {
this.endDate = endDate; this.endDate = endDate;
} }
public Date getEndDate() public Date getEndDate() {
{
return endDate; return endDate;
} }
public void setOrderStatus(String orderStatus)
{ public void setOrderStatus(String orderStatus) {
this.orderStatus = orderStatus; this.orderStatus = orderStatus;
} }
public String getOrderStatus() public String getOrderStatus() {
{
return orderStatus; return orderStatus;
} }
public void setCompleteDate(Date completeDate)
{ public void setCompleteDate(Date completeDate) {
this.completeDate = completeDate; this.completeDate = completeDate;
} }
public Date getCompleteDate() public Date getCompleteDate() {
{
return completeDate; return completeDate;
} }
public void setIsFlag(String isFlag)
{ public void setIsFlag(String isFlag) {
this.isFlag = isFlag; this.isFlag = isFlag;
} }
public String getIsFlag() public String getIsFlag() {
{
return isFlag; return isFlag;
} }
public void setUnitId(Long unitId)
{ public void setUnitId(Long unitId) {
this.unitId = unitId; this.unitId = unitId;
} }
public Long getUnitId() public Long getUnitId() {
{
return unitId; return unitId;
} }
public void setStockUnitId(Long stockUnitId)
{ public void setStockUnitId(Long stockUnitId) {
this.stockUnitId = stockUnitId; this.stockUnitId = stockUnitId;
} }
public Long getStockUnitId() public Long getStockUnitId() {
{
return stockUnitId; return stockUnitId;
} }
public void setPriceUnitId(Long priceUnitId)
{ public void setPriceUnitId(Long priceUnitId) {
this.priceUnitId = priceUnitId; this.priceUnitId = priceUnitId;
} }
public Long getPriceUnitId() public Long getPriceUnitId() {
{
return priceUnitId; return priceUnitId;
} }
public void setAuxPropId(Long auxPropId)
{ public void setAuxPropId(Long auxPropId) {
this.auxPropId = auxPropId; this.auxPropId = auxPropId;
} }
public Long getAuxPropId() public Long getAuxPropId() {
{
return auxPropId; return auxPropId;
} }
public void setSrcBillNo(String srcBillNo)
{ public void setSrcBillNo(String srcBillNo) {
this.srcBillNo = srcBillNo; this.srcBillNo = srcBillNo;
} }
public String getSrcBillNo() public String getSrcBillNo() {
{
return srcBillNo; return srcBillNo;
} }
public void setPurchaseOrgId(Long purchaseOrgId)
{ public void setPurchaseOrgId(Long purchaseOrgId) {
this.purchaseOrgId = purchaseOrgId; this.purchaseOrgId = purchaseOrgId;
} }
public Long getPurchaseOrgId() public Long getPurchaseOrgId() {
{
return purchaseOrgId; return purchaseOrgId;
} }
public void setTondBase(String tondBase)
{ public void setTondBase(String tondBase) {
this.tondBase = tondBase; this.tondBase = tondBase;
} }
public String getTondBase() public String getTondBase() {
{
return tondBase; return tondBase;
} }
public void setSupplierId(Long supplierId)
{ public void setSupplierId(Long supplierId) {
this.supplierId = supplierId; this.supplierId = supplierId;
} }
public Long getSupplierId() public Long getSupplierId() {
{
return supplierId; return supplierId;
} }
public List<MesOrderBind> getMesOrderBindList() public List<MesOrderBind> getMesOrderBindList() {
{
return mesOrderBindList; return mesOrderBindList;
} }
public void setMesOrderBindList(List<MesOrderBind> mesOrderBindList) public void setMesOrderBindList(List<MesOrderBind> mesOrderBindList) {
{
this.mesOrderBindList = mesOrderBindList; this.mesOrderBindList = mesOrderBindList;
} }
@ -562,7 +614,7 @@ public class MesPurchaseOrder extends BaseEntity {
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("purchaseOrderId", getPurchaseOrderId()) .append("purchaseOrderId", getPurchaseOrderId())
.append("erpId", getErpId()) .append("erpId", getErpId())
.append("fentryId", getFentryId()) .append("fentryId", getFentryId())
@ -597,4 +649,18 @@ public class MesPurchaseOrder extends BaseEntity {
.append("mesOrderBindList", getMesOrderBindList()) .append("mesOrderBindList", getMesOrderBindList())
.toString(); .toString();
} }
@Override
public boolean equals(Object o) {
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);
}
@Override
public int hashCode() {
return Objects.hash(purchaseOrderId, orderAmount, boundAmount, safeAmount, orderBindBarcodeAmount);
}
} }

@ -2,6 +2,7 @@ package com.hw.mes.domain;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
@ -116,42 +117,42 @@ public class MesSaleOrder extends BaseEntity {
/** /**
* ;FApproveDate * ;FApproveDate
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date approveDate; private Date approveDate;
/** /**
* ERP;FModifyDate * ERP;FModifyDate
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date erpModifyDate; private Date erpModifyDate;
/** /**
* ;FMinPlanDeliveryDate * ;FMinPlanDeliveryDate
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划交货日期;对应FMinPlanDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划交货日期;对应FMinPlanDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date planDeliveryDate; private Date planDeliveryDate;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date beginDate; private Date beginDate;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date endDate; private Date endDate;
/** /**
* *
*/ */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date completeDate; private Date completeDate;
@ -170,6 +171,7 @@ public class MesSaleOrder extends BaseEntity {
private Long erpMaterialId; private Long erpMaterialId;
private List<MesPurchaseOrder> mesPurchaseOrderList;
public String getMaterialModel() { public String getMaterialModel() {
return materialModel; return materialModel;
@ -379,6 +381,14 @@ public class MesSaleOrder extends BaseEntity {
this.erpMaterialId = erpMaterialId; this.erpMaterialId = erpMaterialId;
} }
public List<MesPurchaseOrder> getMesPurchaseOrderList() {
return mesPurchaseOrderList;
}
public void setMesPurchaseOrderList(List<MesPurchaseOrder> mesPurchaseOrderList) {
this.mesPurchaseOrderList = mesPurchaseOrderList;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -4,6 +4,7 @@ import java.util.List;
import com.hw.mes.domain.MesOrderBind; import com.hw.mes.domain.MesOrderBind;
import com.hw.mes.domain.MesPurchaseOrder; import com.hw.mes.domain.MesPurchaseOrder;
import org.apache.ibatis.annotations.Param;
/** /**
* Mapper * Mapper
@ -116,4 +117,12 @@ public interface MesPurchaseOrderMapper
*/ */
List<MesPurchaseOrder> selectMesPurchaseOrderJoinList(MesPurchaseOrder mesPurchaseOrder); List<MesPurchaseOrder> selectMesPurchaseOrderJoinList(MesPurchaseOrder mesPurchaseOrder);
/**
* ,WITH
*
* @param purchaseOrderId
* @return
*/
public MesPurchaseOrder unbindPurchaseOrderListByPurchaseAndSaleOrderId(@Param("purchaseOrderId") Long purchaseOrderId,
@Param("saleOrderId") Long saleOrderId);
} }

@ -1,7 +1,11 @@
package com.hw.mes.service; package com.hw.mes.service;
import java.util.List; import java.util.List;
import com.hw.common.core.exception.ServiceException;
import com.hw.mes.domain.MesPurchaseOrder; import com.hw.mes.domain.MesPurchaseOrder;
import com.hw.mes.domain.MesSaleOrder;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -100,10 +104,11 @@ public interface IMesPurchaseOrderService
/** /**
* *
* @param purchaseOrderList *
* @param mesSaleOrder
* @return * @return
*/ */
public int saveSalesBindPurchase(List<MesPurchaseOrder> purchaseOrderList); public int saveSalesBindPurchase(MesSaleOrder mesSaleOrder);
/** /**
* *

@ -287,51 +287,77 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
/** /**
* *
* *
* @param purchaseOrderList * @param mesSaleOrder
* @return * @return
*/ */
@Override @Override
@Transactional(rollbackFor = ServiceException.class) @Transactional(rollbackFor = ServiceException.class)
public int saveSalesBindPurchase(List<MesPurchaseOrder> purchaseOrderList) { public int saveSalesBindPurchase(MesSaleOrder mesSaleOrder) {
Long saleOrderId = purchaseOrderList.get(0).getSaleOrderId();
if (StringUtils.isNull(saleOrderId)) {
return 0;
}
//校验数据
checkSaveSalesBindPurchase(purchaseOrderList);
MesSaleOrder mesSaleOrder = mesSaleOrderMapper.selectMesSaleOrderBySaleOrderId(saleOrderId);
String saleorderCode = mesSaleOrder.getSaleorderCode();
Long productId = mesSaleOrder.getMaterialId();
String productCode = mesSaleOrder.getMaterialCode();
String productName = mesSaleOrder.getMaterialName();
Date currentDate = new Date(); Date currentDate = new Date();
String userName = SecurityUtils.getUsername(); String userName = SecurityUtils.getUsername();
for (MesPurchaseOrder purchaseOrder : purchaseOrderList) { List<MesPurchaseOrder> mesPurchaseOrderList = mesSaleOrder.getMesPurchaseOrderList();
for (MesPurchaseOrder mesPurchaseOrder : mesPurchaseOrderList) {
Long purchaseOrderId = mesPurchaseOrder.getPurchaseOrderId();
MesPurchaseOrder dbMesPurchaseOrder = mesPurchaseOrderMapper.
unbindPurchaseOrderListByPurchaseAndSaleOrderId(purchaseOrderId, mesSaleOrder.getSaleOrderId());
if (!mesPurchaseOrder.equals(dbMesPurchaseOrder)) {
throw new ServiceException("数据有变化,请重新更新");
}
this.checkSaveSalesBindPurchase(mesPurchaseOrder);
this.updateOrderBind(mesSaleOrder, mesPurchaseOrder, userName, currentDate);
}
return 1;
}
private void checkSaveSalesBindPurchase(MesPurchaseOrder purchaseOrder) {
BigDecimal orderAmount = purchaseOrder.getOrderAmount();//采购订单数量
BigDecimal boundAmount = purchaseOrder.getBoundAmount();//已绑定总数
BigDecimal safeAmount = purchaseOrder.getSafeAmount();//安全库存数
String orderBindBarcodeAmount = purchaseOrder.getOrderBindBarcodeAmount();//销售订单绑定数-销售订单条码数
String[] orderBindBarcodeAmountArr = orderBindBarcodeAmount.split("-");
BigDecimal orderBindAmount = new BigDecimal(orderBindBarcodeAmountArr[0]); //销售订单已绑定数
BigDecimal orderBarcodeAmount = new BigDecimal(orderBindBarcodeAmountArr[1]);//销售订单已生成条码数量
BigDecimal updateAmount = purchaseOrder.getUpdateAmount();//更新绑定数量
if (updateAmount.compareTo(orderBarcodeAmount) < 0) {
throw new ServiceException("序号: " + purchaseOrder.getSerialNumber() + "的绑定数量需不能小于销售订单条码数");
}
// (已绑定总数 + 安全库存数 + 更新绑定数量 - 销售订单已绑定数) 需要小于等于 采购订单数量
BigDecimal totalBindAmount = boundAmount.add(safeAmount).add(updateAmount).subtract(orderBindAmount);
if (totalBindAmount.compareTo(orderAmount) > 0) {
throw new ServiceException("序号 " + purchaseOrder.getSerialNumber() + "的总绑定数不能大于订单数");
}
}
public void updateOrderBind(MesSaleOrder saleOrder, MesPurchaseOrder purchaseOrder, String userName, Date currentDate) {
Long purchaseOrderId = purchaseOrder.getPurchaseOrderId(); Long purchaseOrderId = purchaseOrder.getPurchaseOrderId();
Long saleOrderId = saleOrder.getSaleOrderId();
MesOrderBind selectOrderBind = new MesOrderBind(); MesOrderBind selectOrderBind = new MesOrderBind();
selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO);
selectOrderBind.setSaleOrderId(saleOrderId); selectOrderBind.setSaleOrderId(saleOrderId);
selectOrderBind.setPurchaseOrderId(purchaseOrderId); selectOrderBind.setPurchaseOrderId(purchaseOrderId);
List<MesOrderBind> bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind); List<MesOrderBind> bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind);
if (bindList.size() == 0) { if (bindList == null || bindList.isEmpty()) {
MesOrderBind orderBind = new MesOrderBind(); MesOrderBind orderBind = new MesOrderBind();
MesPurchaseOrder mesPurchaseOrder = mesPurchaseOrderMapper.selectMesPurchaseOrderByPurchaseOrderId(purchaseOrderId);
Long materialId = mesPurchaseOrder.getMaterialId();
String materialCode = mesPurchaseOrder.getMaterialCode();
String materialName = mesPurchaseOrder.getMaterialName();
String poNo = mesPurchaseOrder.getPoNo();
orderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO); orderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO);
orderBind.setSaleOrderId(saleOrderId); orderBind.setSaleOrderId(saleOrderId);
orderBind.setSaleOrderCode(saleorderCode); orderBind.setSaleOrderCode(saleOrder.getSaleorderCode());
orderBind.setProductId(productId); orderBind.setProductId(purchaseOrder.getMaterialId());
orderBind.setProductCode(productCode); orderBind.setProductCode(purchaseOrder.getMaterialCode());
orderBind.setProductName(productName); orderBind.setProductName(purchaseOrder.getMaterialName());
orderBind.setPurchaseOrderId(purchaseOrderId); orderBind.setPurchaseOrderId(purchaseOrderId);
orderBind.setMaterialId(materialId); orderBind.setMaterialId(saleOrder.getMaterialId());
orderBind.setMaterialCode(materialCode); orderBind.setMaterialCode(saleOrder.getMaterialCode());
orderBind.setMaterialName(materialName); orderBind.setMaterialName(saleOrder.getMaterialName());
orderBind.setBindAmount(purchaseOrder.getUpdateAmount()); orderBind.setBindAmount(purchaseOrder.getUpdateAmount());
orderBind.setPoNo(poNo); orderBind.setPoNo(purchaseOrder.getPoNo());
orderBind.setCreateTime(currentDate); orderBind.setCreateTime(currentDate);
orderBind.setCreateBy(userName); orderBind.setCreateBy(userName);
mesOrderBindMapper.insertMesOrderBind(orderBind); mesOrderBindMapper.insertMesOrderBind(orderBind);
@ -343,25 +369,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
mesOrderBindMapper.updateMesOrderBind(bind); mesOrderBindMapper.updateMesOrderBind(bind);
} }
} }
return 1;
}
private void checkSaveSalesBindPurchase(List<MesPurchaseOrder> purchaseOrderList) {
for (MesPurchaseOrder purchaseOrder : purchaseOrderList) {
BigDecimal boundAmount = purchaseOrder.getBoundAmount();//已绑定总数
BigDecimal saleBindAmount = purchaseOrder.getSaleBindAmount();//销售订单已绑定数
BigDecimal updateAmount = purchaseOrder.getUpdateAmount();//更新绑定数量
BigDecimal orderAmount = purchaseOrder.getOrderAmount();//采购订单数量
BigDecimal safeAmount = purchaseOrder.getSafeAmount();//安全库存数
BigDecimal barcodeAmount = purchaseOrder.getBarcodeAmount();//条码数
BigDecimal totalBindAmount = boundAmount.subtract(saleBindAmount).add(updateAmount);
// (已绑定总数 - 销售订单已绑定数 + 更新绑定数量) 需要小于等于 采购订单数量
if (totalBindAmount.compareTo(orderAmount) > 0) {
throw new ServiceException("序号: " + purchaseOrder.getSerialNumber() + " 总绑定数大于订单数!");
}
}
}
/** /**
* *

@ -254,26 +254,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mbmi.material_code, mbmi.material_code,
mbmi.material_name, mbmi.material_name,
mbmi.material_spec, mbmi.material_spec,
mbmi.always_flag,
mpo.aux_prop_id, mpo.aux_prop_id,
mpo.specification_parameter, mpo.specification_parameter,
mpo.order_amount, mpo.order_amount,
(select ifnull(sum(mob.bind_amount), 0) (select ifnull(sum(mob.bind_amount), 0) from mes_order_bind mob
from mes_order_bind mob where mob.purchase_order_id = mpo.purchase_order_id and mob.safe_flag = '0') bound_amount, <!-- 此采购订单一共绑定的数量 -->
where mob.purchase_order_id = mpo.purchase_order_id
and mob.safe_flag = '0') bound_amount, (select concat(ifnull(sum(bind_amount),0),'-',ifnull(sum(barcode_amount),0)) from mes_order_bind mob
(select ifnull(sum(mob.bind_amount), 0) where mob.purchase_order_id = mpo.purchase_order_id and sale_order_id = #{saleOrderId} and mob.safe_flag = '0') order_bind_barcode_amount,<!-- 此采购订单绑定当前销售订单的数量和生成条码的数量 -->
from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id
and sale_order_id = #{saleOrderId}
and mob.safe_flag = '0') sale_bind_amount,
(select ifnull(sum(bind_amount), 0) (select ifnull(sum(bind_amount), 0)
from mes_order_bind mob from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id where mob.purchase_order_id = mpo.purchase_order_id
and mob.safe_flag = '1') safe_amount, and mob.safe_flag = '1') safe_amount <!-- 此采购订单一共的安全库存数量 -->
(select ifnull(sum(mob.barcode_amount), 0)
from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id
and mob.safe_flag = '1') barcode_amount
from mes_purchase_order mpo from mes_purchase_order mpo
left join mes_base_material_info mbmi on mbmi.erp_id = mpo.material_id left join mes_base_material_info mbmi on mbmi.erp_id = mpo.material_id
<where> <where>
@ -282,10 +277,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialName != null and materialName != ''"> and mbmi.material_name like concat('%', #{materialName}, '%')</if> <if test="materialName != null and materialName != ''"> and mbmi.material_name like concat('%', #{materialName}, '%')</if>
<if test="specificationParameter != null and specificationParameter != ''"> and mpo.specification_parameter like concat('%', #{specificationParameter}, '%')</if> <if test="specificationParameter != null and specificationParameter != ''"> and mpo.specification_parameter like concat('%', #{specificationParameter}, '%')</if>
<if test="materialSpec != null and materialSpec != ''"> and mbmi.material_spec like concat('%', #{materialSpec}, '%')</if> <if test="materialSpec != null and materialSpec != ''"> and mbmi.material_spec like concat('%', #{materialSpec}, '%')</if>
<if test="alwaysFlag != null and alwaysFlag != ''"> and mbmi.always_flag = #{alwaysFlag}</if>
</where> </where>
order by mpo.erp_modify_date desc,mpo.po_no ,mpo.material_name order by mpo.erp_modify_date desc,mpo.po_no ,mpo.material_name
</select> </select>
<select id="unbindPurchaseOrderListByPurchaseAndSaleOrderId" parameterType="MesPurchaseOrder" resultMap="MesPurchaseOrderResult">
select mpo.purchase_order_id,
mpo.erp_id,
mpo.fentry_id,
mpo.po_no,
mpo.document_status,
mpo.material_id,
mbmi.material_code,
mbmi.material_name,
mbmi.material_spec,
mbmi.always_flag,
mpo.aux_prop_id,
mpo.specification_parameter,
mpo.order_amount,
(select ifnull(sum(mob.bind_amount), 0) from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id and mob.safe_flag = '0') bound_amount, <!-- 此采购订单一共绑定的数量 -->
(select concat(ifnull(sum(bind_amount),0),'-',ifnull(sum(barcode_amount),0)) from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id and sale_order_id = #{saleOrderId} and mob.safe_flag = '0') order_bind_barcode_amount,<!-- 此采购订单绑定当前销售订单的数量和生成条码的数量 -->
(select ifnull(sum(bind_amount), 0)
from mes_order_bind mob
where mob.purchase_order_id = mpo.purchase_order_id
and mob.safe_flag = '1') safe_amount <!-- 此采购订单一共的安全库存数量 -->
from mes_purchase_order mpo
left join mes_base_material_info mbmi on mbmi.erp_id = mpo.material_id
where mpo.purchase_order_id = #{purchaseOrderId}
</select>
<select id="saleBindPurchaseOrderList" parameterType="MesPurchaseOrder" resultMap="MesPurchaseOrderResult"> <select id="saleBindPurchaseOrderList" parameterType="MesPurchaseOrder" resultMap="MesPurchaseOrderResult">
select mpo.purchase_order_id, select mpo.purchase_order_id,
mpo.erp_id, mpo.erp_id,

@ -237,6 +237,8 @@
mso.release_qty, mso.release_qty,
mso.is_release, mso.is_release,
mso.plan_delivery_date, mso.plan_delivery_date,
mso.approve_date,
mso.erp_modify_date,
mso.begin_date, mso.begin_date,
mso.end_date, mso.end_date,
mso.complete_date mso.complete_date

@ -285,7 +285,7 @@ export default {
} }
if (!this.isPositiveInteger(bindAmount) || bindAmount <= 0) { if (!this.isPositiveInteger(bindAmount) || bindAmount <= 0) {
this.$modal.msgError("序号为" + (i + 1) + ",绑定数量须为大于等于0的正整数"); this.$modal.msgError("序号为" + (i + 1) + ",绑定数量须为大于0的正整数");
return; return;
} }

@ -30,75 +30,75 @@
</el-form> </el-form>
<el-row> <el-row>
<!-- <el-col :span="12">--> <!-- <el-col :span="12">-->
<!-- <h4 class="form-header h4">已选采购订单</h4>--> <!-- <h4 class="form-header h4">已选采购订单</h4>-->
<!-- <el-form :model="allocatePurchaseOrderQueryParams" ref="allocateMaterialQueryForm" size="small" :inline="true"--> <!-- <el-form :model="allocatePurchaseOrderQueryParams" ref="allocateMaterialQueryForm" size="small" :inline="true"-->
<!-- v-show="showSearch"--> <!-- v-show="showSearch"-->
<!-- label-width="68px">--> <!-- label-width="68px">-->
<!-- <el-form-item label="订单编号" prop="poNo">--> <!-- <el-form-item label="订单编号" prop="poNo">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="allocatePurchaseOrderQueryParams.poNo"--> <!-- v-model="allocatePurchaseOrderQueryParams.poNo"-->
<!-- placeholder="请输入物料编码"--> <!-- placeholder="请输入物料编码"-->
<!-- style="width:140px;"--> <!-- style="width:140px;"-->
<!-- clearable--> <!-- clearable-->
<!-- @keyup.enter.native="handleAllocateMaterialQuery"--> <!-- @keyup.enter.native="handleAllocateMaterialQuery"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="物料编码" prop="materialCode">--> <!-- <el-form-item label="物料编码" prop="materialCode">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="allocatePurchaseOrderQueryParams.materialCode"--> <!-- v-model="allocatePurchaseOrderQueryParams.materialCode"-->
<!-- placeholder="请输入物料编码"--> <!-- placeholder="请输入物料编码"-->
<!-- style="width:140px;"--> <!-- style="width:140px;"-->
<!-- clearable--> <!-- clearable-->
<!-- @keyup.enter.native="handleAllocateMaterialQuery"--> <!-- @keyup.enter.native="handleAllocateMaterialQuery"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="物料名称" prop="materialName">--> <!-- <el-form-item label="物料名称" prop="materialName">-->
<!-- <el-input--> <!-- <el-input-->
<!-- v-model="allocatePurchaseOrderQueryParams.materialName"--> <!-- v-model="allocatePurchaseOrderQueryParams.materialName"-->
<!-- placeholder="请输入物料名称"--> <!-- placeholder="请输入物料名称"-->
<!-- style="width:140px;"--> <!-- style="width:140px;"-->
<!-- clearable--> <!-- clearable-->
<!-- @keyup.enter.native="handleAllocateMaterialQuery"--> <!-- @keyup.enter.native="handleAllocateMaterialQuery"-->
<!-- />--> <!-- />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item>--> <!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleAllocateMaterialQuery">--> <!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleAllocateMaterialQuery">-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetAllocateMaterialQuery"></el-button>--> <!-- <el-button icon="el-icon-refresh" size="mini" @click="resetAllocateMaterialQuery"></el-button>-->
<!-- <el-button--> <!-- <el-button-->
<!-- type="danger"--> <!-- type="danger"-->
<!-- plain--> <!-- plain-->
<!-- icon="el-icon-delete"--> <!-- icon="el-icon-delete"-->
<!-- size="mini"--> <!-- size="mini"-->
<!-- @click="handleUnallocateBarCodes"--> <!-- @click="handleUnallocateBarCodes"-->
<!-- v-hasPermi="['mes:saleOrder:bind']"--> <!-- v-hasPermi="['mes:saleOrder:bind']"-->
<!-- >删除--> <!-- >删除-->
<!-- </el-button>--> <!-- </el-button>-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- </el-form>--> <!-- </el-form>-->
<!-- <el-table v-loading="allocateLoading" :data="allocatePurchaseOrderList"--> <!-- <el-table v-loading="allocateLoading" :data="allocatePurchaseOrderList"-->
<!-- @selection-change="handleAllocateMaterialSelectionChange">--> <!-- @selection-change="handleAllocateMaterialSelectionChange">-->
<!-- <el-table-column type="selection" width="55" align="center"/>--> <!-- <el-table-column type="selection" width="55" align="center"/>-->
<!-- <el-table-column label="订单编号" align="center" prop="poNo"/>--> <!-- <el-table-column label="订单编号" align="center" prop="poNo"/>-->
<!-- <el-table-column label="物料编码" align="center" prop="materialCode"/>--> <!-- <el-table-column label="物料编码" align="center" prop="materialCode"/>-->
<!-- <el-table-column label="物料名称" align="center" prop="materialName"/>--> <!-- <el-table-column label="物料名称" align="center" prop="materialName"/>-->
<!-- <el-table-column label="物料规格" align="center" prop="materialSpec"/>--> <!-- <el-table-column label="物料规格" align="center" prop="materialSpec"/>-->
<!-- <el-table-column label="规格参数" align="center" prop="specificationParameter" :show-overflow-tooltip="true"/>--> <!-- <el-table-column label="规格参数" align="center" prop="specificationParameter" :show-overflow-tooltip="true"/>-->
<!-- <el-table-column label="数量" align="center" prop="orderAmount"/>--> <!-- <el-table-column label="数量" align="center" prop="orderAmount"/>-->
<!-- </el-table>--> <!-- </el-table>-->
<!-- <pagination--> <!-- <pagination-->
<!-- v-show="allocatePurchaseOrderTotal>0"--> <!-- v-show="allocatePurchaseOrderTotal>0"-->
<!-- :total="allocatePurchaseOrderTotal"--> <!-- :total="allocatePurchaseOrderTotal"-->
<!-- :page.sync="allocatePurchaseOrderQueryParams.pageNum"--> <!-- :page.sync="allocatePurchaseOrderQueryParams.pageNum"-->
<!-- :limit.sync="allocatePurchaseOrderQueryParams.pageSize"--> <!-- :limit.sync="allocatePurchaseOrderQueryParams.pageSize"-->
<!-- @pagination="getAllocatePurchaseOrderList"--> <!-- @pagination="getAllocatePurchaseOrderList"-->
<!-- />--> <!-- />-->
<!-- </el-col>--> <!-- </el-col>-->
<!-- <el-col :span="12" >--> <!-- <el-col :span="12" >-->
<h4 class="form-header h4">可选采购订单</h4> <h4 class="form-header h4">可选采购订单</h4>
<el-form :model="purchaseOrderQueryParams" ref="materialQueryForm" size="small" :inline="true" v-show="showSearch" <el-form :model="purchaseOrderQueryParams" ref="materialQueryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px"> label-width="68px">
@ -147,6 +147,17 @@
@keyup.enter.native="handlePurchaseOrderQuery" @keyup.enter.native="handlePurchaseOrderQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="常备物料" prop="alwaysFlag">
<el-select v-model="purchaseOrderQueryParams.alwaysFlag" placeholder="请选择常备物料标识" clearable>
<el-option
v-for="dict in dict.type.mes_material_bind_flag"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handlePurchaseOrderQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handlePurchaseOrderQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetMaterialQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetMaterialQuery"></el-button>
@ -157,10 +168,11 @@
size="mini" size="mini"
:disabled="multiple" :disabled="multiple"
@click="submitForm" @click="submitForm"
v-loading="submitLoading"
v-hasPermi="['mes:saleOrder:bind']" v-hasPermi="['mes:saleOrder:bind']"
>保存 >保存
</el-button> </el-button>
<el-button <!--el-button
type="danger" type="danger"
plain plain
icon="el-icon-delete" icon="el-icon-delete"
@ -168,7 +180,7 @@
@click="handleUnallocateBarCodes" @click="handleUnallocateBarCodes"
v-hasPermi="['mes:saleOrder:bind']" v-hasPermi="['mes:saleOrder:bind']"
>删除 >删除
</el-button> </el-button-->
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -183,18 +195,23 @@
<el-table-column label="订单编号" align="center" prop="poNo"/> <el-table-column label="订单编号" align="center" prop="poNo"/>
<el-table-column label="物料编码" align="center" prop="materialCode"/> <el-table-column label="物料编码" align="center" prop="materialCode"/>
<el-table-column label="物料名称" align="center" prop="materialName"/> <el-table-column label="物料名称" align="center" prop="materialName"/>
<el-table-column label="物料规格" align="center" prop="materialSpec"/> <el-table-column label="物料规格" align="center" prop="materialSpec" :show-overflow-tooltip="true"/>
<el-table-column label="规格参数" align="center" prop="specificationParameter" :show-overflow-tooltip="true"/> <el-table-column label="规格参数" align="center" prop="specificationParameter" :show-overflow-tooltip="true"/>
<el-table-column label="常备物料" align="center" prop="alwaysFlag">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_material_bind_flag" :value="scope.row.alwaysFlag"/>
</template>
</el-table-column>
<el-table-column label="订单数" align="center" prop="orderAmount"/> <el-table-column label="订单数" align="center" prop="orderAmount"/>
<el-table-column label="已绑定数" align="center" prop="boundAmount"/> <el-table-column label="已绑定数" align="center" prop="boundAmount"/>
<el-table-column label="销售订单绑定数" align="center" prop="saleBindAmount"/> <el-table-column label="安全库存数" align="center" prop="safeAmount"/>
<el-table-column label="销售订单绑定数" align="center" prop="orderBindAmount"/>
<el-table-column label="销售订单条码数" align="center" prop="orderBarcodeAmount"/>
<el-table-column label="更新绑定数" align="center" prop="updateAmount" width="150"> <el-table-column label="更新绑定数" align="center" prop="updateAmount" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input-number v-model="scope.row.updateAmount" size="mini"/> <el-input-number v-model="scope.row.updateAmount" size="mini"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="安全库存数" align="center" prop="safeAmount"/>
<el-table-column label="条码数" align="center" prop="barcodeAmount"/>
</el-table> </el-table>
<pagination <pagination
@ -204,7 +221,7 @@
:limit.sync="purchaseOrderQueryParams.pageSize" :limit.sync="purchaseOrderQueryParams.pageSize"
@pagination="getUnbindPurchaseOrderList" @pagination="getUnbindPurchaseOrderList"
/> />
<!-- </el-col>--> <!-- </el-col>-->
</el-row> </el-row>
</div> </div>
@ -220,12 +237,14 @@ import {
export default { export default {
name: "BindingPurchase", name: "BindingPurchase",
dicts: ['mes_material_bind_flag'],
data() { data() {
return { return {
// //
allocateLoading: true, allocateLoading: true,
// //
selectableLoading: true, selectableLoading: true,
submitLoading: false,
// //
orderBindIds: [], orderBindIds: [],
// //
@ -276,12 +295,16 @@ export default {
materialCode: null, materialCode: null,
materialName: null, materialName: null,
specificationParameter: null, specificationParameter: null,
alwaysFlag: null,
poNo: null poNo: null
}, },
}; };
}, },
created() { created() {
this.allocateBarCodeBtnDisable = false; this.getUnbindList();
},
methods: {
getUnbindList() {
const saleOrderId = this.$route.params && this.$route.params.saleOrderId; const saleOrderId = this.$route.params && this.$route.params.saleOrderId;
let saleorderCode = this.$route.query && this.$route.query.saleorderCode; let saleorderCode = this.$route.query && this.$route.query.saleorderCode;
this.purchaseOrderQueryParams.saleOrderId = saleOrderId; this.purchaseOrderQueryParams.saleOrderId = saleOrderId;
@ -289,13 +312,14 @@ export default {
this.saleOrderForm.saleorderCode = saleorderCode; this.saleOrderForm.saleorderCode = saleorderCode;
this.saleOrderForm.saleOrderId = saleOrderId; this.saleOrderForm.saleOrderId = saleOrderId;
this.saleOrderForm.materialId = this.$route.query && this.$route.query.materialId;
this.saleOrderForm.materialCode = this.$route.query && this.$route.query.materialCode; this.saleOrderForm.materialCode = this.$route.query && this.$route.query.materialCode;
this.saleOrderForm.materialName = this.$route.query && this.$route.query.materialName; this.saleOrderForm.materialName = this.$route.query && this.$route.query.materialName;
this.saleOrderForm.materialModel = this.$route.query && this.$route.query.materialModel; this.saleOrderForm.materialModel = this.$route.query && this.$route.query.materialModel;
// this.getAllocatePurchaseOrderList(); // this.getAllocatePurchaseOrderList();
this.getUnbindPurchaseOrderList(); this.getUnbindPurchaseOrderList();
}, },
methods: {
/** 查询已选采购订单信息列表 */ /** 查询已选采购订单信息列表 */
getAllocatePurchaseOrderList() { getAllocatePurchaseOrderList() {
this.allocateLoading = true; this.allocateLoading = true;
@ -310,6 +334,12 @@ export default {
getUnbindPurchaseOrderList() { getUnbindPurchaseOrderList() {
this.selectableLoading = true; this.selectableLoading = true;
unbindPurchaseOrderList(this.purchaseOrderQueryParams).then(response => { unbindPurchaseOrderList(this.purchaseOrderQueryParams).then(response => {
response.rows.forEach(e => {
let orderBindBarcodeAmount = e.orderBindBarcodeAmount.split("-");
e.orderBindAmount = parseInt(orderBindBarcodeAmount[0]);
e.orderBarcodeAmount = parseInt(orderBindBarcodeAmount[1]);
});
this.purchaseOrderList = response.rows; this.purchaseOrderList = response.rows;
this.purchaseOrderTotal = response.total; this.purchaseOrderTotal = response.total;
this.selectableLoading = false; this.selectableLoading = false;
@ -321,8 +351,8 @@ export default {
this.allocatePurchaseOrderQueryParams.pageNum = 1; this.allocatePurchaseOrderQueryParams.pageNum = 1;
this.getAllocatePurchaseOrderList(); this.getAllocatePurchaseOrderList();
}, },
getRowStyle({ row }) { getRowStyle({row}) {
return row.saleBindAmount > 0 ? { backgroundColor: '#8ee38e' } : {}; return row.saleBindAmount > 0 ? {backgroundColor: '#8ee38e'} : {};
}, },
/** 已选采购订单重置按钮操作 */ /** 已选采购订单重置按钮操作 */
resetAllocateMaterialQuery() { resetAllocateMaterialQuery() {
@ -372,43 +402,58 @@ export default {
}).catch(() => { }).catch(() => {
}); });
}, },
isPositiveInteger(value) {
// 使
return /^[0-9]\d*$/.test(value);
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.allocateBarCodeBtnDisable = true; this.submitLoading = true;
// const purchaseOrderIds = this.purchaseOrderIds.join(","); // const purchaseOrderIds = this.purchaseOrderIds.join(",");
for (let obj of this.purchaseOrderSelectableList) { for (let obj of this.purchaseOrderSelectableList) {
obj.saleOrderId = this.saleOrderForm.saleOrderId; obj.saleOrderId = this.saleOrderForm.saleOrderId;
const orderAmount = obj.orderAmount; const orderAmount = obj.orderAmount ? parseInt(obj.orderAmount) : 0;//
const boundAmount = obj.boundAmount; const boundAmount = obj.boundAmount ? parseInt(obj.boundAmount) : 0;//
const saleBindAmount = obj.saleBindAmount; const safeAmount = obj.safeAmount ? parseInt(obj.safeAmount) : 0;//
const safeAmount = obj.safeAmount; const orderBindAmount = obj.orderBindAmount ? parseInt(obj.orderBindAmount) : 0;//
const barcodeAmount = obj.barcodeAmount; const orderBarcodeAmount = obj.orderBarcodeAmount ? parseInt(obj.orderBarcodeAmount) : 0;//
const updateAmount = obj.updateAmount;
if (updateAmount == null){ const updateAmount = obj.updateAmount ? parseInt(obj.updateAmount) : 0;//
this.$modal.msgWarning("订单编号:" + obj.poNo + "请输入更新绑定数");
if (!this.isPositiveInteger(updateAmount) || updateAmount <= 0) {
this.submitLoading = false;
this.$modal.msgError("序号为" + (obj.serialNumber) + ",绑定数量须为大于0的正整数");
return; return;
} }
// - +
// if ((boundAmount - saleBindAmount + updateAmount) > orderAmount){ if (updateAmount < orderBarcodeAmount) {
// this.$modal.msgWarning(":" + obj.poNo + ""); this.submitLoading = false;
// return; this.$modal.msgError("序号" + (obj.serialNumber) + "的绑定数量需不能小于销售订单条码数!");
// } return;
// if (updateAmount > barcodeAmount){
// this.$modal.msgWarning(":" + obj.poNo + "");
// return;
// }
// obj.saleBindAmount = updateAmount;
} }
saveSalesBindPurchase(this.purchaseOrderSelectableList).then((response) => { // + + -
let totalBindAmount = boundAmount + safeAmount + updateAmount - orderBindAmount;
if (totalBindAmount - orderAmount > 0) {
this.submitLoading = false;
this.$modal.msgError("序号" + (obj.serialNumber) + "的总绑定数不能大于订单数!");
return;
}
}
this.saleOrderForm.mesPurchaseOrderList = this.purchaseOrderSelectableList;
// console.log(this.saleOrderForm);
saveSalesBindPurchase(this.saleOrderForm).then((response) => {
this.$modal.msgSuccess("保存成功"); this.$modal.msgSuccess("保存成功");
this.getUnbindPurchaseOrderList(); this.getUnbindPurchaseOrderList();
// this.getAllocatePurchaseOrderList(); // this.getAllocatePurchaseOrderList();
this.allocateBarCodeBtnDisable = false;
}).catch(() => { }).catch(() => {
// this.getAllocatePurchaseOrderList(); this.getUnbindList();
// this.getUnbindPurchaseOrderList(); }).finally(e => {
this.allocateBarCodeBtnDisable = false; this.submitLoading = false;
}); });
}, },

@ -27,6 +27,15 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="物料规格" prop="materialSpec">
<el-input
v-model="queryParams.materialSpec"
placeholder="请输入物料规格"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="完成日期" prop="completeDate">--> <!-- <el-form-item label="完成日期" prop="completeDate">-->
<!-- <el-date-picker clearable--> <!-- <el-date-picker clearable-->
<!-- v-model="queryParams.completeDate"--> <!-- v-model="queryParams.completeDate"-->
@ -88,7 +97,6 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="saleOrderList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="saleOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键标识" align="center" prop="saleOrderId" v-if="columns[0].visible"/> <el-table-column label="主键标识" align="center" prop="saleOrderId" v-if="columns[0].visible"/>
<el-table-column label="ERP主键" align="center" prop="erpId" v-if="columns[1].visible"/> <el-table-column label="ERP主键" align="center" prop="erpId" v-if="columns[1].visible"/>
<el-table-column label="ERP订单明细ID" align="center" prop="fentryId" v-if="columns[2].visible"/> <el-table-column label="ERP订单明细ID" align="center" prop="fentryId" v-if="columns[2].visible"/>
@ -104,10 +112,11 @@
<el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[8].visible"/> <el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[8].visible"/>
<el-table-column label="物料编码" align="center" prop="materialCode" v-if="columns[9].visible"/> <el-table-column label="物料编码" align="center" prop="materialCode" v-if="columns[9].visible"/>
<el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[10].visible"/> <el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[10].visible"/>
<el-table-column label="物料规格" align="center" prop="materialSpec"/>
<el-table-column label="物料组" align="center" prop="matkl" v-if="columns[11].visible"/> <el-table-column label="物料组" align="center" prop="matkl" v-if="columns[11].visible"/>
<el-table-column label="订单数量" align="center" prop="orderAmount" v-if="columns[12].visible"/> <el-table-column label="订单数量" align="center" prop="orderAmount" v-if="columns[12].visible"/>
<el-table-column label="完成数量" align="center" prop="completeAmount" v-if="columns[13].visible"/> <el-table-column label="完成数量" align="center" prop="completeAmount"/>
<el-table-column label="已发布数量" align="center" prop="releaseQty" v-if="columns[14].visible"/> <el-table-column label="已发布数量" align="center" prop="releaseQty"/>
<el-table-column label="是否已下达计划" align="center" prop="isRelease" v-if="columns[15].visible" > <el-table-column label="是否已下达计划" align="center" prop="isRelease" v-if="columns[15].visible" >
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.is_release" :value="scope.row.isRelease"/> <dict-tag :options="dict.type.is_release" :value="scope.row.isRelease"/>
@ -473,10 +482,11 @@ export default {
handleBindingPurchase(row){ handleBindingPurchase(row){
const saleOrderId = row.saleOrderId; const saleOrderId = row.saleOrderId;
const saleorderCode = row.saleorderCode; const saleorderCode = row.saleorderCode;
const materialId = row.materialId;
const materialCode = row.materialCode; const materialCode = row.materialCode;
const materialName = row.materialName; const materialName = row.materialName;
const materialModel = row.materialModel; const materialModel = row.materialModel;
const params = {saleorderCode: saleorderCode, materialCode: materialCode, materialName: materialName, materialModel: materialModel}; const params = {saleorderCode: saleorderCode, materialId: materialId,materialCode: materialCode, materialName: materialName, materialModel: materialModel};
this.$tab.openPage("销售订单绑定[" + saleorderCode + "]", '/saleOrder/bindingPurchase/index/' + saleOrderId, params); this.$tab.openPage("销售订单绑定[" + saleorderCode + "]", '/saleOrder/bindingPurchase/index/' + saleOrderId, params);
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */

Loading…
Cancel
Save