feat(cost): 添加数据源注解和批量操作功能
- 为CostItemService、CostPriceService、CostProdDetailService、CostProdMetricService添加@DataSource注解 - 在CostProdDetailController中新增批量保存生产成本明细接口 - 实现CostProdDetailService的batchSaveWithDelete方法支持先删除再插入 - 添加CostProdDetailBo批量操作参数对象 - 在CostProdReportService中实现copyReport功能支持复制生产月报 - 配置数据源类型为KLP确保数据库连接正确 - 添加相应的映射器方法和SQL模板支持批量插入操作
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package com.ruoyi.cost.bo;
|
||||
|
||||
import com.ruoyi.cost.domain.CostProdDetail;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生产成本明细批量操作参数
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
public class CostProdDetailBo
|
||||
{
|
||||
/** 需删除的明细ID列表 */
|
||||
private List<Long> detailIds;
|
||||
|
||||
/** 需保存的明细列表 */
|
||||
private List<CostProdDetail> prodDetailList;
|
||||
|
||||
public List<Long> getDetailIds()
|
||||
{
|
||||
return detailIds;
|
||||
}
|
||||
|
||||
public void setDetailIds(List<Long> detailIds)
|
||||
{
|
||||
this.detailIds = detailIds;
|
||||
}
|
||||
|
||||
public List<CostProdDetail> getProdDetailList()
|
||||
{
|
||||
return prodDetailList;
|
||||
}
|
||||
|
||||
public void setProdDetailList(List<CostProdDetail> prodDetailList)
|
||||
{
|
||||
this.prodDetailList = prodDetailList;
|
||||
}
|
||||
}
|
||||
@@ -18,12 +18,13 @@ import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.cost.domain.CostProdDetail;
|
||||
import com.ruoyi.cost.service.ICostProdDetailService;
|
||||
import com.ruoyi.cost.bo.CostProdDetailBo;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 生产成本明细Controller
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@@ -101,4 +102,15 @@ public class CostProdDetailController extends BaseController
|
||||
{
|
||||
return toAjax(costProdDetailService.deleteCostProdDetailByDetailIds(detailIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存生产成本明细(先删除再插入)
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('cost:detail:add')")
|
||||
@Log(title = "生产成本明细", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/batchSave")
|
||||
public AjaxResult batchSave(@RequestBody CostProdDetailBo bo)
|
||||
{
|
||||
return toAjax(costProdDetailService.batchSaveWithDelete(bo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ 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.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
@@ -80,6 +81,17 @@ public class CostProdReportController extends BaseController
|
||||
return toAjax(costProdReportService.insertCostProdReport(costProdReport));
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制生产月报
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('cost:report:add')")
|
||||
@Log(title = "生产月报", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/copy")
|
||||
public AjaxResult copy(@RequestParam Long sourceId, @RequestBody CostProdReport costProdReport)
|
||||
{
|
||||
return success(costProdReportService.copyReport(sourceId, costProdReport));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改生产月报
|
||||
*/
|
||||
|
||||
@@ -58,4 +58,12 @@ public interface CostProdDetailMapper
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCostProdDetailByDetailIds(Long[] detailIds);
|
||||
|
||||
/**
|
||||
* 批量新增生产成本明细
|
||||
*
|
||||
* @param list 生产成本明细列表
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertBatch(List<CostProdDetail> list);
|
||||
}
|
||||
|
||||
@@ -2,18 +2,20 @@ package com.ruoyi.cost.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.cost.domain.CostProdDetail;
|
||||
import com.ruoyi.cost.bo.CostProdDetailBo;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 生产成本明细Service接口
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
public interface ICostProdDetailService
|
||||
public interface ICostProdDetailService
|
||||
{
|
||||
/**
|
||||
* 查询生产成本明细
|
||||
*
|
||||
*
|
||||
* @param detailId 生产成本明细主键
|
||||
* @return 生产成本明细
|
||||
*/
|
||||
@@ -21,7 +23,7 @@ public interface ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 查询生产成本明细列表
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 生产成本明细集合
|
||||
*/
|
||||
@@ -29,7 +31,7 @@ public interface ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 新增生产成本明细
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -37,7 +39,7 @@ public interface ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 修改生产成本明细
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -45,7 +47,7 @@ public interface ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 批量删除生产成本明细
|
||||
*
|
||||
*
|
||||
* @param detailIds 需要删除的生产成本明细主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -53,9 +55,19 @@ public interface ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 删除生产成本明细信息
|
||||
*
|
||||
*
|
||||
* @param detailId 生产成本明细主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCostProdDetailByDetailId(Long detailId);
|
||||
|
||||
|
||||
/**
|
||||
* 批量保存生产成本明细(先删除再插入)
|
||||
*
|
||||
* @param bo 批量操作参数
|
||||
* @return 结果
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchSaveWithDelete(CostProdDetailBo bo);
|
||||
}
|
||||
|
||||
@@ -58,4 +58,14 @@ public interface ICostProdReportService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteCostProdReportByReportId(Long reportId);
|
||||
|
||||
/**
|
||||
* 复制生产月报
|
||||
* 明细列原样保留(itemId不变),指标列重新插入并更新config中的id引用
|
||||
*
|
||||
* @param sourceId 源报表ID
|
||||
* @param bo 新报表覆盖字段
|
||||
* @return 新报表
|
||||
*/
|
||||
public CostProdReport copyReport(Long sourceId, CostProdReport bo);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.ruoyi.cost.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.annotation.DataSource;
|
||||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -10,19 +13,20 @@ import com.ruoyi.cost.service.ICostItemService;
|
||||
|
||||
/**
|
||||
* 成本项目配置Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@Service
|
||||
public class CostItemServiceImpl implements ICostItemService
|
||||
@DataSource(DataSourceType.KLP)
|
||||
public class CostItemServiceImpl implements ICostItemService
|
||||
{
|
||||
@Autowired
|
||||
private CostItemMapper costItemMapper;
|
||||
|
||||
/**
|
||||
* 查询成本项目配置
|
||||
*
|
||||
*
|
||||
* @param itemId 成本项目配置主键
|
||||
* @return 成本项目配置
|
||||
*/
|
||||
@@ -34,7 +38,7 @@ public class CostItemServiceImpl implements ICostItemService
|
||||
|
||||
/**
|
||||
* 查询成本项目配置列表
|
||||
*
|
||||
*
|
||||
* @param costItem 成本项目配置
|
||||
* @return 成本项目配置
|
||||
*/
|
||||
@@ -46,7 +50,7 @@ public class CostItemServiceImpl implements ICostItemService
|
||||
|
||||
/**
|
||||
* 新增成本项目配置
|
||||
*
|
||||
*
|
||||
* @param costItem 成本项目配置
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -59,7 +63,7 @@ public class CostItemServiceImpl implements ICostItemService
|
||||
|
||||
/**
|
||||
* 修改成本项目配置
|
||||
*
|
||||
*
|
||||
* @param costItem 成本项目配置
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -72,7 +76,7 @@ public class CostItemServiceImpl implements ICostItemService
|
||||
|
||||
/**
|
||||
* 批量删除成本项目配置
|
||||
*
|
||||
*
|
||||
* @param itemIds 需要删除的成本项目配置主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -84,7 +88,7 @@ public class CostItemServiceImpl implements ICostItemService
|
||||
|
||||
/**
|
||||
* 删除成本项目配置信息
|
||||
*
|
||||
*
|
||||
* @param itemId 成本项目配置主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.ruoyi.cost.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.annotation.DataSource;
|
||||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -10,19 +13,20 @@ import com.ruoyi.cost.service.ICostPriceService;
|
||||
|
||||
/**
|
||||
* 成本单价历史Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@Service
|
||||
public class CostPriceServiceImpl implements ICostPriceService
|
||||
@DataSource(DataSourceType.KLP)
|
||||
public class CostPriceServiceImpl implements ICostPriceService
|
||||
{
|
||||
@Autowired
|
||||
private CostPriceMapper costPriceMapper;
|
||||
|
||||
/**
|
||||
* 查询成本单价历史
|
||||
*
|
||||
*
|
||||
* @param priceId 成本单价历史主键
|
||||
* @return 成本单价历史
|
||||
*/
|
||||
@@ -34,7 +38,7 @@ public class CostPriceServiceImpl implements ICostPriceService
|
||||
|
||||
/**
|
||||
* 查询成本单价历史列表
|
||||
*
|
||||
*
|
||||
* @param costPrice 成本单价历史
|
||||
* @return 成本单价历史
|
||||
*/
|
||||
@@ -46,7 +50,7 @@ public class CostPriceServiceImpl implements ICostPriceService
|
||||
|
||||
/**
|
||||
* 新增成本单价历史
|
||||
*
|
||||
*
|
||||
* @param costPrice 成本单价历史
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -59,7 +63,7 @@ public class CostPriceServiceImpl implements ICostPriceService
|
||||
|
||||
/**
|
||||
* 修改成本单价历史
|
||||
*
|
||||
*
|
||||
* @param costPrice 成本单价历史
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -72,7 +76,7 @@ public class CostPriceServiceImpl implements ICostPriceService
|
||||
|
||||
/**
|
||||
* 批量删除成本单价历史
|
||||
*
|
||||
*
|
||||
* @param priceIds 需要删除的成本单价历史主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -84,7 +88,7 @@ public class CostPriceServiceImpl implements ICostPriceService
|
||||
|
||||
/**
|
||||
* 删除成本单价历史信息
|
||||
*
|
||||
*
|
||||
* @param priceId 成本单价历史主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
||||
@@ -1,28 +1,36 @@
|
||||
package com.ruoyi.cost.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.ruoyi.common.annotation.DataSource;
|
||||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import com.ruoyi.cost.mapper.CostProdDetailMapper;
|
||||
import com.ruoyi.cost.domain.CostProdDetail;
|
||||
import com.ruoyi.cost.service.ICostProdDetailService;
|
||||
import com.ruoyi.cost.bo.CostProdDetailBo;
|
||||
|
||||
/**
|
||||
* 生产成本明细Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@Service
|
||||
public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
@DataSource(DataSourceType.KLP)
|
||||
public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
{
|
||||
@Autowired
|
||||
private CostProdDetailMapper costProdDetailMapper;
|
||||
|
||||
/**
|
||||
* 查询生产成本明细
|
||||
*
|
||||
*
|
||||
* @param detailId 生产成本明细主键
|
||||
* @return 生产成本明细
|
||||
*/
|
||||
@@ -34,7 +42,7 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 查询生产成本明细列表
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 生产成本明细
|
||||
*/
|
||||
@@ -46,7 +54,7 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 新增生产成本明细
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -59,7 +67,7 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 修改生产成本明细
|
||||
*
|
||||
*
|
||||
* @param costProdDetail 生产成本明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -72,7 +80,7 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 批量删除生产成本明细
|
||||
*
|
||||
*
|
||||
* @param detailIds 需要删除的生产成本明细主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -84,7 +92,7 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
|
||||
/**
|
||||
* 删除生产成本明细信息
|
||||
*
|
||||
*
|
||||
* @param detailId 生产成本明细主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -93,4 +101,29 @@ public class CostProdDetailServiceImpl implements ICostProdDetailService
|
||||
{
|
||||
return costProdDetailMapper.deleteCostProdDetailByDetailId(detailId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存生产成本明细(先删除再插入)
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchSaveWithDelete(CostProdDetailBo bo)
|
||||
{
|
||||
if (!CollectionUtils.isEmpty(bo.getProdDetailList()))
|
||||
{
|
||||
if (!CollectionUtils.isEmpty(bo.getDetailIds()))
|
||||
{
|
||||
// 转成Long[]后删除
|
||||
Long[] ids = bo.getDetailIds().toArray(new Long[0]);
|
||||
costProdDetailMapper.deleteCostProdDetailByDetailIds(ids);
|
||||
}
|
||||
|
||||
// 设置createTime后批量插入
|
||||
List<CostProdDetail> list = bo.getProdDetailList().stream()
|
||||
.peek(item -> item.setCreateTime(DateUtils.getNowDate()))
|
||||
.collect(Collectors.toList());
|
||||
return costProdDetailMapper.insertBatch(list) > 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.ruoyi.cost.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.common.annotation.DataSource;
|
||||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -10,19 +13,20 @@ import com.ruoyi.cost.service.ICostProdMetricService;
|
||||
|
||||
/**
|
||||
* 生产指标明细Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@Service
|
||||
public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
@DataSource(DataSourceType.KLP)
|
||||
public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
{
|
||||
@Autowired
|
||||
private CostProdMetricMapper costProdMetricMapper;
|
||||
|
||||
/**
|
||||
* 查询生产指标明细
|
||||
*
|
||||
*
|
||||
* @param metricId 生产指标明细主键
|
||||
* @return 生产指标明细
|
||||
*/
|
||||
@@ -34,7 +38,7 @@ public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
|
||||
/**
|
||||
* 查询生产指标明细列表
|
||||
*
|
||||
*
|
||||
* @param costProdMetric 生产指标明细
|
||||
* @return 生产指标明细
|
||||
*/
|
||||
@@ -46,7 +50,7 @@ public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
|
||||
/**
|
||||
* 新增生产指标明细
|
||||
*
|
||||
*
|
||||
* @param costProdMetric 生产指标明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -59,7 +63,7 @@ public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
|
||||
/**
|
||||
* 修改生产指标明细
|
||||
*
|
||||
*
|
||||
* @param costProdMetric 生产指标明细
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -72,7 +76,7 @@ public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
|
||||
/**
|
||||
* 批量删除生产指标明细
|
||||
*
|
||||
*
|
||||
* @param metricIds 需要删除的生产指标明细主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -84,7 +88,7 @@ public class CostProdMetricServiceImpl implements ICostProdMetricService
|
||||
|
||||
/**
|
||||
* 删除生产指标明细信息
|
||||
*
|
||||
*
|
||||
* @param metricId 生产指标明细主键
|
||||
* @return 结果
|
||||
*/
|
||||
|
||||
@@ -1,28 +1,42 @@
|
||||
package com.ruoyi.cost.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.common.annotation.DataSource;
|
||||
import com.ruoyi.common.enums.DataSourceType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.bean.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.cost.mapper.CostProdMetricMapper;
|
||||
import com.ruoyi.cost.mapper.CostProdReportMapper;
|
||||
import com.ruoyi.cost.domain.CostProdMetric;
|
||||
import com.ruoyi.cost.domain.CostProdReport;
|
||||
import com.ruoyi.cost.service.ICostProdReportService;
|
||||
|
||||
/**
|
||||
* 生产月报Service业务层处理
|
||||
*
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-06-09
|
||||
*/
|
||||
@Service
|
||||
public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
@DataSource(DataSourceType.KLP)
|
||||
public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
{
|
||||
@Autowired
|
||||
private CostProdReportMapper costProdReportMapper;
|
||||
|
||||
@Autowired
|
||||
private CostProdMetricMapper costProdMetricMapper;
|
||||
|
||||
/**
|
||||
* 查询生产月报
|
||||
*
|
||||
*
|
||||
* @param reportId 生产月报主键
|
||||
* @return 生产月报
|
||||
*/
|
||||
@@ -34,7 +48,7 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
|
||||
/**
|
||||
* 查询生产月报列表
|
||||
*
|
||||
*
|
||||
* @param costProdReport 生产月报
|
||||
* @return 生产月报
|
||||
*/
|
||||
@@ -46,7 +60,7 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
|
||||
/**
|
||||
* 新增生产月报
|
||||
*
|
||||
*
|
||||
* @param costProdReport 生产月报
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -59,7 +73,7 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
|
||||
/**
|
||||
* 修改生产月报
|
||||
*
|
||||
*
|
||||
* @param costProdReport 生产月报
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -72,7 +86,7 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
|
||||
/**
|
||||
* 批量删除生产月报
|
||||
*
|
||||
*
|
||||
* @param reportIds 需要删除的生产月报主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -84,7 +98,7 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
|
||||
/**
|
||||
* 删除生产月报信息
|
||||
*
|
||||
*
|
||||
* @param reportId 生产月报主键
|
||||
* @return 结果
|
||||
*/
|
||||
@@ -93,4 +107,79 @@ public class CostProdReportServiceImpl implements ICostProdReportService
|
||||
{
|
||||
return costProdReportMapper.deleteCostProdReportByReportId(reportId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制生产月报
|
||||
* 明细列原样保留(itemId不变),指标列重新插入并更新config中的id引用
|
||||
*/
|
||||
@Override
|
||||
public CostProdReport copyReport(Long sourceId, CostProdReport bo)
|
||||
{
|
||||
CostProdReport source = costProdReportMapper.selectCostProdReportByReportId(sourceId);
|
||||
if (source == null)
|
||||
{
|
||||
throw new RuntimeException("源报表不存在");
|
||||
}
|
||||
|
||||
// 创建新报表,先插入以获取ID
|
||||
CostProdReport newRp = new CostProdReport();
|
||||
BeanUtils.copyProperties(source, newRp, "reportId", "colConfig");
|
||||
newRp.setReportTitle(bo.getReportTitle() != null ? bo.getReportTitle() : source.getReportTitle() + "-副本");
|
||||
if (bo.getReportDate() != null) {
|
||||
newRp.setReportDate(bo.getReportDate());
|
||||
}
|
||||
if (bo.getLineType() != null) {
|
||||
newRp.setLineType(bo.getLineType());
|
||||
}
|
||||
if (bo.getInputWeight() != null) {
|
||||
newRp.setInputWeight(bo.getInputWeight());
|
||||
}
|
||||
if (bo.getOutputWeight() != null) {
|
||||
newRp.setOutputWeight(bo.getOutputWeight());
|
||||
}
|
||||
if (bo.getRemark() != null) {
|
||||
newRp.setRemark(bo.getRemark());
|
||||
}
|
||||
newRp.setCreateTime(DateUtils.getNowDate());
|
||||
costProdReportMapper.insertCostProdReport(newRp);
|
||||
Long newRid = newRp.getReportId();
|
||||
|
||||
// 处理colConfig:为每个指标列重新插入metric记录,更新id引用
|
||||
String colConfig = source.getColConfig();
|
||||
if (StringUtils.isNotBlank(colConfig))
|
||||
{
|
||||
JSONObject cfg = JSON.parseObject(colConfig);
|
||||
JSONArray columns = cfg.getJSONArray("columns");
|
||||
if (columns != null && columns.size() > 0)
|
||||
{
|
||||
for (int i = 0; i < columns.size(); i++)
|
||||
{
|
||||
JSONObject col = columns.getJSONObject(i);
|
||||
if ("m".equals(col.getString("t")))
|
||||
{
|
||||
String idStr = col.getString("id");
|
||||
Long oldMetricId = idStr != null ? Long.parseLong(idStr) : null;
|
||||
if (oldMetricId != null)
|
||||
{
|
||||
CostProdMetric srcMetric = costProdMetricMapper.selectCostProdMetricByMetricId(oldMetricId);
|
||||
if (srcMetric != null)
|
||||
{
|
||||
CostProdMetric newMetric = new CostProdMetric();
|
||||
BeanUtils.copyProperties(srcMetric, newMetric, "metricId", "reportId");
|
||||
newMetric.setReportId(newRid);
|
||||
newMetric.setCreateTime(DateUtils.getNowDate());
|
||||
costProdMetricMapper.insertCostProdMetric(newMetric);
|
||||
col.put("id", String.valueOf(newMetric.getMetricId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
newRp.setColConfig(cfg.toString());
|
||||
newRp.setUpdateTime(DateUtils.getNowDate());
|
||||
costProdReportMapper.updateCostProdReport(newRp);
|
||||
}
|
||||
}
|
||||
|
||||
return costProdReportMapper.selectCostProdReportByReportId(newRid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,4 +107,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
#{detailId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="detailId">
|
||||
insert into cost_prod_detail (report_id, shift, detail_date, item_id, quantity, unit_price, amount, remark, del_flag, create_by, create_time, update_by, update_time) values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.reportId}, #{item.shift}, #{item.detailDate}, #{item.itemId}, #{item.quantity}, #{item.unitPrice}, #{item.amount}, #{item.remark}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user