feat(production): 添加子件物料周需求和周排产计划功能

- 新增子件物料周需求数据模型MrpComponentWeeklyReq
- 新增子件物料周需求服务接口和实现类
- 新增子件物料周需求控制器提供CRUD和导入导出功能
- 新增子件物料周需求数据访问层和SQL映射
- 新增周排产计划数据模型MrpProdWeeklyPlan
- 新增周排产计划服务接口提供基本操作功能
- 实现异步数据导入功能支持大批量数据处理
- 添加数据导入模板下载和批量更新功能
- 集成Excel导入导出功能支持数据批量处理
master
zangch@mesnac.com 2 months ago
parent 6d3cacf8c6
commit 74ed26c643

@ -0,0 +1,150 @@
package com.aucma.production.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.aucma.common.utils.DateUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.aucma.common.annotation.Log;
import com.aucma.common.core.controller.BaseController;
import com.aucma.common.core.domain.AjaxResult;
import com.aucma.common.enums.BusinessType;
import com.aucma.production.domain.MrpComponentWeeklyReq;
import com.aucma.production.service.IMrpComponentWeeklyReqService;
import com.aucma.common.utils.poi.ExcelUtil;
import com.aucma.common.core.page.TableDataInfo;
/**
* Controller
*
* @author Yinq
* @date 2026-01-05
*/
@RestController
@RequestMapping("/production/req" )
public class MrpComponentWeeklyReqController extends BaseController {
@Autowired
private IMrpComponentWeeklyReqService mrpComponentWeeklyReqService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:list')" )
@GetMapping("/list" )
public TableDataInfo list(MrpComponentWeeklyReq mrpComponentWeeklyReq) {
startPage();
List<MrpComponentWeeklyReq> list = mrpComponentWeeklyReqService.selectMrpComponentWeeklyReqList(mrpComponentWeeklyReq);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:export')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.EXPORT)
@PostMapping("/export" )
public void export(HttpServletResponse response, MrpComponentWeeklyReq mrpComponentWeeklyReq) {
List<MrpComponentWeeklyReq> list = mrpComponentWeeklyReqService.selectMrpComponentWeeklyReqList(mrpComponentWeeklyReq);
ExcelUtil<MrpComponentWeeklyReq> util = new ExcelUtil<MrpComponentWeeklyReq>(MrpComponentWeeklyReq. class);
util.exportExcel(response, list, "子件物料周需求数据" );
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:query')" )
@GetMapping(value = "/{id}" )
public AjaxResult getInfo(@PathVariable("id" ) Long id) {
return success(mrpComponentWeeklyReqService.selectMrpComponentWeeklyReqById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:add')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MrpComponentWeeklyReq mrpComponentWeeklyReq) {
mrpComponentWeeklyReq.setCreatedAt(DateUtils.getNowDate());
return toAjax(mrpComponentWeeklyReqService.insertMrpComponentWeeklyReq(mrpComponentWeeklyReq));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:edit')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MrpComponentWeeklyReq mrpComponentWeeklyReq) {
mrpComponentWeeklyReq.setUpdatedAt(DateUtils.getNowDate());
return toAjax(mrpComponentWeeklyReqService.updateMrpComponentWeeklyReq(mrpComponentWeeklyReq));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:remove')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}" )
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(mrpComponentWeeklyReqService.deleteMrpComponentWeeklyReqByIds(ids));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:req:edit')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.UPDATE)
@PutMapping("/batchUpdate" )
public AjaxResult batchUpdate(@RequestBody List<MrpComponentWeeklyReq> list) {
int count = 0;
for (MrpComponentWeeklyReq item : list) {
item.setUpdatedAt(DateUtils.getNowDate());
count += mrpComponentWeeklyReqService.updateMrpComponentWeeklyReq(item);
}
return success("成功更新 " + count + " 条数据");
}
/**
*
* @param file Excel
* @param updateSupport
* @param weekStartDate yyyy-MM-dd
*/
@PreAuthorize("@ss.hasPermi('production:req:import')" )
@Log(title = "子件物料周需求" , businessType = BusinessType.IMPORT)
@PostMapping("/importData" )
public AjaxResult importData(MultipartFile file, boolean updateSupport, String weekStartDate) throws Exception {
ExcelUtil<MrpComponentWeeklyReq> util = new ExcelUtil<MrpComponentWeeklyReq>(MrpComponentWeeklyReq.class);
List<MrpComponentWeeklyReq> list = util.importExcel(file.getInputStream());
int total = list.size();
System.out.println("========== 开始异步导入子件物料周需求 ==========");
System.out.println("weekStartDate: " + weekStartDate);
System.out.println("数据量: " + total + " 条");
// 异步导入,立即返回
mrpComponentWeeklyReqService.importDataAsync(list, updateSupport, getUsername(), weekStartDate);
return success("已提交后台异步导入任务,共 " + total + " 条数据,请稍后刷新页面查看结果。导入进度请查看控制台日志。");
}
/**
*
*/
@PostMapping("/importTemplate" )
public void importTemplate(HttpServletResponse response) {
ExcelUtil<MrpComponentWeeklyReq> util = new ExcelUtil<MrpComponentWeeklyReq>(MrpComponentWeeklyReq.class);
util.importTemplateExcel(response, "子件物料周需求模板" );
}
}

@ -0,0 +1,168 @@
package com.aucma.production.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.aucma.common.utils.DateUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.aucma.common.annotation.Log;
import com.aucma.common.core.controller.BaseController;
import com.aucma.common.core.domain.AjaxResult;
import com.aucma.common.enums.BusinessType;
import com.aucma.production.domain.MrpProdWeeklyPlan;
import com.aucma.production.service.IMrpProdWeeklyPlanService;
import com.aucma.common.utils.poi.ExcelUtil;
import com.aucma.common.core.page.TableDataInfo;
/**
* Controller
*
* @author Yinq
* @date 2026-01-05
*/
@RestController
@RequestMapping("/production/plan" )
public class MrpProdWeeklyPlanController extends BaseController {
@Autowired
private IMrpProdWeeklyPlanService mrpProdWeeklyPlanService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:list')" )
@GetMapping("/list" )
public TableDataInfo list(MrpProdWeeklyPlan mrpProdWeeklyPlan) {
startPage();
List<MrpProdWeeklyPlan> list = mrpProdWeeklyPlanService.selectMrpProdWeeklyPlanList(mrpProdWeeklyPlan);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:export')" )
@Log(title = "周排产计划" , businessType = BusinessType.EXPORT)
@PostMapping("/export" )
public void export(HttpServletResponse response, MrpProdWeeklyPlan mrpProdWeeklyPlan) {
List<MrpProdWeeklyPlan> list = mrpProdWeeklyPlanService.selectMrpProdWeeklyPlanList(mrpProdWeeklyPlan);
ExcelUtil<MrpProdWeeklyPlan> util = new ExcelUtil<MrpProdWeeklyPlan>(MrpProdWeeklyPlan. class);
util.exportExcel(response, list, "周排产计划数据" );
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:query')" )
@GetMapping(value = "/{id}" )
public AjaxResult getInfo(@PathVariable("id" ) Long id) {
return success(mrpProdWeeklyPlanService.selectMrpProdWeeklyPlanById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:add')" )
@Log(title = "周排产计划" , businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody MrpProdWeeklyPlan mrpProdWeeklyPlan) {
mrpProdWeeklyPlan.setCreatedAt(DateUtils.getNowDate());
return toAjax(mrpProdWeeklyPlanService.insertMrpProdWeeklyPlan(mrpProdWeeklyPlan));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:edit')" )
@Log(title = "周排产计划" , businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody MrpProdWeeklyPlan mrpProdWeeklyPlan) {
mrpProdWeeklyPlan.setUpdatedAt(DateUtils.getNowDate());
return toAjax(mrpProdWeeklyPlanService.updateMrpProdWeeklyPlan(mrpProdWeeklyPlan));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:remove')" )
@Log(title = "周排产计划" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}" )
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(mrpProdWeeklyPlanService.deleteMrpProdWeeklyPlanByIds(ids));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('production:plan:edit')" )
@Log(title = "周排产计划" , businessType = BusinessType.UPDATE)
@PutMapping("/batchUpdate" )
public AjaxResult batchUpdate(@RequestBody List<MrpProdWeeklyPlan> list) {
int count = 0;
for (MrpProdWeeklyPlan item : list) {
item.setUpdatedAt(DateUtils.getNowDate());
count += mrpProdWeeklyPlanService.updateMrpProdWeeklyPlan(item);
}
return success("成功更新 " + count + " 条数据");
}
/**
*
* @param file Excel
* @param updateSupport
* @param weekStartDate yyyy-MM-dd
*/
@PreAuthorize("@ss.hasPermi('production:plan:import')" )
@Log(title = "周排产计划" , businessType = BusinessType.IMPORT)
@PostMapping("/importData" )
public AjaxResult importData(MultipartFile file, boolean updateSupport, String weekStartDate) throws Exception {
System.out.println("========== 开始导入周排产计划 ==========");
System.out.println("weekStartDate: " + weekStartDate);
System.out.println("file name: " + file.getOriginalFilename());
System.out.println("file size: " + file.getSize());
ExcelUtil<MrpProdWeeklyPlan> util = new ExcelUtil<MrpProdWeeklyPlan>(MrpProdWeeklyPlan.class);
List<MrpProdWeeklyPlan> list = null;
try {
list = util.importExcel(file.getInputStream());
System.out.println("解析Excel成功共 " + list.size() + " 条数据");
if (list.size() > 0) {
MrpProdWeeklyPlan first = list.get(0);
System.out.println("第一条数据: seqNo=" + first.getSeqNo() + ", itemCode=" + first.getItemCode() + ", itemDesc=" + first.getItemDesc());
}
} catch (Exception e) {
System.out.println("解析Excel失败: " + e.getMessage());
System.out.println("异常类型: " + e.getClass().getName());
if (e.getCause() != null) {
System.out.println("根本原因: " + e.getCause().getMessage());
System.out.println("根本原因类型: " + e.getCause().getClass().getName());
e.getCause().printStackTrace();
} else {
e.printStackTrace();
}
throw e;
}
String message = mrpProdWeeklyPlanService.importData(list, updateSupport, getUsername(), weekStartDate);
System.out.println("导入完成: " + message);
return success(message);
}
/**
*
*/
@PostMapping("/importTemplate" )
public void importTemplate(HttpServletResponse response) {
ExcelUtil<MrpProdWeeklyPlan> util = new ExcelUtil<MrpProdWeeklyPlan>(MrpProdWeeklyPlan.class);
util.importTemplateExcel(response, "周排产计划模板" );
}
}

@ -0,0 +1,237 @@
package com.aucma.production.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.aucma.common.annotation.Excel;
import com.aucma.common.core.domain.BaseEntity;
/**
* mrp_component_weekly_req
*
* @author Yinq
* @date 2026-01-05
*/
public class MrpComponentWeeklyReq extends BaseEntity
{
private static final long serialVersionUID=1L;
/** $column.columnComment */
private Long id;
/** 年第周(如 202501 */
@Excel(name = "年第周", type = Excel.Type.EXPORT)
private String yearWeek;
/** 周一日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "周一日期", width = 15, dateFormat = "yyyy-MM-dd", type = Excel.Type.EXPORT)
private Date weekStartDate;
/** 子件物料编码 */
@Excel(name = "子件物料编码", type = Excel.Type.ALL)
private String itemCode;
/** 子件物料描述 */
@Excel(name = "子件物料描述", type = Excel.Type.ALL)
private String itemDesc;
/** 周一需求量 */
@Excel(name = "周一需求量", type = Excel.Type.ALL)
private BigDecimal reqMon;
/** 周二需求量 */
@Excel(name = "周二需求量", type = Excel.Type.ALL)
private BigDecimal reqTue;
/** 周三需求量 */
@Excel(name = "周三需求量", type = Excel.Type.ALL)
private BigDecimal reqWed;
/** 周四需求量 */
@Excel(name = "周四需求量", type = Excel.Type.ALL)
private BigDecimal reqThu;
/** 周五需求量 */
@Excel(name = "周五需求量", type = Excel.Type.ALL)
private BigDecimal reqFri;
/** 周六需求量 */
@Excel(name = "周六需求量", type = Excel.Type.ALL)
private BigDecimal reqSat;
/** 周日需求量 */
@Excel(name = "周日需求量", type = Excel.Type.ALL)
private BigDecimal reqSun;
/** 周合计需求量(虚拟列) */
@Excel(name = "周合计需求量", type = Excel.Type.EXPORT)
private BigDecimal reqWeekTotal;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
/** 修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setYearWeek(String yearWeek)
{
this.yearWeek = yearWeek;
}
public String getYearWeek()
{
return yearWeek;
}
public void setWeekStartDate(Date weekStartDate)
{
this.weekStartDate = weekStartDate;
}
public Date getWeekStartDate()
{
return weekStartDate;
}
public void setItemCode(String itemCode)
{
this.itemCode = itemCode;
}
public String getItemCode()
{
return itemCode;
}
public void setItemDesc(String itemDesc)
{
this.itemDesc = itemDesc;
}
public String getItemDesc()
{
return itemDesc;
}
public void setReqMon(BigDecimal reqMon)
{
this.reqMon = reqMon;
}
public BigDecimal getReqMon()
{
return reqMon;
}
public void setReqTue(BigDecimal reqTue)
{
this.reqTue = reqTue;
}
public BigDecimal getReqTue()
{
return reqTue;
}
public void setReqWed(BigDecimal reqWed)
{
this.reqWed = reqWed;
}
public BigDecimal getReqWed()
{
return reqWed;
}
public void setReqThu(BigDecimal reqThu)
{
this.reqThu = reqThu;
}
public BigDecimal getReqThu()
{
return reqThu;
}
public void setReqFri(BigDecimal reqFri)
{
this.reqFri = reqFri;
}
public BigDecimal getReqFri()
{
return reqFri;
}
public void setReqSat(BigDecimal reqSat)
{
this.reqSat = reqSat;
}
public BigDecimal getReqSat()
{
return reqSat;
}
public void setReqSun(BigDecimal reqSun)
{
this.reqSun = reqSun;
}
public BigDecimal getReqSun()
{
return reqSun;
}
public void setReqWeekTotal(BigDecimal reqWeekTotal)
{
this.reqWeekTotal = reqWeekTotal;
}
public BigDecimal getReqWeekTotal()
{
return reqWeekTotal;
}
public void setCreatedAt(Date createdAt)
{
this.createdAt = createdAt;
}
public Date getCreatedAt()
{
return createdAt;
}
public void setUpdatedAt(Date updatedAt)
{
this.updatedAt = updatedAt;
}
public Date getUpdatedAt()
{
return updatedAt;
}
@Override
public String toString(){
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id",getId())
.append("yearWeek",getYearWeek())
.append("weekStartDate",getWeekStartDate())
.append("itemCode",getItemCode())
.append("itemDesc",getItemDesc())
.append("reqMon",getReqMon())
.append("reqTue",getReqTue())
.append("reqWed",getReqWed())
.append("reqThu",getReqThu())
.append("reqFri",getReqFri())
.append("reqSat",getReqSat())
.append("reqSun",getReqSun())
.append("reqWeekTotal",getReqWeekTotal())
.append("createdAt",getCreatedAt())
.append("updatedAt",getUpdatedAt())
.toString();
}
}

@ -0,0 +1,293 @@
package com.aucma.production.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.aucma.common.annotation.Excel;
import com.aucma.common.core.domain.BaseEntity;
/**
* mrp_prod_weekly_plan
*
* @author Yinq
* @date 2026-01-05
*/
public class MrpProdWeeklyPlan extends BaseEntity
{
private static final long serialVersionUID=1L;
/** $column.columnComment */
private Long id;
/** 年第周(如 202501 */
@Excel(name = "年第周", type = Excel.Type.EXPORT)
private String yearWeek;
/** 周一日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "周一日期", width = 15, dateFormat = "yyyy-MM-dd", type = Excel.Type.EXPORT)
private Date weekStartDate;
/** 序号 */
@Excel(name = "序号", type = Excel.Type.ALL)
private BigDecimal seqNo;
/** 编码/型号 */
@Excel(name = "编码", type = Excel.Type.ALL)
private String itemCode;
/** 描述 */
@Excel(name = "描述", type = Excel.Type.ALL)
private String itemDesc;
/** 工厂 */
@Excel(name = "工厂", type = Excel.Type.ALL)
private String plantCode;
/** 订单号 */
@Excel(name = "订单号", type = Excel.Type.ALL)
private String orderNo;
/** 行号 */
@Excel(name = "行号", type = Excel.Type.ALL)
private String orderLineNo;
/** 1日计划量 */
@Excel(name = "1日", type = Excel.Type.ALL)
private BigDecimal planD1;
/** 2日计划量 */
@Excel(name = "2日", type = Excel.Type.ALL)
private BigDecimal planD2;
/** 3日计划量 */
@Excel(name = "3日", type = Excel.Type.ALL)
private BigDecimal planD3;
/** 4日计划量 */
@Excel(name = "4日", type = Excel.Type.ALL)
private BigDecimal planD4;
/** 5日计划量 */
@Excel(name = "5日", type = Excel.Type.ALL)
private BigDecimal planD5;
/** 6日计划量 */
@Excel(name = "6日", type = Excel.Type.ALL)
private BigDecimal planD6;
/** 7日计划量 */
@Excel(name = "7日", type = Excel.Type.ALL)
private BigDecimal planD7;
/** 周合计计划量(虚拟列) */
@Excel(name = "周合计", type = Excel.Type.EXPORT)
private BigDecimal planWeekTotal;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
/** 修改时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setYearWeek(String yearWeek)
{
this.yearWeek = yearWeek;
}
public String getYearWeek()
{
return yearWeek;
}
public void setWeekStartDate(Date weekStartDate)
{
this.weekStartDate = weekStartDate;
}
public Date getWeekStartDate()
{
return weekStartDate;
}
public void setSeqNo(BigDecimal seqNo)
{
this.seqNo = seqNo;
}
public BigDecimal getSeqNo()
{
return seqNo;
}
public void setItemCode(String itemCode)
{
this.itemCode = itemCode;
}
public String getItemCode()
{
return itemCode;
}
public void setItemDesc(String itemDesc)
{
this.itemDesc = itemDesc;
}
public String getItemDesc()
{
return itemDesc;
}
public void setPlantCode(String plantCode)
{
this.plantCode = plantCode;
}
public String getPlantCode()
{
return plantCode;
}
public void setOrderNo(String orderNo)
{
this.orderNo = orderNo;
}
public String getOrderNo()
{
return orderNo;
}
public void setOrderLineNo(String orderLineNo)
{
this.orderLineNo = orderLineNo;
}
public String getOrderLineNo()
{
return orderLineNo;
}
public void setPlanD1(BigDecimal planD1)
{
this.planD1 = planD1;
}
public BigDecimal getPlanD1()
{
return planD1;
}
public void setPlanD2(BigDecimal planD2)
{
this.planD2 = planD2;
}
public BigDecimal getPlanD2()
{
return planD2;
}
public void setPlanD3(BigDecimal planD3)
{
this.planD3 = planD3;
}
public BigDecimal getPlanD3()
{
return planD3;
}
public void setPlanD4(BigDecimal planD4)
{
this.planD4 = planD4;
}
public BigDecimal getPlanD4()
{
return planD4;
}
public void setPlanD5(BigDecimal planD5)
{
this.planD5 = planD5;
}
public BigDecimal getPlanD5()
{
return planD5;
}
public void setPlanD6(BigDecimal planD6)
{
this.planD6 = planD6;
}
public BigDecimal getPlanD6()
{
return planD6;
}
public void setPlanD7(BigDecimal planD7)
{
this.planD7 = planD7;
}
public BigDecimal getPlanD7()
{
return planD7;
}
public void setPlanWeekTotal(BigDecimal planWeekTotal)
{
this.planWeekTotal = planWeekTotal;
}
public BigDecimal getPlanWeekTotal()
{
return planWeekTotal;
}
public void setCreatedAt(Date createdAt)
{
this.createdAt = createdAt;
}
public Date getCreatedAt()
{
return createdAt;
}
public void setUpdatedAt(Date updatedAt)
{
this.updatedAt = updatedAt;
}
public Date getUpdatedAt()
{
return updatedAt;
}
@Override
public String toString(){
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id",getId())
.append("yearWeek",getYearWeek())
.append("weekStartDate",getWeekStartDate())
.append("seqNo",getSeqNo())
.append("itemCode",getItemCode())
.append("itemDesc",getItemDesc())
.append("plantCode",getPlantCode())
.append("orderNo",getOrderNo())
.append("orderLineNo",getOrderLineNo())
.append("planD1",getPlanD1())
.append("planD2",getPlanD2())
.append("planD3",getPlanD3())
.append("planD4",getPlanD4())
.append("planD5",getPlanD5())
.append("planD6",getPlanD6())
.append("planD7",getPlanD7())
.append("planWeekTotal",getPlanWeekTotal())
.append("createdAt",getCreatedAt())
.append("updatedAt",getUpdatedAt())
.toString();
}
}

@ -0,0 +1,69 @@
package com.aucma.production.mapper;
import java.util.List;
import com.aucma.production.domain.MrpComponentWeeklyReq;
/**
* Mapper
*
* @author Yinq
* @date 2026-01-05
*/
public interface MrpComponentWeeklyReqMapper
{
/**
*
*
* @param id
* @return
*/
public MrpComponentWeeklyReq selectMrpComponentWeeklyReqById(Long id);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public List<MrpComponentWeeklyReq> selectMrpComponentWeeklyReqList(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public int insertMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public int updateMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param id
* @return
*/
public int deleteMrpComponentWeeklyReqById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteMrpComponentWeeklyReqByIds(Long[] ids);
/**
*
*
* @param list
* @return
*/
public int batchInsert(List<MrpComponentWeeklyReq> list);
}

@ -0,0 +1,69 @@
package com.aucma.production.mapper;
import java.util.List;
import com.aucma.production.domain.MrpProdWeeklyPlan;
/**
* Mapper
*
* @author Yinq
* @date 2026-01-05
*/
public interface MrpProdWeeklyPlanMapper
{
/**
*
*
* @param id
* @return
*/
public MrpProdWeeklyPlan selectMrpProdWeeklyPlanById(Long id);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public List<MrpProdWeeklyPlan> selectMrpProdWeeklyPlanList(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public int insertMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public int updateMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param id
* @return
*/
public int deleteMrpProdWeeklyPlanById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteMrpProdWeeklyPlanByIds(Long[] ids);
/**
*
*
* @param list
* @return
*/
public int batchInsert(List<MrpProdWeeklyPlan> list);
}

@ -0,0 +1,82 @@
package com.aucma.production.service;
import java.util.List;
import com.aucma.production.domain.MrpComponentWeeklyReq;
/**
* Service
*
* @author Yinq
* @date 2026-01-05
*/
public interface IMrpComponentWeeklyReqService
{
/**
*
*
* @param id
* @return
*/
public MrpComponentWeeklyReq selectMrpComponentWeeklyReqById(Long id);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public List<MrpComponentWeeklyReq> selectMrpComponentWeeklyReqList(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public int insertMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
public int updateMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq);
/**
*
*
* @param ids
* @return
*/
public int deleteMrpComponentWeeklyReqByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteMrpComponentWeeklyReqById(Long id);
/**
*
*
* @param list
* @param updateSupport
* @param operName
* @param weekStartDate yyyy-MM-dd
* @return
*/
public String importData(List<MrpComponentWeeklyReq> list, boolean updateSupport, String operName, String weekStartDate);
/**
*
*
* @param list
* @param updateSupport
* @param operName
* @param weekStartDate yyyy-MM-dd
*/
public void importDataAsync(List<MrpComponentWeeklyReq> list, boolean updateSupport, String operName, String weekStartDate);
}

@ -0,0 +1,72 @@
package com.aucma.production.service;
import java.util.List;
import com.aucma.production.domain.MrpProdWeeklyPlan;
/**
* Service
*
* @author Yinq
* @date 2026-01-05
*/
public interface IMrpProdWeeklyPlanService
{
/**
*
*
* @param id
* @return
*/
public MrpProdWeeklyPlan selectMrpProdWeeklyPlanById(Long id);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public List<MrpProdWeeklyPlan> selectMrpProdWeeklyPlanList(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public int insertMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
public int updateMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan);
/**
*
*
* @param ids
* @return
*/
public int deleteMrpProdWeeklyPlanByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteMrpProdWeeklyPlanById(Long id);
/**
*
*
* @param list
* @param updateSupport
* @param operName
* @param weekStartDate yyyy-MM-dd
* @return
*/
public String importData(List<MrpProdWeeklyPlan> list, boolean updateSupport, String operName, String weekStartDate);
}

@ -0,0 +1,288 @@
package com.aucma.production.service.impl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.aucma.common.exception.ServiceException;
import com.aucma.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
import com.aucma.production.mapper.MrpComponentWeeklyReqMapper;
import com.aucma.production.domain.MrpComponentWeeklyReq;
import com.aucma.production.service.IMrpComponentWeeklyReqService;
/**
* Service
*
* @author Yinq
* @date 2026-01-05
*/
@Service
public class MrpComponentWeeklyReqServiceImpl implements IMrpComponentWeeklyReqService
{
@Autowired
private MrpComponentWeeklyReqMapper mrpComponentWeeklyReqMapper;
@Autowired
private TransactionTemplate transactionTemplate;
/**
*
*
* @param id
* @return
*/
@Override
public MrpComponentWeeklyReq selectMrpComponentWeeklyReqById(Long id)
{
return mrpComponentWeeklyReqMapper.selectMrpComponentWeeklyReqById(id);
}
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
@Override
public List<MrpComponentWeeklyReq> selectMrpComponentWeeklyReqList(MrpComponentWeeklyReq mrpComponentWeeklyReq)
{
return mrpComponentWeeklyReqMapper.selectMrpComponentWeeklyReqList(mrpComponentWeeklyReq);
}
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
@Override
public int insertMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq)
{
return mrpComponentWeeklyReqMapper.insertMrpComponentWeeklyReq(mrpComponentWeeklyReq);
}
/**
*
*
* @param mrpComponentWeeklyReq
* @return
*/
@Override
public int updateMrpComponentWeeklyReq(MrpComponentWeeklyReq mrpComponentWeeklyReq)
{
return mrpComponentWeeklyReqMapper.updateMrpComponentWeeklyReq(mrpComponentWeeklyReq);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteMrpComponentWeeklyReqByIds(Long[] ids)
{
return mrpComponentWeeklyReqMapper.deleteMrpComponentWeeklyReqByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteMrpComponentWeeklyReqById(Long id)
{
return mrpComponentWeeklyReqMapper.deleteMrpComponentWeeklyReqById(id);
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String importData(List<MrpComponentWeeklyReq> list, boolean updateSupport, String operName, String weekStartDate)
{
if (StringUtils.isNull(list) || list.size() == 0)
{
throw new ServiceException("导入数据不能为空!");
}
if (StringUtils.isEmpty(weekStartDate))
{
throw new ServiceException("请选择周一日期!");
}
// 解析周一日期并计算年第周
Date mondayDate;
String yearWeek;
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
mondayDate = sdf.parse(weekStartDate);
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(4);
cal.setTime(mondayDate);
int year = cal.get(Calendar.YEAR);
int week = cal.get(Calendar.WEEK_OF_YEAR);
yearWeek = String.format("%d%02d", year, week);
}
catch (Exception e)
{
throw new ServiceException("周一日期格式错误请使用yyyy-MM-dd格式");
}
// 预处理数据,校验并填充字段(跳过空行)
List<MrpComponentWeeklyReq> validList = new ArrayList<>();
int skipNum = 0;
Date now = new Date();
for (MrpComponentWeeklyReq item : list)
{
// 跳过物料编码为空的行(视为空行)
if (StringUtils.isEmpty(item.getItemCode()))
{
skipNum++;
continue;
}
// 自动填充年第周和周一日期
item.setYearWeek(yearWeek);
item.setWeekStartDate(mondayDate);
item.setCreatedAt(now);
validList.add(item);
}
if (validList.isEmpty())
{
throw new ServiceException("没有有效的数据可导入!所有行的物料编码都为空。");
}
// 逐条插入Oracle INSERT ALL不支持SEQUENCE.NEXTVAL
int total = validList.size();
int count = 0;
long startTime = System.currentTimeMillis();
System.out.println("开始导入子件物料周需求,共 " + total + " 条数据");
for (MrpComponentWeeklyReq item : validList)
{
mrpComponentWeeklyReqMapper.insertMrpComponentWeeklyReq(item);
count++;
// 每500条打印进度
if (count % 500 == 0)
{
long elapsed = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("已导入 " + count + "/" + total + " 条,耗时 " + elapsed + " 秒");
}
}
long totalTime = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("导入完成,共 " + total + " 条,总耗时 " + totalTime + " 秒");
String msg = "数据导入成功!共导入 " + total + " 条";
if (skipNum > 0)
{
msg += ",跳过空行 " + skipNum + " 条";
}
return msg;
}
/**
*
* 使
*/
@Async
@Override
public void importDataAsync(List<MrpComponentWeeklyReq> list, boolean updateSupport, String operName, String weekStartDate)
{
System.out.println("========== 异步导入开始 ==========");
// 解析周一日期和年第周
String yearWeek;
Date mondayDate;
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
mondayDate = sdf.parse(weekStartDate);
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(4);
cal.setTime(mondayDate);
int year = cal.get(Calendar.YEAR);
int week = cal.get(Calendar.WEEK_OF_YEAR);
yearWeek = String.format("%d%02d", year, week);
}
catch (Exception e)
{
System.out.println("异步导入失败: 周一日期格式错误");
return;
}
// 预处理数据
List<MrpComponentWeeklyReq> validList = new ArrayList<>();
Date now = new Date();
for (MrpComponentWeeklyReq item : list)
{
if (StringUtils.isEmpty(item.getItemCode()))
{
continue;
}
item.setYearWeek(yearWeek);
item.setWeekStartDate(mondayDate);
item.setCreatedAt(now);
validList.add(item);
}
if (validList.isEmpty())
{
System.out.println("异步导入失败: 没有有效数据");
return;
}
int total = validList.size();
int batchSize = 500; // 每批500条提交一次事务
int successCount = 0;
int failCount = 0;
long startTime = System.currentTimeMillis();
System.out.println("开始分批导入,共 " + total + " 条,每批 " + batchSize + " 条");
// 分批处理,每批独立事务
for (int i = 0; i < total; i += batchSize)
{
int end = Math.min(i + batchSize, total);
List<MrpComponentWeeklyReq> batch = validList.subList(i, end);
try
{
// 使用事务模板,每批独立提交
transactionTemplate.execute(status -> {
for (MrpComponentWeeklyReq item : batch)
{
mrpComponentWeeklyReqMapper.insertMrpComponentWeeklyReq(item);
}
return null;
});
successCount += batch.size();
}
catch (Exception e)
{
failCount += batch.size();
System.out.println("批次 " + (i / batchSize + 1) + " 导入失败: " + e.getMessage());
}
// 打印进度
long elapsed = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("已处理 " + end + "/" + total + " 条,成功 " + successCount + ",失败 " + failCount + ",耗时 " + elapsed + " 秒");
}
long totalTime = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("========== 异步导入完成 ==========");
System.out.println("总计: " + total + " 条,成功: " + successCount + ",失败: " + failCount + ",总耗时: " + totalTime + " 秒");
}
}

@ -0,0 +1,189 @@
package com.aucma.production.service.impl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.aucma.common.exception.ServiceException;
import com.aucma.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.aucma.production.mapper.MrpProdWeeklyPlanMapper;
import com.aucma.production.domain.MrpProdWeeklyPlan;
import com.aucma.production.service.IMrpProdWeeklyPlanService;
/**
* Service
*
* @author Yinq
* @date 2026-01-05
*/
@Service
public class MrpProdWeeklyPlanServiceImpl implements IMrpProdWeeklyPlanService
{
@Autowired
private MrpProdWeeklyPlanMapper mrpProdWeeklyPlanMapper;
/**
*
*
* @param id
* @return
*/
@Override
public MrpProdWeeklyPlan selectMrpProdWeeklyPlanById(Long id)
{
return mrpProdWeeklyPlanMapper.selectMrpProdWeeklyPlanById(id);
}
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
@Override
public List<MrpProdWeeklyPlan> selectMrpProdWeeklyPlanList(MrpProdWeeklyPlan mrpProdWeeklyPlan)
{
return mrpProdWeeklyPlanMapper.selectMrpProdWeeklyPlanList(mrpProdWeeklyPlan);
}
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
@Override
public int insertMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan)
{
return mrpProdWeeklyPlanMapper.insertMrpProdWeeklyPlan(mrpProdWeeklyPlan);
}
/**
*
*
* @param mrpProdWeeklyPlan
* @return
*/
@Override
public int updateMrpProdWeeklyPlan(MrpProdWeeklyPlan mrpProdWeeklyPlan)
{
return mrpProdWeeklyPlanMapper.updateMrpProdWeeklyPlan(mrpProdWeeklyPlan);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteMrpProdWeeklyPlanByIds(Long[] ids)
{
return mrpProdWeeklyPlanMapper.deleteMrpProdWeeklyPlanByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteMrpProdWeeklyPlanById(Long id)
{
return mrpProdWeeklyPlanMapper.deleteMrpProdWeeklyPlanById(id);
}
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String importData(List<MrpProdWeeklyPlan> list, boolean updateSupport, String operName, String weekStartDate)
{
if (StringUtils.isNull(list) || list.size() == 0)
{
throw new ServiceException("导入数据不能为空!");
}
if (StringUtils.isEmpty(weekStartDate))
{
throw new ServiceException("请选择周一日期!");
}
// 解析周一日期并计算年第周
Date mondayDate;
String yearWeek;
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
mondayDate = sdf.parse(weekStartDate);
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setMinimalDaysInFirstWeek(4);
cal.setTime(mondayDate);
int year = cal.get(Calendar.YEAR);
int week = cal.get(Calendar.WEEK_OF_YEAR);
yearWeek = String.format("%d%02d", year, week);
}
catch (Exception e)
{
throw new ServiceException("周一日期格式错误请使用yyyy-MM-dd格式");
}
// 预处理数据,校验并填充字段(跳过空行)
List<MrpProdWeeklyPlan> validList = new ArrayList<>();
int skipNum = 0;
Date now = new Date();
for (MrpProdWeeklyPlan item : list)
{
// 跳过编码为空的行(视为空行)
if (StringUtils.isEmpty(item.getItemCode()))
{
skipNum++;
continue;
}
// 自动填充年第周和周一日期
item.setYearWeek(yearWeek);
item.setWeekStartDate(mondayDate);
item.setCreatedAt(now);
validList.add(item);
}
if (validList.isEmpty())
{
throw new ServiceException("没有有效的数据可导入!所有行的编码都为空。");
}
// 逐条插入Oracle INSERT ALL不支持SEQUENCE.NEXTVAL
int total = validList.size();
int count = 0;
long startTime = System.currentTimeMillis();
System.out.println("开始导入周排产计划,共 " + total + " 条数据");
for (MrpProdWeeklyPlan item : validList)
{
mrpProdWeeklyPlanMapper.insertMrpProdWeeklyPlan(item);
count++;
// 每500条打印进度
if (count % 500 == 0)
{
long elapsed = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("已导入 " + count + "/" + total + " 条,耗时 " + elapsed + " 秒");
}
}
long totalTime = (System.currentTimeMillis() - startTime) / 1000;
System.out.println("导入完成,共 " + total + " 条,总耗时 " + totalTime + " 秒");
String msg = "数据导入成功!共导入 " + total + " 条";
if (skipNum > 0)
{
msg += ",跳过空行 " + skipNum + " 条";
}
return msg;
}
}

@ -0,0 +1,137 @@
<?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.aucma.production.mapper.MrpComponentWeeklyReqMapper">
<resultMap type="MrpComponentWeeklyReq" id="MrpComponentWeeklyReqResult">
<result property="id" column="id" />
<result property="yearWeek" column="year_week" />
<result property="weekStartDate" column="week_start_date" />
<result property="itemCode" column="item_code" />
<result property="itemDesc" column="item_desc" />
<result property="reqMon" column="req_mon" />
<result property="reqTue" column="req_tue" />
<result property="reqWed" column="req_wed" />
<result property="reqThu" column="req_thu" />
<result property="reqFri" column="req_fri" />
<result property="reqSat" column="req_sat" />
<result property="reqSun" column="req_sun" />
<result property="reqWeekTotal" column="req_week_total" />
<result property="createdAt" column="created_at" />
<result property="updatedAt" column="updated_at" />
</resultMap>
<sql id="selectMrpComponentWeeklyReqVo">
select id, year_week, week_start_date, item_code, item_desc, req_mon, req_tue, req_wed, req_thu, req_fri, req_sat, req_sun, req_week_total, created_at, updated_at from mrp_component_weekly_req
</sql>
<select id="selectMrpComponentWeeklyReqList" parameterType="MrpComponentWeeklyReq" resultMap="MrpComponentWeeklyReqResult">
<include refid="selectMrpComponentWeeklyReqVo"/>
<where>
<if test="yearWeek != null and yearWeek != ''"> and year_week = #{yearWeek}</if>
<if test="weekStartDate != null "> and week_start_date = #{weekStartDate}</if>
<if test="params != null and params.beginWeekStartDate != null and params.beginWeekStartDate != ''"> and week_start_date &gt;= to_date(#{params.beginWeekStartDate}, 'yyyy-mm-dd')</if>
<if test="params != null and params.endWeekStartDate != null and params.endWeekStartDate != ''"> and week_start_date &lt;= to_date(#{params.endWeekStartDate}, 'yyyy-mm-dd')</if>
<if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode}</if>
<if test="itemDesc != null and itemDesc != ''"> and item_desc = #{itemDesc}</if>
<if test="reqMon != null "> and req_mon = #{reqMon}</if>
<if test="reqTue != null "> and req_tue = #{reqTue}</if>
<if test="reqWed != null "> and req_wed = #{reqWed}</if>
<if test="reqThu != null "> and req_thu = #{reqThu}</if>
<if test="reqFri != null "> and req_fri = #{reqFri}</if>
<if test="reqSat != null "> and req_sat = #{reqSat}</if>
<if test="reqSun != null "> and req_sun = #{reqSun}</if>
<if test="reqWeekTotal != null "> and req_week_total = #{reqWeekTotal}</if>
<if test="createdAt != null "> and created_at = #{createdAt}</if>
<if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
</where>
</select>
<select id="selectMrpComponentWeeklyReqById" parameterType="Long" resultMap="MrpComponentWeeklyReqResult">
<include refid="selectMrpComponentWeeklyReqVo"/>
where id = #{id}
</select>
<insert id="insertMrpComponentWeeklyReq" parameterType="MrpComponentWeeklyReq">
<selectKey keyProperty="id" resultType="long" order="BEFORE">
SELECT seq_mrp_component_weekly_req.NEXTVAL as id FROM DUAL
</selectKey>
insert into mrp_component_weekly_req
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="yearWeek != null and yearWeek != ''">year_week,</if>
<if test="weekStartDate != null">week_start_date,</if>
<if test="itemCode != null and itemCode != ''">item_code,</if>
<if test="itemDesc != null">item_desc,</if>
<if test="reqMon != null">req_mon,</if>
<if test="reqTue != null">req_tue,</if>
<if test="reqWed != null">req_wed,</if>
<if test="reqThu != null">req_thu,</if>
<if test="reqFri != null">req_fri,</if>
<if test="reqSat != null">req_sat,</if>
<if test="reqSun != null">req_sun,</if>
<if test="reqWeekTotal != null">req_week_total,</if>
<if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="yearWeek != null and yearWeek != ''">#{yearWeek},</if>
<if test="weekStartDate != null">#{weekStartDate},</if>
<if test="itemCode != null and itemCode != ''">#{itemCode},</if>
<if test="itemDesc != null">#{itemDesc},</if>
<if test="reqMon != null">#{reqMon},</if>
<if test="reqTue != null">#{reqTue},</if>
<if test="reqWed != null">#{reqWed},</if>
<if test="reqThu != null">#{reqThu},</if>
<if test="reqFri != null">#{reqFri},</if>
<if test="reqSat != null">#{reqSat},</if>
<if test="reqSun != null">#{reqSun},</if>
<if test="reqWeekTotal != null">#{reqWeekTotal},</if>
<if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if>
</trim>
</insert>
<update id="updateMrpComponentWeeklyReq" parameterType="MrpComponentWeeklyReq">
update mrp_component_weekly_req
<trim prefix="SET" suffixOverrides=",">
<if test="yearWeek != null and yearWeek != ''">year_week = #{yearWeek},</if>
<if test="weekStartDate != null">week_start_date = #{weekStartDate},</if>
<if test="itemCode != null and itemCode != ''">item_code = #{itemCode},</if>
<if test="itemDesc != null">item_desc = #{itemDesc},</if>
<if test="reqMon != null">req_mon = #{reqMon},</if>
<if test="reqTue != null">req_tue = #{reqTue},</if>
<if test="reqWed != null">req_wed = #{reqWed},</if>
<if test="reqThu != null">req_thu = #{reqThu},</if>
<if test="reqFri != null">req_fri = #{reqFri},</if>
<if test="reqSat != null">req_sat = #{reqSat},</if>
<if test="reqSun != null">req_sun = #{reqSun},</if>
<!-- req_week_total 是虚拟列,不能更新 -->
<if test="createdAt != null">created_at = #{createdAt},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteMrpComponentWeeklyReqById" parameterType="Long">
delete from mrp_component_weekly_req where id = #{id}
</delete>
<delete id="deleteMrpComponentWeeklyReqByIds" parameterType="String">
delete from mrp_component_weekly_req where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id,jdbcType=NUMERIC}
</foreach>
</delete>
<insert id="batchInsert" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="item" separator=" ">
INTO mrp_component_weekly_req (id, year_week, week_start_date, item_code, item_desc, req_mon, req_tue, req_wed, req_thu, req_fri, req_sat, req_sun, created_at)
VALUES (seq_mrp_component_weekly_req.NEXTVAL, #{item.yearWeek,jdbcType=VARCHAR}, #{item.weekStartDate,jdbcType=DATE}, #{item.itemCode,jdbcType=VARCHAR}, #{item.itemDesc,jdbcType=VARCHAR}, #{item.reqMon,jdbcType=NUMERIC}, #{item.reqTue,jdbcType=NUMERIC}, #{item.reqWed,jdbcType=NUMERIC}, #{item.reqThu,jdbcType=NUMERIC}, #{item.reqFri,jdbcType=NUMERIC}, #{item.reqSat,jdbcType=NUMERIC}, #{item.reqSun,jdbcType=NUMERIC}, #{item.createdAt,jdbcType=TIMESTAMP})
</foreach>
SELECT 1 FROM DUAL
</insert>
</mapper>

@ -0,0 +1,157 @@
<?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.aucma.production.mapper.MrpProdWeeklyPlanMapper">
<resultMap type="MrpProdWeeklyPlan" id="MrpProdWeeklyPlanResult">
<result property="id" column="id" />
<result property="yearWeek" column="year_week" />
<result property="weekStartDate" column="week_start_date" />
<result property="seqNo" column="seq_no" />
<result property="itemCode" column="item_code" />
<result property="itemDesc" column="item_desc" />
<result property="plantCode" column="plant_code" />
<result property="orderNo" column="order_no" />
<result property="orderLineNo" column="order_line_no" />
<result property="planD1" column="plan_d1" />
<result property="planD2" column="plan_d2" />
<result property="planD3" column="plan_d3" />
<result property="planD4" column="plan_d4" />
<result property="planD5" column="plan_d5" />
<result property="planD6" column="plan_d6" />
<result property="planD7" column="plan_d7" />
<result property="planWeekTotal" column="plan_week_total" />
<result property="createdAt" column="created_at" />
<result property="updatedAt" column="updated_at" />
</resultMap>
<sql id="selectMrpProdWeeklyPlanVo">
select id, year_week, week_start_date, seq_no, item_code, item_desc, plant_code, order_no, order_line_no, plan_d1, plan_d2, plan_d3, plan_d4, plan_d5, plan_d6, plan_d7, plan_week_total, created_at, updated_at from mrp_prod_weekly_plan
</sql>
<select id="selectMrpProdWeeklyPlanList" parameterType="MrpProdWeeklyPlan" resultMap="MrpProdWeeklyPlanResult">
<include refid="selectMrpProdWeeklyPlanVo"/>
<where>
<if test="yearWeek != null and yearWeek != ''"> and year_week = #{yearWeek}</if>
<if test="weekStartDate != null "> and week_start_date = #{weekStartDate}</if>
<if test="params != null and params.beginWeekStartDate != null and params.beginWeekStartDate != ''"> and week_start_date &gt;= to_date(#{params.beginWeekStartDate}, 'yyyy-mm-dd')</if>
<if test="params != null and params.endWeekStartDate != null and params.endWeekStartDate != ''"> and week_start_date &lt;= to_date(#{params.endWeekStartDate}, 'yyyy-mm-dd')</if>
<if test="seqNo != null "> and seq_no = #{seqNo}</if>
<if test="itemCode != null and itemCode != ''"> and item_code = #{itemCode}</if>
<if test="itemDesc != null and itemDesc != ''"> and item_desc = #{itemDesc}</if>
<if test="plantCode != null and plantCode != ''"> and plant_code = #{plantCode}</if>
<if test="orderNo != null and orderNo != ''"> and order_no = #{orderNo}</if>
<if test="orderLineNo != null and orderLineNo != ''"> and order_line_no = #{orderLineNo}</if>
<if test="planD1 != null "> and plan_d1 = #{planD1}</if>
<if test="planD2 != null "> and plan_d2 = #{planD2}</if>
<if test="planD3 != null "> and plan_d3 = #{planD3}</if>
<if test="planD4 != null "> and plan_d4 = #{planD4}</if>
<if test="planD5 != null "> and plan_d5 = #{planD5}</if>
<if test="planD6 != null "> and plan_d6 = #{planD6}</if>
<if test="planD7 != null "> and plan_d7 = #{planD7}</if>
<if test="planWeekTotal != null "> and plan_week_total = #{planWeekTotal}</if>
<if test="createdAt != null "> and created_at = #{createdAt}</if>
<if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
</where>
</select>
<select id="selectMrpProdWeeklyPlanById" parameterType="Long" resultMap="MrpProdWeeklyPlanResult">
<include refid="selectMrpProdWeeklyPlanVo"/>
where id = #{id}
</select>
<insert id="insertMrpProdWeeklyPlan" parameterType="MrpProdWeeklyPlan">
<selectKey keyProperty="id" resultType="long" order="BEFORE">
SELECT seq_mrp_prod_weekly_plan.NEXTVAL as id FROM DUAL
</selectKey>
insert into mrp_prod_weekly_plan
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="yearWeek != null">year_week,</if>
<if test="weekStartDate != null">week_start_date,</if>
<if test="seqNo != null">seq_no,</if>
<if test="itemCode != null">item_code,</if>
<if test="itemDesc != null">item_desc,</if>
<if test="plantCode != null">plant_code,</if>
<if test="orderNo != null">order_no,</if>
<if test="orderLineNo != null">order_line_no,</if>
<if test="planD1 != null">plan_d1,</if>
<if test="planD2 != null">plan_d2,</if>
<if test="planD3 != null">plan_d3,</if>
<if test="planD4 != null">plan_d4,</if>
<if test="planD5 != null">plan_d5,</if>
<if test="planD6 != null">plan_d6,</if>
<if test="planD7 != null">plan_d7,</if>
<if test="planWeekTotal != null">plan_week_total,</if>
<if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="yearWeek != null">#{yearWeek},</if>
<if test="weekStartDate != null">#{weekStartDate},</if>
<if test="seqNo != null">#{seqNo},</if>
<if test="itemCode != null">#{itemCode},</if>
<if test="itemDesc != null">#{itemDesc},</if>
<if test="plantCode != null">#{plantCode},</if>
<if test="orderNo != null">#{orderNo},</if>
<if test="orderLineNo != null">#{orderLineNo},</if>
<if test="planD1 != null">#{planD1},</if>
<if test="planD2 != null">#{planD2},</if>
<if test="planD3 != null">#{planD3},</if>
<if test="planD4 != null">#{planD4},</if>
<if test="planD5 != null">#{planD5},</if>
<if test="planD6 != null">#{planD6},</if>
<if test="planD7 != null">#{planD7},</if>
<if test="planWeekTotal != null">#{planWeekTotal},</if>
<if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if>
</trim>
</insert>
<update id="updateMrpProdWeeklyPlan" parameterType="MrpProdWeeklyPlan">
update mrp_prod_weekly_plan
<trim prefix="SET" suffixOverrides=",">
<if test="yearWeek != null">year_week = #{yearWeek},</if>
<if test="weekStartDate != null">week_start_date = #{weekStartDate},</if>
<if test="seqNo != null">seq_no = #{seqNo},</if>
<if test="itemCode != null">item_code = #{itemCode},</if>
<if test="itemDesc != null">item_desc = #{itemDesc},</if>
<if test="plantCode != null">plant_code = #{plantCode},</if>
<if test="orderNo != null">order_no = #{orderNo},</if>
<if test="orderLineNo != null">order_line_no = #{orderLineNo},</if>
<if test="planD1 != null">plan_d1 = #{planD1},</if>
<if test="planD2 != null">plan_d2 = #{planD2},</if>
<if test="planD3 != null">plan_d3 = #{planD3},</if>
<if test="planD4 != null">plan_d4 = #{planD4},</if>
<if test="planD5 != null">plan_d5 = #{planD5},</if>
<if test="planD6 != null">plan_d6 = #{planD6},</if>
<if test="planD7 != null">plan_d7 = #{planD7},</if>
<!-- plan_week_total 是虚拟列,不能更新 -->
<if test="createdAt != null">created_at = #{createdAt},</if>
<if test="updatedAt != null">updated_at = #{updatedAt},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteMrpProdWeeklyPlanById" parameterType="Long">
delete from mrp_prod_weekly_plan where id = #{id}
</delete>
<delete id="deleteMrpProdWeeklyPlanByIds" parameterType="String">
delete from mrp_prod_weekly_plan where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id,jdbcType=NUMERIC}
</foreach>
</delete>
<insert id="batchInsert" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="item" separator=" ">
INTO mrp_prod_weekly_plan (id, year_week, week_start_date, seq_no, item_code, item_desc, plant_code, order_no, order_line_no, plan_d1, plan_d2, plan_d3, plan_d4, plan_d5, plan_d6, plan_d7, created_at)
VALUES (seq_mrp_prod_weekly_plan.NEXTVAL, #{item.yearWeek,jdbcType=VARCHAR}, #{item.weekStartDate,jdbcType=DATE}, #{item.seqNo,jdbcType=NUMERIC}, #{item.itemCode,jdbcType=VARCHAR}, #{item.itemDesc,jdbcType=VARCHAR}, #{item.plantCode,jdbcType=VARCHAR}, #{item.orderNo,jdbcType=VARCHAR}, #{item.orderLineNo,jdbcType=VARCHAR}, #{item.planD1,jdbcType=NUMERIC}, #{item.planD2,jdbcType=NUMERIC}, #{item.planD3,jdbcType=NUMERIC}, #{item.planD4,jdbcType=NUMERIC}, #{item.planD5,jdbcType=NUMERIC}, #{item.planD6,jdbcType=NUMERIC}, #{item.planD7,jdbcType=NUMERIC}, #{item.createdAt,jdbcType=TIMESTAMP})
</foreach>
SELECT 1 FROM DUAL
</insert>
</mapper>
Loading…
Cancel
Save