Browse Source

[feat] 委外管理

按照万材要求,委外管理委外订单新增导出功能,支持部分行和全部行导出,导出更多数据
新增导出所有和选择导出后端接口
新增 导出委外管理委外订单明细方法
新增根据委外单号查询委外订单集合方法
新增 导出委外订单明细实体类
dev
liuxiaoxu 3 days ago
parent
commit
655885aa0b
  1. 24
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceOrderController.java
  2. 142
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportOutsourceOrderVo.java
  3. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderDetailMapper.java
  4. 4
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceOrderMapper.java
  5. 16
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceOrderService.java
  6. 85
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceOrderServiceImpl.java
  7. 7
      ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderDetailMapper.xml
  8. 8
      ruoyi-admin/src/main/resources/mapper/system/OutsourceOrderMapper.xml
  9. 41
      ruoyi-admin/src/main/resources/templates/system/outsource_order/outsource_order.html

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

@ -8,14 +8,15 @@ import java.util.stream.Collectors;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.erp.domain.ErpMaterial;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.system.domain.OutsourceOrder;
import com.ruoyi.system.domain.OutsourceOrderDetail;
import com.ruoyi.system.domain.Vo.ExportOutsourceOrderVo;
import com.ruoyi.system.domain.Vo.OutsourceOrderVO;
import com.ruoyi.system.domain.Vo.OutsourceQuoteVO;
import com.ruoyi.system.service.IOutsourceOrderService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.warehouse.domain.VO.ExportWarehouseStorageOrderVo;
import com.ruoyi.warehouse.domain.WarehouseStorageOrder;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
@ -25,6 +26,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
@ -127,11 +129,21 @@ public class OutsourceOrderController extends BaseController
@Log(title = "委外订单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(OutsourceOrderVO outsourceOrderVO)
public AjaxResult export(OutsourceOrderVO outsourceOrderVO, String ids)
{
List<OutsourceOrderVO> list = outsourceOrderService.selectOutsourceOrderList(outsourceOrderVO);
ExcelUtil<OutsourceOrderVO> util = new ExcelUtil<OutsourceOrderVO>(OutsourceOrderVO.class);
return util.exportExcel(list, "委外订单数据");
if (StringUtils.isEmpty(ids)){
List<OutsourceOrderVO> list = outsourceOrderService.selectOutsourceOrderListByObject(outsourceOrderVO);
List<ExportOutsourceOrderVo> exportOutsourceOrderVos = outsourceOrderService.exportOutsourceOrderList(list);
ExcelUtil<ExportOutsourceOrderVo> util = new ExcelUtil<ExportOutsourceOrderVo>(ExportOutsourceOrderVo.class);
return util.exportExcel(exportOutsourceOrderVos, "委外订单数据");
}else {
String[] outsourceOrderNos = ids.split(",");
List<OutsourceOrderVO> list = outsourceOrderService.selectOutsourceOrderListByNos(outsourceOrderNos);
List<ExportOutsourceOrderVo> exportOutsourceOrderVos = outsourceOrderService.exportOutsourceOrderList(list);
ExcelUtil<ExportOutsourceOrderVo> util = new ExcelUtil<ExportOutsourceOrderVo>(ExportOutsourceOrderVo.class);
return util.exportExcel(exportOutsourceOrderVos, "委外订单数据");
}
}
/**
* 添加委外领料单

142
ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportOutsourceOrderVo.java

@ -0,0 +1,142 @@
package com.ruoyi.system.domain.Vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
/**
* 导出委外订单明细
* */
@Data
public class ExportOutsourceOrderVo {
/** 委外订单编号 */
@Excel(name = "委外订单编号")
private String outsourceOrderNo;
/** 委外员 */
@Excel(name = "委外员")
private String outsourceStaff;
/** 物料合计 */
@Excel(name = "物料合计")
private Long materialAmount;
/** 委外物料数量合计 */
@Excel(name = "委外物料数量合计")
private BigDecimal outsourceMaterialAmount;
/** 委外工序种类 */
@Excel(name = "委外工序种类")
private Long outsourceProcessType;
/** 委外工序合计 */
@Excel(name = "委外工序合计")
private Long outsourceProcessAmount;
/** 含税委外总价 */
@Excel(name = "含税委外总价")
private BigDecimal outsourceTotalPrice;
/** 不含税委外总价 */
@Excel(name = "不含税委外总价")
private BigDecimal outsourceNoPrice;
/** 使用状态 */
@Excel(name = "使用状态",dictType = "useStatus")
private String useStatus;
/** 收货状态 */
@Excel(name = "收货状态",dictType = "quality_delivery_status")
private String receiveStatus;
/** 结案状态(0待打款1部分打款2全部打款3待结案4已结案) */
@Excel(name = "结案状态",dictType = "sys_pay_close")
private String closedStatus;
/** 打款状态 */
@Excel(name = "打款状态",dictType = "accounts_payable_status")
private String remitStatus;
/** 审核状态 */
@Excel(name = "审核状态",dictType = "auditStatus")
private String auditStatus;
/** 实际委外物料合计 */
@Excel(name = "实际委外物料合计")
private BigDecimal actualMaterialAmount;
/** 实际委外工序合计 */
@Excel(name = "实际委外工序合计")
private Long actualProcessAmount;
/** 仓库ID */
@Excel(name = "仓库ID")
private String stockNo;
/** 仓库名称 */
@Excel(name = "仓库名称")
private String stockName;
/** 收货人 */
@Excel(name = "收货人")
private String receivePerson;
/** 收货电话 */
@Excel(name = "收货电话")
private String receiveTelephone;
/** 详细地址 */
@Excel(name = "详细地址")
private String receiveAddress;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
/** 委外工序编号 */
@Excel(name = "委外工序编号")
private String outsourceProcessNo;
/** 委外工序名称 */
@Excel(name = "委外工序名称")
private String outsourceProcessName;
/** 计价单位(0按重量计数,1按数量计,2按面积计) */
@Excel(name = "计价单位",dictType = "charge_unit")
private String chargeUnit;
/** 每个物料规格 */
@Excel(name = "每个物料规格")
private BigDecimal singleMaterial;
/** 交付时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "交付时间", width = 30, dateFormat = "yyyy-MM-dd")
private String deliveryTime;
/** 实际委外数 */
@Excel(name = "实际委外数")
private Integer actualOutsourceAmount;
@Excel(name = "含税委外单价(RMB) ")
private BigDecimal materialRmb;
@Excel(name = "不含税委外单价(RMB)")
private BigDecimal materialNoRmb;
/** 供应商编号 */
@Excel(name = "供应商编号")
private String supplierCode;
/** 供应商名称 */
@Excel(name = "供应商名称")
private String supplierName;
}

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

@ -100,4 +100,9 @@ public interface OutsourceOrderDetailMapper
/*
* 根据委外订单号和料号查询委外订单详情列表*/
public List<OutsourceOrderDetail> selectOutsourceOrderDetailByNos(OutsourceOrderDetail orderDetail);
/**
* 根据委外订单号集合查询委外订单详情列表
* */
List<OutsourceOrderDetail> selectOutsourceOrderDetailByNoList(List<String> collectOutsourceOrderNos);
}

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

@ -90,4 +90,8 @@ public interface OutsourceOrderMapper
public OutsourceOrder selectOutsourceOrderByNo(String outsourceOrderNo);
/**
* 通过委外订单编号查询委外订单
* */
List<OutsourceOrderVO> selectOutsourceOrderListByNos(String[] outsourceOrderNos);
}

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

@ -2,6 +2,7 @@ package com.ruoyi.system.service;
import com.ruoyi.erp.domain.ErpMaterial;
import com.ruoyi.system.domain.OutsourceOrder;
import com.ruoyi.system.domain.Vo.ExportOutsourceOrderVo;
import com.ruoyi.system.domain.Vo.OutsourceOrderVO;
import com.ruoyi.system.domain.Vo.OutsourceQuoteVO;
import org.activiti.engine.runtime.ProcessInstance;
@ -101,4 +102,19 @@ public interface IOutsourceOrderService
int insertFinancialAccountsPayable(OutsourceOrder outsourceOrder);
int closeOutsourceOrder(OutsourceOrderVO outsourceOrderVO);
/**
* 导出委外订单明细
* */
List<ExportOutsourceOrderVo> exportOutsourceOrderList(List<OutsourceOrderVO> list);
/**
* 通过委外订单编号查询委外订单
* */
List<OutsourceOrderVO> selectOutsourceOrderListByNos(String[] outsourceOrderNos);
/**
* 通过委外订单查询委外订单集合
* */
List<OutsourceOrderVO> selectOutsourceOrderListByObject(OutsourceOrderVO outsourceOrderVO);
}

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

@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import com.github.pagehelper.Page;
@ -20,6 +21,7 @@ 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.*;
import com.ruoyi.system.domain.Vo.ExportOutsourceOrderVo;
import com.ruoyi.system.domain.Vo.OutsourceOrderVO;
import com.ruoyi.system.domain.Vo.OutsourceRequisitionVO;
import com.ruoyi.system.mapper.*;
@ -579,4 +581,87 @@ public class OutsourceOrderServiceImpl implements IOutsourceOrderService
return outsourceOrderMapper.updateOutsourceOrder(outsourceOrderVO);
}
/**
* 导出委外订单明细
* */
@Override
public List<ExportOutsourceOrderVo> exportOutsourceOrderList(List<OutsourceOrderVO> list) {
// 获取所有的委外订单编号
List<String> collectOutsourceOrderNos = list.stream().map(OutsourceOrderVO::getOutsourceOrderNo).collect(Collectors.toList());
// 根据委外订单编号查询对应的详情列表
List<OutsourceOrderDetail> outsourceOrderDetails = orderDetailMapper.selectOutsourceOrderDetailByNoList(collectOutsourceOrderNos);
// 创建一个委外订单VO的Map,键为委外订单编号
Map<String, OutsourceOrderVO> outsourceOrderVOMap = list.stream()
.collect(Collectors.toMap(OutsourceOrderVO::getOutsourceOrderNo, Function.identity()));
// 初始化导出列表
List<ExportOutsourceOrderVo> exportOutsourceOrderVos = new ArrayList<>();
for (OutsourceOrderDetail detail : outsourceOrderDetails) {
ExportOutsourceOrderVo exportVo = new ExportOutsourceOrderVo();
// 从OutsourceOrderDetail填充数据
exportVo.setMaterialNo(detail.getMaterialNo());
exportVo.setOutsourceProcessNo(detail.getOutsourceProcessNo());
exportVo.setOutsourceProcessName(detail.getOutsourceProcessName());
exportVo.setChargeUnit(detail.getChargeUnit());
exportVo.setSingleMaterial(detail.getSingleMaterial());
exportVo.setDeliveryTime(detail.getDeliveryTime());
exportVo.setActualOutsourceAmount(detail.getActualOutsourceAmount());
exportVo.setMaterialRmb(detail.getMaterialRmb());
exportVo.setMaterialNoRmb(detail.getMaterialNoRmb());
exportVo.setSupplierCode(detail.getSupplierCode());
exportVo.setSupplierName(detail.getSupplierName());
// 从OutsourceOrderVO填充数据,通过委外订单编号进行关联
OutsourceOrderVO order = outsourceOrderVOMap.get(detail.getOutsourceOrderNo());
if (order != null) {
exportVo.setOutsourceOrderNo(order.getOutsourceOrderNo());
exportVo.setOutsourceStaff(order.getOutsourceStaff());
exportVo.setMaterialAmount(order.getMaterialAmount());
exportVo.setOutsourceMaterialAmount(order.getOutsourceMaterialAmount());
exportVo.setOutsourceProcessType(order.getOutsourceProcessType());
exportVo.setOutsourceProcessAmount(order.getOutsourceProcessAmount());
exportVo.setOutsourceTotalPrice(order.getOutsourceTotalPrice());
exportVo.setOutsourceNoPrice(order.getOutsourceNoPrice());
exportVo.setUseStatus(order.getUseStatus());
exportVo.setReceiveStatus(order.getReceiveStatus());
exportVo.setClosedStatus(order.getClosedStatus());
exportVo.setRemitStatus(order.getRemitStatus());
exportVo.setAuditStatus(order.getAuditStatus());
exportVo.setActualMaterialAmount(order.getActualMaterialAmount());
exportVo.setActualProcessAmount(order.getActualProcessAmount());
exportVo.setStockNo(order.getStockNo());
exportVo.setStockName(order.getStockName());
exportVo.setReceivePerson(order.getReceivePerson());
exportVo.setReceiveTelephone(order.getReceiveTelephone());
exportVo.setReceiveAddress(order.getReceiveAddress());
}
// 添加到结果列表
exportOutsourceOrderVos.add(exportVo);
}
return exportOutsourceOrderVos;
}
/**
* 通过委外订单编号查询委外订单
* */
@Override
public List<OutsourceOrderVO> selectOutsourceOrderListByNos(String[] outsourceOrderNos) {
return outsourceOrderMapper.selectOutsourceOrderListByNos(outsourceOrderNos);
}
/**
* 通过委外订单查询委外订单集合
* */
@Override
public List<OutsourceOrderVO> selectOutsourceOrderListByObject(OutsourceOrderVO outsourceOrderVO) {
return outsourceOrderMapper.selectOutsourceOrderList(outsourceOrderVO);
}
}

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

@ -225,5 +225,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where outsource_order_no = #{outsourceOrderNo}
and material_no = #{materialNo}
</select>
<select id="selectOutsourceOrderDetailByNoList" parameterType="String" resultMap="OutsourceOrderDetailResult">
<include refid="selectOutsourceOrderDetailVo"/>
where outsource_order_no in
<foreach item="outsourceOrderNo" collection="list" index="index" open="(" separator="," close=")">
#{outsourceOrderNo}
</foreach>
</select>
</mapper>

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

@ -121,6 +121,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where material_no =#{materialNo}
</select>
<select id="selectOutsourceOrderListByNos" parameterType="String" resultMap="OutsourceOrderResult">
<include refid="selectOutsourceOrderVo"/>
where outsource_order_no in
<foreach collection="array" item="outsourceOrderNo" open="(" close=")" separator=",">
#{outsourceOrderNo}
</foreach>
</select>
<insert id="insertOutsourceOrder" parameterType="OutsourceOrderVO" useGeneratedKeys="true" keyProperty="outsourceOrderId">
insert into outsource_order
<trim prefix="(" suffix=")" suffixOverrides=",">

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

@ -42,14 +42,14 @@
</li>
<li>
<label>收货状态:</label>
<select name="eceiptStatus" th:with="type=${@dict.getType('quality_delivery_status')}">
<select name="receiveStatus" th:with="type=${@dict.getType('quality_delivery_status')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>打款结案状态:</label>
<select name="paymentStatus" th:with="type=${@dict.getType('sys_pay_close')}">
<select name="closedStatus" th:with="type=${@dict.getType('sys_pay_close')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
@ -76,6 +76,10 @@
<!-- <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:outsource_order:export">-->
<!-- <i class="fa fa-download"></i> 导出合同-->
<!-- </a>-->
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="system:outsource_order:export">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-success" onclick="closedOrder()" shiro:hasPermission="system:outsource_order:add">
<i class="fa fa-plus"></i> 结案
</a>
@ -124,19 +128,11 @@
restoreUrl: prefix + "/restore/{id}",
modalName: "委外订单",
detailView: true,
singleSelect: true,
onExpandRow : function(index, row, $detail) {
initChildTable(index, row, $detail);
},
columns: [{
checkbox: true,
formatter: function(value, row, index) {
//待结案
if(row.closedStatus === "3"||row.closedStatus === "1"){
return { disabled : false,}
}
return { disabled : true,}
}
},
{
field: 'outsourceOrderId',
@ -439,6 +435,31 @@
return;
}
}
// 导出
function exportExcel() {
var ids = $.table.selectColumns("outsourceOrderNo");
var dataParam = $("#formId").serializeArray();
let tipMsg = "确定导出当前所有数据吗?";
if ($.common.isNotEmpty(ids)) {
tipMsg = `确定导出 ${ids} 数据吗?`;
dataParam.push({ "name": "ids", "value": ids });
}
$.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;
} else {
$.modal.alertError(result.msg);
}
$.modal.closeLoading();
});
});
}
</script>
</body>
</html>
Loading…
Cancel
Save