Przeglądaj źródła

Merge branch 'bgy' of kn-cost/cost-backend into dev

bgy 2 lat temu
rodzic
commit
d670a53697
14 zmienionych plików z 471 dodań i 80 usunięć
  1. 31
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/BomTreeController.java
  2. 41
    1
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java
  3. 28
    63
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java
  4. 23
    2
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java
  5. 22
    5
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml
  6. 14
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/BomTreeService.java
  7. 11
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java
  8. 44
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java
  9. 35
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java
  10. 1
    3
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java
  11. 80
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java
  12. 105
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java
  13. 30
    0
      qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostStandardDetailVO.java
  14. 6
    6
      qomo-kn-cost-manage/src/test/java/com/zzsmart/qomo/kn/cost/manage/ApplicationTests.java

+ 31
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/BomTreeController.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.controller;
2
+
3
+import com.zzsmart.qomo.kn.cost.manage.service.BomTreeService;
4
+import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
5
+import io.swagger.annotations.Api;
6
+import io.swagger.annotations.ApiOperation;
7
+import lombok.extern.slf4j.Slf4j;
8
+import org.jeecg.common.api.vo.Result;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.web.bind.annotation.GetMapping;
11
+import org.springframework.web.bind.annotation.RequestMapping;
12
+import org.springframework.web.bind.annotation.RequestParam;
13
+import org.springframework.web.bind.annotation.RestController;
14
+
15
+import java.util.List;
16
+
17
+@Api(tags = "结构树查询")
18
+@RestController
19
+@RequestMapping("//bomTree")
20
+@Slf4j
21
+public class BomTreeController {
22
+    @Autowired
23
+    BomTreeService bomTreeService;
24
+
25
+    @ApiOperation(value = "结构树查询", notes = "结构树查询")
26
+    @GetMapping(value = "/queryBomTree")
27
+    public Result queryBomTree(@RequestParam(name = "materialNumber", required = false) String materialNumber, @RequestParam(name = "versionNumber", required = false) String versionNumber) {
28
+        List<BomTreeInfoVO> bomTreeInfoVOS = bomTreeService.getBomTreeByMaterialNumber(materialNumber, versionNumber);
29
+        return Result.OK(bomTreeInfoVOS);
30
+    }
31
+}

+ 41
- 1
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/CostStandardDetailController.java Wyświetl plik

1
 package com.zzsmart.qomo.kn.cost.manage.controller;
1
 package com.zzsmart.qomo.kn.cost.manage.controller;
2
 
2
 
3
 
3
 
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6
+import com.zzsmart.qomo.kn.cost.manage.service.CostStandardDetailService;
7
+import com.zzsmart.qomo.kn.cost.manage.service.ICostStandardService;
8
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
9
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO;
10
+import io.swagger.annotations.Api;
11
+import io.swagger.annotations.ApiOperation;
12
+import lombok.extern.slf4j.Slf4j;
13
+import org.jeecg.common.api.vo.Result;
14
+import org.springframework.beans.factory.annotation.Autowired;
15
+import org.springframework.web.bind.annotation.GetMapping;
4
 import org.springframework.web.bind.annotation.RequestMapping;
16
 import org.springframework.web.bind.annotation.RequestMapping;
5
 
17
 
18
+import org.springframework.web.bind.annotation.RequestParam;
6
 import org.springframework.web.bind.annotation.RestController;
19
 import org.springframework.web.bind.annotation.RestController;
7
 
20
 
21
+import javax.servlet.http.HttpServletRequest;
22
+
8
 /**
23
 /**
9
  * <p>
24
  * <p>
10
  * 标准成本明细表 前端控制器
25
  * 标准成本明细表 前端控制器
13
  * @author cost_purchase_price
28
  * @author cost_purchase_price
14
  * @since 2024-06-19
29
  * @since 2024-06-19
15
  */
30
  */
31
+@Api(tags="标准成本单行查询")
16
 @RestController
32
 @RestController
17
-@RequestMapping("/cost-standard-detail")
33
+@RequestMapping("//costStandardDetail")
34
+@Slf4j
18
 public class CostStandardDetailController {
35
 public class CostStandardDetailController {
36
+    @Autowired
37
+    private CostStandardDetailService costStandardDetailService;
38
+
39
+    /**
40
+     * 分页列表查询
41
+     *
42
+     * @param costStandard
43
+     * @param pageNo
44
+     * @param pageSize
45
+     * @param req
46
+     * @return
47
+     */
48
+    //@AutoLog(value = "cost_standard-分页列表查询")
49
+    @ApiOperation(value="cost_standard_detail-分页列表查询", notes="cost_standard_detail-分页列表查询")
50
+    @GetMapping(value = "/list")
51
+    public Result<IPage<CostStandardDetailVO>> queryPageList(CostStandardDetailVO costStandard,
52
+                                                                @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
53
+                                                                @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
54
+                                                                HttpServletRequest req) {
19
 
55
 
56
+        Page<CostStandardDetailVO> page = new Page<CostStandardDetailVO>(pageNo, pageSize);
57
+        IPage<CostStandardDetailVO> pageList = costStandardDetailService.pageList(page, costStandard);
58
+        return Result.OK(pageList);
59
+    }
20
 }
60
 }

+ 28
- 63
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/entity/CostStandardDetail.java Wyświetl plik

7
 import java.io.Serializable;
7
 import java.io.Serializable;
8
 import java.math.BigDecimal;
8
 import java.math.BigDecimal;
9
 import java.time.LocalDateTime;
9
 import java.time.LocalDateTime;
10
+
11
+import io.swagger.annotations.ApiModelProperty;
12
+import lombok.Builder;
13
+import lombok.Data;
10
 import lombok.Getter;
14
 import lombok.Getter;
11
 import lombok.Setter;
15
 import lombok.Setter;
12
 import lombok.experimental.Accessors;
16
 import lombok.experimental.Accessors;
16
  * 标准成本明细表
20
  * 标准成本明细表
17
  * </p>
21
  * </p>
18
  *
22
  *
19
- * @author cost_purchase_price
20
- * @since 2024-06-19
23
+ * @author  
24
+ * @since 2024-06-20
21
  */
25
  */
22
-@Getter
23
-@Setter
26
+@Data
24
 @Accessors(chain = true)
27
 @Accessors(chain = true)
25
 @TableName("cost_standard_detail")
28
 @TableName("cost_standard_detail")
26
 public class CostStandardDetail implements Serializable {
29
 public class CostStandardDetail implements Serializable {
34
     private String id;
37
     private String id;
35
 
38
 
36
     /**
39
     /**
37
-     * 物料号,关联kn_new_sap_mara表matnr字段
40
+     * 物料号,关联kn_new_sap_mara表matnr字段
38
      */
41
      */
39
     @TableField("material_number")
42
     @TableField("material_number")
43
+    @ApiModelProperty(value = "物料号,关联kn_new_sap_mara表matnr字段")
40
     private String materialNumber;
44
     private String materialNumber;
41
 
45
 
46
+    /**
47
+     * 物料名称
48
+     */
49
+    @TableField("material_name")
50
+    private String materialName;
51
+
52
+    /**
53
+     * 父类物料号
54
+     */
55
+    @TableField("parent_material_number")
56
+    private String parentMaterialNumber;
57
+
42
     /**
58
     /**
43
      * 版本号id
59
      * 版本号id
44
      */
60
      */
49
      * 层级
65
      * 层级
50
      */
66
      */
51
     @TableField("level")
67
     @TableField("level")
52
-    private String level;
68
+    private Integer level;
53
 
69
 
54
     /**
70
     /**
55
      * 图号
71
      * 图号
61
      * 用量
77
      * 用量
62
      */
78
      */
63
     @TableField("dosage")
79
     @TableField("dosage")
64
-    private String dosage;
80
+    private Double dosage;
65
 
81
 
66
     /**
82
     /**
67
      * 单位
83
      * 单位
195
     @TableField("remark")
211
     @TableField("remark")
196
     private String remark;
212
     private String remark;
197
 
213
 
198
-
199
-    public static final String ID = "id";
200
-
201
-    public static final String MATERIAL_NUMBER = "material_number";
202
-
203
-    public static final String VERSION_NUMBER_ID = "version_number_id";
204
-
205
-    public static final String LEVEL = "level";
206
-
207
-    public static final String FIGURE_NUMBER = "figure_number";
208
-
209
-    public static final String DOSAGE = "dosage";
210
-
211
-    public static final String UNIT = "unit";
212
-
213
-    public static final String SPECIFICATION = "specification";
214
-
215
-    public static final String BOM_COST = "bom_cost";
216
-
217
-    public static final String PACKING_COST = "packing_cost";
218
-
219
-    public static final String AUXILIARY_COST = "auxiliary_cost";
220
-
221
-    public static final String LABOR_COST = "labor_cost";
222
-
223
-    public static final String EUIP_DEPRECIATION_COST = "euip_depreciation_cost";
224
-
225
-    public static final String EQUIP_CONSUME_COST = "equip_consume_cost";
226
-
227
-    public static final String HYDROELECTRICITY_COST = "hydroelectricity_cost";
228
-
229
-    public static final String OTHER_COST = "other_cost";
230
-
231
-    public static final String TRAIL_COST = "trail_cost";
232
-
233
-    public static final String MANUFACTURE_COST = "manufacture_cost";
234
-
235
-    public static final String TOTAL_LABOR_COST = "total_labor_cost";
236
-
237
-    public static final String TOTAL_EQUIP_CONSUME_COST = "total_equip_consume_cost";
238
-
239
-    public static final String TOTAL_EUIP_DEPRECIATION_COST = "total_euip_depreciation_cost";
240
-
241
-    public static final String TOTAL_HYDROELECTRICITY_COST = "total_hydroelectricity_cost";
242
-
243
-    public static final String TOTAL_OTHER_COST = "total_other_cost";
244
-
245
-    public static final String CREATE_BY = "create_by";
246
-
247
-    public static final String CREATE_TIME = "create_time";
248
-
249
-    public static final String UPDATE_BY = "update_by";
250
-
251
-    public static final String UPDATE_TIME = "update_time";
252
-
253
-    public static final String REMARK = "remark";
214
+    /**
215
+     * 序号
216
+     */
217
+    @TableField("sort")
218
+    private Integer sort;
254
 
219
 
255
 }
220
 }

+ 23
- 2
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/CostStandardDetailMapper.java Wyświetl plik

1
 package com.zzsmart.qomo.kn.cost.manage.mapper;
1
 package com.zzsmart.qomo.kn.cost.manage.mapper;
2
 
2
 
3
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
4
+import com.baomidou.mybatisplus.core.metadata.IPage;
5
+import com.baomidou.mybatisplus.core.toolkit.Constants;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
7
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
4
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
8
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
9
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
5
 import org.apache.ibatis.annotations.Mapper;
10
 import org.apache.ibatis.annotations.Mapper;
11
+import org.apache.ibatis.annotations.Param;
12
+
13
+import java.util.List;
6
 
14
 
7
 /**
15
 /**
8
  * <p>
16
  * <p>
9
  * 标准成本明细表 Mapper 接口
17
  * 标准成本明细表 Mapper 接口
10
  * </p>
18
  * </p>
11
  *
19
  *
12
- * @author cost_purchase_price
13
- * @since 2024-06-19
20
+ * @author  
21
+ * @since 2024-06-20
14
  */
22
  */
15
 @Mapper
23
 @Mapper
16
 public interface CostStandardDetailMapper extends BaseMapper<CostStandardDetail> {
24
 public interface CostStandardDetailMapper extends BaseMapper<CostStandardDetail> {
25
+    /**
26
+     * 分页查询
27
+     * @param page
28
+     * @param wrapper
29
+     * @return
30
+     */
31
+    IPage<CostStandardDetailVO> pageList(@Param("page") Page<CostStandardDetailVO> page , @Param(Constants.WRAPPER) Wrapper<CostStandardDetailVO> wrapper);
32
+    /**
33
+     * 查询列表
34
+     * @param wrapper
35
+     * @return
36
+     */
37
+    List<CostStandardDetailVO> queryListResult(@Param(Constants.WRAPPER) Wrapper<CostStandardDetailVO> wrapper);
17
 
38
 
18
 }
39
 }

+ 22
- 5
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/CostStandardDetailMapper.xml Wyświetl plik

3
 <mapper namespace="com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper">
3
 <mapper namespace="com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper">
4
 
4
 
5
     <!-- 通用查询映射结果 -->
5
     <!-- 通用查询映射结果 -->
6
-    <resultMap id="BaseResultMap" type="com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail">
6
+    <resultMap id="CostStandardDetailVOResultMap" type="com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO">
7
         <id column="id" property="id" />
7
         <id column="id" property="id" />
8
         <result column="material_number" property="materialNumber" />
8
         <result column="material_number" property="materialNumber" />
9
+        <result column="material_name" property="materialName" />
10
+        <result column="parent_material_number" property="parentMaterialNumber" />
9
         <result column="version_number_id" property="versionNumberId" />
11
         <result column="version_number_id" property="versionNumberId" />
12
+        <result column="version_number" property="versionNumber" />
10
         <result column="level" property="level" />
13
         <result column="level" property="level" />
11
         <result column="figure_number" property="figureNumber" />
14
         <result column="figure_number" property="figureNumber" />
12
         <result column="dosage" property="dosage" />
15
         <result column="dosage" property="dosage" />
32
         <result column="update_by" property="updateBy" />
35
         <result column="update_by" property="updateBy" />
33
         <result column="update_time" property="updateTime" />
36
         <result column="update_time" property="updateTime" />
34
         <result column="remark" property="remark" />
37
         <result column="remark" property="remark" />
38
+        <result column="sort" property="sort" />
35
     </resultMap>
39
     </resultMap>
40
+    <select id="pageList" resultMap="CostStandardDetailVOResultMap">
41
+        select c1.*, c2.version_number, c2.version_status, c2.stage,c2.version_year
42
+        from
43
+            cost_standard_detail  c1
44
+                left join cost_standard_version  c2 on c1.version_number_id = c2.id
45
+            ${ew.customSqlSegment}
46
+        ORDER BY c1.create_time desc
36
 
47
 
37
-    <!-- 通用查询结果列 -->
38
-    <sql id="Base_Column_List">
39
-        id, material_number, version_number_id, level, figure_number, dosage, unit, specification, bom_cost, packing_cost, auxiliary_cost, labor_cost, euip_depreciation_cost, equip_consume_cost, hydroelectricity_cost, other_cost, trail_cost, manufacture_cost, total_labor_cost, total_equip_consume_cost, total_euip_depreciation_cost, total_hydroelectricity_cost, total_other_cost, create_by, create_time, update_by, update_time, remark
40
-    </sql>
48
+    </select>
49
+    <select id="queryListResult" resultMap="CostStandardDetailVOResultMap">
50
+        select c1.*, c2.version_number, c2.version_status, c2.stage,c2.version_year
51
+        from
52
+            cost_standard_detail  c1
53
+                left join cost_standard_version  c2 on c1.version_number_id = c2.id
54
+            ${ew.customSqlSegment}
55
+        ORDER BY c1.create_time desc
56
+
57
+    </select>
41
 
58
 
42
 </mapper>
59
 </mapper>

+ 14
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/BomTreeService.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.service;
2
+
3
+import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
4
+
5
+import java.util.List;
6
+
7
+public interface BomTreeService {
8
+    /**
9
+     * 根据物料号查询物料树
10
+     * @param materialNumber
11
+     * @return
12
+     */
13
+    List<BomTreeInfoVO> getBomTreeByMaterialNumber(String materialNumber, String version_number);
14
+}

+ 11
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/CostStandardDetailService.java Wyświetl plik

1
 package com.zzsmart.qomo.kn.cost.manage.service;
1
 package com.zzsmart.qomo.kn.cost.manage.service;
2
 
2
 
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
5
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
4
 import com.baomidou.mybatisplus.extension.service.IService;
6
 import com.baomidou.mybatisplus.extension.service.IService;
7
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
8
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO;
5
 
9
 
6
 /**
10
 /**
7
  * <p>
11
  * <p>
12
  * @since 2024-06-19
16
  * @since 2024-06-19
13
  */
17
  */
14
 public interface CostStandardDetailService extends IService<CostStandardDetail> {
18
 public interface CostStandardDetailService extends IService<CostStandardDetail> {
19
+    /**
20
+     * 分页查询
21
+     * @param page
22
+     * @param
23
+     * @return
24
+     */
25
+    IPage<CostStandardDetailVO> pageList(Page<CostStandardDetailVO> page, CostStandardDetailVO costStandard);
15
 
26
 
16
 }
27
 }

+ 44
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.service.impl;
2
+
3
+import cn.hutool.core.util.StrUtil;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
6
+import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper;
7
+import com.zzsmart.qomo.kn.cost.manage.service.BomTreeService;
8
+import com.zzsmart.qomo.kn.cost.manage.util.BomTreeBuilder;
9
+import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
10
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
11
+import org.springframework.beans.factory.annotation.Autowired;
12
+import org.springframework.stereotype.Service;
13
+
14
+import java.util.Arrays;
15
+import java.util.List;
16
+
17
+@Service
18
+public class BomTreeServiceImpl implements BomTreeService {
19
+    @Autowired
20
+    CostStandardDetailMapper costStandardDetailMapper;
21
+
22
+    /**
23
+     * 根据物料号查询物料树
24
+     *
25
+     * @param materialNumber
26
+     * @return
27
+     */
28
+    @Override
29
+    public List<BomTreeInfoVO> getBomTreeByMaterialNumber(String materialNumber, String version_number) {
30
+        QueryWrapper<CostStandardDetailVO> wrapper = new QueryWrapper<>();
31
+        //设置条件
32
+        if (StrUtil.isNotEmpty(materialNumber)) {
33
+            // 物料号
34
+            wrapper.like("c1.material_number", materialNumber);
35
+        }
36
+        if (StrUtil.isNotEmpty(version_number)) {
37
+            // 版本号
38
+            wrapper.like("c2.version_number", version_number);
39
+        }
40
+        List<CostStandardDetailVO> costStandardDetailVOS = costStandardDetailMapper.queryListResult(wrapper);
41
+        List<BomTreeInfoVO> bomTreeInfoVOS = BomTreeBuilder.buildBomTree(costStandardDetailVOS);
42
+        return bomTreeInfoVOS;
43
+    }
44
+}

+ 35
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardDetailServiceImpl.java Wyświetl plik

1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
1
 package com.zzsmart.qomo.kn.cost.manage.service.impl;
2
 
2
 
3
+import cn.hutool.core.util.StrUtil;
4
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
5
+import com.baomidou.mybatisplus.core.metadata.IPage;
6
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
3
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
7
 import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
4
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper;
8
 import com.zzsmart.qomo.kn.cost.manage.mapper.CostStandardDetailMapper;
5
 import com.zzsmart.qomo.kn.cost.manage.service.CostStandardDetailService;
9
 import com.zzsmart.qomo.kn.cost.manage.service.CostStandardDetailService;
6
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
10
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
11
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
12
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardVO;
13
+import org.springframework.beans.factory.annotation.Autowired;
7
 import org.springframework.stereotype.Service;
14
 import org.springframework.stereotype.Service;
8
 
15
 
9
 /**
16
 /**
17
 @Service
24
 @Service
18
 public class CostStandardDetailServiceImpl extends ServiceImpl<CostStandardDetailMapper, CostStandardDetail> implements CostStandardDetailService {
25
 public class CostStandardDetailServiceImpl extends ServiceImpl<CostStandardDetailMapper, CostStandardDetail> implements CostStandardDetailService {
19
 
26
 
27
+    @Autowired
28
+    CostStandardDetailMapper costStandardDetailMapper;
29
+    /**
30
+     * 分页查询
31
+     *
32
+     * @param page
33
+     * @param costStandard
34
+     * @return
35
+     */
36
+    @Override
37
+    public IPage<CostStandardDetailVO> pageList(Page<CostStandardDetailVO> page, CostStandardDetailVO costStandard) {
38
+        // 查询条件组装
39
+        QueryWrapper queryWrapper = new QueryWrapper();
40
+
41
+        if(costStandard != null){
42
+
43
+            if(StrUtil.isNotEmpty(costStandard.getMaterialNumber()) ){
44
+                // 物料号
45
+                queryWrapper.like("c1.material_number",costStandard.getMaterialNumber());
46
+            }
47
+            if(StrUtil.isNotEmpty(costStandard.getVersionNumber()) ){
48
+                // 版本号
49
+                queryWrapper.like("c2.version_number",costStandard.getVersionNumber());
50
+            }
51
+
52
+        }
53
+        return (IPage<CostStandardDetailVO>) costStandardDetailMapper.pageList(page,queryWrapper);
54
+    }
20
 }
55
 }

+ 1
- 3
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/CostStandardVersionServiceImpl.java Wyświetl plik

49
 public class CostStandardVersionServiceImpl extends ServiceImpl<CostStandardVersionMapper, CostStandardVersion> implements ICostStandardVersionService {
49
 public class CostStandardVersionServiceImpl extends ServiceImpl<CostStandardVersionMapper, CostStandardVersion> implements ICostStandardVersionService {
50
     @Autowired
50
     @Autowired
51
     private CostStandardMapper costStandardMapper;
51
     private CostStandardMapper costStandardMapper;
52
-    @Autowired
53
-    private ICostStandardVersionService costStandardVersionService;
54
     private static final Logger log = LoggerFactory.getLogger(CostStandardVersionServiceImpl.class);
52
     private static final Logger log = LoggerFactory.getLogger(CostStandardVersionServiceImpl.class);
55
 
53
 
56
     @Transactional(rollbackFor = Exception.class)
54
     @Transactional(rollbackFor = Exception.class)
171
                     standardVersion.setVersionYear(String.valueOf(createDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getYear()));
169
                     standardVersion.setVersionYear(String.valueOf(createDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getYear()));
172
                     // 调用保存方法
170
                     // 调用保存方法
173
                     try {
171
                     try {
174
-                        costStandardVersionService.save(standardVersion);
172
+                        save(standardVersion);
175
                     } catch (Exception e) {
173
                     } catch (Exception e) {
176
                         failureNum++;
174
                         failureNum++;
177
                         String msg = "<br/>第 " + (i + 2) + " 行数据导入失败;";
175
                         String msg = "<br/>第 " + (i + 2) + " 行数据导入失败;";

+ 80
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.util;
2
+
3
+import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
4
+import com.zzsmart.qomo.kn.cost.manage.vo.BomTreeInfoVO;
5
+import com.zzsmart.qomo.kn.cost.manage.vo.CostStandardDetailVO;
6
+
7
+import java.util.ArrayList;
8
+import java.util.Comparator;
9
+import java.util.List;
10
+import java.util.Map;
11
+import java.util.stream.Collectors;
12
+
13
+public class BomTreeBuilder {
14
+    public static List<BomTreeInfoVO> buildBomTree(List<CostStandardDetailVO> sourceData) {
15
+        List<BomTreeInfoVO> result = new ArrayList<>();
16
+        if (sourceData == null || (sourceData != null && sourceData.size() < 1)) {
17
+            return result;
18
+        }
19
+        //1.把BOM信息分成按照物料号分组
20
+        Map<String, CostStandardDetailVO> materialMap = sourceData.stream().filter(s -> s.getMaterialNumber() != null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
21
+        //查找最顶端的父类节点
22
+        Map<String, CostStandardDetailVO> parentDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() == null).collect(Collectors.toMap(CostStandardDetailVO::getMaterialNumber, vo -> vo));
23
+        //查找有父节点的子节点
24
+        Map<String, List<CostStandardDetailVO>> childDataMap = sourceData.stream().filter(s -> s.getParentMaterialNumber() != null).collect(Collectors.groupingBy(CostStandardDetailVO::getParentMaterialNumber));
25
+        //查找有父节点的子节点
26
+//        //1.把BOM信息分成按照层级分组
27
+//        Map<Integer, List<CostStandardDetailVO>> levelMap = sourceData.stream().filter(s -> s.getLevel() != null).collect(Collectors.groupingBy(CostStandardDetail::getLevel));
28
+//        //2.对每层进行排序
29
+//        for (Integer level : levelMap.keySet()) {
30
+//            List<CostStandardDetailVO> levelList = levelMap.get(level);
31
+//            List<CostStandardDetailVO> sortedCostDetails = levelList.stream().sorted(Comparator.comparing(CostStandardDetailVO::getSort)).collect(Collectors.toList());
32
+//            levelMap.put(level, sortedCostDetails);
33
+//        }
34
+//        TreeMap<Integer, List<CostStandardDetailVO>> levelTreeMap = new TreeMap<>(levelMap);
35
+        //3.构建BOM树
36
+        if (parentDataMap.size() > 0) {
37
+            for (CostStandardDetailVO parent : parentDataMap.values()) {
38
+                BomTreeInfoVO parentBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(parent);
39
+                parentBomTreeInfoVO = loopFindChildrenBuild(parentBomTreeInfoVO, materialMap, childDataMap, result);
40
+                if (parentBomTreeInfoVO != null) {
41
+                    result.add(parentBomTreeInfoVO);
42
+                }
43
+            }
44
+        }
45
+        materialMap = null;
46
+        parentDataMap = null;
47
+        childDataMap = null;
48
+        return result;
49
+    }
50
+
51
+    private static BomTreeInfoVO loopFindChildrenBuild(BomTreeInfoVO parentBomTreeInfoVO, Map<String, CostStandardDetailVO> materialMap, Map<String, List<CostStandardDetailVO>> childDataMap, List<BomTreeInfoVO> result) {
52
+        if (parentBomTreeInfoVO != null) {
53
+            //4.根据物料号查找子节点
54
+            List<CostStandardDetailVO> childs = childDataMap.get(parentBomTreeInfoVO.getMaterialNumber());
55
+            //构造父节点下的bomtree结构数据
56
+            List<BomTreeInfoVO> children = new ArrayList<>();
57
+            for (int j = 0; childs != null && childs.size() > 0 && j < childs.size(); j++) {
58
+                CostStandardDetailVO child = childs.get(j);
59
+                BomTreeInfoVO childBomTreeInfoVO = costStandardDetailChangeToBomTreeInfoVO(child);
60
+                childBomTreeInfoVO = loopFindChildrenBuild(childBomTreeInfoVO, materialMap, childDataMap, result);
61
+                children.add(childBomTreeInfoVO);
62
+            }
63
+            //对象的子节点进行排序(升序)
64
+            children = children.stream().sorted(Comparator.comparing(BomTreeInfoVO::getSort, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
65
+            parentBomTreeInfoVO.setChildren(children);
66
+        }
67
+        return parentBomTreeInfoVO;
68
+    }
69
+
70
+    /**
71
+     * 把单行查询的数据转换为BomTreeInfoVO
72
+     *
73
+     * @param parent
74
+     * @return
75
+     */
76
+    static BomTreeInfoVO costStandardDetailChangeToBomTreeInfoVO(CostStandardDetail parent) {
77
+        BomTreeInfoVO bomTreeInfoVO = BomTreeInfoVO.builder().materialNumber(parent.getMaterialNumber()).materialName(parent.getMaterialName()).level(parent.getLevel()).parentMaterialNumber(parent.getParentMaterialNumber()).quantity(parent.getDosage()).unit(parent.getUnit()).auxiliaryCost(parent.getAuxiliaryCost()).equipCost(parent.getEquipConsumeCost()).otherCost(parent.getOtherCost()).laborCost(parent.getLaborCost()).accumulatedEquipCost(parent.getTotalEquipConsumeCost()).accumulatedOtherCost(parent.getTotalOtherCost()).accumulatedLaborCost(parent.getTotalLaborCost()).accumulatedMaterialCost(parent.getAuxiliaryCost()).accumulatedFuelCost(parent.getTotalEuipDepreciationCost()).sort(parent.getSort()).build();
78
+        return bomTreeInfoVO;
79
+    }
80
+}

+ 105
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.vo;
2
+
3
+import lombok.Builder;
4
+import lombok.Data;
5
+
6
+import java.math.BigDecimal;
7
+import java.util.List;
8
+
9
+@Data
10
+@Builder
11
+public class BomTreeInfoVO {
12
+    /**
13
+     * 物料号
14
+     */
15
+    private String materialNumber;
16
+    /**
17
+     * 父类物料号
18
+     */
19
+    private String parentMaterialNumber;
20
+    /**
21
+     * 物料名称
22
+     */
23
+    private String materialName;
24
+    /**
25
+     * 数量
26
+     */
27
+    private double quantity;
28
+    /**
29
+     * 单位
30
+     */
31
+    private String unit;
32
+    /**
33
+     * 层级
34
+     */
35
+    private Integer level;
36
+    /**
37
+     * 序号
38
+     */
39
+    private Integer sort;
40
+    /**
41
+     * 本阶标准成本
42
+     */
43
+    private BigDecimal standardCost;
44
+    /**
45
+     * 本阶物料成本
46
+     */
47
+    private BigDecimal materialCost;
48
+    /**
49
+     * 本阶人工成本
50
+     */
51
+    private BigDecimal laborCost;
52
+    /**
53
+     * 本阶设备成本
54
+     */
55
+    private BigDecimal equipCost;
56
+    /**
57
+     * 本阶燃动成本
58
+     */
59
+    private BigDecimal fuelCost;
60
+    /**
61
+     * 本阶辅料成本
62
+     */
63
+    private  BigDecimal auxiliaryCost;
64
+    /**
65
+     * 本阶其他成本
66
+     */
67
+    private BigDecimal otherCost;
68
+    /**
69
+     * 累计标准成本
70
+     */
71
+    private BigDecimal accumulatedStandardCost;
72
+    /**
73
+     * 累计物料成本
74
+     */
75
+    private BigDecimal accumulatedMaterialCost;
76
+    /**
77
+     * 累计人工成本
78
+     */
79
+    private BigDecimal accumulatedLaborCost;
80
+    /**
81
+     * 累计设备成本
82
+     */
83
+    private BigDecimal accumulatedEquipCost;
84
+    /**
85
+     * 累计燃动成本
86
+     */
87
+    private BigDecimal accumulatedFuelCost;
88
+
89
+    /**
90
+     * 累计辅料成本
91
+     */
92
+    private BigDecimal accumulatedAuxiliaryCost;
93
+    /**
94
+     * 累计其他成本
95
+     */
96
+    private BigDecimal accumulatedOtherCost;
97
+    /**
98
+     * 节点父类所有的物料编码
99
+     */
100
+    private List<String> parentMaterialNumbers;
101
+    /**
102
+     * 子节点
103
+     */
104
+    private List<BomTreeInfoVO> children;
105
+}

+ 30
- 0
qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostStandardDetailVO.java Wyświetl plik

1
+package com.zzsmart.qomo.kn.cost.manage.vo;
2
+
3
+import com.zzsmart.qomo.kn.cost.manage.entity.CostStandardDetail;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.AllArgsConstructor;
6
+import lombok.Builder;
7
+import lombok.Data;
8
+import lombok.NoArgsConstructor;
9
+
10
+import java.io.Serializable;
11
+
12
+/**
13
+ * <p>
14
+ * 标准成本明细表
15
+ * </p>
16
+ *
17
+ * @author cost_purchase_price
18
+ * @since 2024-06-19
19
+ */
20
+@Data
21
+@Builder
22
+@NoArgsConstructor
23
+@AllArgsConstructor
24
+public class CostStandardDetailVO extends CostStandardDetail implements Serializable {
25
+    /**
26
+     * 版本号
27
+     */
28
+    @ApiModelProperty(value = "版本号")
29
+    private String versionNumber;
30
+}

+ 6
- 6
qomo-kn-cost-manage/src/test/java/com/zzsmart/qomo/kn/cost/manage/ApplicationTests.java Wyświetl plik

42
                             .pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml"));
42
                             .pathInfo(Collections.singletonMap(OutputFile.mapperXml,System.getProperty("user.dir")+"/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml"));
43
                 })
43
                 })
44
                 .strategyConfig(builder -> {
44
                 .strategyConfig(builder -> {
45
-                    builder.addInclude("cost_material_bom")// todo 设置需要生成的表名
45
+                    builder.addInclude("cost_standard_detail")// todo 设置需要生成的表名
46
                             //.addTablePrefix("sys_")//设置表前缀过滤
46
                             //.addTablePrefix("sys_")//设置表前缀过滤
47
                             .entityBuilder()
47
                             .entityBuilder()
48
                             .enableLombok()
48
                             .enableLombok()
66
                             .enableRestStyle();
66
                             .enableRestStyle();
67
                 })
67
                 })
68
                 // 使用Freemarker引擎模板,默认的是Velocity引擎模板
68
                 // 使用Freemarker引擎模板,默认的是Velocity引擎模板
69
-//                .templateConfig(builder -> {
70
-//                    builder.disable(TemplateType.CONTROLLER)
71
-//                            .disable(TemplateType.SERVICE)
72
-//                            .disable(TemplateType.SERVICEIMPL);
73
-//                })
69
+                .templateConfig(builder -> {
70
+                    builder.disable(TemplateType.CONTROLLER)
71
+                            .disable(TemplateType.SERVICE)
72
+                            .disable(TemplateType.SERVICEIMPL);
73
+                })
74
                 .templateEngine(new FreemarkerTemplateEngine())
74
                 .templateEngine(new FreemarkerTemplateEngine())
75
                 .execute();
75
                 .execute();
76
 
76