ソースを参照

优化标准成本任务执行逻辑

wangqiong 1 年間 前
コミット
240b7134e5
共有14 個のファイルを変更した240 個の追加73 個の削除を含む
  1. 3
    2
      qomo-kn-cost-manage-start/src/main/resources/application-dev.yml
  2. 2
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/AppSceneCostResultValue.java
  3. 1
    1
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostResultValueMapper.java
  4. 2
    1
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/laborcost/LaborCostParameters.java
  5. 11
    10
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/laborcost/LaborCostTask.java
  6. 11
    7
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/manufacturingcost/ManufacturingCostTask.java
  7. 11
    7
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialcost/MaterialCostTask.java
  8. 9
    12
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/MaterialInputTask.java
  9. 100
    22
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/StandardCostService.java
  10. 11
    7
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/standardcost/StandardCostTask.java
  11. 7
    1
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostMaterialProcessHoursService.java
  12. 8
    1
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostResultValueService.java
  13. 25
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostResultValueServiceImpl.java
  14. 39
    2
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostMaterialProcessHoursServiceImpl.java

+ 3
- 2
qomo-kn-cost-manage-start/src/main/resources/application-dev.yml ファイルの表示

232
   rabbitmq:
232
   rabbitmq:
233
     host: 192.168.50.9
233
     host: 192.168.50.9
234
     port: 5672
234
     port: 5672
235
-    virtual-host: /qomoflow-dev
235
+    virtual-host: /qomoflow-standardcost
236
     username: admin
236
     username: admin
237
     password: kncloud
237
     password: kncloud
238
     connection-timeout: 5000
238
     connection-timeout: 5000
283
     webapp: /opt/webapp
283
     webapp: /opt/webapp
284
   shiro:
284
   shiro:
285
 #    excludeUrls: /api/**,/api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
285
 #    excludeUrls: /api/**,/api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
286
-    excludeUrls: /**/**,/**/**/**
286
+    excludeUrls: /api/internalService/**,/test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/sys/sysDepart/**,/taskSocket/**,/flowSocket/**,/dataCheck/**
287
+    #excludeUrls: /**/**,/**/**/**
287
 
288
 
288
   #阿里云oss存储和大鱼短信秘钥配置
289
   #阿里云oss存储和大鱼短信秘钥配置
289
   oss:
290
   oss:

+ 2
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/AppSceneCostResultValue.java ファイルの表示

8
 import com.baomidou.mybatisplus.annotation.TableId;
8
 import com.baomidou.mybatisplus.annotation.TableId;
9
 import com.baomidou.mybatisplus.annotation.TableName;
9
 import com.baomidou.mybatisplus.annotation.TableName;
10
 import com.baomidou.mybatisplus.annotation.TableLogic;
10
 import com.baomidou.mybatisplus.annotation.TableLogic;
11
+import lombok.Builder;
11
 import lombok.Data;
12
 import lombok.Data;
12
 import com.fasterxml.jackson.annotation.JsonFormat;
13
 import com.fasterxml.jackson.annotation.JsonFormat;
13
 import org.springframework.format.annotation.DateTimeFormat;
14
 import org.springframework.format.annotation.DateTimeFormat;
25
  * @Version: V1.0
26
  * @Version: V1.0
26
  */
27
  */
27
 @Data
28
 @Data
29
+@Builder
28
 @TableName("app_scene_cost_result_value")
30
 @TableName("app_scene_cost_result_value")
29
 @Accessors(chain = true)
31
 @Accessors(chain = true)
30
 @EqualsAndHashCode(callSuper = false)
32
 @EqualsAndHashCode(callSuper = false)

+ 1
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostResultValueMapper.java ファイルの表示

7
 /**
7
 /**
8
  * @Description: app_scene_cost_result_value
8
  * @Description: app_scene_cost_result_value
9
  * @Author: jeecg-boot
9
  * @Author: jeecg-boot
10
- * @Date:   2024-07-23
10
+ * @Date: 2024-07-23
11
  * @Version: V1.0
11
  * @Version: V1.0
12
  */
12
  */
13
 public interface AppSceneCostResultValueMapper extends BaseMapper<AppSceneCostResultValue> {
13
 public interface AppSceneCostResultValueMapper extends BaseMapper<AppSceneCostResultValue> {

+ 2
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/laborcost/LaborCostParameters.java ファイルの表示

45
 
45
 
46
     @Override
46
     @Override
47
     public String toString() {
47
     public String toString() {
48
-        return "人工成本任务";
48
+        return getLocalParams().toString();
49
+//        return "人工成本任务";
49
     }
50
     }
50
 
51
 
51
 }
52
 }

+ 11
- 10
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/laborcost/LaborCostTask.java ファイルの表示

17
 
17
 
18
 package com.zzsmart.qomo.kn.cost.manage.plugin.laborcost;
18
 package com.zzsmart.qomo.kn.cost.manage.plugin.laborcost;
19
 
19
 
20
-import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
21
-import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
22
-import com.zzsmart.qomo.plugin.task.api.AbstractTask;
23
-import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
24
-import com.zzsmart.qomo.plugin.task.api.TaskException;
25
-import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
20
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
21
+import com.zzsmart.qomo.plugin.task.api.*;
26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
22
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
27
-import org.springframework.beans.factory.annotation.Autowired;
28
 
23
 
29
 /**
24
 /**
30
  * 人工成本计算任务
25
  * 人工成本计算任务
59
 
54
 
60
     @Override
55
     @Override
61
     public void handle(TaskCallBack taskCallBack) throws TaskException {
56
     public void handle(TaskCallBack taskCallBack) throws TaskException {
62
-        log.info("Full EmptyTask parameters: {}", emptyParameters);
63
-
64
-        //setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
57
+        log.info("Full EmptyTask parameters: {}", taskExecutionContext);
58
+        try {
59
+            StandardCostService.laborCostTask(taskExecutionContext);
60
+        } catch (Exception e) {
61
+            //运行失败退出
62
+            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
63
+        }
64
+        //运行成功退出
65
+        setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
65
     }
66
     }
66
 
67
 
67
     @Override
68
     @Override

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/manufacturingcost/ManufacturingCostTask.java ファイルの表示

20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
23
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
23
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
24
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
24
-import com.zzsmart.qomo.plugin.task.api.AbstractTask;
25
-import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
26
-import com.zzsmart.qomo.plugin.task.api.TaskException;
27
-import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
25
+import com.zzsmart.qomo.plugin.task.api.*;
28
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
29
 import org.springframework.beans.factory.annotation.Autowired;
27
 import org.springframework.beans.factory.annotation.Autowired;
30
 
28
 
64
 
62
 
65
     @Override
63
     @Override
66
     public void handle(TaskCallBack taskCallBack) throws TaskException {
64
     public void handle(TaskCallBack taskCallBack) throws TaskException {
67
-        log.info("Full EmptyTask parameters: {}", emptyParameters);
68
-
69
-        //setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
65
+        log.info("Full EmptyTask parameters: {}", taskRequest);
66
+        try {
67
+            StandardCostService.manufacturingCostTask(taskRequest);
68
+        } catch (Exception e) {
69
+            //运行失败退出
70
+            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
71
+        }
72
+        //运行成功退出
73
+        setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
70
     }
74
     }
71
 
75
 
72
     @Override
76
     @Override

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialcost/MaterialCostTask.java ファイルの表示

20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
23
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
23
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
24
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
24
-import com.zzsmart.qomo.plugin.task.api.AbstractTask;
25
-import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
26
-import com.zzsmart.qomo.plugin.task.api.TaskException;
27
-import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
25
+import com.zzsmart.qomo.plugin.task.api.*;
28
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
29
 import org.springframework.beans.factory.annotation.Autowired;
27
 import org.springframework.beans.factory.annotation.Autowired;
30
 
28
 
64
 
62
 
65
     @Override
63
     @Override
66
     public void handle(TaskCallBack taskCallBack) throws TaskException {
64
     public void handle(TaskCallBack taskCallBack) throws TaskException {
67
-        log.info("Full EmptyTask parameters: {}", emptyParameters);
68
-
69
-        //setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
65
+        log.info("Full EmptyTask parameters: {}", taskRequest);
66
+        try {
67
+            StandardCostService.materialCostTask(taskRequest);
68
+        } catch (Exception e) {
69
+            //运行失败退出
70
+            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
71
+        }
72
+        //运行成功退出
73
+        setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
70
     }
74
     }
71
 
75
 
72
     @Override
76
     @Override

+ 9
- 12
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/MaterialInputTask.java ファイルの表示

17
 
17
 
18
 package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
18
 package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
19
 
19
 
20
-import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
21
-import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
22
-import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
23
-import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
24
 import com.zzsmart.qomo.plugin.task.api.*;
20
 import com.zzsmart.qomo.plugin.task.api.*;
25
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
21
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
26
-import org.springframework.beans.factory.annotation.Autowired;
27
-import org.springframework.stereotype.Service;
28
-
29
-import java.util.Date;
30
-import java.util.List;
31
 
22
 
32
 /**
23
 /**
33
  * 物料编号输入任务
24
  * 物料编号输入任务
62
 
53
 
63
     @Override
54
     @Override
64
     public void handle(TaskCallBack taskCallBack) throws TaskException {
55
     public void handle(TaskCallBack taskCallBack) throws TaskException {
65
-        log.info("Full EmptyTask parameters: {}", emptyParameters);
66
-
67
-        //setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
56
+        log.info("Full EmptyTask parameters: {}", taskExecutionContext);
57
+        try {
58
+            StandardCostService.materialInputTask(taskExecutionContext);
59
+        } catch (Exception e) {
60
+            //运行失败退出
61
+            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
62
+        }
63
+        //运行成功退出
64
+        setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
68
     }
65
     }
69
 
66
 
70
     @Override
67
     @Override

+ 100
- 22
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/StandardCostService.java ファイルの表示

2
 
2
 
3
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
4
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
4
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
5
+import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
5
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
6
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
7
+import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
6
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
8
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
9
+import com.zzsmart.qomo.kn.cost.manage.service.IHourRateService;
10
+import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
7
 import lombok.extern.slf4j.Slf4j;
11
 import lombok.extern.slf4j.Slf4j;
8
 import org.springframework.beans.factory.annotation.Autowired;
12
 import org.springframework.beans.factory.annotation.Autowired;
9
 import org.springframework.stereotype.Service;
13
 import org.springframework.stereotype.Service;
10
 
14
 
11
 import javax.annotation.PostConstruct;
15
 import javax.annotation.PostConstruct;
12
-import java.util.Date;
16
+import java.math.BigDecimal;
17
+import java.util.ArrayList;
13
 import java.util.List;
18
 import java.util.List;
19
+import java.util.Map;
20
+import java.util.stream.Collectors;
14
 
21
 
15
 @Service
22
 @Service
16
 @Slf4j
23
 @Slf4j
17
 public class StandardCostService {
24
 public class StandardCostService {
25
+    /**
26
+     * 物料BOM信息
27
+     */
18
     @Autowired
28
     @Autowired
19
     CostMaterialBomMapper costMaterialBomMapper;
29
     CostMaterialBomMapper costMaterialBomMapper;
30
+
31
+    /**
32
+     * 小时费率
33
+     */
34
+    @Autowired
35
+    IHourRateService iHourRateService;
36
+    /**
37
+     * 工序
38
+     */
39
+    @Autowired
40
+    CostMaterialProcessHoursService costMaterialProcessHoursService;
41
+    /**
42
+     * 标准成本计算结果
43
+     */
20
     @Autowired
44
     @Autowired
21
     IAppSceneCostResultValueService iAppSceneCostResultValueService;
45
     IAppSceneCostResultValueService iAppSceneCostResultValueService;
22
     public static StandardCostService standardCostService;
46
     public static StandardCostService standardCostService;
25
     public void init() {
49
     public void init() {
26
         standardCostService = this;
50
         standardCostService = this;
27
         standardCostService.costMaterialBomMapper = this.costMaterialBomMapper;
51
         standardCostService.costMaterialBomMapper = this.costMaterialBomMapper;
52
+        standardCostService.iHourRateService = this.iHourRateService;
53
+        standardCostService.costMaterialProcessHoursService = this.costMaterialProcessHoursService;
28
         standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService;
54
         standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService;
29
     }
55
     }
30
 
56
 
32
     /**
58
     /**
33
      * 物料编号输入任务
59
      * 物料编号输入任务
34
      */
60
      */
35
-    public static void materialInputTask(String materialCode) {
36
-        //1.查询出所有满足物料编号的物料(BOM物料)
37
-        String sql = "select * from app_scene_cost_material_bom ";
38
-        List<CostMaterialBom> list = standardCostService.costMaterialBomMapper.customSelect(sql);
39
-        log.info("Full EmptyTask list: {}", list);
40
-        //2.把查询的结果存放在临时表里(表命名规则:前缀_流程id_组件code)
41
-        AppSceneCostResultValue appSceneCostResultValue = new AppSceneCostResultValue();
42
-
43
-        appSceneCostResultValue.setInstanceCode("11");
44
-        appSceneCostResultValue.setCountValue("11");
45
-        appSceneCostResultValue.setCreateTime(new Date());
46
-        standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue);
47
-
61
+    public static void materialInputTask(TaskExecutionContext parameters) {
62
+        try {
63
+            //获取最上层的物料号
64
+            String materialCode = "";
65
+            //获取任务类型
66
+            String taskType = "";
67
+            //获取任务代码
68
+            String taskCode = "";
69
+            //获取流程id
70
+            String flowInstanceId = "1";
71
+            //1.查询出所有满足物料编号的物料(BOM物料)
72
+            String sql = "select * from app_scene_cost_material_bom ";
73
+            List<CostMaterialBom> list = standardCostService.costMaterialBomMapper.customSelect(sql);
74
+            log.info("Full EmptyTask list: {}", list);
75
+            //2.把查询的结果存放在临时表里(表命名规则:前缀_流程id_组件code)
76
+            for (int i = 0; list != null && i < list.size(); i++) {
77
+                CostMaterialBom material = list.get(i);
78
+                AppSceneCostResultValue appSceneCostResultValue = AppSceneCostResultValue.builder().belongTopMaterialNo(materialCode).marterialNo(material.getMaterialCode()).parentMarterialNo(material.getParentMaterialCode()).taskType(taskType).taskCode(taskCode).flowInstanceId(flowInstanceId).build();
79
+                standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue);
80
+            }
81
+        } catch (Exception e) {
82
+            throw new RuntimeException(e);
83
+        }
48
     }
84
     }
49
 
85
 
50
     /**
86
     /**
51
      * 物料成本任务
87
      * 物料成本任务
52
      */
88
      */
53
-    public static void materialCostTask(String materialCode) {
89
+    public static void materialCostTask(TaskExecutionContext parameters) {
54
         //1.查询出物料编号对应的下所有的BOM信息
90
         //1.查询出物料编号对应的下所有的BOM信息
55
         //2.计算出所有的单个物料的物料成本
91
         //2.计算出所有的单个物料的物料成本
56
         //2.1查询出物料的单价和采购数量
92
         //2.1查询出物料的单价和采购数量
60
     /**
96
     /**
61
      * 人工成本任务
97
      * 人工成本任务
62
      */
98
      */
63
-    public static void laborCostTask(String materialCode) {
64
-        //1.查询出物料编号对应的下所有的BOM信息
65
-        //2.计算出所有的单个物料的人工成本
66
-        //2.1查询出物料的人员工时和人工费率
67
-        //2.2计算出人工成本并存储到成本结果数据表中
99
+    public static void laborCostTask(TaskExecutionContext parameters) {
100
+        try {
101
+            //获取最上层的物料号
102
+            String topMaterialCode = "";
103
+            //获取任务类型
104
+            String taskType = "";
105
+            //获取上一节点任务类型
106
+            String lastTaskType = "LaborCost";
107
+            //获取任务代码
108
+            String taskCode = "";
109
+            //获取流程id
110
+            String flowInstanceId = "1";
111
+            //人工费率
112
+            BigDecimal laborRate = new BigDecimal("0.0");
113
+            //1.查询出物料编号对应的下所有的BOM信息
114
+            List<AppSceneCostResultValue> list = standardCostService.iAppSceneCostResultValueService.getResultValueByTopMaterialNo(topMaterialCode, lastTaskType, flowInstanceId);
115
+            //2.计算出所有的单个物料的人工成本
116
+            //2.1查询出物料的人员工时和人工小时费率(涉及:小时费率表和工序表)
117
+            List<String> MarterialNoList = new ArrayList<>();
118
+            if (list != null && list.size() > 0) {
119
+                MarterialNoList = list.stream().filter(s -> s.getMarterialNo() != null).map(AppSceneCostResultValue::getMarterialNo).collect(Collectors.toList());
120
+            }
121
+            //查询工序工时
122
+            Map<String, List<CostMaterialProcessHours>> processHoursMap = standardCostService.costMaterialProcessHoursService.getProcessHoursByMaterialNo(MarterialNoList);
123
+            for (int i = 0; i < list.size(); i++) {
124
+                AppSceneCostResultValue appSceneCostResultValue = list.get(i);
125
+                String marterialNo = appSceneCostResultValue.getMarterialNo();
126
+                if (marterialNo != null) {
127
+                    BigDecimal totalLaborCost = new BigDecimal("0.0");
128
+                    List<CostMaterialProcessHours> costMaterialProcessHours = processHoursMap.get(marterialNo);
129
+                    if (costMaterialProcessHours != null && costMaterialProcessHours.size() > 0) {
130
+                        for (int j = 0; j < costMaterialProcessHours.size(); j++) {
131
+                            CostMaterialProcessHours processHours = costMaterialProcessHours.get(j);
132
+                            BigDecimal laborHours = processHours.getLaborHours();
133
+                            //计算总人工成本
134
+                            totalLaborCost.add(laborHours.multiply(laborRate));
135
+                        }
136
+                    }
137
+                    //2.2计算出人工成本并存储到成本结果数据表中
138
+                    AppSceneCostResultValue resultValue = AppSceneCostResultValue.builder().belongTopMaterialNo(topMaterialCode).marterialNo(marterialNo).parentMarterialNo(appSceneCostResultValue.getParentMarterialNo()).taskType(taskType).taskCode(taskCode).flowInstanceId(flowInstanceId).countValue(totalLaborCost + "").build();
139
+                    standardCostService.iAppSceneCostResultValueService.save(resultValue);
140
+                }
141
+            }
142
+        } catch (Exception e) {
143
+            throw new RuntimeException(e);
144
+        }
145
+
68
     }
146
     }
69
 
147
 
70
     /**
148
     /**
71
      * 制造费用成本任务
149
      * 制造费用成本任务
72
      */
150
      */
73
-    public static void manufacturingCostTask(String materialCode) {
151
+    public static void manufacturingCostTask(TaskExecutionContext parameters) {
74
         //1.查询出物料编号对应的下所有的BOM信息
152
         //1.查询出物料编号对应的下所有的BOM信息
75
         //2.根据费用类型进行不同的费用计算
153
         //2.根据费用类型进行不同的费用计算
76
         //2.1机器折旧费(机器工时*费率)
154
         //2.1机器折旧费(机器工时*费率)
83
     /**
161
     /**
84
      * 标准成本计算任务
162
      * 标准成本计算任务
85
      */
163
      */
86
-    public static void standardCostTask(String materialCode) {
164
+    public static void standardCostTask(TaskExecutionContext parameters) {
87
         //1.查询出物料编号对应的下所有的BOM信息
165
         //1.查询出物料编号对应的下所有的BOM信息
88
         //2.计算出所有的单个物料的本阶的标准成本(标准成本=物料成本+人工成本+制造费用)
166
         //2.计算出所有的单个物料的本阶的标准成本(标准成本=物料成本+人工成本+制造费用)
89
         //3.计算出所有的单个物料的累计标准成本
167
         //3.计算出所有的单个物料的累计标准成本

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/standardcost/StandardCostTask.java ファイルの表示

18
 package com.zzsmart.qomo.kn.cost.manage.plugin.standardcost;
18
 package com.zzsmart.qomo.kn.cost.manage.plugin.standardcost;
19
 
19
 
20
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
20
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
21
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
21
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
22
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
22
-import com.zzsmart.qomo.plugin.task.api.AbstractTask;
23
-import com.zzsmart.qomo.plugin.task.api.TaskCallBack;
24
-import com.zzsmart.qomo.plugin.task.api.TaskException;
25
-import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext;
23
+import com.zzsmart.qomo.plugin.task.api.*;
26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
24
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
27
 import org.springframework.beans.factory.annotation.Autowired;
25
 import org.springframework.beans.factory.annotation.Autowired;
28
 
26
 
60
 
58
 
61
     @Override
59
     @Override
62
     public void handle(TaskCallBack taskCallBack) throws TaskException {
60
     public void handle(TaskCallBack taskCallBack) throws TaskException {
63
-        log.info("Full EmptyTask parameters: {}", emptyParameters);
64
-
65
-        //setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
61
+        log.info("Full EmptyTask parameters: {}", taskRequest);
62
+        try {
63
+            StandardCostService.standardCostTask(taskRequest);
64
+        } catch (Exception e) {
65
+            //运行失败退出
66
+            setExitStatusCode(TaskConstants.EXIT_CODE_FAILURE);
67
+        }
68
+        //运行成功退出
69
+        setExitStatusCode(TaskConstants.EXIT_CODE_SUCCESS);
66
     }
70
     }
67
 
71
 
68
     @Override
72
     @Override

+ 7
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostMaterialProcessHoursService.java ファイルの表示

3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
4
 import com.baomidou.mybatisplus.extension.service.IService;
4
 import com.baomidou.mybatisplus.extension.service.IService;
5
 
5
 
6
+import java.util.List;
7
+import java.util.Map;
8
+
6
 /**
9
 /**
7
  * <p>
10
  * <p>
8
  * 物料工时工序表 服务类
11
  * 物料工时工序表 服务类
12
  * @since 2024-06-19
15
  * @since 2024-06-19
13
  */
16
  */
14
 public interface CostMaterialProcessHoursService extends IService<CostMaterialProcessHours> {
17
 public interface CostMaterialProcessHoursService extends IService<CostMaterialProcessHours> {
15
-
18
+/**
19
+ * 查询满足物料编号的工时工序
20
+ */
21
+ Map<String,List<CostMaterialProcessHours>> getProcessHoursByMaterialNo(List<String> materialNos);
16
 }
22
 }

+ 8
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostResultValueService.java ファイルの表示

3
 import com.baomidou.mybatisplus.extension.service.IService;
3
 import com.baomidou.mybatisplus.extension.service.IService;
4
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
4
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
5
 
5
 
6
+import java.util.List;
7
+
6
 /**
8
 /**
7
  * @Description: app_scene_cost_result_value
9
  * @Description: app_scene_cost_result_value
8
  * @Author: jeecg-boot
10
  * @Author: jeecg-boot
10
  * @Version: V1.0
12
  * @Version: V1.0
11
  */
13
  */
12
 public interface IAppSceneCostResultValueService extends IService<AppSceneCostResultValue> {
14
 public interface IAppSceneCostResultValueService extends IService<AppSceneCostResultValue> {
13
-
15
+    /**
16
+     * 根据顶级物料编码查询满足条件的结果值
17
+     * @param topMaterialCode
18
+     * @return
19
+     */
20
+    List<AppSceneCostResultValue> getResultValueByTopMaterialNo(String topMaterialCode,String lastTaskType,String flowInstanceId);
14
 }
21
 }

+ 25
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostResultValueServiceImpl.java ファイルの表示

1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
2
 
2
 
3
 
3
 
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
6
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
6
 import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostResultValueMapper;
7
 import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostResultValueMapper;
7
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
8
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
9
+import org.springframework.beans.factory.annotation.Autowired;
8
 import org.springframework.stereotype.Service;
10
 import org.springframework.stereotype.Service;
9
 
11
 
12
+import java.util.ArrayList;
13
+import java.util.List;
14
+
10
 
15
 
11
 /**
16
 /**
12
  * @Description: app_scene_cost_result_value
17
  * @Description: app_scene_cost_result_value
16
  */
21
  */
17
 @Service
22
 @Service
18
 public class AppSceneCostResultValueServiceImpl extends ServiceImpl<AppSceneCostResultValueMapper, AppSceneCostResultValue> implements IAppSceneCostResultValueService {
23
 public class AppSceneCostResultValueServiceImpl extends ServiceImpl<AppSceneCostResultValueMapper, AppSceneCostResultValue> implements IAppSceneCostResultValueService {
24
+    @Autowired
25
+    private AppSceneCostResultValueMapper appSceneCostResultValueMapper;
19
 
26
 
27
+    /**
28
+     * 根据顶级物料编码查询满足条件的结果值
29
+     *
30
+     * @param topMaterialCode
31
+     * @param lastTaskType
32
+     * @param flowInstanceId
33
+     * @return
34
+     */
35
+    @Override
36
+    public List<AppSceneCostResultValue> getResultValueByTopMaterialNo(String topMaterialCode, String lastTaskType, String flowInstanceId) {
37
+        List<AppSceneCostResultValue> result = new ArrayList<>();
38
+        QueryWrapper<AppSceneCostResultValue> queryWrapper = new QueryWrapper<>();
39
+        if (topMaterialCode != null && !topMaterialCode.equals("") && lastTaskType != null && !lastTaskType.equals("") && flowInstanceId != null && !flowInstanceId.equals("")) {
40
+            queryWrapper.eq("belong_top_material_no", topMaterialCode).eq("task_type", lastTaskType).eq("flow_instance_id", flowInstanceId);
41
+            result = appSceneCostResultValueMapper.selectList(queryWrapper);
42
+        }
43
+        return result;
44
+    }
20
 }
45
 }

+ 39
- 2
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostMaterialProcessHoursServiceImpl.java ファイルの表示

1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
2
 
2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
5
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
4
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialProcessHoursMapper;
6
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialProcessHoursMapper;
5
 import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
7
 import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
6
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
8
+import org.springframework.beans.factory.annotation.Autowired;
7
 import org.springframework.stereotype.Service;
9
 import org.springframework.stereotype.Service;
8
 
10
 
11
+import java.util.ArrayList;
12
+import java.util.HashMap;
13
+import java.util.List;
14
+import java.util.Map;
15
+
9
 /**
16
 /**
10
  * <p>
17
  * <p>
11
  * 物料工时工序表 服务实现类
18
  * 物料工时工序表 服务实现类
12
  * </p>
19
  * </p>
13
  *
20
  *
14
- * @author  
21
+ * @author
15
  * @since 2024-06-19
22
  * @since 2024-06-19
16
  */
23
  */
17
 @Service
24
 @Service
18
 public class CostMaterialProcessHoursServiceImpl extends ServiceImpl<CostMaterialProcessHoursMapper, CostMaterialProcessHours> implements CostMaterialProcessHoursService {
25
 public class CostMaterialProcessHoursServiceImpl extends ServiceImpl<CostMaterialProcessHoursMapper, CostMaterialProcessHours> implements CostMaterialProcessHoursService {
26
+    @Autowired
27
+    CostMaterialProcessHoursMapper costMaterialProcessHoursMapper;
19
 
28
 
29
+    /**
30
+     * 查询满足物料编号的工时工序
31
+     *
32
+     * @param materialNos
33
+     */
34
+    @Override
35
+    public Map<String, List<CostMaterialProcessHours>> getProcessHoursByMaterialNo(List<String> materialNos) {
36
+        Map<String, List<CostMaterialProcessHours>> map = new HashMap<>();
37
+        QueryWrapper<CostMaterialProcessHours> queryWrapper = new QueryWrapper();
38
+        if (materialNos != null && materialNos.size() > 0) {
39
+            queryWrapper.in("material_code", materialNos);
40
+            List<CostMaterialProcessHours> costMaterialProcessHours = costMaterialProcessHoursMapper.selectList(queryWrapper);
41
+            for (int i = 0; i < costMaterialProcessHours.size(); i++) {
42
+                CostMaterialProcessHours costMaterialProcessHours1 = costMaterialProcessHours.get(i);
43
+                String materialCode = costMaterialProcessHours1.getMaterialCode();
44
+                if (map.containsKey(materialCode)) {
45
+                    List<CostMaterialProcessHours> list = map.get(materialCode);
46
+                    list.add(costMaterialProcessHours1);
47
+                    map.put(materialCode, list);
48
+                } else {
49
+                    List<CostMaterialProcessHours> list = new ArrayList<>();
50
+                    list.add(costMaterialProcessHours1);
51
+                    map.put(materialCode, list);
52
+                }
53
+            }
54
+        }
55
+        return map;
56
+    }
20
 }
57
 }