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

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

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

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

@ -287,82 +287,90 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
/**
*
*
* @param purchaseOrderList
* @param mesSaleOrder
* @return
*/
@Override
@Transactional(rollbackFor = ServiceException.class)
public int saveSalesBindPurchase(List<MesPurchaseOrder> purchaseOrderList) {
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();
public int saveSalesBindPurchase(MesSaleOrder mesSaleOrder) {
Date currentDate = new Date();
String userName = SecurityUtils.getUsername();
for (MesPurchaseOrder purchaseOrder : purchaseOrderList) {
Long purchaseOrderId = purchaseOrder.getPurchaseOrderId();
MesOrderBind selectOrderBind = new MesOrderBind();
selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO);
selectOrderBind.setSaleOrderId(saleOrderId);
selectOrderBind.setPurchaseOrderId(purchaseOrderId);
List<MesOrderBind> bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind);
if (bindList.size() == 0) {
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.setSaleOrderId(saleOrderId);
orderBind.setSaleOrderCode(saleorderCode);
orderBind.setProductId(productId);
orderBind.setProductCode(productCode);
orderBind.setProductName(productName);
orderBind.setPurchaseOrderId(purchaseOrderId);
orderBind.setMaterialId(materialId);
orderBind.setMaterialCode(materialCode);
orderBind.setMaterialName(materialName);
orderBind.setBindAmount(purchaseOrder.getUpdateAmount());
orderBind.setPoNo(poNo);
orderBind.setCreateTime(currentDate);
orderBind.setCreateBy(userName);
mesOrderBindMapper.insertMesOrderBind(orderBind);
} else {
MesOrderBind bind = bindList.get(0);
bind.setBindAmount(purchaseOrder.getUpdateAmount());
bind.setUpdateBy(SecurityUtils.getUsername());
bind.setUpdateTime(DateUtils.getNowDate());
mesOrderBindMapper.updateMesOrderBind(bind);
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(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() + " 总绑定数大于订单数!");
}
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 saleOrderId = saleOrder.getSaleOrderId();
MesOrderBind selectOrderBind = new MesOrderBind();
selectOrderBind.setSafeFlag(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO);
selectOrderBind.setSaleOrderId(saleOrderId);
selectOrderBind.setPurchaseOrderId(purchaseOrderId);
List<MesOrderBind> bindList = mesOrderBindMapper.selectMesOrderBindList(selectOrderBind);
if (bindList == null || bindList.isEmpty()) {
MesOrderBind orderBind = new MesOrderBind();
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.setPurchaseOrderId(purchaseOrderId);
orderBind.setMaterialId(saleOrder.getMaterialId());
orderBind.setMaterialCode(saleOrder.getMaterialCode());
orderBind.setMaterialName(saleOrder.getMaterialName());
orderBind.setBindAmount(purchaseOrder.getUpdateAmount());
orderBind.setPoNo(purchaseOrder.getPoNo());
orderBind.setCreateTime(currentDate);
orderBind.setCreateBy(userName);
mesOrderBindMapper.insertMesOrderBind(orderBind);
} else {
MesOrderBind bind = bindList.get(0);
bind.setBindAmount(purchaseOrder.getUpdateAmount());
bind.setUpdateBy(SecurityUtils.getUsername());
bind.setUpdateTime(DateUtils.getNowDate());
mesOrderBindMapper.updateMesOrderBind(bind);
}
}
/**
*
*

@ -254,26 +254,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
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 ifnull(sum(mob.bind_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') sale_bind_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,
(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
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>
@ -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="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="alwaysFlag != null and alwaysFlag != ''"> and mbmi.always_flag = #{alwaysFlag}</if>
</where>
order by mpo.erp_modify_date desc,mpo.po_no ,mpo.material_name
</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 mpo.purchase_order_id,
mpo.erp_id,

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

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

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

@ -27,6 +27,15 @@
/>
</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-date-picker clearable-->
<!-- v-model="queryParams.completeDate"-->
@ -88,7 +97,6 @@
</el-row>
<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="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"/>
@ -104,10 +112,11 @@
<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="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="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="releaseQty" v-if="columns[14].visible"/>
<el-table-column label="完成数量" align="center" prop="completeAmount"/>
<el-table-column label="已发布数量" align="center" prop="releaseQty"/>
<el-table-column label="是否已下达计划" align="center" prop="isRelease" v-if="columns[15].visible" >
<template slot-scope="scope">
<dict-tag :options="dict.type.is_release" :value="scope.row.isRelease"/>
@ -473,10 +482,11 @@ export default {
handleBindingPurchase(row){
const saleOrderId = row.saleOrderId;
const saleorderCode = row.saleorderCode;
const materialId = row.materialId;
const materialCode = row.materialCode;
const materialName = row.materialName;
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);
},
/** 新增按钮操作 */

Loading…
Cancel
Save