MES:采购订单绑定销售订单信息
master
xins 1 year ago
parent 5fd7f67f7c
commit 708814967e

@ -3,6 +3,9 @@ package com.hw.mes.controller;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import com.hw.mes.domain.MesSaleOrder;
import com.hw.mes.service.IMesSaleOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -35,6 +38,9 @@ public class MesPurchaseOrderController extends BaseController
@Autowired
private IMesPurchaseOrderService mesPurchaseOrderService;
@Autowired
private IMesSaleOrderService mesSaleOrderService;
/**
*
*/
@ -102,4 +108,28 @@ public class MesPurchaseOrderController extends BaseController
{
return toAjax(mesPurchaseOrderService.deleteMesPurchaseOrderByPurchaseOrderIds(purchaseOrderIds));
}
/**
*
*/
@RequiresPermissions("mes:purchaseOrder:bind")
@GetMapping(value = "/getSaleOrders")
public AjaxResult getSaleOrders(MesSaleOrder querySaleOrder)
{
return success(mesSaleOrderService.selectMesSaleOrderList(querySaleOrder));
}
/**
*
*/
@RequiresPermissions("mes:purchaseOrder:bind")
@Log(title = "采购订单信息", businessType = BusinessType.BIND)
@PostMapping(value = "/bindOrder")
public AjaxResult bingOrder(@RequestBody MesPurchaseOrder mesPurchaseOrder)
{
return toAjax(mesPurchaseOrderService.bindOrder(mesPurchaseOrder));
}
}

@ -0,0 +1,211 @@
package com.hw.mes.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hw.common.core.annotation.Excel;
import com.hw.common.core.web.domain.BaseEntity;
/**
* mes_order_bind
*
* @author xins
* @date 2024-05-16
*/
public class MesOrderBind extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键标识 */
private Long orderBindId;
/** 安全库存标识(1是0否) */
@Excel(name = "安全库存标识(1是0否)")
private String safeFlag;
/** 销售订单ID;对应FID */
@Excel(name = "销售订单ID;对应FID")
private Long saleOrderId;
/** 销售订单编号 */
@Excel(name = "销售订单编号")
private String saleOrderCode;
/** ERP成品ID */
@Excel(name = "ERP成品ID")
private Long productId;
/** 成品编号 */
@Excel(name = "成品编号")
private String productCode;
/** 成品名称 */
@Excel(name = "成品名称")
private String productName;
/** 采购订单ID */
@Excel(name = "采购订单ID")
private Long purchaseOrderId;
/** 采购订单编号 */
@Excel(name = "采购订单编号")
private String poNo;
/** ERP物料ID */
@Excel(name = "ERP物料ID")
private Long materialId;
/** 物料编号 */
@Excel(name = "物料编号")
private String materialCode;
/** 物料名称 */
@Excel(name = "物料名称")
private String materialName;
/** 绑定数量 */
@Excel(name = "绑定数量")
private BigDecimal bindAmount;
public void setOrderBindId(Long orderBindId)
{
this.orderBindId = orderBindId;
}
public Long getOrderBindId()
{
return orderBindId;
}
public void setSafeFlag(String safeFlag)
{
this.safeFlag = safeFlag;
}
public String getSafeFlag()
{
return safeFlag;
}
public void setSaleOrderId(Long saleOrderId)
{
this.saleOrderId = saleOrderId;
}
public Long getSaleOrderId()
{
return saleOrderId;
}
public void setSaleOrderCode(String saleOrderCode)
{
this.saleOrderCode = saleOrderCode;
}
public String getSaleOrderCode()
{
return saleOrderCode;
}
public void setProductId(Long productId)
{
this.productId = productId;
}
public Long getProductId()
{
return productId;
}
public void setProductCode(String productCode)
{
this.productCode = productCode;
}
public String getProductCode()
{
return productCode;
}
public void setProductName(String productName)
{
this.productName = productName;
}
public String getProductName()
{
return productName;
}
public void setPurchaseOrderId(Long purchaseOrderId)
{
this.purchaseOrderId = purchaseOrderId;
}
public Long getPurchaseOrderId()
{
return purchaseOrderId;
}
public void setPoNo(String poNo)
{
this.poNo = poNo;
}
public String getPoNo()
{
return poNo;
}
public void setMaterialId(Long materialId)
{
this.materialId = materialId;
}
public Long getMaterialId()
{
return materialId;
}
public void setMaterialCode(String materialCode)
{
this.materialCode = materialCode;
}
public String getMaterialCode()
{
return materialCode;
}
public void setMaterialName(String materialName)
{
this.materialName = materialName;
}
public String getMaterialName()
{
return materialName;
}
public void setBindAmount(BigDecimal bindAmount)
{
this.bindAmount = bindAmount;
}
public BigDecimal getBindAmount()
{
return bindAmount;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("orderBindId", getOrderBindId())
.append("safeFlag", getSafeFlag())
.append("saleOrderId", getSaleOrderId())
.append("saleOrderCode", getSaleOrderCode())
.append("productId", getProductId())
.append("productCode", getProductCode())
.append("productName", getProductName())
.append("purchaseOrderId", getPurchaseOrderId())
.append("poNo", getPoNo())
.append("materialId", getMaterialId())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("bindAmount", getBindAmount())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

@ -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;
@ -18,262 +19,362 @@ import com.hw.common.core.web.domain.BaseEntity;
public class MesPurchaseOrder extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
/** 主键标识 */
private Long purchaseOrderId;
/**
* ERP;FID
*/
@Excel(name = "ERP主键信息")
/** ERP的主键信息;对应FID */
@Excel(name = "ERP的主键信息;对应FID")
private Long erpId;
/**
* ERPID;FPOOrderEntry.FEntryID
*/
@Excel(name = "金蝶ERP订单明细ID")
/** 对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID */
@Excel(name = "对应金蝶ERP订单明细的ID;对应FPOOrderEntry.FEntryID")
private Long fentryId;
/**
* ;FBillNo
*/
@Excel(name = "采购订单编号")
/** 采购订单编号;对应FBillNo */
@Excel(name = "采购订单编号;对应FBillNo")
private String poNo;
/**
* ;FDocumentStatus
*/
@Excel(name = "单据状态")
/** 单据状态;FDocumentStatus */
@Excel(name = "单据状态;FDocumentStatus")
private String documentStatus;
/**
* ID,
*/
@Excel(name = "物料ID")
/** 物料ID,关联物料信息主键 */
@Excel(name = "物料ID,关联物料信息主键")
private Long materialId;
/**
* ;FMaterialId.FNumber
*/
@Excel(name = "物料编码")
/** 物料编码;对应FMaterialId.FNumber */
@Excel(name = "物料编码;对应FMaterialId.FNumber")
private String materialCode;
/**
* ;FMaterialId.FName
*/
@Excel(name = "物料名称")
/** 物料名称;对应FMaterialId.FName */
@Excel(name = "物料名称;对应FMaterialId.FName")
private String materialName;
/**
* ;FQty
*/
@Excel(name = "订单计划数量")
/** 订单计划数量;对应FQty */
@Excel(name = "订单计划数量;对应FQty")
private BigDecimal orderAmount;
/**
*
*/
/** 完成采购数量 */
@Excel(name = "完成采购数量")
private BigDecimal completeAmount;
/**
* ;FApproveDate
*/
/** 审核日期;对应FApproveDate */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "审核日期;对应FApproveDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date approveDate;
/**
* ERP;FModifyDate
*/
/** ERP最后修改日期;对应FModifyDate */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "ERP最后修改日期;对应FModifyDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date erpModifyDate;
/**
* ;FDeliveryDate
*/
/** 计划交货日期;对应FDeliveryDate */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划交货日期;对应FDeliveryDate", width = 30, dateFormat = "yyyy-MM-dd")
private Date planDeliveryDate;
/**
*
*/
/** 计划开始日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划开始日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date beginDate;
/**
*
*/
/** 计划结束日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "计划结束日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date endDate;
/**
* (123)
*/
/** 订单状态(1待采购2采购中3采购完成) */
@Excel(name = "订单状态(1待采购2采购中3采购完成)")
private String orderStatus;
/**
*
*/
/** 完成日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "完成日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date completeDate;
/**
* 1-0-
*/
/** 是否标识1-是0-否 */
@Excel(name = "是否标识1-是0-否")
private String isFlag;
public void setPurchaseOrderId(Long purchaseOrderId) {
/** 采购单位;FUnitId */
@Excel(name = "采购单位;FUnitId")
private Long unitId;
/** 库存单位;FStockUnitID */
@Excel(name = "库存单位;FStockUnitID")
private Long stockUnitId;
/** 计价单位;FPriceUnitID */
@Excel(name = "计价单位;FPriceUnitID")
private Long priceUnitId;
/** 辅助属性;FAuxPropId */
@Excel(name = "辅助属性;FAuxPropId")
private Long auxPropId;
/** 源单编号;FSrcBillNo */
@Excel(name = "源单编号;FSrcBillNo")
private String srcBillNo;
/** 采购组织;FPurchaseOrgId */
@Excel(name = "采购组织;FPurchaseOrgId")
private Long purchaseOrgId;
/** 京源项目;F_TOND_Base */
@Excel(name = "京源项目;F_TOND_Base")
private String tondBase;
/** 供应商ID;FSupplierId */
@Excel(name = "供应商ID;FSupplierId")
private Long supplierId;
/** 采购销售订单绑定信息信息 */
private List<MesOrderBind> mesOrderBindList;
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)
{
this.unitId = unitId;
}
public Long getUnitId()
{
return unitId;
}
public void setStockUnitId(Long stockUnitId)
{
this.stockUnitId = stockUnitId;
}
public Long getStockUnitId()
{
return stockUnitId;
}
public void setPriceUnitId(Long priceUnitId)
{
this.priceUnitId = priceUnitId;
}
public Long getPriceUnitId()
{
return priceUnitId;
}
public void setAuxPropId(Long auxPropId)
{
this.auxPropId = auxPropId;
}
public Long getAuxPropId()
{
return auxPropId;
}
public void setSrcBillNo(String srcBillNo)
{
this.srcBillNo = srcBillNo;
}
public String getSrcBillNo()
{
return srcBillNo;
}
public void setPurchaseOrgId(Long purchaseOrgId)
{
this.purchaseOrgId = purchaseOrgId;
}
public Long getPurchaseOrgId()
{
return purchaseOrgId;
}
public void setTondBase(String tondBase)
{
this.tondBase = tondBase;
}
public String getTondBase()
{
return tondBase;
}
public void setSupplierId(Long supplierId)
{
this.supplierId = supplierId;
}
public Long getSupplierId()
{
return supplierId;
}
public List<MesOrderBind> getMesOrderBindList()
{
return mesOrderBindList;
}
public void setMesOrderBindList(List<MesOrderBind> mesOrderBindList)
{
this.mesOrderBindList = mesOrderBindList;
}
@Override
public String toString() {
@ -296,11 +397,20 @@ public class MesPurchaseOrder extends BaseEntity {
.append("orderStatus", getOrderStatus())
.append("completeDate", getCompleteDate())
.append("isFlag", getIsFlag())
.append("unitId", getUnitId())
.append("stockUnitId", getStockUnitId())
.append("priceUnitId", getPriceUnitId())
.append("auxPropId", getAuxPropId())
.append("srcBillNo", getSrcBillNo())
.append("purchaseOrgId", getPurchaseOrgId())
.append("tondBase", getTondBase())
.append("supplierId", getSupplierId())
.append("remark", getRemark())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("mesOrderBindList", getMesOrderBindList())
.toString();
}
}

@ -1,6 +1,8 @@
package com.hw.mes.mapper;
import java.util.List;
import com.hw.mes.domain.MesOrderBind;
import com.hw.mes.domain.MesPurchaseOrder;
/**
@ -58,4 +60,31 @@ public interface MesPurchaseOrderMapper
* @return
*/
public int deleteMesPurchaseOrderByPurchaseOrderIds(Long[] purchaseOrderIds);
/**
* ;
*
* @param mesOrderBindList ;
* @return
*/
public int batchMesOrderBind(List<MesOrderBind> mesOrderBindList);
/**
* ;
*
* @param purchaseOrderId ID
* @return
*/
public int deleteMesOrderBindByPurchaseOrderId(Long purchaseOrderId);
/**
*
*
* @param orderBindIds
* @return
*/
public int deleteMesOrderBindByOrderBindIds(Long[] orderBindIds);
}

@ -58,4 +58,14 @@ public interface IMesPurchaseOrderService
* @return
*/
public int deleteMesPurchaseOrderByPurchaseOrderId(Long purchaseOrderId);
/**
*
*
* @param mesPurchaseOrder
* @return
*/
public int bindOrder(MesPurchaseOrder mesPurchaseOrder);
}

@ -1,12 +1,21 @@
package com.hw.mes.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.hw.common.core.constant.MesConstants;
import com.hw.common.core.exception.ServiceException;
import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.StringUtils;
import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.domain.MesOrderBind;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hw.mes.mapper.MesPurchaseOrderMapper;
import com.hw.mes.domain.MesPurchaseOrder;
import com.hw.mes.service.IMesPurchaseOrderService;
import org.springframework.transaction.annotation.Transactional;
/**
* Service
@ -15,8 +24,7 @@ import com.hw.mes.service.IMesPurchaseOrderService;
* @date 2024-02-19
*/
@Service
public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
{
public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
@Autowired
private MesPurchaseOrderMapper mesPurchaseOrderMapper;
@ -27,8 +35,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public MesPurchaseOrder selectMesPurchaseOrderByPurchaseOrderId(Long purchaseOrderId)
{
public MesPurchaseOrder selectMesPurchaseOrderByPurchaseOrderId(Long purchaseOrderId) {
return mesPurchaseOrderMapper.selectMesPurchaseOrderByPurchaseOrderId(purchaseOrderId);
}
@ -39,8 +46,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public List<MesPurchaseOrder> selectMesPurchaseOrderList(MesPurchaseOrder mesPurchaseOrder)
{
public List<MesPurchaseOrder> selectMesPurchaseOrderList(MesPurchaseOrder mesPurchaseOrder) {
return mesPurchaseOrderMapper.selectMesPurchaseOrderList(mesPurchaseOrder);
}
@ -51,8 +57,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public int insertMesPurchaseOrder(MesPurchaseOrder mesPurchaseOrder)
{
public int insertMesPurchaseOrder(MesPurchaseOrder mesPurchaseOrder) {
mesPurchaseOrder.setCreateTime(DateUtils.getNowDate());
return mesPurchaseOrderMapper.insertMesPurchaseOrder(mesPurchaseOrder);
}
@ -64,8 +69,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public int updateMesPurchaseOrder(MesPurchaseOrder mesPurchaseOrder)
{
public int updateMesPurchaseOrder(MesPurchaseOrder mesPurchaseOrder) {
mesPurchaseOrder.setUpdateTime(DateUtils.getNowDate());
return mesPurchaseOrderMapper.updateMesPurchaseOrder(mesPurchaseOrder);
}
@ -77,8 +81,7 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public int deleteMesPurchaseOrderByPurchaseOrderIds(Long[] purchaseOrderIds)
{
public int deleteMesPurchaseOrderByPurchaseOrderIds(Long[] purchaseOrderIds) {
return mesPurchaseOrderMapper.deleteMesPurchaseOrderByPurchaseOrderIds(purchaseOrderIds);
}
@ -89,8 +92,68 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService
* @return
*/
@Override
public int deleteMesPurchaseOrderByPurchaseOrderId(Long purchaseOrderId)
{
public int deleteMesPurchaseOrderByPurchaseOrderId(Long purchaseOrderId) {
return mesPurchaseOrderMapper.deleteMesPurchaseOrderByPurchaseOrderId(purchaseOrderId);
}
/**
*
*
* @param mesPurchaseOrder
* @return
*/
@Override
@Transactional
public int bindOrder(MesPurchaseOrder mesPurchaseOrder) {
mesPurchaseOrderMapper.deleteMesOrderBindByPurchaseOrderId(mesPurchaseOrder.getPurchaseOrderId());
Date currentDate = new Date();
String userName = SecurityUtils.getUsername();
Long purchaseOrderId = mesPurchaseOrder.getPurchaseOrderId();
Long erpMaterialId = mesPurchaseOrder.getMaterialId();
String materialCode = mesPurchaseOrder.getMaterialCode();
String materialName = mesPurchaseOrder.getMaterialName();
String poNo = mesPurchaseOrder.getPoNo();
BigDecimal orderAmount = mesPurchaseOrder.getOrderAmount();
List<MesOrderBind> orderBinds = mesPurchaseOrder.getMesOrderBindList();
BigDecimal totalBindAmount = BigDecimal.ZERO;
for (MesOrderBind orderBind : orderBinds) {
if (StringUtils.isEmpty(orderBind.getSafeFlag())) {
throw new ServiceException("请全部选择安全标识");
}
if (orderBind.getSafeFlag().equals(MesConstants.MES_ORDER_BIND_SAFE_FLAG_NO)
&& orderBind.getSaleOrderId() == null) {
throw new ServiceException("安全库存标识为否的请选择销售订单");
}
if (orderBind.getSafeFlag().equals(MesConstants.MES_ORDER_BIND_SAFE_FLAG_YES)
&& orderBind.getSaleOrderId() != null) {
throw new ServiceException("安全库存标识为是的不需要选择销售订单");
}
BigDecimal bindAmount = orderBind.getBindAmount() == null ?
BigDecimal.ZERO : orderBind.getBindAmount();
if (bindAmount.compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("绑定数量需大于0");
}
orderBind.setPurchaseOrderId(purchaseOrderId);
orderBind.setCreateTime(currentDate);
orderBind.setCreateBy(userName);
orderBind.setMaterialId(erpMaterialId);
orderBind.setMaterialCode(materialCode);
orderBind.setMaterialName(materialName);
orderBind.setPoNo(poNo);
totalBindAmount = totalBindAmount.add(bindAmount);
}
if (totalBindAmount.compareTo(orderAmount) > 0) {
throw new ServiceException("总绑定数量" + totalBindAmount + "不能大于订单计划数量" + orderAmount);
}
return mesPurchaseOrderMapper.batchMesOrderBind(orderBinds);
}
}

@ -23,6 +23,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="orderStatus" column="order_status" />
<result property="completeDate" column="complete_date" />
<result property="isFlag" column="is_flag" />
<result property="unitId" column="unit_id" />
<result property="stockUnitId" column="stock_unit_id" />
<result property="priceUnitId" column="price_unit_id" />
<result property="auxPropId" column="aux_prop_id" />
<result property="srcBillNo" column="src_bill_no" />
<result property="purchaseOrgId" column="purchase_org_id" />
<result property="tondBase" column="tond_base" />
<result property="supplierId" column="supplier_id" />
<result property="remark" column="remark" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@ -30,8 +38,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap id="MesPurchaseOrderMesOrderBindResult" type="MesPurchaseOrder" extends="MesPurchaseOrderResult">
<collection property="mesOrderBindList" notNullColumn="sub_order_bind_id" javaType="java.util.List" resultMap="MesOrderBindResult" />
</resultMap>
<resultMap type="MesOrderBind" id="MesOrderBindResult">
<result property="orderBindId" column="sub_order_bind_id" />
<result property="safeFlag" column="sub_safe_flag" />
<result property="saleOrderId" column="sub_sale_order_id" />
<result property="saleOrderCode" column="sub_sale_order_code" />
<result property="productId" column="sub_product_id" />
<result property="productCode" column="sub_product_code" />
<result property="productName" column="sub_product_name" />
<result property="purchaseOrderId" column="sub_purchase_order_id" />
<result property="poNo" column="sub_po_no" />
<result property="materialId" column="sub_material_id" />
<result property="materialCode" column="sub_material_code" />
<result property="materialName" column="sub_material_name" />
<result property="bindAmount" column="sub_bind_amount" />
<result property="remark" column="sub_remark" />
<result property="createBy" column="sub_create_by" />
<result property="createTime" column="sub_create_time" />
<result property="updateBy" column="sub_update_by" />
<result property="updateTime" column="sub_update_time" />
</resultMap>
<sql id="selectMesPurchaseOrderVo">
select purchase_order_id, erp_id, fentry_id, po_no, document_status, material_id, material_code, material_name, order_amount, complete_amount, approve_date, erp_modify_date, plan_delivery_date, begin_date, end_date, order_status, complete_date, is_flag, remark, create_by, create_time, update_by, update_time from mes_purchase_order
select purchase_order_id, erp_id, fentry_id, po_no, document_status, material_id, material_code, material_name, order_amount, complete_amount, approve_date, erp_modify_date, plan_delivery_date, begin_date, end_date, order_status, complete_date, is_flag, unit_id, stock_unit_id, price_unit_id, aux_prop_id, src_bill_no, purchase_org_id, tond_base, supplier_id, remark, create_by, create_time, update_by, update_time from mes_purchase_order
</sql>
<select id="selectMesPurchaseOrderList" parameterType="MesPurchaseOrder" resultMap="MesPurchaseOrderResult">
@ -54,12 +88,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
<if test="completeDate != null "> and complete_date = #{completeDate}</if>
<if test="isFlag != null and isFlag != ''"> and is_flag = #{isFlag}</if>
<if test="srcBillNo != null and srcBillNo != ''"> and src_bill_no like concat('%', #{srcBillNo}, '%')</if>
<if test="tondBase != null and tondBase != ''"> and tond_base like concat('%', #{tondBase}, '%')</if>
</where>
</select>
<select id="selectMesPurchaseOrderByPurchaseOrderId" parameterType="Long" resultMap="MesPurchaseOrderResult">
<include refid="selectMesPurchaseOrderVo"/>
where purchase_order_id = #{purchaseOrderId}
<select id="selectMesPurchaseOrderByPurchaseOrderId" parameterType="Long" resultMap="MesPurchaseOrderMesOrderBindResult">
select a.purchase_order_id, a.erp_id, a.fentry_id, a.po_no, a.document_status, a.material_id, a.material_code, a.material_name, a.order_amount, a.complete_amount, a.approve_date, a.erp_modify_date, a.plan_delivery_date, a.begin_date, a.end_date, a.order_status, a.complete_date, a.is_flag, a.unit_id, a.stock_unit_id, a.price_unit_id, a.aux_prop_id, a.src_bill_no, a.purchase_org_id, a.tond_base, a.supplier_id, a.remark, a.create_by, a.create_time, a.update_by, a.update_time,
b.order_bind_id as sub_order_bind_id, b.safe_flag as sub_safe_flag, b.sale_order_id as sub_sale_order_id, b.sale_order_code as sub_sale_order_code, b.product_id as sub_product_id, b.product_code as sub_product_code, b.product_name as sub_product_name, b.purchase_order_id as sub_purchase_order_id, b.po_no as sub_po_no, b.material_id as sub_material_id, b.material_code as sub_material_code, b.material_name as sub_material_name, b.bind_amount as sub_bind_amount, b.remark as sub_remark, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time
from mes_purchase_order a
left join mes_order_bind b on b.purchase_order_id = a.purchase_order_id
where a.purchase_order_id = #{purchaseOrderId}
</select>
<insert id="insertMesPurchaseOrder" parameterType="MesPurchaseOrder" useGeneratedKeys="true" keyProperty="purchaseOrderId">
@ -153,4 +193,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{purchaseOrderId}
</foreach>
</delete>
<insert id="batchMesOrderBind">
insert into mes_order_bind( order_bind_id, safe_flag, sale_order_id, sale_order_code, product_id, product_code, product_name, purchase_order_id, po_no, material_id, material_code, material_name, bind_amount, remark, create_by, create_time, update_by, update_time) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.orderBindId}, #{item.safeFlag}, #{item.saleOrderId}, #{item.saleOrderCode}, #{item.productId}, #{item.productCode}, #{item.productName}, #{item.purchaseOrderId}, #{item.poNo}, #{item.materialId}, #{item.materialCode}, #{item.materialName}, #{item.bindAmount}, #{item.remark}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime})
</foreach>
</insert>
<delete id="deleteMesOrderBindByPurchaseOrderId" parameterType="Long">
delete from mes_order_bind where purchase_order_id = #{purchaseOrderId}
</delete>
<delete id="deleteMesOrderBindByOrderBindIds" parameterType="String">
delete from mes_order_bind where order_bind_id in
<foreach item="orderBindId" collection="array" open="(" separator="," close=")">
#{orderBindId}
</foreach>
</delete>
</mapper>

@ -42,3 +42,26 @@ export function delPurchaseOrder(purchaseOrderId) {
method: 'delete'
})
}
// 获取销售订单信息
export function getSaleOrders(query) {
return request({
url: '/mes/purchaseOrder/getSaleOrders',
method: 'get',
params: query
})
}
// 绑定采购订单信息
export function bindOrder(data) {
return request({
url: '/mes/purchaseOrder/bindOrder',
method: 'post',
data: data
})
}

@ -268,6 +268,20 @@ export const dynamicRoutes = [
},
],
},
{
path: '/mes/product-order',
component: Layout,
hidden: true,
permissions: ['mes:productOrder:bind'],
children: [
{
path: 'bind/:purchaseOrderId(\\d+)',
component: () => import('@/views/mes/purchaseOrder/bindOrder'),
name: 'orderBind',
meta: { title: '订单信息绑定', activeMenu: '/mes/purchaseOrder' }
}
]
},
{
path: '/mes/product-plan',
component: Layout,

@ -0,0 +1,325 @@
<template>
<div class="app-container">
<el-form ref="form" :model="form" label-width="110px">
<el-row>
<el-col :span="12">
<el-form-item label="采购订单编号" prop="poNo">
<el-input v-model="form.poNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单计划数量" prop="orderAmount">
<el-input v-model="form.orderAmount" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="审核日期" prop="approveDate">
<el-input v-model="form.approveDate" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划交货日期" prop="planDeliveryDate">
<el-input v-model="form.planDeliveryDate" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="订单状态" prop="orderStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.order_status" :value="form.orderStatus"/>
</template>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="完成日期" prop="completeDate">
<el-input v-model="form.completeDate" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="源单编号" prop="srcBillNo">
<el-input v-model="form.srcBillNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="京源项目" prop="tondBase">
<el-input v-model="form.tondBase" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="center">采购订单绑定信息</el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddMesOrderBind"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteMesOrderBind"></el-button>
</el-col>
</el-row>
<el-table :data="mesOrderBindList" :row-class-name="rowMesOrderBindIndex"
@selection-change="handleMesOrderBindSelectionChange" ref="mesOrderBind">
<el-table-column type="selection" width="50" align="center"/>
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="安全库存标识" prop="safeFlag" width="150">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.safeFlag" @input="changeSafeFlag(scope.row)">
<el-radio
v-for="dict in dict.type.mes_safe_flag"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</template>
</el-table-column>
<el-table-column label="销售订单" prop="saleOrderCode">
<template slot-scope="scope">
<el-input v-model="scope.row.saleOrderCode" placeholder="请点击右侧选择销售订单" readonly>
<el-button slot="append" icon="el-icon-search" @click="handleSaleOrderAdd(scope.row)"></el-button>
</el-input>
</template>
</el-table-column>
<el-table-column label="成品编码" prop="productCode" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.productCode" readonly/>
</template>
</el-table-column>
<el-table-column label="成品名称" prop="productName" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.productName" readonly/>
</template>
</el-table-column>
<el-table-column label="绑定数量" prop="bindAmount" width="260">
<template slot-scope="scope">
<el-input-number v-model="scope.row.bindAmount" placeholder="请输入绑定数量">
</el-input-number>
</template>
</el-table-column>
</el-table>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="close"> </el-button>
</div>
<!-- 添加物料信息对话框 -->
<el-dialog title="选择销售订单" :visible.sync="saleOrderOpen" append-to-body>
<select-saleOrder ref="saleOrderRef"></select-saleOrder>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitSaleOrderForm"> </el-button>
<el-button @click="saleOrderOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {getPurchaseOrder, bindOrder} from "@/api/mes/purchaseOrder";
import selectSaleOrder from '@//views/mes/purchaseOrder/selectSaleOrder.vue';
export default {
name: "PurchaseOrder",
components: {
'select-saleOrder': selectSaleOrder,
},
dicts: ['active_flag', 'mes_purchase_order_status', 'document_status', 'mes_safe_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
checkedMesOrderBind: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
purchaseOrderList: [],
// ;
mesOrderBindList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
erpId: null,
fentryId: null,
poNo: null,
documentStatus: null,
materialId: null,
materialCode: null,
materialName: null,
orderAmount: null,
completeAmount: null,
approveDate: null,
erpModifyDate: null,
planDeliveryDate: null,
beginDate: null,
endDate: null,
orderStatus: null,
completeDate: null,
isFlag: null,
unitId: null,
stockUnitId: null,
priceUnitId: null,
auxPropId: null,
srcBillNo: null,
purchaseOrgId: null,
tondBase: null,
supplierId: null,
},
//
form: {},
//
rules: {
materialCode: [
{required: true, message: "物料编码;对应FMaterialId.FNumber不能为空", trigger: "blur"}
],
orderAmount: [
{required: true, message: "订单计划数量;对应FQty不能为空", trigger: "blur"}
],
isFlag: [
{required: true, message: "是否标识1-是0-否不能为空", trigger: "change"}
],
},
saleOrderOpen: false
};
},
created() {
const purchaseOrderId = this.$route.params && this.$route.params.purchaseOrderId;
getPurchaseOrder(purchaseOrderId).then(response => {
this.form = response.data;
this.mesOrderBindList = response.data.mesOrderBindList;
});
},
methods: {
/** 提交按钮 */
submitForm() {
this.loading = true;
this.form.mesOrderBindList = this.mesOrderBindList;
if (this.form.purchaseOrderId != null) {
bindOrder(this.form).then(response => {
this.$modal.msgSuccess("绑定成功");
this.close();
});
}
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息序号 */
rowMesOrderBindIndex({row, rowIndex}) {
row.index = rowIndex + 1;
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息添加按钮操作 */
handleAddMesOrderBind() {
// this.open=true;
let obj = {};
obj.safeFlag = "";
obj.saleOrderId = "";
obj.saleOrderCode = "";
obj.productId = "";
obj.productCode = "";
obj.productName = "";
obj.bindAmount = "";
obj.remark = "";
this.mesOrderBindList.push(obj);
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息删除按钮操作 */
handleDeleteMesOrderBind() {
if (this.checkedMesOrderBind.length == 0) {
this.$modal.msgError("请先选择要删除的采购订单绑定信息");
} else {
const mesOrderBindList = this.mesOrderBindList;
const checkedMesOrderBind = this.checkedMesOrderBind;
this.mesOrderBindList = mesOrderBindList.filter(function (item) {
return checkedMesOrderBind.indexOf(item.index) == -1
});
}
},
/** 复选框选中数据 */
handleMesOrderBindSelectionChange(selection) {
this.checkedMesOrderBind = selection.map(item => item.index)
},
handleSaleOrderAdd(row) {
this.editedRow = row;
this.saleOrderOpen = true;
},
/** 提交选择销售订单信息按钮 */
submitSaleOrderForm() {
let selectedRow = this.$refs.saleOrderRef.selectedRow;
this.editedRow.saleOrderId = selectedRow.saleOrderId;
this.editedRow.saleOrderCode = selectedRow.saleorderCode;
this.editedRow.productCode = selectedRow.materialCode;
this.editedRow.productName = selectedRow.materialName;
this.editedRow.productId = selectedRow.materialId;
this.saleOrderOpen = false;
},
changeSafeFlag(row) {
if (row.safeFlag == "1") {
row.saleOrderId = "";
row.saleOrderCode = "";
row.productCode = "";
row.productName = "";
row.productId = "";
}
},
/** 关闭按钮 */
close() {
const obj = {path: "/mes/plan/purchaseOrder", query: {t: Date.now(), pageNum: this.$route.query.pageNum}};
this.$tab.closeOpenPage(obj);
},
}
};
</script>

@ -9,24 +9,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单据状态" prop="documentStatus">
<el-select v-model="queryParams.documentStatus" placeholder="请选择单据状态" clearable>
<el-option
v-for="dict in dict.type.document_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="物料ID" prop="materialId">
<el-input
v-model="queryParams.materialId"
placeholder="请输入物料ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
@ -43,10 +25,11 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable>
<el-option
v-for="dict in dict.type.order_status"
v-for="dict in dict.type.mes_purchase_order_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -54,133 +37,72 @@
</el-select>
</el-form-item>
<el-form-item label="源单编号" prop="srcBillNo">
<el-input
v-model="queryParams.srcBillNo"
placeholder="请输入源单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="京源项目" prop="tondBase">
<el-input
v-model="queryParams.tondBase"
placeholder="请输入京源项目"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes:purchaseOrder:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['mes:purchaseOrder:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['mes:purchaseOrder:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['mes:purchaseOrder:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="purchaseOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键标识" align="center" prop="purchaseOrderId" 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"/>
<el-table-column label="采购订单编号" align="center" prop="poNo" v-if="columns[3].visible"/>
<el-table-column label="单据状态" align="center" prop="documentStatus" v-if="columns[4].visible" >
<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="orderAmount" />
<el-table-column label="审核日期" align="center" prop="approveDate" width="180">
<template slot-scope="scope">
<dict-tag :options="dict.type.document_status" :value="scope.row.documentStatus"/>
<span>{{ parseTime(scope.row.approveDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[5].visible"/>
<el-table-column label="物料编码" align="center" prop="materialCode" v-if="columns[6].visible"/>
<el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[7].visible"/>
<el-table-column label="订单计划数量" align="center" prop="orderAmount" v-if="columns[8].visible"/>
<el-table-column label="完成采购数量" align="center" prop="completeAmount" v-if="columns[9].visible"/>
<el-table-column label="审核日期" align="center" prop="approveDate" width="180" v-if="columns[10].visible">
<el-table-column label="ERP最后修改日期" align="center" prop="erpModifyDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approveDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.erpModifyDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="ERP最后修改日期" align="center" prop="erpModifyDate" width="180" v-if="columns[11].visible">
<el-table-column label="计划交货日期" align="center" prop="planDeliveryDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.erpModifyDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.planDeliveryDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="计划交货日期" align="center" prop="planDeliveryDate" width="180" v-if="columns[12].visible">
<el-table-column label="订单状态" align="center" prop="orderStatus">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planDeliveryDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<dict-tag :options="dict.type.mes_purchase_order_status" :value="scope.row.orderStatus"/>
</template>
</el-table-column>
<el-table-column label="计划开始日期" align="center" prop="beginDate" width="180" v-if="columns[13].visible">
<el-table-column label="完成日期" align="center" prop="completeDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.completeDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="计划结束日期" align="center" prop="endDate" width="180" v-if="columns[14].visible">
<el-table-column label="源单编号" align="center" prop="srcBillNo" />
<el-table-column label="京源项目" align="center" prop="tondBase" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:purchaseOrder:edit']"
>绑定</el-button>
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="orderStatus" v-if="columns[15].visible" >
<template slot-scope="scope">
<dict-tag :options="dict.type.order_status" :value="scope.row.orderStatus"/>
</template>
</el-table-column>
<el-table-column label="完成日期" align="center" prop="completeDate" width="180" v-if="columns[16].visible">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.completeDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="是否标识" align="center" prop="isFlag" v-if="columns[17].visible" >
<template slot-scope="scope">
<dict-tag :options="dict.type.active_flag" :value="scope.row.isFlag"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[18].visible"/>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['mes:purchaseOrder:edit']"-->
<!-- >修改</el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['mes:purchaseOrder:remove']"-->
<!-- >删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
@ -191,133 +113,24 @@
@pagination="getList"
/>
<!-- 添加或修改采购订单信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="ERP主键信息" prop="erpId">
<el-input v-model="form.erpId" placeholder="请输入ERP主键信息" />
</el-form-item>
<el-form-item label="金蝶ERP订单明细ID" prop="fentryId">
<el-input v-model="form.fentryId" placeholder="请输入金蝶ERP订单明细ID" />
</el-form-item>
<el-form-item label="采购订单编号" prop="poNo">
<el-input v-model="form.poNo" placeholder="请输入采购订单编号" />
</el-form-item>
<el-form-item label="单据状态" prop="documentStatus">
<el-select v-model="form.documentStatus" placeholder="请选择单据状态">
<el-option
v-for="dict in dict.type.document_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="物料ID" prop="materialId">
<el-input v-model="form.materialId" placeholder="请输入物料ID" />
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="订单计划数量" prop="orderAmount">
<el-input v-model="form.orderAmount" placeholder="请输入订单计划数量" />
</el-form-item>
<el-form-item label="完成采购数量" prop="completeAmount">
<el-input v-model="form.completeAmount" placeholder="请输入完成采购数量" />
</el-form-item>
<el-form-item label="审核日期" prop="approveDate">
<el-date-picker clearable
v-model="form.approveDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审核日期">
</el-date-picker>
</el-form-item>
<el-form-item label="ERP最后修改日期" prop="erpModifyDate">
<el-date-picker clearable
v-model="form.erpModifyDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择ERP最后修改日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划交货日期" prop="planDeliveryDate">
<el-date-picker clearable
v-model="form.planDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择计划交货日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划开始日期" prop="beginDate">
<el-date-picker clearable
v-model="form.beginDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择计划开始日期">
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束日期" prop="endDate">
<el-date-picker clearable
v-model="form.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择计划结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="订单状态" prop="orderStatus">
<el-radio-group v-model="form.orderStatus">
<el-radio
v-for="dict in dict.type.order_status"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="完成日期" prop="completeDate">
<el-date-picker clearable
v-model="form.completeDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择完成日期">
</el-date-picker>
</el-form-item>
<el-form-item label="是否标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
<el-radio
v-for="dict in dict.type.active_flag"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listPurchaseOrder, getPurchaseOrder, delPurchaseOrder, addPurchaseOrder, updatePurchaseOrder } from "@/api/mes/purchaseOrder";
import router from "@/router";
export default {
name: "PurchaseOrder",
dicts: ['active_flag', 'order_status', 'document_status'],
dicts: ['active_flag', 'mes_purchase_order_status', 'document_status','mes_safe_flag'],
data() {
return {
//
loading: true,
//
ids: [],
//
checkedMesOrderBind: [],
//
single: true,
//
@ -328,6 +141,8 @@ export default {
total: 0,
//
purchaseOrderList: [],
// ;
mesOrderBindList: [],
//
title: "",
//
@ -353,46 +168,29 @@ export default {
orderStatus: null,
completeDate: null,
isFlag: null,
unitId: null,
stockUnitId: null,
priceUnitId: null,
auxPropId: null,
srcBillNo: null,
purchaseOrgId: null,
tondBase: null,
supplierId: null,
},
//
form: {},
//
rules: {
materialCode: [
{ required: true, message: "物料编码不能为空", trigger: "blur" }
{ required: true, message: "物料编码;对应FMaterialId.FNumber不能为空", trigger: "blur" }
],
orderAmount: [
{ required: true, message: "订单计划数量不能为空", trigger: "blur" }
{ required: true, message: "订单计划数量;对应FQty不能为空", trigger: "blur" }
],
isFlag: [
{ required: true, message: "是否标识不能为空", trigger: "change" }
],
},
columns: [
{ key: 0, label: `主键标识`, visible: true },
{ key: 1, label: `ERP主键信息`, visible: true },
{ key: 2, label: `金蝶ERP订单明细ID`, visible: true },
{ key: 3, label: `采购订单编号`, visible: true },
{ key: 4, label: `单据状态`, visible: true },
{ key: 5, label: `物料ID`, visible: true },
{ key: 6, label: `物料编码`, visible: true },
{ key: 7, label: `物料名称`, visible: true },
{ key: 8, label: `订单计划数量`, visible: true },
{ key: 9, label: `完成采购数量`, visible: true },
{ key: 10, label: `审核日期`, visible: true },
{ key: 11, label: `ERP最后修改日期`, visible: true },
{ key: 12, label: `计划交货日期`, visible: true },
{ key: 13, label: `计划开始日期`, visible: true },
{ key: 14, label: `计划结束日期`, visible: true },
{ key: 15, label: `订单状态`, visible: true },
{ key: 16, label: `完成日期`, visible: true },
{ key: 17, label: `是否标识`, visible: true },
{ key: 18, label: `备注`, visible: true },
{ key: 19, label: `创建人`, visible: true },
{ key: 20, label: `创建时间`, visible: true },
{ key: 21, label: `更新人`, visible: true },
{ key: 22, label: `更新时间`, visible: true },
{ required: true, message: "是否标识1-是0-否不能为空", trigger: "change" }
],
}
};
},
created() {
@ -434,12 +232,21 @@ export default {
orderStatus: null,
completeDate: null,
isFlag: null,
unitId: null,
stockUnitId: null,
priceUnitId: null,
auxPropId: null,
srcBillNo: null,
purchaseOrgId: null,
tondBase: null,
supplierId: null,
remark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.mesOrderBindList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -466,18 +273,16 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const purchaseOrderId = row.purchaseOrderId || this.ids
getPurchaseOrder(purchaseOrderId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改采购订单信息";
});
const purchaseOrderId = row.purchaseOrderId;
const poNo = row.poNo;
const params = {queryParams: this.queryParams};
this.$tab.openPage("订单绑定[" + poNo + "]", '/mes/product-order/bind/' + purchaseOrderId, params);
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.mesOrderBindList = this.mesOrderBindList;
if (this.form.purchaseOrderId != null) {
updatePurchaseOrder(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
@ -504,12 +309,49 @@ export default {
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息序号 */
rowMesOrderBindIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息添加按钮操作 */
handleAddMesOrderBind() {
let obj = {};
obj.safeFlag = "";
obj.saleOrderId = "";
obj.productId = "";
obj.materialId = this.form.materialId;
obj.bindAmount = "";
obj.remark = "";
this.mesOrderBindList.push(obj);
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息删除按钮操作 */
handleDeleteMesOrderBind() {
if (this.checkedMesOrderBind.length == 0) {
this.$modal.msgError("请先选择要删除的采购销售订单绑定信息;销售订单绑定采购订单明细信息数据");
} else {
const mesOrderBindList = this.mesOrderBindList;
const checkedMesOrderBind = this.checkedMesOrderBind;
this.mesOrderBindList = mesOrderBindList.filter(function(item) {
return checkedMesOrderBind.indexOf(item.index) == -1
});
}
},
/** 复选框选中数据 */
handleMesOrderBindSelectionChange(selection) {
this.checkedMesOrderBind = selection.map(item => item.index)
},
/** 导出按钮操作 */
handleExport() {
this.download('mes/purchaseOrder/export', {
...this.queryParams
}, `purchaseOrder_${new Date().getTime()}.xlsx`)
},
handleSaleOrderAdd(){
}
}
};
</script>

@ -0,0 +1,209 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="销售订单编号" prop="saleorderCode">
<el-input
v-model="queryParams.saleorderCode"
placeholder="请输入销售订单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单据状态" prop="documentStatus">
<el-select v-model="queryParams.documentStatus" placeholder="请选择单据状态" clearable>
<el-option
v-for="dict in dict.type.document_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入物料编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="是否已下达计划" prop="isRelease">
<el-select v-model="queryParams.isRelease" placeholder="请选择是否已下达计划" clearable>
<el-option
v-for="dict in dict.type.is_release"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="saleOrderList"
@row-click="handleRowClick"
highlight-current-row
>
<el-table-column label="销售订单编号" align="center" prop="saleorderCode" v-if="columns[3].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="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="isRelease" v-if="columns[15].visible" >
<template slot-scope="scope">
<dict-tag :options="dict.type.is_release" :value="scope.row.isRelease"/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import { listSaleOrder, getSaleOrder, delSaleOrder, addSaleOrder, updateSaleOrder } from "@/api/mes/saleOrder";
export default {
name: "SaleOrder",
dicts: ['document_status', 'is_release'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
saleOrderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
erpId: null,
fentryId: null,
saleorderCode: null,
saleorderLinenumber: null,
documentStatus: null,
factoryId: null,
prodlineId: null,
materialId: null,
materialCode: null,
materialName: null,
matkl: null,
orderAmount: null,
completeAmount: null,
releaseQty: null,
isRelease: null,
approveDate: null,
erpModifyDate: null,
planDeliveryDate: null,
beginDate: null,
endDate: null,
completeDate: null,
isFlag: null,
},
//
form: {},
//
rules: {
isFlag: [
{ required: true, message: "是否标识1-是0-否不能为空", trigger: "blur" }
],
},
columns: [
{ key: 0, label: `主键标识`, visible: true },
{ key: 1, label: `ERP主键`, visible: true },
{ key: 2, label: `ERP订单明细ID`, visible: true },
{ key: 3, label: `销售订单编号`, visible: true },
{ key: 4, label: `销售订单行号`, visible: true },
{ key: 5, label: `单据状态`, visible: true },
{ key: 6, label: `所属工厂`, visible: true },
{ key: 7, label: `所属产线`, visible: true },
{ key: 8, label: `物料ID`, visible: true },
{ key: 9, label: `物料编码`, visible: true },
{ key: 10, label: `物料名称`, visible: true },
{ key: 11, label: `物料组`, visible: true },
{ key: 12, label: `订单计划数量`, visible: true },
{ key: 13, label: `完成数量`, visible: true },
{ key: 14, label: `已发布数量`, visible: true },
{ key: 15, label: `是否已下达计划`, visible: true },
{ key: 16, label: `审核日期`, visible: true },
{ key: 17, label: `ERP最后修改日期`, visible: true },
{ key: 18, label: `计划交货日期`, visible: true },
{ key: 19, label: `计划开始日期`, visible: true },
{ key: 20, label: `计划结束日期`, visible: true },
{ key: 21, label: `完成日期`, visible: true },
{ key: 22, label: `是否标识1-是0-否`, visible: true },
{ key: 23, label: `备注`, visible: true },
{ key: 24, label: `创建人`, visible: true },
{ key: 25, label: `创建时间`, visible: true },
{ key: 26, label: `更新人`, visible: true },
{ key: 27, label: `更新时间`, visible: true },
],
};
},
created() {
this.getList();
},
methods: {
/** 查询销售订单信息列表 */
getList() {
this.loading = true;
listSaleOrder(this.queryParams).then(response => {
this.saleOrderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleRowClick(selection) {
this.selectedRow = selection
},
}
};
</script>
Loading…
Cancel
Save