Browse Source

[feat] 委外管理

按照万材要求,委外管理委外计划新增导出功能,支持部分行和全部行导出,导出更多数据
新增导出所有和选择导出后端接口
新增 导出委外管理委外计划明细方法
新增导出委外计划明细实体类
dev
liuxiaoxu 4 days ago
parent
commit
c770b09481
  1. 31
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourcePlanController.java
  2. 88
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportOutsourcePlanVo.java
  3. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourcePlanMapper.java
  4. 11
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourcePlanService.java
  5. 66
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourcePlanServiceImpl.java
  6. 8
      ruoyi-admin/src/main/resources/mapper/system/OutsourcePlanMapper.xml
  7. 29
      ruoyi-admin/src/main/resources/templates/system/outsource_plan/outsource_plan.html

31
ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourcePlanController.java

@ -6,11 +6,15 @@ import java.util.stream.Collectors;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.OutsourcePlan; import com.ruoyi.system.domain.OutsourcePlan;
import com.ruoyi.system.domain.OutsourcePlanDetail; import com.ruoyi.system.domain.OutsourcePlanDetail;
import com.ruoyi.system.domain.Vo.ExportOutsourcePlanVo;
import com.ruoyi.system.domain.Vo.ExportOutsourceQuoteVO;
import com.ruoyi.system.domain.Vo.OutsourceQuoteVO;
import com.ruoyi.system.service.IOutsourcePlanService; import com.ruoyi.system.service.IOutsourcePlanService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
@ -72,12 +76,31 @@ public class OutsourcePlanController extends BaseController
@Log(title = "委外计划", businessType = BusinessType.EXPORT) @Log(title = "委外计划", businessType = BusinessType.EXPORT)
@PostMapping("/export") @PostMapping("/export")
@ResponseBody @ResponseBody
public AjaxResult export(OutsourcePlan outsourcePlan) public AjaxResult export(OutsourcePlan outsourcePlan, String ids)
{ {
List<OutsourcePlan> list = outsourcePlanService.selectOutsourcePlanList(outsourcePlan); if (StringUtils.isEmpty(ids)){
ExcelUtil<OutsourcePlan> util = new ExcelUtil<OutsourcePlan>(OutsourcePlan.class);
return util.exportExcel(list, "委外计划数据"); List<OutsourcePlan> list = outsourcePlanService.selectOutsourcePlanList(outsourcePlan);
List<ExportOutsourcePlanVo> exportOutsourcePlanVos = outsourcePlanService.exportOutsourcePlanList(list);
ExcelUtil<ExportOutsourcePlanVo> util = new ExcelUtil<ExportOutsourcePlanVo>(ExportOutsourcePlanVo.class);
return util.exportExcel(exportOutsourcePlanVos, "委外计划数据");
}else {
String[] planCodes = ids.split(",");
List<OutsourcePlan> list = outsourcePlanService.selectOutsourcePlanListByCodes(planCodes);
List<ExportOutsourcePlanVo> exportOutsourcePlanVos = outsourcePlanService.exportOutsourcePlanList(list);
ExcelUtil<ExportOutsourcePlanVo> util = new ExcelUtil<ExportOutsourcePlanVo>(ExportOutsourcePlanVo.class);
return util.exportExcel(exportOutsourcePlanVos, "委外计划数据");
}
} }
/** /**
* 添加委外订单 * 添加委外订单
*/ */

88
ruoyi-admin/src/main/java/com/ruoyi/system/domain/Vo/ExportOutsourcePlanVo.java

@ -0,0 +1,88 @@
package com.ruoyi.system.domain.Vo;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
/**
* 导出委外计划明细
* */
@Data
public class ExportOutsourcePlanVo {
/** 委外计划单号 */
@Excel(name = "委外计划单号")
private String outsourcePlanCode;
/** 关联单号(生产/请购) */
@Excel(name = "关联单号")
private String associateOrderNo;
/** 申请人 */
@Excel(name = "申请人")
private String applicant;
/** 状态 */
@Excel(name = "状态", dictType = "outsource_plan_status")
private String status;
/** 物料总计 */
@Excel(name = "物料总计")
private Integer materialAmount;
/** 数量总计 */
@Excel(name = "数量总计")
private Integer totalAmount;
/** 委外工序种类 */
@Excel(name = "委外工序种类")
private Integer outsourceProcessType;
/** 委外工序合计 */
@Excel(name = "委外工序合计")
private Integer outsourceProcessAmount;
/** 来源 */
@Excel(name = "来源")
private String source;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
/** 物料名称 */
@Excel(name = "物料名称")
private String materialName;
/** 描述 */
@Excel(name = "描述")
private String description;
/** 品牌 */
@Excel(name = "品牌")
private String brand;
/** 加工方式 */
@Excel(name = "加工方式",dictType = "processMethod")
private String processMethod;
/** 单位 */
@Excel(name = "单位")
private String unit;
/** 计划委外数 */
@Excel(name = "计划委外数")
private Integer plannedOutsourceAmount;
/** 实际委外数 */
@Excel(name = "实际委外数")
private Integer actualOutsourceAmount;
/** 委外计划状态 (0待申请1部分申请2全部申请)*/
@Excel(name = "委外计划状态")
private String outPlanStatus;
}

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

@ -121,4 +121,9 @@ public interface OutsourcePlanMapper
/* /*
* 查询委外计划详情*/ * 查询委外计划详情*/
public List<OutsourcePlanDetail> selectOutsourcePlanDetail(OutsourcePlanDetail outsourcePlanDetail); public List<OutsourcePlanDetail> selectOutsourcePlanDetail(OutsourcePlanDetail outsourcePlanDetail);
/**
* 通过委外计划单号集合查询委外计划详情
* */
List<OutsourcePlanDetail> selectOutsourcePlanDetailByCodeList(List<String> collectOutsourcePlanCodes);
} }

11
ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourcePlanService.java

@ -3,6 +3,7 @@ package com.ruoyi.system.service;
import com.ruoyi.system.domain.OutsourceMaterial; import com.ruoyi.system.domain.OutsourceMaterial;
import com.ruoyi.system.domain.OutsourcePlan; import com.ruoyi.system.domain.OutsourcePlan;
import com.ruoyi.system.domain.OutsourcePlanDetail; import com.ruoyi.system.domain.OutsourcePlanDetail;
import com.ruoyi.system.domain.Vo.ExportOutsourcePlanVo;
import java.util.List; import java.util.List;
@ -93,4 +94,14 @@ public interface IOutsourcePlanService
/* /*
* 查询委外计划详情*/ * 查询委外计划详情*/
public List<OutsourcePlanDetail> selectOutsourcePlanDetail(OutsourcePlanDetail outsourcePlanDetail); public List<OutsourcePlanDetail> selectOutsourcePlanDetail(OutsourcePlanDetail outsourcePlanDetail);
/**
* 导出委外计划明细
* */
List<ExportOutsourcePlanVo> exportOutsourcePlanList(List<OutsourcePlan> list);
/**
* 根据计划单号查询委外计划
* */
List<OutsourcePlan> selectOutsourcePlanListByCodes(String[] planCodes);
} }

66
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourcePlanServiceImpl.java

@ -4,6 +4,7 @@ import java.util.List;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.Vo.ExportOutsourcePlanVo;
import com.ruoyi.system.domain.Vo.OutsourceProcessVo; import com.ruoyi.system.domain.Vo.OutsourceProcessVo;
import com.ruoyi.system.domain.Vo.Supplier; import com.ruoyi.system.domain.Vo.Supplier;
import com.ruoyi.system.mapper.*; import com.ruoyi.system.mapper.*;
@ -13,7 +14,9 @@ import com.ruoyi.warehouse.mapper.WarehouseInventoryInquiryMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -100,6 +103,15 @@ public class OutsourcePlanServiceImpl implements IOutsourcePlanService
public List<OutsourcePlanDetail> selectOutsourcePlanDetailByCodes(String outsourcePlanCodes) { public List<OutsourcePlanDetail> selectOutsourcePlanDetailByCodes(String outsourcePlanCodes) {
return outsourcePlanMapper.selectOutsourcePlanDetailByCodes(Convert.toStrArray(outsourcePlanCodes)); return outsourcePlanMapper.selectOutsourcePlanDetailByCodes(Convert.toStrArray(outsourcePlanCodes));
} }
/**
* 根据计划单号查询委外计划
* */
@Override
public List<OutsourcePlan> selectOutsourcePlanListByCodes(String[] planCodes) {
return outsourcePlanMapper.selectOutsourcePlanByCodes(planCodes);
}
/** /**
* 查询委外计划列表 * 查询委外计划列表
* *
@ -316,4 +328,58 @@ public class OutsourcePlanServiceImpl implements IOutsourcePlanService
} }
return details; return details;
} }
/**
* 导出委外计划明细
* */
@Override
public List<ExportOutsourcePlanVo> exportOutsourcePlanList(List<OutsourcePlan> list) {
// 获取所有的委外计划单号
List<String> collectOutsourcePlanCodes = list.stream().map(OutsourcePlan::getOutsourcePlanCode).collect(Collectors.toList());
// 根据委外计划单号查询对应的详情列表
List<OutsourcePlanDetail> outsourcePlanDetailList = outsourcePlanMapper.selectOutsourcePlanDetailByCodeList(collectOutsourcePlanCodes);
// 创建一个委外计划VO的Map,键为委外计划单号
Map<String, OutsourcePlan> outsourcePlanMap = list.stream()
.collect(Collectors.toMap(OutsourcePlan::getOutsourcePlanCode, Function.identity()));
// 初始化导出列表
List<ExportOutsourcePlanVo> exportOutsourcePlanVos = new ArrayList<>();
for (OutsourcePlanDetail detail : outsourcePlanDetailList) {
ExportOutsourcePlanVo exportVo = new ExportOutsourcePlanVo();
// 从OutsourcePlanDetail填充数据
exportVo.setMaterialNo(detail.getMaterialNo());
exportVo.setMaterialName(detail.getMaterialName());
exportVo.setDescription(detail.getDescription());
exportVo.setBrand(detail.getBrand());
exportVo.setProcessMethod(detail.getProcessMethod());
exportVo.setUnit(detail.getUnit());
exportVo.setPlannedOutsourceAmount(detail.getPlannedOutsourceAmount());
exportVo.setActualOutsourceAmount(detail.getActualOutsourceAmount());
exportVo.setOutPlanStatus(detail.getOutPlanStatus());
// 从OutsourcePlan填充数据,通过委外计划单号进行关联
OutsourcePlan plan = outsourcePlanMap.get(detail.getOutsourcePlanCode());
if (plan != null) {
exportVo.setOutsourcePlanCode(plan.getOutsourcePlanCode());
exportVo.setAssociateOrderNo(plan.getAssociateOrderNo());
exportVo.setApplicant(plan.getApplicant());
exportVo.setStatus(plan.getStatus());
exportVo.setMaterialAmount(plan.getMaterialAmount());
exportVo.setTotalAmount(plan.getTotalAmount());
exportVo.setOutsourceProcessType(plan.getOutsourceProcessType());
exportVo.setOutsourceProcessAmount(plan.getOutsourceProcessAmount());
exportVo.setSource(plan.getSource());
}
// 添加到结果列表
exportOutsourcePlanVos.add(exportVo);
}
return exportOutsourcePlanVos;
}
} }

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

@ -178,6 +178,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</select> </select>
<select id="selectOutsourcePlanDetailByCodeList" parameterType="String" resultMap="OutsourcePlanDetailResult">
<include refid="selectOutsourcePlanDetail"/>
where outsource_plan_code in
<foreach item="outsourcePlanCode" index="index" collection="list" open="(" separator="," close=")">
#{outsourcePlanCode}
</foreach>
</select>
<delete id="deleteOutsourcePlanDetailByOutsourcePlanCodes" parameterType="String"> <delete id="deleteOutsourcePlanDetailByOutsourcePlanCodes" parameterType="String">
delete from outsource_plan_detail where outsource_plan_code in delete from outsource_plan_detail where outsource_plan_code in
<foreach item="outsourcePlanCode" collection="array" open="(" separator="," close=")"> <foreach item="outsourcePlanCode" collection="array" open="(" separator="," close=")">

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

@ -52,6 +52,9 @@
<a class="btn btn-success" onclick="addOutsourceOrder()" shiro:hasPermission="system:outsource_plan:add"> <a class="btn btn-success" onclick="addOutsourceOrder()" shiro:hasPermission="system:outsource_plan:add">
<i class="fa fa-plus"></i> 添加委外单 <i class="fa fa-plus"></i> 添加委外单
</a> </a>
<a class="btn btn-success" onclick="exportExcel()" shiro:hasPermission="system:outsource_plan:export">
<i class="fa fa-download"></i> 导出
</a>
</div> </div>
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table> <table id="bootstrap-table"></table>
@ -246,6 +249,32 @@
} }
$.modal.open("新增委外订单", prefix + "/addOutsourceOrder/" + outsourcePlanCodes); $.modal.open("新增委外订单", prefix + "/addOutsourceOrder/" + outsourcePlanCodes);
}; };
// 导出
function exportExcel() {
var ids = $.table.selectColumns("outsourcePlanCode");
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> </script>
</body> </body>
</html> </html>
Loading…
Cancel
Save