Browse Source

[feat]

委外加工 委外订单、领料、入库
修改添加委外订单、领料和入库页面,补全出入库所需字段;
去除委外订单mapper中子表相关;
新增委外订单子表mapper;
修改委外订单controller,审核通过后生成应付账款记录;
新增委外订单根据子表生成应付账款记录service方法;
修改委外领料service,补全出库单字段;
dev
王晓迪 2 months ago
parent
commit
993f4cf508
  1. 2
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceOrderController.java
  2. 95
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderDetailMapper.java
  3. 41
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderMapper.java
  4. 2
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceOrderService.java
  5. 72
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceOrderServiceImpl.java
  6. 20
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceRequisitionServiceImpl.java
  7. 7
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java
  8. 167
      ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderDetailMapper.xml
  9. 72
      ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderMapper.xml
  10. 1
      ruoyi-admin/src/main/resources/mapper/system/OutsourceQuoteMapper.xml
  11. 1
      ruoyi-admin/src/main/resources/mapper/system/OutsourceRequisitionMapper.xml
  12. 5
      ruoyi-admin/src/main/resources/templates/system/outsource_order/addRequisition.html
  13. 5
      ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html
  14. 17
      ruoyi-admin/src/main/resources/templates/system/outsource_order/outsource_order.html
  15. 4
      ruoyi-admin/src/main/resources/templates/system/outsource_plan/addOutsourceOrder.html
  16. 2
      ruoyi-admin/src/main/resources/templates/system/outsource_quote/outsource_quote.html
  17. 2
      ruoyi-admin/src/main/resources/templates/system/outsource_requisition/outsource_requisition.html
  18. 4
      ruoyi-admin/src/main/resources/templates/system/outsource_storage/detail.html

2
ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceOrderController.java

@ -225,6 +225,8 @@ public class OutsourceOrderController extends BaseController
if("submit".equals(instanceType)){
// 使用状态-是
outsourceOrderVO.setUseStatus("1");
OutsourceOrder outsourceOrder = outsourceOrderService.selectOutsourceOrderByOutsourceOrderId(outsourceOrderVO.getOutsourceOrderId());
outsourceOrderService.insertFinancialAccountsPayable(outsourceOrder);
}
// 作废
else if("cancel".equals(instanceType)){

95
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderDetailMapper.java

@ -0,0 +1,95 @@
package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.OutsourceOrderDetail;
/**
* 委外订单详情Mapper接口
*
* @author ruoyi
* @date 2024-09-24
*/
public interface OutsourceOrderDetailMapper
{
/**
* 查询委外订单详情
*
* @param outsourceOrderDetailId 委外订单详情ID
* @return 委外订单详情
*/
public OutsourceOrderDetail selectOutsourceOrderDetailById(Long outsourceOrderDetailId);
/**
* 查询委外订单详情列表
*
* @param outsourceOrderDetail 委外订单详情
* @return 委外订单详情集合
*/
public List<OutsourceOrderDetail> selectOutsourceOrderDetailList(OutsourceOrderDetail outsourceOrderDetail);
/**
* 新增委外订单详情
*
* @param outsourceOrderDetail 委外订单详情
* @return 结果
*/
public int insertOutsourceOrderDetail(OutsourceOrderDetail outsourceOrderDetail);
/**
* 修改委外订单详情
*
* @param outsourceOrderDetail 委外订单详情
* @return 结果
*/
public int updateOutsourceOrderDetail(OutsourceOrderDetail outsourceOrderDetail);
/**
* 删除委外订单详情
*
* @param outsourceOrderDetailId 委外订单详情ID
* @return 结果
*/
public int deleteOutsourceOrderDetailById(Long outsourceOrderDetailId);
/**
* 批量删除委外订单详情
*
* @param outsourceOrderDetailIds 需要删除的数据ID
* @return 结果
*/
public int deleteOutsourceOrderDetailByIds(String[] outsourceOrderDetailIds);
/**
* 作废委外订单详情
*
* @param outsourceOrderDetailId 委外订单详情ID
* @return 结果
*/
public int cancelOutsourceOrderDetailById(Long outsourceOrderDetailId);
/**
* 恢复委外订单详情
*
* @param outsourceOrderDetailId 委外订单详情ID
* @return 结果
*/
public int restoreOutsourceOrderDetailById(Long outsourceOrderDetailId);
/**
* 批量新增委外订单详情
*
* @param outsourceOrderDetailList 委外订单详情列表
* @return 结果
*/
public int batchOutsourceOrderDetail(List<OutsourceOrderDetail> outsourceOrderDetailList);
/**
* 通过委外订单主键删除委外订单详情信息
*
* @param outsourceOrderNo 委外订单ID
* @return 结果
*/
public int deleteOutsourceOrderDetailByOutsourceOrderNo(String outsourceOrderNo);
public int deleteOutsourceOrderDetailByOutsourceOrderNos(String[] outsourceOrderNos);
}

41
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderMapper.java

@ -39,13 +39,6 @@ public interface OutsourceOrderMapper
* @return 委外订单集合
*/
public List<OutsourceOrderVO> selectOutsourceOrderList(OutsourceOrderVO outsourceOrderVO);
/**
* 查询委外订单详情列表
*
* @param outsourceOrderNo 委外订单
* @return 委外订单集合
*/
public List<OutsourceOrderDetail> selectOutsourceOrderDetailList(String outsourceOrderNo);
/**
* 新增委外订单
@ -71,29 +64,6 @@ public interface OutsourceOrderMapper
*/
public int deleteOutsourceOrderByOutsourceOrderId(Long outsourceOrderId);
/**
* 批量删除委外订单
*
* @param outsourceOrderIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteOutsourceOrderByOutsourceOrderIds(String[] outsourceOrderIds);
/**
* 批量删除委外订单详情
*
* @param outsourceOrderIds 需要删除的数据主键集合
* @return 结果
*/
public int deleteOutsourceOrderDetailByOutsourceOrderNos(String[] outsourceOrderIds);
/**
* 批量新增委外订单详情
*
* @param outsourceOrderDetailList 委外订单详情列表
* @return 结果
*/
public int batchOutsourceOrderDetail(List<OutsourceOrderDetail> outsourceOrderDetailList);
/**
* 查询委外物料
*
@ -102,14 +72,6 @@ public interface OutsourceOrderMapper
*/
public OutsourceMaterial selectMaterialByCode(String materialNo);
/**
* 通过委外订单主键删除委外订单详情信息
*
* @param outsourceOrderNo 委外订单ID
* @return 结果
*/
public int deleteOutsourceOrderDetailByOutsourceOrderNo(String outsourceOrderNo);
/**
* 作废委外订单
*
@ -125,4 +87,7 @@ public interface OutsourceOrderMapper
* @return 结果
*/
public int restoreOutsourceOrderById(Long outsourceOrderId);
public OutsourceOrder selectOutsourceOrderByNo(String outsourceOrderNo);
}

2
ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceOrderService.java

@ -97,4 +97,6 @@ public interface IOutsourceOrderService
*/
@Transactional(rollbackFor = Exception.class)
ProcessInstance restoreOutsourceOrderById(Long id);
int insertFinancialAccountsPayable(OutsourceOrder outsourceOrder);
}

72
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceOrderServiceImpl.java

@ -7,19 +7,25 @@ import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.erp.domain.ErpMaterial;
import com.ruoyi.erp.domain.ErpMaterialVo;
import com.ruoyi.financial.domain.FinancialAccountsPayable;
import com.ruoyi.financial.mapper.FinancialAccountsPayableMapper;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.system.domain.OutsourceMaterial;
import com.ruoyi.system.domain.OutsourceOrder;
import com.ruoyi.system.domain.OutsourceOrderDetail;
import com.ruoyi.system.domain.SysSupplier;
import com.ruoyi.system.domain.Vo.OutsourceOrderVO;
import com.ruoyi.system.domain.Vo.OutsourceRequisitionVO;
import com.ruoyi.system.mapper.OutsourceOrderDetailMapper;
import com.ruoyi.system.mapper.OutsourceOrderMapper;
import com.ruoyi.system.mapper.SysSupplierMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.IOutsourceOrderService;
import com.ruoyi.system.service.IOutsourcePlanService;
@ -28,6 +34,7 @@ import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.TaskEntityImpl;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -48,6 +55,15 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
@Autowired
private OutsourceOrderMapper outsourceOrderMapper;
@Autowired
private OutsourceOrderDetailMapper orderDetailMapper;
@Autowired
private FinancialAccountsPayableMapper financialAccountsPayableMapper;
@Autowired
private SysSupplierMapper supplierMapper;
@Autowired
private IOutsourcePlanService outsourcePlanService;
@ -81,7 +97,9 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
public OutsourceOrderVO selectOutsourceOrderByOutsourceOrderId(Long outsourceOrderId)
{
OutsourceOrderVO outsourceOrderVO = outsourceOrderMapper.selectOutsourceOrderByOutsourceOrderId(outsourceOrderId);
List<OutsourceOrderDetail> details = outsourceOrderMapper.selectOutsourceOrderDetailList(outsourceOrderVO.getOutsourceOrderNo());
OutsourceOrderDetail tempDetail = new OutsourceOrderDetail();
tempDetail.setOutsourceOrderNo(outsourceOrderVO.getOutsourceOrderNo());
List<OutsourceOrderDetail> details = orderDetailMapper.selectOutsourceOrderDetailList(tempDetail);
if(StringUtils.isNotEmpty(details)){
outsourceOrderVO.setOutsourceOrderDetailList(details);
for (OutsourceOrderDetail detail: details) {
@ -117,8 +135,10 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
if (sysUser2 != null) {
tempOutsourceOrderVO.setApplyUserName(sysUser2.getUserName());
}
if(outsourceOrderMapper.selectOutsourceOrderDetailList(tempOutsourceOrderVO.getOutsourceOrderNo())!=null){
List<OutsourceOrderDetail> details = outsourceOrderMapper.selectOutsourceOrderDetailList(tempOutsourceOrderVO.getOutsourceOrderNo());
OutsourceOrderDetail tempDetail = new OutsourceOrderDetail();
tempDetail.setOutsourceOrderNo(outsourceOrderVO.getOutsourceOrderNo());
if(orderDetailMapper.selectOutsourceOrderDetailList(tempDetail)!=null){
List<OutsourceOrderDetail> details = orderDetailMapper.selectOutsourceOrderDetailList(tempDetail);
tempOutsourceOrderVO.setOutsourceOrderDetailList(details);
}
String instanceId = tempOutsourceOrderVO.getInstanceId();
@ -271,7 +291,7 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
String loginName = ShiroUtils.getLoginName();
outsourceOrderVO.setUpdateBy(loginName);
int rows = outsourceOrderMapper.updateOutsourceOrder(outsourceOrderVO);
outsourceOrderMapper.deleteOutsourceOrderDetailByOutsourceOrderNo(outsourceOrderVO.getOutsourceOrderNo());
orderDetailMapper.deleteOutsourceOrderDetailByOutsourceOrderNo(outsourceOrderVO.getOutsourceOrderNo());
insertOutsourceOrderDetail(outsourceOrderVO);
return rows;
}
@ -291,7 +311,9 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
public List<OutsourceOrderVO> selectOutsourceOrderByOutsourceOrderNo(String outsourceOrderNo) {
List<OutsourceOrderVO> outsourceOrders = outsourceOrderMapper.selectOutsourceOrderByOutsourceOrderNo(outsourceOrderNo);
for (OutsourceOrderVO order:outsourceOrders) {
List<OutsourceOrderDetail> details= outsourceOrderMapper.selectOutsourceOrderDetailList(order.getOutsourceOrderNo());
OutsourceOrderDetail tempDetail = new OutsourceOrderDetail();
tempDetail.setOutsourceOrderNo(order.getOutsourceOrderNo());
List<OutsourceOrderDetail> details= orderDetailMapper.selectOutsourceOrderDetailList(tempDetail);
for (OutsourceOrderDetail detail:details) {
OutsourceMaterial material = outsourcePlanService.selectMaterialByCode(detail.getMaterialNo());
// 确保 material 的 OrderDetails 集合已初始化
@ -320,7 +342,7 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
@Override
public int deleteOutsourceOrderByOutsourceOrderIds(String outsourceOrderIds)
{
int rows = outsourceOrderMapper.deleteOutsourceOrderDetailByOutsourceOrderNos(Convert.toStrArray(outsourceOrderIds));
int rows = orderDetailMapper.deleteOutsourceOrderDetailByOutsourceOrderNos(Convert.toStrArray(outsourceOrderIds));
return rows;
}
@ -335,7 +357,7 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
public int deleteOutsourceOrderByOutsourceOrderId(Long outsourceOrderId)
{
OutsourceOrderVO orderVO = outsourceOrderMapper.selectOutsourceOrderByOutsourceOrderId(outsourceOrderId);
outsourceOrderMapper.deleteOutsourceOrderDetailByOutsourceOrderNo(orderVO.getOutsourceOrderNo());
orderDetailMapper.deleteOutsourceOrderDetailByOutsourceOrderNo(orderVO.getOutsourceOrderNo());
int rows = outsourceOrderMapper.deleteOutsourceOrderByOutsourceOrderId(outsourceOrderId);
return rows;
}
@ -355,11 +377,13 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
for (OutsourceOrderDetail outsourceOrderDetail : outsourceOrderDetailList)
{
outsourceOrderDetail.setOutsourceOrderNo(OutsourceOrderNo);
outsourceOrderDetail.setRemitStatus("0");
outsourceOrderDetail.setClosedStatus("0");
list.add(outsourceOrderDetail);
}
if (list.size() > 0)
{
outsourceOrderMapper.batchOutsourceOrderDetail(list);
orderDetailMapper.batchOutsourceOrderDetail(list);
}
}
}
@ -440,4 +464,36 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
outsourceOrderMapper.updateOutsourceOrder(outsourceOrderVO);
return processInstance;
}
// 根据委外订单详情子表数据生成应付账款记录
@Override
public int insertFinancialAccountsPayable(OutsourceOrder outsourceOrder) {
List<OutsourceOrderDetail> orderDetails = outsourceOrder.getOutsourceOrderDetailList();
if(CollectionUtils.isEmpty(orderDetails)){
throw new BusinessException("委外订单详情为空!");
}
int rows = 0;
for (OutsourceOrderDetail detail : orderDetails) {
FinancialAccountsPayable financialPayable = new FinancialAccountsPayable();
financialPayable.setAccountsPayableCode(redisCache.generateBillNo("YF"));
financialPayable.setAccountsPayableStatus("0");
financialPayable.setStorageStatus("0");
financialPayable.setRelevanceCode(detail.getOutsourceOrderNo());
financialPayable.setSupplierCode(detail.getSupplierCode());
financialPayable.setSupplierName(detail.getSupplierName());
SysSupplier supplier = supplierMapper.selectSysSupplierByCode(detail.getSupplierCode());
financialPayable.setOpenAccount(supplier.getBankAccount());
financialPayable.setOpenBank(supplier.getDepositBank());
financialPayable.setPriceExcludingTax(detail.getRmbSum());
financialPayable.setPriceExcludingTax(detail.getNoRmbSum());
financialPayable.setPurchaseBuyer(outsourceOrder.getOutsourceStaff());
financialPayable.setCreateBy(ShiroUtils.getLoginName());
financialPayable.setCreateTime(DateUtils.getNowDate());
int row = financialAccountsPayableMapper.insertFinancialAccountsPayable(financialPayable);
if(row<=0){
throw new BusinessException("新增应付账款记录失败!");
}
rows ++;
}
return rows;
}
}

20
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceRequisitionServiceImpl.java

@ -1,6 +1,7 @@
package com.ruoyi.system.service.impl;
import java.util.*;
import java.util.stream.Collectors;
import com.github.pagehelper.Page;
import com.ruoyi.common.core.domain.entity.SysUser;
@ -355,7 +356,7 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
public int generateWarehouseOutOrder(OutsourceRequisitionVO outsourceRequisitionVO){
WarehouseOutOrder warehouseOutOrder = new WarehouseOutOrder();
warehouseOutOrder.setOutOrderCode(redisCache.generateBillNo("CK"));
warehouseOutOrder.setWarehouseOutStatus("0");
warehouseOutOrder.setWarehouseOutStatus("4");//待出库
warehouseOutOrder.setRelatedOrderCode(outsourceRequisitionVO.getOutsourceRequisitionNo());
warehouseOutOrder.setWarehouseOrderType("3");
warehouseOutOrder.setOutMakeCode(outsourceRequisitionVO.getOutsourceOrderNo());
@ -370,14 +371,23 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
List<OutsourceRequisitionDetail> requisitionDetails = outsourceRequisitionVO.getOutsourceRequisitionDetailList();
if(StringUtils.isEmpty(requisitionDetails)){
throw new BusinessException("委外领料单详情为空!");
}else{
for (OutsourceRequisitionDetail detail:requisitionDetails) {
}
// 去重
Map<String, OutsourceRequisitionDetail> uniqueItems = requisitionDetails.stream()
.collect(Collectors.toMap(
OutsourceRequisitionDetail::getMaterialNo, // 键
item -> item, // 值
(existing, replacement) -> existing // 如果有重复的料号,保留第一个出现的对象
));
List<OutsourceRequisitionDetail> reducedList = new ArrayList<>(uniqueItems.values());
for (OutsourceRequisitionDetail detail:reducedList) {
WarehouseOutOrderDetail warehouseOutOrderDetail = generateWarehouseOutOrderDetail(detail);
warehouseOutOrderDetail.setOutOrderCode(warehouseOutOrder.getOutOrderCode());
warehouseOutOrderDetail.setApplyName(warehouseOutOrder.getApplyName());
outOrderDetailMapper.insertWarehouseOutOrderDetail(warehouseOutOrderDetail);
}
}
int insertResult = warehouseOutOrderMapper.insertWarehouseOutOrder(warehouseOutOrder);
if(insertResult<=0){
throw new BusinessException("新增委外领料出库单数据失败");
@ -387,7 +397,7 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
// 根据委外领料单详情生成出库单详情
public WarehouseOutOrderDetail generateWarehouseOutOrderDetail(OutsourceRequisitionDetail requisitionDetail){
WarehouseOutOrderDetail warehouseOutOrderDetail = new WarehouseOutOrderDetail();
warehouseOutOrderDetail.setWarehouseOutStatus("0");
warehouseOutOrderDetail.setWarehouseOutStatus("4");//待出库
warehouseOutOrderDetail.setRelatedOrderCode(requisitionDetail.getOutsourceRequisitionNo());
warehouseOutOrderDetail.setOutMakeCode(requisitionDetail.getOutsourceOrderNo());
warehouseOutOrderDetail.setWarehouseOrderType("3");

7
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseOutOrderService.java

@ -7,6 +7,7 @@ import com.ruoyi.system.domain.SysMakeorderPickVo;
import com.ruoyi.system.domain.SysSalesOrder;
import com.ruoyi.system.domain.Vo.BaseEmpRequisiteOrderVO;
import com.ruoyi.warehouse.domain.WarehouseOutOrder;
import org.springframework.transaction.annotation.Transactional;
/**
* 仓库出库单Service接口
@ -114,6 +115,10 @@ public interface IWarehouseOutOrderService
* */
void generateWarehouseOutOrderByDevelopModifyorderPicking(ErpDevelopModifyorderPickingVo erpDevelopModifyorderPickingVo);
// 请购单-出库
@Transactional(rollbackFor = Exception.class)
int updateRequisitionOutWarehouse(WarehouseOutOrder warehouseOutOrder);
/**
* 仓库出库单通用修改保持方法
* */
@ -128,4 +133,6 @@ public interface IWarehouseOutOrderService
* 员工领料单审核通过后生成出库单
* */
int generateWarehouseOutOrderByBaseEmpRequisiteOrder(BaseEmpRequisiteOrderVO baseEmpRequisiteOrderVO);
int updateOutsourceOutWarehouse(WarehouseOutOrder warehouseOutOrder);
}

167
ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderDetailMapper.xml

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.OutsourceOrderDetailMapper">
<resultMap type="OutsourceOrderDetail" id="OutsourceOrderDetailResult">
<result property="outsourceOrderDetailId" column="outsource_order_detail_id" />
<result property="outsourceOrderNo" column="outsource_order_no" />
<result property="materialNo" column="material_no" />
<result property="outsourceProcessNo" column="outsource_process_no" />
<result property="outsourceProcessName" column="outsource_process_name" />
<result property="chargeUnit" column="charge_unit" />
<result property="singleMaterial" column="single_material" />
<result property="deliveryTime" column="delivery_time" />
<result property="actualOutsourceAmount" column="actual_outsource_amount" />
<result property="materialRmb" column="material_rmb" />
<result property="materialNoRmb" column="material_no_rmb" />
<result property="supplierCode" column="supplier_code" />
<result property="supplierName" column="supplier_name" />
<result property="closedStatus" column="closed_status" />
<result property="remitStatus" column="remit_status" />
<result property="rmbSum" column="rmb_sum" />
<result property="noRmbSum" column="no_rmb_sum" />
<result property="correlationCodes" column="correlation_codes" />
<result property="plannedOutsourceAmount" column="planned_outsource_amount" />
</resultMap>
<sql id="selectOutsourceOrderDetailVo">
select outsource_order_detail_id, outsource_order_no, material_no, outsource_process_no, outsource_process_name, charge_unit, single_material, delivery_time, actual_outsource_amount, material_rmb, material_no_rmb, supplier_code, supplier_name, closed_status, remit_status, rmb_sum, no_rmb_sum, correlation_codes, planned_outsource_amount from outsource_order_detail
</sql>
<select id="selectOutsourceOrderDetailList" parameterType="OutsourceOrderDetail" resultMap="OutsourceOrderDetailResult">
<include refid="selectOutsourceOrderDetailVo"/>
<where>
<if test="outsourceOrderNo != null and outsourceOrderNo != ''"> and outsource_order_no = #{outsourceOrderNo}</if>
<if test="materialNo != null and materialNo != ''"> and material_no = #{materialNo}</if>
<if test="outsourceProcessNo != null and outsourceProcessNo != ''"> and outsource_process_no = #{outsourceProcessNo}</if>
<if test="outsourceProcessName != null and outsourceProcessName != ''"> and outsource_process_name like concat('%', #{outsourceProcessName}, '%')</if>
<if test="chargeUnit != null and chargeUnit != ''"> and charge_unit = #{chargeUnit}</if>
<if test="singleMaterial != null "> and single_material = #{singleMaterial}</if>
<if test="deliveryTime != null and deliveryTime != ''"> and delivery_time = #{deliveryTime}</if>
<if test="actualOutsourceAmount != null "> and actual_outsource_amount = #{actualOutsourceAmount}</if>
<if test="materialRmb != null "> and material_rmb = #{materialRmb}</if>
<if test="materialNoRmb != null "> and material_no_rmb = #{materialNoRmb}</if>
<if test="supplierCode != null and supplierCode != ''"> and supplier_code = #{supplierCode}</if>
<if test="supplierName != null and supplierName != ''"> and supplier_name like concat('%', #{supplierName}, '%')</if>
<if test="closedStatus != null and closedStatus != ''"> and closed_status = #{closedStatus}</if>
<if test="remitStatus != null and remitStatus != ''"> and remit_status = #{remitStatus}</if>
<if test="rmbSum != null "> and rmb_sum = #{rmbSum}</if>
<if test="noRmbSum != null "> and no_rmb_sum = #{noRmbSum}</if>
<if test="correlationCodes != null and correlationCodes != ''"> and correlation_codes = #{correlationCodes}</if>
<if test="plannedOutsourceAmount != null "> and planned_outsource_amount = #{plannedOutsourceAmount}</if>
</where>
</select>
<select id="selectOutsourceOrderDetailById" parameterType="Long" resultMap="OutsourceOrderDetailResult">
<include refid="selectOutsourceOrderDetailVo"/>
where outsource_order_detail_id = #{outsourceOrderDetailId}
</select>
<insert id="insertOutsourceOrderDetail" parameterType="OutsourceOrderDetail" useGeneratedKeys="true" keyProperty="outsourceOrderDetailId">
insert into outsource_order_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">outsource_order_no,</if>
<if test="materialNo != null and materialNo != ''">material_no,</if>
<if test="outsourceProcessNo != null and outsourceProcessNo != ''">outsource_process_no,</if>
<if test="outsourceProcessName != null">outsource_process_name,</if>
<if test="chargeUnit != null">charge_unit,</if>
<if test="singleMaterial != null">single_material,</if>
<if test="deliveryTime != null">delivery_time,</if>
<if test="actualOutsourceAmount != null">actual_outsource_amount,</if>
<if test="materialRmb != null">material_rmb,</if>
<if test="materialNoRmb != null">material_no_rmb,</if>
<if test="supplierCode != null">supplier_code,</if>
<if test="supplierName != null">supplier_name,</if>
<if test="closedStatus != null">closed_status,</if>
<if test="remitStatus != null">remit_status,</if>
<if test="rmbSum != null">rmb_sum,</if>
<if test="noRmbSum != null">no_rmb_sum,</if>
<if test="correlationCodes != null">correlation_codes,</if>
<if test="plannedOutsourceAmount != null">planned_outsource_amount,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">#{outsourceOrderNo},</if>
<if test="materialNo != null and materialNo != ''">#{materialNo},</if>
<if test="outsourceProcessNo != null and outsourceProcessNo != ''">#{outsourceProcessNo},</if>
<if test="outsourceProcessName != null">#{outsourceProcessName},</if>
<if test="chargeUnit != null">#{chargeUnit},</if>
<if test="singleMaterial != null">#{singleMaterial},</if>
<if test="deliveryTime != null">#{deliveryTime},</if>
<if test="actualOutsourceAmount != null">#{actualOutsourceAmount},</if>
<if test="materialRmb != null">#{materialRmb},</if>
<if test="materialNoRmb != null">#{materialNoRmb},</if>
<if test="supplierCode != null">#{supplierCode},</if>
<if test="supplierName != null">#{supplierName},</if>
<if test="closedStatus != null">#{closedStatus},</if>
<if test="remitStatus != null">#{remitStatus},</if>
<if test="rmbSum != null">#{rmbSum},</if>
<if test="noRmbSum != null">#{noRmbSum},</if>
<if test="correlationCodes != null">#{correlationCodes},</if>
<if test="plannedOutsourceAmount != null">#{plannedOutsourceAmount},</if>
</trim>
</insert>
<update id="updateOutsourceOrderDetail" parameterType="OutsourceOrderDetail">
update outsource_order_detail
<trim prefix="SET" suffixOverrides=",">
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">outsource_order_no = #{outsourceOrderNo},</if>
<if test="materialNo != null and materialNo != ''">material_no = #{materialNo},</if>
<if test="outsourceProcessNo != null and outsourceProcessNo != ''">outsource_process_no = #{outsourceProcessNo},</if>
<if test="outsourceProcessName != null">outsource_process_name = #{outsourceProcessName},</if>
<if test="chargeUnit != null">charge_unit = #{chargeUnit},</if>
<if test="singleMaterial != null">single_material = #{singleMaterial},</if>
<if test="deliveryTime != null">delivery_time = #{deliveryTime},</if>
<if test="actualOutsourceAmount != null">actual_outsource_amount = #{actualOutsourceAmount},</if>
<if test="materialRmb != null">material_rmb = #{materialRmb},</if>
<if test="materialNoRmb != null">material_no_rmb = #{materialNoRmb},</if>
<if test="supplierCode != null">supplier_code = #{supplierCode},</if>
<if test="supplierName != null">supplier_name = #{supplierName},</if>
<if test="closedStatus != null">closed_status = #{closedStatus},</if>
<if test="remitStatus != null">remit_status = #{remitStatus},</if>
<if test="rmbSum != null">rmb_sum = #{rmbSum},</if>
<if test="noRmbSum != null">no_rmb_sum = #{noRmbSum},</if>
<if test="correlationCodes != null">correlation_codes = #{correlationCodes},</if>
<if test="plannedOutsourceAmount != null">planned_outsource_amount = #{plannedOutsourceAmount},</if>
</trim>
where outsource_order_detail_id = #{outsourceOrderDetailId}
</update>
<delete id="deleteOutsourceOrderDetailById" parameterType="Long">
delete from outsource_order_detail where outsource_order_detail_id = #{outsourceOrderDetailId}
</delete>
<delete id="deleteOutsourceOrderDetailByIds" parameterType="String">
delete from outsource_order_detail where outsource_order_detail_id in
<foreach item="outsourceOrderDetailId" collection="array" open="(" separator="," close=")">
#{outsourceOrderDetailId}
</foreach>
</delete>
<update id="cancelOutsourceOrderDetailById" parameterType="Long">
update outsource_order_detail set del_flag = '1' where outsource_order_detail_id = #{outsourceOrderDetailId}
</update>
<update id="restoreOutsourceOrderDetailById" parameterType="Long">
update outsource_order_detail set del_flag = '0' where outsource_order_detail_id = #{outsourceOrderDetailId}
</update>
<delete id="deleteOutsourceOrderDetailByOutsourceOrderNos" parameterType="String">
delete from outsource_order_detail where outsource_order_no in
<foreach item="outsourceOrderNo" collection="array" open="(" separator="," close=")">
#{outsourceOrderNo}
</foreach>
</delete>
<delete id="deleteOutsourceOrderDetailByOutsourceOrderNo" parameterType="String">
delete from outsource_order_detail where outsource_order_no = #{outsourceOrderNo}
</delete>
<insert id="batchOutsourceOrderDetail">
insert into outsource_order_detail( outsource_order_detail_id, outsource_order_no, material_no, outsource_process_no, outsource_process_name, charge_unit, single_material, delivery_time, actual_outsource_amount, material_rmb, material_no_rmb, supplier_code, supplier_name, closed_status, remit_status, rmb_sum, no_rmb_sum, correlation_codes,planned_outsource_amount) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.outsourceOrderDetailId}, #{item.outsourceOrderNo}, #{item.materialNo}, #{item.outsourceProcessNo}, #{item.outsourceProcessName}, #{item.chargeUnit}, #{item.singleMaterial}, #{item.deliveryTime}, #{item.actualOutsourceAmount}, #{item.materialRmb}, #{item.materialNoRmb}, #{item.supplierCode}, #{item.supplierName}, #{item.closedStatus}, #{item.remitStatus}, #{item.rmbSum}, #{item.noRmbSum}, #{item.correlationCodes},#{item.plannedOutsourceAmount})
</foreach>
</insert>
</mapper>

72
ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderMapper.xml

@ -46,32 +46,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="cancelRemark" column="cancel_remark" />
</resultMap>
<resultMap id="OutsourceOrderOutsourceOrderDetailResult" type="OutsourceOrderVO" extends="OutsourceOrderResult">
<collection property="outsourceOrderDetailList" ofType="OutsourceOrderDetail" column="outsource_order_id" select="selectOutsourceOrderDetailList" />
</resultMap>
<resultMap type="OutsourceOrderDetail" id="OutsourceOrderDetailResult">
<result property="outsourceOrderDetailId" column="outsource_order_detail_id" />
<result property="outsourceOrderNo" column="outsource_order_no" />
<result property="materialNo" column="material_no" />
<result property="outsourceProcessNo" column="outsource_process_no" />
<result property="outsourceProcessName" column="outsource_process_name" />
<result property="chargeUnit" column="charge_unit" />
<result property="singleMaterial" column="single_material" />
<result property="deliveryTime" column="delivery_time" />
<result property="actualOutsourceAmount" column="actual_outsource_amount" />
<result property="materialRmb" column="material_rmb" />
<result property="materialNoRmb" column="material_no_rmb" />
<result property="supplierCode" column="supplier_code" />
<result property="supplierName" column="supplier_name" />
<result property="closedStatus" column="closed_status" />
<result property="remitStatus" column="remit_status" />
<result property="rmbSum" column="rmb_sum" />
<result property="noRmbSum" column="no_rmb_sum" />
<result property="correlationCodes" column="correlation_codes" />
<result property="plannedOutsourceAmount" column="planned_outsource_amount" />
</resultMap>
<!-- 委外物料-->
<resultMap type="OutsourceMaterial" id="OutsourceMaterialResult">
<result property="outsourceMaterialId" column="outsource_material_id" />
@ -108,10 +82,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and create_time between #{params.beginCreateTime} and #{params.endCreateTime}
</if>
<if test="supplierCode != null and supplierCode != ''">
and outsource_order_no in ( select outsource_order_no from outsource_order_detail where supplier_code = #{supplierCode})
and outsource_order_no in ( select outsource_order_no from outsource_order_detail where supplier_code like concat('%', #{supplierCode}, '%'))
</if>
<if test="supplierName != null and supplierName != ''">
and outsource_order_no in ( select outsource_order_no from outsource_order_detail where supplier_name = #{supplierName})
and outsource_order_no in ( select outsource_order_no from outsource_order_detail where supplier_name like concat('%', #{supplierName}, '%'))
</if>
<if test="useStatus != null and useStatus != ''"> and use_status = #{useStatus}</if>
<if test="receiveStatus != null and receiveStatus != ''"> and receive_status = #{receiveStatus}</if>
@ -121,14 +95,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="auditStatus != null and auditStatus != ''"> and audit_status = #{auditStatus}</if>
<if test="actualMaterialAmount != null "> and actual_material_amount = #{actualMaterialAmount}</if>
</where>
order by audit_status asc, create_time desc
</select>
<select id="selectOutsourceOrderByOutsourceOrderId" parameterType="Long" resultMap="OutsourceOrderOutsourceOrderDetailResult">
<select id="selectOutsourceOrderByOutsourceOrderId" parameterType="Long" resultMap="OutsourceOrderResult">
<include refid="selectOutsourceOrderVo"/>
where outsource_order_id = #{outsourceOrderId}
</select>
<select id="selectOutsourceOrderByOutsourceOrderNo" parameterType="String" resultMap="OutsourceOrderOutsourceOrderDetailResult">
<select id="selectOutsourceOrderByOutsourceOrderNo" parameterType="String" resultMap="OutsourceOrderResult">
<include refid="selectOutsourceOrderVo"/>
where outsource_order_no = #{outsourceOrderNo}
</select>
<select id="selectOutsourceOrderByNo" parameterType="String" resultMap="OutsourceOrderResult">
<include refid="selectOutsourceOrderVo"/>
where outsource_order_no = #{outsourceOrderNo}
</select>
@ -140,13 +120,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where material_no =#{materialNo}
</select>
<select id="selectOutsourceOrderDetailList" resultType="OutsourceOrderDetail" resultMap="OutsourceOrderDetailResult">
select outsource_order_detail_id, outsource_order_no, material_no, outsource_process_no, outsource_process_name, charge_unit, single_material, delivery_time, actual_outsource_amount, material_rmb, material_no_rmb, supplier_code, supplier_name, closed_status, remit_status, rmb_sum, no_rmb_sum, correlation_codes, planned_outsource_amount
from outsource_order_detail
where outsource_order_no = #{outsource_order_no}
</select>
<insert id="insertOutsourceOrder" parameterType="OutsourceOrderVO" useGeneratedKeys="true" keyProperty="outsourceOrderId">
insert into outsource_order
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -274,31 +247,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete from outsource_order where outsource_order_id = #{outsourceOrderId}
</delete>
<delete id="deleteOutsourceOrderByOutsourceOrderIds" parameterType="String">
delete from outsource_order where outsource_order_id in
<foreach item="outsourceOrderId" collection="array" open="(" separator="," close=")">
#{outsourceOrderId}
</foreach>
</delete>
<delete id="deleteOutsourceOrderDetailByOutsourceOrderNos" parameterType="String">
delete from outsource_order_detail where outsource_order_no in
<foreach item="outsourceOrderNo" collection="array" open="(" separator="," close=")">
#{outsourceOrderNo}
</foreach>
</delete>
<delete id="deleteOutsourceOrderDetailByOutsourceOrderNo" parameterType="String">
delete from outsource_order_detail where outsource_order_no = #{outsourceOrderNo}
</delete>
<insert id="batchOutsourceOrderDetail">
insert into outsource_order_detail( outsource_order_detail_id, outsource_order_no, material_no, outsource_process_no, outsource_process_name, charge_unit, single_material, delivery_time, actual_outsource_amount, material_rmb, material_no_rmb, supplier_code, supplier_name, closed_status, remit_status, rmb_sum, no_rmb_sum, correlation_codes,planned_outsource_amount) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.outsourceOrderDetailId}, #{item.outsourceOrderNo}, #{item.materialNo}, #{item.outsourceProcessNo}, #{item.outsourceProcessName}, #{item.chargeUnit}, #{item.singleMaterial}, #{item.deliveryTime}, #{item.actualOutsourceAmount}, #{item.materialRmb}, #{item.materialNoRmb}, #{item.supplierCode}, #{item.supplierName}, #{item.closedStatus}, #{item.remitStatus}, #{item.rmbSum}, #{item.noRmbSum}, #{item.correlationCodes},#{item.plannedOutsourceAmount})
</foreach>
</insert>
<update id="cancelOutsourceOrderById" parameterType="Long">
update outsource_order set use_status = '2' where id = #{id}
</update>

1
ruoyi-admin/src/main/resources/mapper/system/OutsourceQuoteMapper.xml

@ -83,6 +83,7 @@
select outsource_quote_child_id, outsource_quote_code, outsource_process_code, outsource_process_no, outsource_process_name, remark, tax_rate, material_rmb, material_noRmb, supplier_code, supplier_name, create_by, create_time, update_by, update_time, audit_status,charge_unit
from outsource_quote_child
where outsource_quote_code = #{outsource_quote_code}
order by audit_status asc, create_time desc
</select>
<select id="selectOutsourceQuoteChildList" resultType="OutsourceQuoteChild" resultMap="OutsourceQuoteChildResult">

1
ruoyi-admin/src/main/resources/mapper/system/OutsourceRequisitionMapper.xml

@ -78,6 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null "> and create_time = #{createTime}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where>
order by audit_status asc, create_time desc
</select>
<select id="selectOutsourceRequisitionByOutsourceRequisitionId" parameterType="Long" resultMap="OutsourceRequisitionOutsourceRequisitionDetailResult">

5
ruoyi-admin/src/main/resources/templates/system/outsource_order/addRequisition.html

@ -75,6 +75,7 @@
var prefix = ctx + "system/outsource_requisition";
$("#form-order-outsourceRequisition-add").validate({focusCleanup: true});
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var outsourcePlanDetailList = [];
// var chargeUnitDatas = [[${@dict.getType("charge_unit")}]]
// var formId = "form-plan-outsourceOrder-add";
@ -258,6 +259,9 @@
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
@ -381,6 +385,7 @@
brand: data.brand,
unit: data.unit,
processMethod: data.processMethod,
materialType: data.materialType,
plannedOutsourceAmount: data.plannedOutsourceAmount,
actualOutsourceAmount: data.actualOutsourceAmount,
outsourceOrderNo: outsourceRequisition.outsourceOrderNo,

5
ruoyi-admin/src/main/resources/templates/system/outsource_order/addStorage.html

@ -64,6 +64,7 @@
$("#form-order-outsourceStorage-add").validate({focusCleanup: true});
var outsourcePlanDetailList = [];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var formId = "form-order-outsourceStorage-add";
var outsourcePlanCode = '';
var materialList = [];
@ -240,6 +241,9 @@
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
@ -354,6 +358,7 @@
materialNo: data.materialNo,
materialPhotourl: data.materialPhotourl,
materialName: data.materialName,
materialType: data.materialType,
description: data.description,
brand: data.brand,
unit: data.unit,

17
ruoyi-admin/src/main/resources/templates/system/outsource_order/outsource_order.html

@ -97,7 +97,7 @@
var auditStatusDatas = [[${@dict.getType('auditStatus')}]];
var useStatusDatas = [[${@dict.getType('useStatus')}]];
var receiveStatusDatas = [[${@dict.getType('quality_delivery_status')}]];
var remitStatusDatas = [[${@dict.getType('sys_close_status')}]];
var remitStatusDatas = [[${@dict.getType('accounts_payable_status')}]];
var closedStatusDatas = [[${@dict.getType('sys_pay_close')}]];
@ -369,20 +369,27 @@
// title : '委外工序合计'
// },
{
field : 'materialNoRmb',
field : 'rmbSum',
title : '不含税委外总价'
},
{
field : 'materialRmb',
field : 'noRmbSum',
title : '含税委外总价'
},
{
field: 'remitStatus',
title: '打款状态'
title: '打款状态',
formatter: function(value, row, index) {
return $.table.selectDictLabel(remitStatusDatas, value);
}
},
{
field: 'closedStatus',
title: '结案状态'
title: '结案状态',
visible: false,
formatter: function(value, row, index) {
return $.table.selectDictLabel(closedStatusDatas, value);
}
},
]
});

4
ruoyi-admin/src/main/resources/templates/system/outsource_plan/addOutsourceOrder.html

@ -123,6 +123,7 @@
var prefix = ctx + "system/outsource_order";
// var auditStatusDatas = [[${@dict.getType('audit_status')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
$("#form-plan-outsourceOrder-add").validate({focusCleanup: true});
var outsourcePlanList = [[${outsourcePlanList}]];
var outsourcePlanDetailList = [];
@ -560,6 +561,9 @@
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},

2
ruoyi-admin/src/main/resources/templates/system/outsource_quote/outsource_quote.html

@ -281,8 +281,8 @@
tipMsg = `确定导出 ${ids} 数据吗?`;
dataParam.push({ "name": "ids", "value": ids });
}
$.modal.loading("正在导出数据,请稍后...");
$.modal.confirm(tipMsg, function () {
$.modal.loading("正在导出数据,请稍后...");
$.post( prefix + "/export", dataParam, function (result) {
if (result.code === web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName="+ encodeURI(result.msg) + "&delete=" + true;

2
ruoyi-admin/src/main/resources/templates/system/outsource_requisition/outsource_requisition.html

@ -250,8 +250,8 @@
tipMsg = `确定导出 ${ids} 数据吗?`;
dataParam.push({ "name": "ids", "value": ids });
}
$.modal.loading("正在导出数据,请稍后...");
$.modal.confirm(tipMsg, function () {
$.modal.loading("正在导出数据,请稍后...");
$.post( prefix + "/export", dataParam, function (result) {
if (result.code === web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName="+ encodeURI(result.msg) + "&delete=" + true;

4
ruoyi-admin/src/main/resources/templates/system/outsource_storage/detail.html

@ -63,6 +63,7 @@
var prefix = ctx + "system/outsource_storage";
$("#form-order-outsourceStorage-detail").validate({focusCleanup: true});
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var formId = "form-order-outsourceStorage-add";
var outsourcePlanCode = '';
var materialList = [];
@ -226,6 +227,9 @@
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},

Loading…
Cancel
Save