成本计算-sjx

liweidong
sunjianxi 3 days ago
parent 728b708ffd
commit 2a8b6a573d
  1. 34
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/CostStatisticsController.java
  2. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/controller/SubjectFeeDetailController.java
  3. 125
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/StStockInoutRecordExcel.java
  4. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/excel/SubjectFeeDetailExcel.java
  5. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.java
  6. 70
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml
  7. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/ICostStatisticsService.java
  8. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java

@ -39,11 +39,11 @@ import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.cost.excel.CostStatisticsExcel;
import org.springblade.desk.cost.excel.StStockInoutRecordExcel;
import org.springblade.desk.cost.pojo.entity.CostStatisticsEntity;
import org.springblade.desk.cost.pojo.vo.CostStatisticsVO;
import org.springblade.desk.cost.service.ICostStatisticsService;
@ -143,7 +143,6 @@ public class CostStatisticsController extends BladeController {
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入CostStatistics")
@ -172,4 +171,35 @@ public class CostStatisticsController extends BladeController {
return R.status(costStatisticsService.costCalculation(month));
}
/**
* 导出数据
*/
@GetMapping("/exportWorkCenterMaterialCost")
@ApiOperationSupport(order = 9)
public void exportCostStatistics(@Parameter(hidden = true) @RequestParam Map<String, Object> costStatistics, HttpServletResponse response) {
List<StStockInoutRecordExcel> list = costStatisticsService.exportWorkCenterMaterialCost(Long.valueOf(costStatistics.get("workCenterId").toString()),costStatistics.get("month").toString());
ExcelUtil.export(response, "作业中心材料费用统计数据" + DateUtil.time(), "作业中心材料费用统计数据", list, StStockInoutRecordExcel.class);
}
/**
* 导出数据
*/
@GetMapping("/exportAssistantMaterialCost")
@ApiOperationSupport(order = 9)
public void exportAssistantMaterialCost(@Parameter(hidden = true) @RequestParam Map<String, Object> costStatistics, HttpServletResponse response) {
List<StStockInoutRecordExcel> list = costStatisticsService.exportAssistantMaterialCost(costStatistics.get("month").toString());
ExcelUtil.export(response, "辅助人员材料费用统计数据" + DateUtil.time(), "辅助人员材料费用统计数据", list, StStockInoutRecordExcel.class);
}
/**
* 导出数据
*/
@GetMapping("/exportMaterialCost")
@ApiOperationSupport(order = 9)
public void exportMaterialCost(@Parameter(hidden = true) @RequestParam Map<String, Object> costStatistics, HttpServletResponse response) {
List<StStockInoutRecordExcel> list = costStatisticsService.exportMaterialCost(Long.valueOf(costStatistics.get("workCenterId").toString()),costStatistics.get("month").toString());
ExcelUtil.export(response, "作业中心材料费用统计数据" + DateUtil.time(), "作业中心材料费用统计数据", list, StStockInoutRecordExcel.class);
}
}

@ -28,6 +28,7 @@ package org.springblade.desk.cost.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -169,7 +170,9 @@ public class SubjectFeeDetailController extends BladeController {
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入SubjectFeeDetail")
public R findList(@Parameter(hidden = true) @RequestParam Map<String, Object> subjectFeeDetail) {
List<SubjectFeeDetailEntity> list = subjectFeeDetailService.list(Condition.getQueryWrapper(subjectFeeDetail, SubjectFeeDetailEntity.class));
List<SubjectFeeDetailEntity> list = subjectFeeDetailService.list(Wrappers.<SubjectFeeDetailEntity>lambdaQuery()
.eq(SubjectFeeDetailEntity::getMonth,subjectFeeDetail.get("month"))
.eq(SubjectFeeDetailEntity::getWorkCenterId,subjectFeeDetail.get("workCenterId")));
if(CollectionUtils.isNotEmpty(list)){
Iterator<SubjectFeeDetailEntity> iterator = list.iterator();
while (iterator.hasNext()) {

@ -0,0 +1,125 @@
package org.springblade.desk.cost.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @version 1.0
* @program: jonhon-mes-svr
* @ClassName StStockInoutRecordExcel
* @description: 出入库记录表 Excel实体类
* @autor: WuSiYu
* @create 2026-01-04 11:23
**/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class StStockInoutRecordExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 物料编码
*/
@ColumnWidth(20)
@ExcelProperty("物料编码")
private String goodsCode;
/**
* 物料名称
*/
@ColumnWidth(20)
@ExcelProperty("物料名称")
private String goodsName;
/**
* 批号
*/
@ColumnWidth(20)
@ExcelProperty("批号")
private String piNo;
/**
* 出入库数量
*/
@ColumnWidth(20)
@ExcelProperty("出入库数量")
private Double quantity;
/**
* 金额
*/
@ColumnWidth(20)
@ExcelProperty("金额")
private Double sirMoney;
/**
* 采购单号
*/
@ColumnWidth(20)
@ExcelProperty("采购单号")
private String buyCode;
/**
* 检验单号
*/
@ColumnWidth(20)
@ExcelProperty("检验单号")
private String checkNo;
/**
* 生产标识
*/
@ColumnWidth(20)
@ExcelProperty("生产标识")
private String quantityLevel;
/**
* 过期/报废日期
*/
@ColumnWidth(20)
@ExcelProperty("过期/报废日期")
private Date scrapCycle;
/**
* 炉批号
*/
@ColumnWidth(20)
@ExcelProperty("炉批号")
private String stovePiNo;
/**
* 出入库原因
*/
@ColumnWidth(20)
@ExcelProperty("出入库原因")
private String inOutReason;
/**
* 出入库日期
*/
@ColumnWidth(20)
@ExcelProperty("出入库日期")
private Date inOutDate;
/**
* 业务人员/领用人ID
*/
@ColumnWidth(20)
@ExcelProperty("业务人员/领用人")
private String userName;
/**
* 出入库单号
*/
@ColumnWidth(20)
@ExcelProperty("出入库单号")
private String sirCode;
}

@ -34,7 +34,6 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
@ -52,53 +51,40 @@ public class SubjectFeeDetailExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ColumnWidth(20)
@ExcelProperty("id")
private BigDecimal id;
/**
* 月份
*/
@ColumnWidth(20)
@ExcelProperty("月份")
private String month;
/**
* 作业中心id
* 作业中心名称
*/
@ColumnWidth(20)
@ExcelProperty("作业中心id")
private BigDecimal workCenterId;
@ExcelProperty("作业中心名称")
private String workCenterName;
/**
* 作业中心名称
*/
@ColumnWidth(20)
@ExcelProperty("作业中心名称")
private String workCenterName;
@ExcelProperty("科目名称")
private String subjectName;
/**
* 比例
*/
@ColumnWidth(20)
@ExcelProperty("比例")
private BigDecimal rate;
private Double rate;
/**
* 费用金额
*/
@ColumnWidth(20)
@ExcelProperty("费用金额")
private BigDecimal fee;
/**
* 备注
*/
@ColumnWidth(20)
@ExcelProperty("备注")
private String remarks;
/**
* 是否删除
*/
@ColumnWidth(20)
@ExcelProperty("是否删除")
private Long isDeleted;
private Double fee;
}

@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.desk.cost.excel.CostStatisticsExcel;
import org.springblade.desk.cost.excel.StStockInoutRecordExcel;
import org.springblade.desk.cost.pojo.entity.CostStatisticsEntity;
import org.springblade.desk.cost.pojo.vo.CostStatisticsVO;
@ -70,4 +71,7 @@ public interface CostStatisticsMapper extends BaseMapper<CostStatisticsEntity> {
BigDecimal getMonthOutPutArea(@Param("workCenterId")Long workCenterId,@Param("processId")Long processId,@Param("month")String month);
BigDecimal getMonthOutPutVolume(@Param("workCenterId")Long workCenterId,@Param("processId")Long processId,@Param("month")String month);
List<StStockInoutRecordExcel> exportWorkCenterMaterialCost(@Param("workCenterId")Long workCenterId, @Param("month")String month);
List<StStockInoutRecordExcel> exportAssistantMaterialCost(@Param("month")String month);
}

@ -33,9 +33,10 @@
<where>
is_deleted = 0
<if test="param2.month != null and param2.month != ''">
and `month` = #{param2.month}
and MONTH = #{param2.month}
</if>
</where>
order by work_center_id
</select>
@ -118,4 +119,71 @@
AND to_char( a.FACT_END_TIME, 'yyyy-MM' ) = #{month}
</select>
<select id="exportWorkCenterMaterialCost" resultType="org.springblade.desk.cost.excel.StStockInoutRecordExcel">
SELECT
d.GOODS_CODE,
d.goods_name,
a.pi_no,
a.quantity,
a.SIR_MONEY,
a.BUY_CODE,
a.CHECK_NO,
a.QUANTITY_LEVEL,
a.SCRAP_CYCLE,
a.STOVE_PI_NO,
a.IN_OUT_REASON,
a.IN_OUT_DATE,
c.real_name as "userName",
a.SIR_CODE
FROM
ST_STOCK_INOUT_RECORD a
INNER JOIN (
SELECT DISTINCT
USER_ID,
wc_id
FROM
BS_REL_TEAM_SET_USER a
INNER JOIN BS_CENTER_TEAM b ON a.TEAM_SET_ID = b.TS_ID
WHERE
b.wc_id = #{workCenterId}
AND a.IS_DELETED = 0
AND b.IS_DELETED = 0
) b ON a.USER_ID = b.USER_ID
LEFT JOIN BLADE_USER c on a.user_id = c.id
LEFT JOIN ST_GOODS d on a.goods_id = d.id
WHERE
a.IS_DELETED = 0
AND a.IN_OUT_TYPE = 1
AND to_char( IN_OUT_DATE, 'yyyy-MM' ) = #{month}
AND a.GOODS_ID NOT IN ( SELECT id FROM ST_GOODS WHERE GOODS_CODE IN ( SELECT GOODS_CODE FROM MES_COST_CALCULATION_GOODS ) )
</select>
<select id="exportAssistantMaterialCost" resultType="org.springblade.desk.cost.excel.StStockInoutRecordExcel">
SELECT
d.GOODS_CODE,
d.goods_name,
a.pi_no,
a.quantity,
a.SIR_MONEY,
a.BUY_CODE,
a.CHECK_NO,
a.QUANTITY_LEVEL,
a.SCRAP_CYCLE,
a.STOVE_PI_NO,
a.IN_OUT_REASON,
a.IN_OUT_DATE,
c.real_name as "userName",
a.SIR_CODE
FROM
ST_STOCK_INOUT_RECORD a
LEFT JOIN BLADE_USER c on a.user_id = c.id
LEFT JOIN ST_GOODS d on a.goods_id = d.id
WHERE
a.is_deleted = 0
AND NOT EXISTS ( SELECT 1 FROM BS_REL_TEAM_SET_USER b WHERE b.user_id = a.user_id )
AND to_char( IN_OUT_DATE, 'yyyy-MM' ) = #{month}
AND a.GOODS_ID NOT IN ( SELECT id FROM ST_GOODS WHERE GOODS_CODE IN ( SELECT GOODS_CODE FROM MES_COST_CALCULATION_GOODS ) )
</select>
</mapper>

@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.desk.cost.excel.CostStatisticsExcel;
import org.springblade.desk.cost.excel.StStockInoutRecordExcel;
import org.springblade.desk.cost.pojo.entity.CostStatisticsEntity;
import org.springblade.desk.cost.pojo.vo.CostStatisticsVO;
@ -63,4 +64,8 @@ public interface ICostStatisticsService extends BaseService<CostStatisticsEntity
R costCalculationCheck(String month);
boolean costCalculation(String month);
List<StStockInoutRecordExcel> exportWorkCenterMaterialCost(Long workCenterId, String month);
List<StStockInoutRecordExcel> exportAssistantMaterialCost(String month);
List<StStockInoutRecordExcel> exportMaterialCost(Long workCenterId, String month);
}

@ -37,6 +37,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.cost.excel.CostStatisticsExcel;
import org.springblade.desk.cost.excel.StStockInoutRecordExcel;
import org.springblade.desk.cost.mapper.CostStatisticsMapper;
import org.springblade.desk.cost.pojo.entity.CostCalculationProcessEntity;
import org.springblade.desk.cost.pojo.entity.CostStatisticsEntity;
@ -124,7 +125,6 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl<CostStatisticsMap
BigDecimal monthOutputVolume = BigDecimal.ZERO;
BigDecimal unitCost = BigDecimal.ZERO;
if(CollectionUtils.isNotEmpty(processList)){
String type = processList.get(0).getType();
for(CostCalculationProcessEntity process : processList){
//0-按面积 1-按体积
if("1".equals(process.getType())){
@ -165,6 +165,27 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl<CostStatisticsMap
return true;
}
@Override
public List<StStockInoutRecordExcel> exportWorkCenterMaterialCost(Long workCenterId, String month) {
return baseMapper.exportWorkCenterMaterialCost(workCenterId,month);
}
@Override
public List<StStockInoutRecordExcel> exportAssistantMaterialCost(String month) {
return baseMapper.exportAssistantMaterialCost(month);
}
@Override
public List<StStockInoutRecordExcel> exportMaterialCost(Long workCenterId, String month) {
List<StStockInoutRecordExcel> exportList = new ArrayList<>();
List<StStockInoutRecordExcel> workCenterMaterialCostList = baseMapper.exportWorkCenterMaterialCost(workCenterId,month);
List<StStockInoutRecordExcel> assistantMaterialCostList = baseMapper.exportAssistantMaterialCost(month);
exportList.addAll(workCenterMaterialCostList);
exportList.addAll(assistantMaterialCostList);
return exportList;
}
public BigDecimal getProductCost(WorkCenter workCenter, String month){
//【制造费用】=科目费用中除【辅助人员材料费用】外各作业中心的所有费用的总和
BigDecimal productCost = BigDecimal.ZERO;

Loading…
Cancel
Save