Browse Source

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

wangqiong 1 year ago
parent
commit
240b7134e5
14 changed files with 240 additions and 73 deletions
  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 View File

@@ -232,7 +232,7 @@ spring:
232 232
   rabbitmq:
233 233
     host: 192.168.50.9
234 234
     port: 5672
235
-    virtual-host: /qomoflow-dev
235
+    virtual-host: /qomoflow-standardcost
236 236
     username: admin
237 237
     password: kncloud
238 238
     connection-timeout: 5000
@@ -283,7 +283,8 @@ jeecg:
283 283
     webapp: /opt/webapp
284 284
   shiro:
285 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 289
   #阿里云oss存储和大鱼短信秘钥配置
289 290
   oss:

+ 2
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/AppSceneCostResultValue.java View File

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

+ 1
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostResultValueMapper.java View File

@@ -7,7 +7,7 @@ import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
7 7
 /**
8 8
  * @Description: app_scene_cost_result_value
9 9
  * @Author: jeecg-boot
10
- * @Date:   2024-07-23
10
+ * @Date: 2024-07-23
11 11
  * @Version: V1.0
12 12
  */
13 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 View File

@@ -45,7 +45,8 @@ public class LaborCostParameters extends AbstractParameters {
45 45
 
46 46
     @Override
47 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 View File

@@ -17,14 +17,9 @@
17 17
 
18 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 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,9 +54,15 @@ public class LaborCostTask extends AbstractTask {
59 54
 
60 55
     @Override
61 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 68
     @Override

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/manufacturingcost/ManufacturingCostTask.java View File

@@ -20,11 +20,9 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.manufacturingcost;
20 20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
21 21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
22 22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
23
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
23 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 26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
29 27
 import org.springframework.beans.factory.annotation.Autowired;
30 28
 
@@ -64,9 +62,15 @@ public class ManufacturingCostTask extends AbstractTask {
64 62
 
65 63
     @Override
66 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 76
     @Override

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialcost/MaterialCostTask.java View File

@@ -20,11 +20,9 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.materialcost;
20 20
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
21 21
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
22 22
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
23
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
23 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 26
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
29 27
 import org.springframework.beans.factory.annotation.Autowired;
30 28
 
@@ -64,9 +62,15 @@ public class MaterialCostTask extends AbstractTask {
64 62
 
65 63
     @Override
66 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 76
     @Override

+ 9
- 12
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/MaterialInputTask.java View File

@@ -17,17 +17,8 @@
17 17
 
18 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 20
 import com.zzsmart.qomo.plugin.task.api.*;
25 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,9 +53,15 @@ public class MaterialInputTask extends AbstractTask {
62 53
 
63 54
     @Override
64 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 67
     @Override

+ 100
- 22
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/materialinput/StandardCostService.java View File

@@ -2,21 +2,45 @@ package com.zzsmart.qomo.kn.cost.manage.plugin.materialinput;
2 2
 
3 3
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
4 4
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialBom;
5
+import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
5 6
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
7
+import com.zzsmart.qomo.kn.cost.manage.service.CostMaterialProcessHoursService;
6 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 11
 import lombok.extern.slf4j.Slf4j;
8 12
 import org.springframework.beans.factory.annotation.Autowired;
9 13
 import org.springframework.stereotype.Service;
10 14
 
11 15
 import javax.annotation.PostConstruct;
12
-import java.util.Date;
16
+import java.math.BigDecimal;
17
+import java.util.ArrayList;
13 18
 import java.util.List;
19
+import java.util.Map;
20
+import java.util.stream.Collectors;
14 21
 
15 22
 @Service
16 23
 @Slf4j
17 24
 public class StandardCostService {
25
+    /**
26
+     * 物料BOM信息
27
+     */
18 28
     @Autowired
19 29
     CostMaterialBomMapper costMaterialBomMapper;
30
+
31
+    /**
32
+     * 小时费率
33
+     */
34
+    @Autowired
35
+    IHourRateService iHourRateService;
36
+    /**
37
+     * 工序
38
+     */
39
+    @Autowired
40
+    CostMaterialProcessHoursService costMaterialProcessHoursService;
41
+    /**
42
+     * 标准成本计算结果
43
+     */
20 44
     @Autowired
21 45
     IAppSceneCostResultValueService iAppSceneCostResultValueService;
22 46
     public static StandardCostService standardCostService;
@@ -25,6 +49,8 @@ public class StandardCostService {
25 49
     public void init() {
26 50
         standardCostService = this;
27 51
         standardCostService.costMaterialBomMapper = this.costMaterialBomMapper;
52
+        standardCostService.iHourRateService = this.iHourRateService;
53
+        standardCostService.costMaterialProcessHoursService = this.costMaterialProcessHoursService;
28 54
         standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService;
29 55
     }
30 56
 
@@ -32,25 +58,35 @@ public class StandardCostService {
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 90
         //1.查询出物料编号对应的下所有的BOM信息
55 91
         //2.计算出所有的单个物料的物料成本
56 92
         //2.1查询出物料的单价和采购数量
@@ -60,17 +96,59 @@ public class StandardCostService {
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 152
         //1.查询出物料编号对应的下所有的BOM信息
75 153
         //2.根据费用类型进行不同的费用计算
76 154
         //2.1机器折旧费(机器工时*费率)
@@ -83,7 +161,7 @@ public class StandardCostService {
83 161
     /**
84 162
      * 标准成本计算任务
85 163
      */
86
-    public static void standardCostTask(String materialCode) {
164
+    public static void standardCostTask(TaskExecutionContext parameters) {
87 165
         //1.查询出物料编号对应的下所有的BOM信息
88 166
         //2.计算出所有的单个物料的本阶的标准成本(标准成本=物料成本+人工成本+制造费用)
89 167
         //3.计算出所有的单个物料的累计标准成本

+ 11
- 7
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/standardcost/StandardCostTask.java View File

@@ -18,11 +18,9 @@
18 18
 package com.zzsmart.qomo.kn.cost.manage.plugin.standardcost;
19 19
 
20 20
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialBomMapper;
21
+import com.zzsmart.qomo.kn.cost.manage.plugin.materialinput.StandardCostService;
21 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 24
 import com.zzsmart.qomo.plugin.task.api.parameters.AbstractParameters;
27 25
 import org.springframework.beans.factory.annotation.Autowired;
28 26
 
@@ -60,9 +58,15 @@ public class StandardCostTask extends AbstractTask {
60 58
 
61 59
     @Override
62 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 72
     @Override

+ 7
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostMaterialProcessHoursService.java View File

@@ -3,6 +3,9 @@ package com.zzsmart.qomo.kn.cost.manage.service;
3 3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
4 4
 import com.baomidou.mybatisplus.extension.service.IService;
5 5
 
6
+import java.util.List;
7
+import java.util.Map;
8
+
6 9
 /**
7 10
  * <p>
8 11
  * 物料工时工序表 服务类
@@ -12,5 +15,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
12 15
  * @since 2024-06-19
13 16
  */
14 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 View File

@@ -3,6 +3,8 @@ package com.zzsmart.qomo.kn.cost.manage.service;
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
5 5
 
6
+import java.util.List;
7
+
6 8
 /**
7 9
  * @Description: app_scene_cost_result_value
8 10
  * @Author: jeecg-boot
@@ -10,5 +12,10 @@ import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
10 12
  * @Version: V1.0
11 13
  */
12 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 View File

@@ -1,12 +1,17 @@
1 1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
2 2
 
3 3
 
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 5
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
5 6
 import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostResultValue;
6 7
 import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostResultValueMapper;
7 8
 import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostResultValueService;
9
+import org.springframework.beans.factory.annotation.Autowired;
8 10
 import org.springframework.stereotype.Service;
9 11
 
12
+import java.util.ArrayList;
13
+import java.util.List;
14
+
10 15
 
11 16
 /**
12 17
  * @Description: app_scene_cost_result_value
@@ -16,5 +21,25 @@ import org.springframework.stereotype.Service;
16 21
  */
17 22
 @Service
18 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 View File

@@ -1,20 +1,57 @@
1 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 5
 import com.zzsmart.qomo.kn.cost.manage.entity.CostMaterialProcessHours;
4 6
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostMaterialProcessHoursMapper;
5 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 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 17
  * <p>
11 18
  * 物料工时工序表 服务实现类
12 19
  * </p>
13 20
  *
14
- * @author  
21
+ * @author
15 22
  * @since 2024-06-19
16 23
  */
17 24
 @Service
18 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
 }