优化标准成本任务执行逻辑
This commit is contained in:
@@ -232,7 +232,7 @@ spring:
|
|||||||
rabbitmq:
|
rabbitmq:
|
||||||
host: 192.168.50.9
|
host: 192.168.50.9
|
||||||
port: 5672
|
port: 5672
|
||||||
virtual-host: /qomoflow-dev
|
virtual-host: /qomoflow-standardcost
|
||||||
username: admin
|
username: admin
|
||||||
password: kncloud
|
password: kncloud
|
||||||
connection-timeout: 5000
|
connection-timeout: 5000
|
||||||
@@ -283,7 +283,8 @@ jeecg:
|
|||||||
webapp: /opt/webapp
|
webapp: /opt/webapp
|
||||||
shiro:
|
shiro:
|
||||||
# excludeUrls: /api/**,/api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
|
# excludeUrls: /api/**,/api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
|
||||||
excludeUrls: /**/**,/**/**/**
|
excludeUrls: /api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
|
||||||
|
#excludeUrls: /**/**,/**/**/**
|
||||||
|
|
||||||
#阿里云oss存储和大鱼短信秘钥配置
|
#阿里云oss存储和大鱼短信秘钥配置
|
||||||
oss:
|
oss:
|
||||||
|
|||||||
+2
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
@@ -25,6 +26,7 @@ import lombok.experimental.Accessors;
|
|||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@Builder
|
||||||
@TableName("app_scene_cost_result_value")
|
@TableName("app_scene_cost_result_value")
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
|||||||
+2
-1
@@ -45,7 +45,8 @@ public class LaborCostParameters extends AbstractParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "人工成本任务";
|
return getLocalParams().toString();
|
||||||
|
// return "人工成本任务";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-10
@@ -17,14 +17,9 @@
|
|||||||
|
|
||||||
package com.zzsmart.qomo.kn.cost.manage.plugin.laborcost;
|
package com.zzsmart.qomo.kn.cost.manage.plugin.laborcost;
|
||||||
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.plugin.task.api.*;
|
||||||
import com.zzsmart.qomo.plugin.task.api.AbstractTask;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskException;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人工成本计算任务
|
* 人工成本计算任务
|
||||||
@@ -59,9 +54,15 @@ public class LaborCostTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
||||||
log.info("Full EmptyTask parameters: {}", emptyParameters);
|
log.info("Full EmptyTask parameters: {}", taskExecutionContext);
|
||||||
|
try {
|
||||||
//setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
StandardCostService.laborCostTask(taskExecutionContext);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//运行失败退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
|
}
|
||||||
|
//运行成功退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+11
-7
@@ -20,11 +20,9 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.manufacturingcost;
|
|||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
||||||
import com.zzsmart.qomo.plugin.task.api.AbstractTask;
|
import com.zzsmart.qomo.plugin.task.api.*;
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskException;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -64,9 +62,15 @@ public class ManufacturingCostTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
||||||
log.info("Full EmptyTask parameters: {}", emptyParameters);
|
log.info("Full EmptyTask parameters: {}", taskRequest);
|
||||||
|
try {
|
||||||
//setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
StandardCostService.manufacturingCostTask(taskRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//运行失败退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
|
}
|
||||||
|
//运行成功退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+11
-7
@@ -20,11 +20,9 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.materialcost;
|
|||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
||||||
import com.zzsmart.qomo.plugin.task.api.AbstractTask;
|
import com.zzsmart.qomo.plugin.task.api.*;
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskException;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -64,9 +62,15 @@ public class MaterialCostTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
||||||
log.info("Full EmptyTask parameters: {}", emptyParameters);
|
log.info("Full EmptyTask parameters: {}", taskRequest);
|
||||||
|
try {
|
||||||
//setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
StandardCostService.materialCostTask(taskRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//运行失败退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
|
}
|
||||||
|
//运行成功退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+9
-12
@@ -17,17 +17,8 @@
|
|||||||
|
|
||||||
package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
|
package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
|
||||||
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.*;
|
import com.zzsmart.qomo.plugin.task.api.*;
|
||||||
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料编号输入任务
|
* 物料编号输入任务
|
||||||
@@ -62,9 +53,15 @@ public class MaterialInputTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
||||||
log.info("Full EmptyTask parameters: {}", emptyParameters);
|
log.info("Full EmptyTask parameters: {}", taskExecutionContext);
|
||||||
|
try {
|
||||||
//setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
StandardCostService.materialInputTask(taskExecutionContext);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//运行失败退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
|
}
|
||||||
|
//运行成功退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+91
-13
@@ -2,21 +2,45 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
|
|||||||
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.service.IHourRateService;
|
||||||
|
import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
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 javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.Date;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class StandardCostService {
|
public class StandardCostService {
|
||||||
|
/**
|
||||||
|
* 物料BOM信息
|
||||||
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
CostMaterialBomMapper costMaterialBomMapper;
|
CostMaterialBomMapper costMaterialBomMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小时费率
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
IHourRateService iHourRateService;
|
||||||
|
/**
|
||||||
|
* 工序
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
CostMaterialProcessHoursService costMaterialProcessHoursService;
|
||||||
|
/**
|
||||||
|
* 标准成本计算结果
|
||||||
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
IAppSceneCostResultValueService iAppSceneCostResultValueService;
|
IAppSceneCostResultValueService iAppSceneCostResultValueService;
|
||||||
public static StandardCostService standardCostService;
|
public static StandardCostService standardCostService;
|
||||||
@@ -25,6 +49,8 @@ public class StandardCostService {
|
|||||||
public void init() {
|
public void init() {
|
||||||
standardCostService = this;
|
standardCostService = this;
|
||||||
standardCostService.costMaterialBomMapper = this.costMaterialBomMapper;
|
standardCostService.costMaterialBomMapper = this.costMaterialBomMapper;
|
||||||
|
standardCostService.iHourRateService = this.iHourRateService;
|
||||||
|
standardCostService.costMaterialProcessHoursService = this.costMaterialProcessHoursService;
|
||||||
standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService;
|
standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,25 +58,35 @@ public class StandardCostService {
|
|||||||
/**
|
/**
|
||||||
* 物料编号输入任务
|
* 物料编号输入任务
|
||||||
*/
|
*/
|
||||||
public static void materialInputTask(String materialCode) {
|
public static void materialInputTask(TaskExecutionContext parameters) {
|
||||||
|
try {
|
||||||
|
//获取最上层的物料号
|
||||||
|
String materialCode = "";
|
||||||
|
//获取任务类型
|
||||||
|
String taskType = "";
|
||||||
|
//获取任务代码
|
||||||
|
String taskCode = "";
|
||||||
|
//获取流程id
|
||||||
|
String flowInstanceId = "1";
|
||||||
//1.查询出所有满足物料编号的物料(BOM物料)
|
//1.查询出所有满足物料编号的物料(BOM物料)
|
||||||
String sql = "select * from app_scene_cost_material_bom ";
|
String sql = "select * from app_scene_cost_material_bom ";
|
||||||
List<CostMaterialBom> list = standardCostService.costMaterialBomMapper.customSelect(sql);
|
List<CostMaterialBom> list = standardCostService.costMaterialBomMapper.customSelect(sql);
|
||||||
log.info("Full EmptyTask list: {}", list);
|
log.info("Full EmptyTask list: {}", list);
|
||||||
//2.把查询的结果存放在临时表里(表命名规则:前缀_流程id_组件code)
|
//2.把查询的结果存放在临时表里(表命名规则:前缀_流程id_组件code)
|
||||||
AppSceneCostResultValue appSceneCostResultValue = new AppSceneCostResultValue();
|
for (int i = 0; list != null && i < list.size(); i++) {
|
||||||
|
CostMaterialBom material = list.get(i);
|
||||||
appSceneCostResultValue.setInstanceCode("11");
|
AppSceneCostResultValue appSceneCostResultValue = AppSceneCostResultValue.builder().belongTopMaterialNo(materialCode).marterialNo(material.getMaterialCode()).parentMarterialNo(material.getParentMaterialCode()).taskType(taskType).taskCode(taskCode).flowInstanceId(flowInstanceId).build();
|
||||||
appSceneCostResultValue.setCountValue("11");
|
|
||||||
appSceneCostResultValue.setCreateTime(new Date());
|
|
||||||
standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue);
|
standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料成本任务
|
* 物料成本任务
|
||||||
*/
|
*/
|
||||||
public static void materialCostTask(String materialCode) {
|
public static void materialCostTask(TaskExecutionContext parameters) {
|
||||||
//1.查询出物料编号对应的下所有的BOM信息
|
//1.查询出物料编号对应的下所有的BOM信息
|
||||||
//2.计算出所有的单个物料的物料成本
|
//2.计算出所有的单个物料的物料成本
|
||||||
//2.1查询出物料的单价和采购数量
|
//2.1查询出物料的单价和采购数量
|
||||||
@@ -60,17 +96,59 @@ public class StandardCostService {
|
|||||||
/**
|
/**
|
||||||
* 人工成本任务
|
* 人工成本任务
|
||||||
*/
|
*/
|
||||||
public static void laborCostTask(String materialCode) {
|
public static void laborCostTask(TaskExecutionContext parameters) {
|
||||||
|
try {
|
||||||
|
//获取最上层的物料号
|
||||||
|
String topMaterialCode = "";
|
||||||
|
//获取任务类型
|
||||||
|
String taskType = "";
|
||||||
|
//获取上一节点任务类型
|
||||||
|
String lastTaskType = "LaborCost";
|
||||||
|
//获取任务代码
|
||||||
|
String taskCode = "";
|
||||||
|
//获取流程id
|
||||||
|
String flowInstanceId = "1";
|
||||||
|
//人工费率
|
||||||
|
BigDecimal laborRate = new BigDecimal("0.0");
|
||||||
//1.查询出物料编号对应的下所有的BOM信息
|
//1.查询出物料编号对应的下所有的BOM信息
|
||||||
|
List<AppSceneCostResultValue> list = standardCostService.iAppSceneCostResultValueService.getResultValueByTopMaterialNo(topMaterialCode, lastTaskType, flowInstanceId);
|
||||||
//2.计算出所有的单个物料的人工成本
|
//2.计算出所有的单个物料的人工成本
|
||||||
//2.1查询出物料的人员工时和人工费率
|
//2.1查询出物料的人员工时和人工小时费率(涉及:小时费率表和工序表)
|
||||||
|
List<String> MarterialNoList = new ArrayList<>();
|
||||||
|
if (list != null && list.size() > 0) {
|
||||||
|
MarterialNoList = list.stream().filter(s -> s.getMarterialNo() != null).map(AppSceneCostResultValue::getMarterialNo).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
//查询工序工时
|
||||||
|
Map<String, List<CostMaterialProcessHours>> processHoursMap = standardCostService.costMaterialProcessHoursService.getProcessHoursByMaterialNo(MarterialNoList);
|
||||||
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
AppSceneCostResultValue appSceneCostResultValue = list.get(i);
|
||||||
|
String marterialNo = appSceneCostResultValue.getMarterialNo();
|
||||||
|
if (marterialNo != null) {
|
||||||
|
BigDecimal totalLaborCost = new BigDecimal("0.0");
|
||||||
|
List<CostMaterialProcessHours> costMaterialProcessHours = processHoursMap.get(marterialNo);
|
||||||
|
if (costMaterialProcessHours != null && costMaterialProcessHours.size() > 0) {
|
||||||
|
for (int j = 0; j < costMaterialProcessHours.size(); j++) {
|
||||||
|
CostMaterialProcessHours processHours = costMaterialProcessHours.get(j);
|
||||||
|
BigDecimal laborHours = processHours.getLaborHours();
|
||||||
|
//计算总人工成本
|
||||||
|
totalLaborCost.add(laborHours.multiply(laborRate));
|
||||||
|
}
|
||||||
|
}
|
||||||
//2.2计算出人工成本并存储到成本结果数据表中
|
//2.2计算出人工成本并存储到成本结果数据表中
|
||||||
|
AppSceneCostResultValue resultValue = AppSceneCostResultValue.builder().belongTopMaterialNo(topMaterialCode).marterialNo(marterialNo).parentMarterialNo(appSceneCostResultValue.getParentMarterialNo()).taskType(taskType).taskCode(taskCode).flowInstanceId(flowInstanceId).countValue(totalLaborCost + "").build();
|
||||||
|
standardCostService.iAppSceneCostResultValueService.save(resultValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 制造费用成本任务
|
* 制造费用成本任务
|
||||||
*/
|
*/
|
||||||
public static void manufacturingCostTask(String materialCode) {
|
public static void manufacturingCostTask(TaskExecutionContext parameters) {
|
||||||
//1.查询出物料编号对应的下所有的BOM信息
|
//1.查询出物料编号对应的下所有的BOM信息
|
||||||
//2.根据费用类型进行不同的费用计算
|
//2.根据费用类型进行不同的费用计算
|
||||||
//2.1机器折旧费(机器工时*费率)
|
//2.1机器折旧费(机器工时*费率)
|
||||||
@@ -83,7 +161,7 @@ public class StandardCostService {
|
|||||||
/**
|
/**
|
||||||
* 标准成本计算任务
|
* 标准成本计算任务
|
||||||
*/
|
*/
|
||||||
public static void standardCostTask(String materialCode) {
|
public static void standardCostTask(TaskExecutionContext parameters) {
|
||||||
//1.查询出物料编号对应的下所有的BOM信息
|
//1.查询出物料编号对应的下所有的BOM信息
|
||||||
//2.计算出所有的单个物料的本阶的标准成本(标准成本=物料成本+人工成本+制造费用)
|
//2.计算出所有的单个物料的本阶的标准成本(标准成本=物料成本+人工成本+制造费用)
|
||||||
//3.计算出所有的单个物料的累计标准成本
|
//3.计算出所有的单个物料的累计标准成本
|
||||||
|
|||||||
+11
-7
@@ -18,11 +18,9 @@
|
|||||||
package com.zzsmart.qomo.kn.cost.manage.plugin.standardcost;
|
package com.zzsmart.qomo.kn.cost.manage.plugin.standardcost;
|
||||||
|
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
|
||||||
|
import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
||||||
import com.zzsmart.qomo.plugin.task.api.AbstractTask;
|
import com.zzsmart.qomo.plugin.task.api.*;
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskException;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
|
|
||||||
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
@@ -60,9 +58,15 @@ public class StandardCostTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
public void handle(TaskCallBack taskCallBack) throws TaskException {
|
||||||
log.info("Full EmptyTask parameters: {}", emptyParameters);
|
log.info("Full EmptyTask parameters: {}", taskRequest);
|
||||||
|
try {
|
||||||
//setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
StandardCostService.standardCostTask(taskRequest);
|
||||||
|
} catch (Exception e) {
|
||||||
|
//运行失败退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
|
||||||
|
}
|
||||||
|
//运行成功退出
|
||||||
|
setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+7
-1
@@ -3,6 +3,9 @@ package com.zzsmart.qomo.kn.cost.manage.service;
|
|||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 物料工时工序表 服务类
|
* 物料工时工序表 服务类
|
||||||
@@ -12,5 +15,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
* @since 2024-06-19
|
* @since 2024-06-19
|
||||||
*/
|
*/
|
||||||
public interface CostMaterialProcessHoursService extends IService<CostMaterialProcessHours> {
|
public interface CostMaterialProcessHoursService extends IService<CostMaterialProcessHours> {
|
||||||
|
/**
|
||||||
|
* 查询满足物料编号的工时工序
|
||||||
|
*/
|
||||||
|
Map<String,List<CostMaterialProcessHours>> getProcessHoursByMaterialNo(List<String> materialNos);
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-1
@@ -3,6 +3,8 @@ package com.zzsmart.qomo.kn.cost.manage.service;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: app_scene_cost_result_value
|
* @Description: app_scene_cost_result_value
|
||||||
* @Author: jeecg-boot
|
* @Author: jeecg-boot
|
||||||
@@ -10,5 +12,10 @@ import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
|||||||
* @Version: V1.0
|
* @Version: V1.0
|
||||||
*/
|
*/
|
||||||
public interface IAppSceneCostResultValueService extends IService<AppSceneCostResultValue> {
|
public interface IAppSceneCostResultValueService extends IService<AppSceneCostResultValue> {
|
||||||
|
/**
|
||||||
|
* 根据顶级物料编码查询满足条件的结果值
|
||||||
|
* @param topMaterialCode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<AppSceneCostResultValue> getResultValueByTopMaterialNo(String topMaterialCode,String lastTaskType,String flowInstanceId);
|
||||||
}
|
}
|
||||||
|
|||||||
+25
@@ -1,12 +1,17 @@
|
|||||||
package com.zzsmart.qomo.kn.cost.manage.service.impl;
|
package com.zzsmart.qomo.kn.cost.manage.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostResultValueMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostResultValueMapper;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: app_scene_cost_result_value
|
* @Description: app_scene_cost_result_value
|
||||||
@@ -16,5 +21,25 @@ import org.springframework.stereotype.Service;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class AppSceneCostResultValueServiceImpl extends ServiceImpl<AppSceneCostResultValueMapper, AppSceneCostResultValue> implements IAppSceneCostResultValueService {
|
public class AppSceneCostResultValueServiceImpl extends ServiceImpl<AppSceneCostResultValueMapper, AppSceneCostResultValue> implements IAppSceneCostResultValueService {
|
||||||
|
@Autowired
|
||||||
|
private AppSceneCostResultValueMapper appSceneCostResultValueMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据顶级物料编码查询满足条件的结果值
|
||||||
|
*
|
||||||
|
* @param topMaterialCode
|
||||||
|
* @param lastTaskType
|
||||||
|
* @param flowInstanceId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<AppSceneCostResultValue> getResultValueByTopMaterialNo(String topMaterialCode, String lastTaskType, String flowInstanceId) {
|
||||||
|
List<AppSceneCostResultValue> result = new ArrayList<>();
|
||||||
|
QueryWrapper<AppSceneCostResultValue> queryWrapper = new QueryWrapper<>();
|
||||||
|
if (topMaterialCode != null && !topMaterialCode.equals("") && lastTaskType != null && !lastTaskType.equals("") && flowInstanceId != null && !flowInstanceId.equals("")) {
|
||||||
|
queryWrapper.eq("belong_top_material_no", topMaterialCode).eq("task_type", lastTaskType).eq("flow_instance_id", flowInstanceId);
|
||||||
|
result = appSceneCostResultValueMapper.selectList(queryWrapper);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+38
-1
@@ -1,11 +1,18 @@
|
|||||||
package com.zzsmart.qomo.kn.cost.manage.service.impl;
|
package com.zzsmart.qomo.kn.cost.manage.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
|
import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialProcessHoursMapper;
|
import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialProcessHoursMapper;
|
||||||
import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
|
import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 物料工时工序表 服务实现类
|
* 物料工时工序表 服务实现类
|
||||||
@@ -16,5 +23,35 @@ import org.springframework.stereotype.Service;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class CostMaterialProcessHoursServiceImpl extends ServiceImpl<CostMaterialProcessHoursMapper, CostMaterialProcessHours> implements CostMaterialProcessHoursService {
|
public class CostMaterialProcessHoursServiceImpl extends ServiceImpl<CostMaterialProcessHoursMapper, CostMaterialProcessHours> implements CostMaterialProcessHoursService {
|
||||||
|
@Autowired
|
||||||
|
CostMaterialProcessHoursMapper costMaterialProcessHoursMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询满足物料编号的工时工序
|
||||||
|
*
|
||||||
|
* @param materialNos
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, List<CostMaterialProcessHours>> getProcessHoursByMaterialNo(List<String> materialNos) {
|
||||||
|
Map<String, List<CostMaterialProcessHours>> map = new HashMap<>();
|
||||||
|
QueryWrapper<CostMaterialProcessHours> queryWrapper = new QueryWrapper();
|
||||||
|
if (materialNos != null && materialNos.size() > 0) {
|
||||||
|
queryWrapper.in("material_code", materialNos);
|
||||||
|
List<CostMaterialProcessHours> costMaterialProcessHours = costMaterialProcessHoursMapper.selectList(queryWrapper);
|
||||||
|
for (int i = 0; i < costMaterialProcessHours.size(); i++) {
|
||||||
|
CostMaterialProcessHours costMaterialProcessHours1 = costMaterialProcessHours.get(i);
|
||||||
|
String materialCode = costMaterialProcessHours1.getMaterialCode();
|
||||||
|
if (map.containsKey(materialCode)) {
|
||||||
|
List<CostMaterialProcessHours> list = map.get(materialCode);
|
||||||
|
list.add(costMaterialProcessHours1);
|
||||||
|
map.put(materialCode, list);
|
||||||
|
} else {
|
||||||
|
List<CostMaterialProcessHours> list = new ArrayList<>();
|
||||||
|
list.add(costMaterialProcessHours1);
|
||||||
|
map.put(materialCode, list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user