Commit 5c716366612e64e7ad25dfcd2fc7658faf2e1518
Merge branch 'develop-test' into develop
# Conflicts: # src/main/java/com/order/erp/common/constant/Constant.java # src/main/java/com/order/erp/service/order/OrderProfitAnalysisService.java # src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java # src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java # src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java # src/main/java/com/order/erp/service/order/impl/OrderProfitAnalysisServiceImpl.java # src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java # src/main/resources/application.yml
Showing
82 changed files
with
4062 additions
and
86 deletions
Too many changes to show.
To preserve performance only 82 of 87 files are displayed.
src/main/java/com/order/erp/common/constant/Constant.java
@@ -162,6 +162,7 @@ public class Constant { | @@ -162,6 +162,7 @@ public class Constant { | ||
162 | public static final int SEVEN = 7; | 162 | public static final int SEVEN = 7; |
163 | public static final int FOURTEEN= 14; | 163 | public static final int FOURTEEN= 14; |
164 | public static final Integer THIRTY = 30; | 164 | public static final Integer THIRTY = 30; |
165 | + | ||
165 | public static final int SIXTY = 60; | 166 | public static final int SIXTY = 60; |
166 | public static final int TWENTY_FIRST = 21; | 167 | public static final int TWENTY_FIRST = 21; |
167 | 168 |
src/main/java/com/order/erp/config/MybatisPlusConfig.java
1 | package com.order.erp.config; | 1 | package com.order.erp.config; |
2 | 2 | ||
3 | +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; | ||
4 | +import org.apache.ibatis.session.SqlSessionFactory; | ||
5 | +import org.springframework.context.annotation.Bean; | ||
3 | import org.springframework.context.annotation.Configuration; | 6 | import org.springframework.context.annotation.Configuration; |
4 | 7 | ||
5 | 8 |
src/main/java/com/order/erp/controller/OrderCostController.java
0 → 100644
1 | +package com.order.erp.controller; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
4 | +import com.order.erp.common.constant.ServerResult; | ||
5 | +import com.order.erp.domain.vo.OrderProfitAnalysisVo; | ||
6 | +import com.order.erp.domain.vo.order.*; | ||
7 | +import com.order.erp.service.order.IOrderCostInfoService; | ||
8 | +import com.order.erp.service.order.OrderProfitAnalysisService; | ||
9 | +import io.swagger.annotations.Api; | ||
10 | +import io.swagger.annotations.ApiOperation; | ||
11 | +import org.springframework.beans.factory.annotation.Autowired; | ||
12 | +import org.springframework.validation.annotation.Validated; | ||
13 | +import org.springframework.web.bind.annotation.*; | ||
14 | + | ||
15 | +import javax.annotation.Resource; | ||
16 | +import javax.servlet.http.HttpServletResponse; | ||
17 | +import java.util.Collections; | ||
18 | + | ||
19 | +/** | ||
20 | + * @author zhongnanhuang | ||
21 | + * @version 1.0 | ||
22 | + * @project order-erp | ||
23 | + * @description 订单利润表控制层 | ||
24 | + * @date 2023/10/23 11:48:36 | ||
25 | + */ | ||
26 | +@RestController | ||
27 | +@RequestMapping("/order/cost") | ||
28 | +@Api(tags = "订单费用表") | ||
29 | +public class OrderCostController { | ||
30 | + | ||
31 | + @Resource | ||
32 | + OrderProfitAnalysisService orderProfitAnalysisService; | ||
33 | + @Autowired | ||
34 | + IOrderCostInfoService orderCostInfoService; | ||
35 | + | ||
36 | + | ||
37 | + @PostMapping("/InnerProfitDetail/listByPage") | ||
38 | + @ApiOperation("内部生产费用明细表") | ||
39 | + public ServerResult<Page<InnerProfitDetailVO>> listInnerProfitDetailByPage(@RequestBody @Validated OrderBaseInfoQueryVO queryVO) { | ||
40 | + queryVO.setProductionDepartment(Collections.singletonList("内部")); | ||
41 | + return orderCostInfoService.listInnerProfitDetailByPage(queryVO); | ||
42 | + } | ||
43 | + | ||
44 | + @PostMapping("/BusinessProfitDetail/listByPage") | ||
45 | + @ApiOperation("包装费用明细表") | ||
46 | + public ServerResult<Page<BusinessProfitDetailVO>> listBusinessProfitDetailsByPage(@RequestBody @Validated OrderBaseInfoQueryVO queryVO) { | ||
47 | + return orderCostInfoService.listBusinessProfitDetailByPage(queryVO); | ||
48 | + } | ||
49 | + | ||
50 | + @PostMapping("/edit") | ||
51 | + @ApiOperation("编辑") | ||
52 | + public ServerResult edit(@RequestBody OrderCostInfoVO vo) throws Exception { | ||
53 | + return orderCostInfoService.edit(vo); | ||
54 | + } | ||
55 | + | ||
56 | + @PostMapping("/applyEditFileds") | ||
57 | + @ApiOperation("申请编辑字段") | ||
58 | + public ServerResult applyEditFileds(@RequestBody OrderCostInfolockFieldVO vo) { | ||
59 | + return orderCostInfoService.applyEditFileds(vo); | ||
60 | + } | ||
61 | + | ||
62 | + @PostMapping("/businessProfitDetail/exportExcel") | ||
63 | + @ApiOperation("包装费用明细表多个导出") | ||
64 | + public void exportBusinessProfitDetailExcel(HttpServletResponse response, @RequestBody ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
65 | + orderCostInfoService.exportBusinessProfitDetailExcel(response, queryVO); | ||
66 | + } | ||
67 | + | ||
68 | + @PostMapping("/innerProfitDetail/exportExcel") | ||
69 | + @ApiOperation("内部生产费用明细表多个导出") | ||
70 | + public void exportInnerProfitDetailExcel(HttpServletResponse response, @RequestBody ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
71 | + orderCostInfoService.exportInnerProfitDetailExcel(response, queryVO); | ||
72 | + } | ||
73 | + | ||
74 | + @PostMapping("/setPackStatus") | ||
75 | + @ApiOperation("设置包装费用明细表的状态") | ||
76 | + public void setPackStatus(@RequestBody OrderCostInfoVO vo) { | ||
77 | + orderCostInfoService.setPackStatus(vo); | ||
78 | + } | ||
79 | + | ||
80 | + | ||
81 | + @PostMapping("/setInnerStatus") | ||
82 | + @ApiOperation("设置内部生产明细表的状态") | ||
83 | + public void setInnerProduceStatus(@RequestBody OrderCostInfoVO vo) { | ||
84 | + orderCostInfoService.setInnerProduceStatus(vo); | ||
85 | + } | ||
86 | + | ||
87 | +} |
src/main/java/com/order/erp/controller/OrderCostDetailedOptLogController.java
0 → 100644
1 | +package com.order.erp.controller; | ||
2 | + | ||
3 | +import com.order.erp.common.constant.ServerResult; | ||
4 | +import com.order.erp.domain.vo.order.OrderCostDetailedOptedLogQueryVO; | ||
5 | +import com.order.erp.service.order.OrderCostDetailedOptLogService; | ||
6 | +import org.springframework.beans.factory.annotation.Autowired; | ||
7 | +import org.springframework.web.bind.annotation.PostMapping; | ||
8 | +import org.springframework.web.bind.annotation.RequestBody; | ||
9 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
10 | +import org.springframework.web.bind.annotation.RestController; | ||
11 | + | ||
12 | +/** | ||
13 | + * 净利润分析板块(包装费用明细表/内部生产明细表)--用户操作日志记录 | ||
14 | + * */ | ||
15 | +@RestController | ||
16 | +@RequestMapping("/orderCostDetailedOptLog") | ||
17 | +public class OrderCostDetailedOptLogController { | ||
18 | + @Autowired | ||
19 | + private OrderCostDetailedOptLogService orderCostDetailedOptLogService; | ||
20 | + @PostMapping("/listByPage") | ||
21 | + public ServerResult listByPage(@RequestBody OrderCostDetailedOptedLogQueryVO queryVO){ | ||
22 | + return orderCostDetailedOptLogService.listByPage(queryVO); | ||
23 | + } | ||
24 | +} |
src/main/java/com/order/erp/controller/OrderProfitController.java
@@ -2,16 +2,20 @@ package com.order.erp.controller; | @@ -2,16 +2,20 @@ package com.order.erp.controller; | ||
2 | 2 | ||
3 | import com.order.erp.common.constant.ServerResult; | 3 | import com.order.erp.common.constant.ServerResult; |
4 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; | 4 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; |
5 | -import com.order.erp.domain.vo.order.OrderProfitAnalysisVO; | ||
6 | -import com.order.erp.domain.vo.order.ProfitCalculateVO; | 5 | +import com.order.erp.domain.vo.order.*; |
6 | +import com.order.erp.service.order.IOrderCostInfoService; | ||
7 | import com.order.erp.service.order.OrderProfitAnalysisService; | 7 | import com.order.erp.service.order.OrderProfitAnalysisService; |
8 | +import io.swagger.annotations.Api; | ||
9 | +import io.swagger.annotations.ApiOperation; | ||
10 | +import org.springframework.beans.factory.annotation.Autowired; | ||
8 | import org.springframework.validation.annotation.Validated; | 11 | import org.springframework.validation.annotation.Validated; |
9 | -import org.springframework.web.bind.annotation.PostMapping; | ||
10 | -import org.springframework.web.bind.annotation.RequestBody; | ||
11 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
12 | -import org.springframework.web.bind.annotation.RestController; | 12 | +import org.springframework.web.bind.annotation.*; |
13 | 13 | ||
14 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
15 | +import javax.servlet.http.HttpServletResponse; | ||
16 | +import java.io.IOException; | ||
17 | +import java.util.Arrays; | ||
18 | +import java.util.Collections; | ||
15 | 19 | ||
16 | /** | 20 | /** |
17 | * @author zhongnanhuang | 21 | * @author zhongnanhuang |
@@ -36,4 +40,5 @@ public class OrderProfitController { | @@ -36,4 +40,5 @@ public class OrderProfitController { | ||
36 | public ServerResult calculate(@RequestBody @Validated ProfitCalculateVO calculateVO) { | 40 | public ServerResult calculate(@RequestBody @Validated ProfitCalculateVO calculateVO) { |
37 | return orderProfitAnalysisService.calculate(calculateVO); | 41 | return orderProfitAnalysisService.calculate(calculateVO); |
38 | } | 42 | } |
43 | + | ||
39 | } | 44 | } |
src/main/java/com/order/erp/controller/ProjectBaseDevelopOptLogController.java
0 → 100644
1 | +package com.order.erp.controller; | ||
2 | + | ||
3 | +import com.order.erp.common.constant.ServerResult; | ||
4 | +import com.order.erp.domain.vo.order.ProjectOptLogQueryVO; | ||
5 | + | ||
6 | +import com.order.erp.service.order.ProjectBaseDevelopOptLogService; | ||
7 | +import org.springframework.beans.factory.annotation.Autowired; | ||
8 | +import org.springframework.web.bind.annotation.PostMapping; | ||
9 | +import org.springframework.web.bind.annotation.RequestBody; | ||
10 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
11 | +import org.springframework.web.bind.annotation.RestController; | ||
12 | + | ||
13 | +/** | ||
14 | + * 净利润分析板块(业务研发净利润/内部生产净利润)--用户操作日志记录 | ||
15 | + * */ | ||
16 | +@RestController | ||
17 | +@RequestMapping("/projectOptLog") | ||
18 | +public class ProjectBaseDevelopOptLogController { | ||
19 | + @Autowired | ||
20 | + private ProjectBaseDevelopOptLogService projectBaseDevelopOptLogService; | ||
21 | + /** | ||
22 | + * 分页查询 | ||
23 | + * */ | ||
24 | + @PostMapping("/listByPage") | ||
25 | + public ServerResult listByPage(@RequestBody ProjectOptLogQueryVO queryVO){ | ||
26 | + return projectBaseDevelopOptLogService.listByPage(queryVO); | ||
27 | + } | ||
28 | + | ||
29 | +} |
src/main/java/com/order/erp/controller/ProjectController.java
0 → 100644
1 | +package com.order.erp.controller; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
4 | +import com.order.erp.common.constant.ServerResult; | ||
5 | +import com.order.erp.domain.vo.OrderProfitAnalysisVo; | ||
6 | +import com.order.erp.domain.vo.order.*; | ||
7 | +import com.order.erp.service.order.IOrderCostInfoService; | ||
8 | +import com.order.erp.service.order.IProjectBaseInfoService; | ||
9 | +import com.order.erp.service.order.OrderProfitAnalysisService; | ||
10 | +import io.swagger.annotations.Api; | ||
11 | +import io.swagger.annotations.ApiOperation; | ||
12 | +import org.springframework.beans.factory.annotation.Autowired; | ||
13 | +import org.springframework.validation.annotation.Validated; | ||
14 | +import org.springframework.web.bind.annotation.*; | ||
15 | + | ||
16 | +import javax.annotation.Resource; | ||
17 | +import javax.servlet.http.HttpServletResponse; | ||
18 | +import java.util.Collections; | ||
19 | + | ||
20 | +/** | ||
21 | + * @author zhongnanhuang | ||
22 | + * @version 1.0 | ||
23 | + * @project order-erp | ||
24 | + * @description 订单利润表控制层 | ||
25 | + * @date 2023/10/23 11:48:36 | ||
26 | + */ | ||
27 | +@RestController | ||
28 | +@RequestMapping("/project") | ||
29 | +@Api(tags = "项目信息") | ||
30 | +public class ProjectController { | ||
31 | + @Autowired | ||
32 | + IOrderCostInfoService orderCostInfoService; | ||
33 | + @Autowired | ||
34 | + IProjectBaseInfoService projectBaseInfoService; | ||
35 | + | ||
36 | + @PostMapping("/edit") | ||
37 | + @ApiOperation("编辑") | ||
38 | + public ServerResult<OrderProfitAnalysisVO> edit(@RequestBody @Validated ProjectBaseInfoVO vo) { | ||
39 | + return projectBaseInfoService.edit(vo); | ||
40 | + } | ||
41 | + | ||
42 | + @PostMapping("/applyEditFileds") | ||
43 | + @ApiOperation("申请修改") | ||
44 | + public ServerResult<OrderProfitAnalysisVO> applyEditFileds(@RequestBody @Validated ProjectBaseInfoLockFieldVO vo) { | ||
45 | + return projectBaseInfoService.applyEditFileds(vo); | ||
46 | + } | ||
47 | + | ||
48 | + @PostMapping("/pageProjectLockFieldApply") | ||
49 | + @ApiOperation("分页查询项目字段申请记录") | ||
50 | + public ServerResult<OrderProfitAnalysisVO> pageProjectLockFieldApply(@RequestBody @Validated QueryProjectLockFieldVO vo) { | ||
51 | + return projectBaseInfoService.pageProjectLockFieldApply(vo); | ||
52 | + } | ||
53 | + | ||
54 | + @PostMapping("/audit") | ||
55 | + @ApiOperation("审核") | ||
56 | + public ServerResult<OrderProfitAnalysisVO> audit(@RequestBody @Validated AuditVO vo) { | ||
57 | + return projectBaseInfoService.audit(vo); | ||
58 | + } | ||
59 | + @PostMapping("/InnerProfitInfo/listByPage") | ||
60 | + @ApiOperation("内部生产利润分析表") | ||
61 | + public ServerResult<Page<InnerProfitInfoVO>> listInnerProfitInfoByPage(@RequestBody @Validated OrderBaseInfoQueryVO queryVO) { | ||
62 | + queryVO.setProductionDepartment(Collections.singletonList("内部")); | ||
63 | + return projectBaseInfoService.listInnerProfitInfoByPage(queryVO); | ||
64 | + } | ||
65 | + | ||
66 | + @PostMapping("/BusinessProfitInfo/listByPage") | ||
67 | + @ApiOperation("业务研发净利润分析表") | ||
68 | + public ServerResult<Page<BusinessProfitInfoVO>> listBusinessProfitInfosByPage(@RequestBody @Validated OrderBaseInfoQueryVO queryVO) { | ||
69 | + return projectBaseInfoService.listBusinessProfitInfoByPage(queryVO); | ||
70 | + } | ||
71 | + | ||
72 | + @PostMapping("/businessProfit/export") | ||
73 | + @ApiOperation("业务研发净利润分析表单个导出") | ||
74 | + public void exportBusinessProfitInfo(HttpServletResponse response, @RequestParam("projectNoPrefix") String projectNoPrefix) throws Exception { | ||
75 | + projectBaseInfoService.exportBusinessProfitInfo(response, projectNoPrefix); | ||
76 | + } | ||
77 | + | ||
78 | + @PostMapping("/innerProfit/export") | ||
79 | + @ApiOperation("内部研发净利润分析表导出") | ||
80 | + public void exportInnerProfitInfo(HttpServletResponse response, @RequestParam("projectNoPrefix") String projectNoPrefix) throws Exception { | ||
81 | + projectBaseInfoService.exportInnerProfitInfo(response, projectNoPrefix); | ||
82 | + } | ||
83 | + | ||
84 | + //直接通过查询传递多个projectNo去查询。 | ||
85 | + @PostMapping("/businessProfit/exportExcel") | ||
86 | + @ApiOperation("业务研发净利润分析表多个导出") | ||
87 | + public void exportBusinessProfitExcel(HttpServletResponse response, @RequestBody ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
88 | + projectBaseInfoService.exportBusinessProfitExcel(response, queryVO); | ||
89 | + } | ||
90 | + //直接通过查询传递多个projectNo去查询。 | ||
91 | + @PostMapping("/innerProfitInfo/exportExcel") | ||
92 | + @ApiOperation("内部生产净利润分析表多个导出") | ||
93 | + public void exportInnerProfitInfoExcel(HttpServletResponse response, @RequestBody ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
94 | + projectBaseInfoService.exportInnerProfitInfoExcel(response, queryVO); | ||
95 | + } | ||
96 | + | ||
97 | + @PostMapping("/businessProfit/setStatus") | ||
98 | + @ApiOperation("业务研发净利润分析表审核状态设置") | ||
99 | + public void setProjectBaseInfoDevelopmentStatus(@RequestBody OrderBaseInfoVO vo) { | ||
100 | + projectBaseInfoService.setProjectBaseInfoDevelopmentStatus(vo); | ||
101 | + } | ||
102 | + //直接通过查询传递多个projectNo去查询。 | ||
103 | + @PostMapping("/innerProfitInfo/setStatus") | ||
104 | + @ApiOperation("内部生产净利润分析表审核状态设置") | ||
105 | + public void setInnerProductionStatus(@RequestBody OrderBaseInfoVO vo) { | ||
106 | + projectBaseInfoService.setInnerProductionStatus(vo); | ||
107 | + } | ||
108 | + | ||
109 | +} |
src/main/java/com/order/erp/domain/ApplyTypeEnum.java
@@ -32,4 +32,13 @@ public enum ApplyTypeEnum { | @@ -32,4 +32,13 @@ public enum ApplyTypeEnum { | ||
32 | private Integer type; | 32 | private Integer type; |
33 | 33 | ||
34 | private String desc; | 34 | private String desc; |
35 | + | ||
36 | + public static String getNameByType(Integer type) { | ||
37 | + for (ApplyTypeEnum value : ApplyTypeEnum.values()) { | ||
38 | + if (value.getType().equals(type)) { | ||
39 | + return value.getDesc(); | ||
40 | + } | ||
41 | + } | ||
42 | + return null; | ||
43 | + } | ||
35 | } | 44 | } |
src/main/java/com/order/erp/domain/OrderCostApplyTpeEnum.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import lombok.AllArgsConstructor; | ||
4 | +import lombok.Getter; | ||
5 | + | ||
6 | +@Getter | ||
7 | +@AllArgsConstructor | ||
8 | +public enum OrderCostApplyTpeEnum { | ||
9 | + | ||
10 | + ORDER_PACKET_COST_FIELD_EDIT_APPLY(60,"订单包装费用明细字段申请"), | ||
11 | + | ||
12 | + ORDER_PRODUCTION_COST_FIELD_EDIT_APPLY(70,"订单生产费用明细字段申请"), | ||
13 | + ; | ||
14 | + | ||
15 | + private Integer type; | ||
16 | + private String desc; | ||
17 | + | ||
18 | + public static String getNameByType(Integer type) { | ||
19 | + for (OrderCostApplyTpeEnum e : OrderCostApplyTpeEnum.values()) { | ||
20 | + if (e.getType().equals(type)) { | ||
21 | + return e.getDesc(); | ||
22 | + } | ||
23 | + } | ||
24 | + return null; | ||
25 | + } | ||
26 | +} |
src/main/java/com/order/erp/domain/OrderOptTypeEnum.java
@@ -29,6 +29,21 @@ public enum OrderOptTypeEnum { | @@ -29,6 +29,21 @@ public enum OrderOptTypeEnum { | ||
29 | 29 | ||
30 | ORDER_INSPECT_EDIT_APPLY(60, "质检信息编辑"), | 30 | ORDER_INSPECT_EDIT_APPLY(60, "质检信息编辑"), |
31 | 31 | ||
32 | + //后续添加部分(净利润分析板块) | ||
33 | + PROJECT_DEVELOPMENT_PROFIT_EDIT(70,"业务研发净利润编辑"), | ||
34 | + PROJECT_DEVELOPMENT_PROFIT_ADD(75,"业务研发净利润创建"), | ||
35 | +// PROJECT_DEVELOPMENT_FIELD_EDIT_APPLY(77,"业务研发净利润字段编辑申请"), | ||
36 | + PROJECT_COST_EDIT(80,"包装费用明细编辑"), | ||
37 | + PROJECT_COST_ADD(85,"包装费用明细创建"), | ||
38 | +// PROJECT_COST_FIELD_EDIT_APPLY(87,"包装费用明细表字段编辑申请"), | ||
39 | + PROJECT_INNER_PRODUCE_EDIT(90,"内部生产净利润编辑"), | ||
40 | + PROJECT_INNER_PRODUCE_ADD(95,"内部生产净利润创建"), | ||
41 | +// PROJECT_INNER_PRODUCE_FIELD_EDIT_APPLY(97,"内部生产净利润字段编辑申请"), | ||
42 | + PROJECT_INNER_PRODUCE_PROFIT_EDIT(100,"内部生产明细表编辑"), | ||
43 | + PROJECT_INNER_PRODUCE_PROFIT_ADD(105,"内部生产明细表创建"), | ||
44 | +// PROJECT_INNER_PRODUCE_PROFIT_FIELD_EDIT_APPLY(107,"内部研发净明细表字段编辑申请"), | ||
45 | + | ||
46 | + | ||
32 | ; | 47 | ; |
33 | private Integer type; | 48 | private Integer type; |
34 | 49 |
src/main/java/com/order/erp/domain/ProfitStatusEnum.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import lombok.AllArgsConstructor; | ||
4 | +import lombok.Getter; | ||
5 | +/** | ||
6 | + * 净利润板块的各个表的状态字段。 | ||
7 | + * */ | ||
8 | +@Getter | ||
9 | +@AllArgsConstructor | ||
10 | +public enum ProfitStatusEnum { | ||
11 | + Not_COMPLETED(-1, "未完成"), | ||
12 | + PENDING_APPROVAL(0, "待审核"), | ||
13 | + APPROVED(1, "已审核"), | ||
14 | + ; | ||
15 | + private Integer status; | ||
16 | + private String desc; | ||
17 | +} |
src/main/java/com/order/erp/domain/ProjectApplyTypeEnum.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.EnumValue; | ||
4 | +import com.fasterxml.jackson.annotation.JsonValue; | ||
5 | +import lombok.AllArgsConstructor; | ||
6 | +import lombok.Getter; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author: xms | ||
10 | + * @description: TODO | ||
11 | + * @date: 2023/9/13 18:05 | ||
12 | + * @version: 1.0 | ||
13 | + */ | ||
14 | +@Getter | ||
15 | +@AllArgsConstructor | ||
16 | +public enum ProjectApplyTypeEnum { | ||
17 | + | ||
18 | + FIELD_EDIT_APPLY(0, "业务利润字段编辑申请"), | ||
19 | + INNER_PROFIT_FIELD_EDIT_APPLY(1, "内部利润字段编辑申请"), | ||
20 | + ; | ||
21 | + | ||
22 | + private Integer type; | ||
23 | + | ||
24 | + private String desc; | ||
25 | + public static String getDescByName(String type) { | ||
26 | + for (ProjectApplyTypeEnum value : ProjectApplyTypeEnum.values()) { | ||
27 | + if (value.name().equals(type)) { | ||
28 | + return value.getDesc(); | ||
29 | + } | ||
30 | + } | ||
31 | + return null; | ||
32 | + } | ||
33 | +} |
src/main/java/com/order/erp/domain/ProjectBaseSettingTypeEnum.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import lombok.AllArgsConstructor; | ||
4 | +import lombok.Getter; | ||
5 | + | ||
6 | +@Getter | ||
7 | +@AllArgsConstructor | ||
8 | +public enum ProjectBaseSettingTypeEnum { | ||
9 | + COMMISSION_COST(1, "提成成本配置"), | ||
10 | + FIXED_COST_OF_PRODUCTION_DEPARTMENT(2, "生产科固定成本配置"), | ||
11 | + ; | ||
12 | + private Integer type; | ||
13 | + | ||
14 | + private String desc; | ||
15 | +} |
src/main/java/com/order/erp/domain/ProjectFieldEditType.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import com.order.erp.domain.vo.order.BusinessProfitInfoVO; | ||
4 | +import lombok.AllArgsConstructor; | ||
5 | +import lombok.Getter; | ||
6 | +import lombok.NoArgsConstructor; | ||
7 | + | ||
8 | +/** | ||
9 | + * @author zgt | ||
10 | + * @project order-erp | ||
11 | + * @description | ||
12 | + * @date 2025/3/27 | ||
13 | + */ | ||
14 | +@Getter | ||
15 | +@AllArgsConstructor | ||
16 | +@NoArgsConstructor | ||
17 | +public enum ProjectFieldEditType { | ||
18 | + InnerProfitInfo("内部表编辑"), | ||
19 | + BusinessProfitInfo("业务利润表编辑"); | ||
20 | + private String Text; | ||
21 | +} |
src/main/java/com/order/erp/domain/ProjectOptTypeEnum.java
0 → 100644
1 | +package com.order.erp.domain; | ||
2 | + | ||
3 | +import lombok.AllArgsConstructor; | ||
4 | +import lombok.Getter; | ||
5 | +/** | ||
6 | + * 净利润分析板块下的项目类型枚举 | ||
7 | + */ | ||
8 | +@Getter | ||
9 | +@AllArgsConstructor | ||
10 | +public enum ProjectOptTypeEnum { | ||
11 | + BUSINESS_NET_PROFIT_TYPE(10, "业务研发净利润类型"), | ||
12 | + | ||
13 | + PACKAGING_COST_TYPE(20, "包装费用类型"), | ||
14 | + | ||
15 | + INTERNAL_BUSINESS_NET_PROFIT_TYPE(30, "内部生产净利润类型"), | ||
16 | + | ||
17 | + INTERNAL_PRODUCE_DETAILS_TYPE(40, "内部生产明细表类型"), | ||
18 | + ; | ||
19 | + | ||
20 | + private Integer type; | ||
21 | + | ||
22 | + private String desc; | ||
23 | +} |
src/main/java/com/order/erp/domain/dto/order/OrderCostDetailedOptLogDO.java
0 → 100644
1 | +package com.order.erp.domain.dto.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.order.erp.domain.dto.BaseDO; | ||
5 | +import lombok.*; | ||
6 | +import lombok.experimental.SuperBuilder; | ||
7 | + | ||
8 | +import java.io.Serializable; | ||
9 | + | ||
10 | +/** | ||
11 | + * 包装费用,内部生产明细操作日志表(OrderCostDetailedOptLogDO)实体类 | ||
12 | + * | ||
13 | + * @author makejava | ||
14 | + * @since 2023-09-08 15:14:46 | ||
15 | + */ | ||
16 | +@TableName("order_cost_detailed_opt_log") | ||
17 | +@Data | ||
18 | +@AllArgsConstructor | ||
19 | +@ToString | ||
20 | +@NoArgsConstructor | ||
21 | +@EqualsAndHashCode(callSuper = false) | ||
22 | +@SuperBuilder | ||
23 | +public class OrderCostDetailedOptLogDO extends BaseDO implements Serializable { | ||
24 | + private Long id; | ||
25 | + private Long orderId; | ||
26 | + /** | ||
27 | + * 用户id | ||
28 | + */ | ||
29 | + private Long userId; | ||
30 | + /** | ||
31 | + * 操作类型 | ||
32 | + */ | ||
33 | + private Integer type; | ||
34 | + | ||
35 | + /** | ||
36 | + * 操作类型描述 | ||
37 | + */ | ||
38 | + private String optType; | ||
39 | + /** | ||
40 | + * 操作字段 json字符串 | ||
41 | + */ | ||
42 | + private String fields; | ||
43 | +} |
src/main/java/com/order/erp/domain/dto/order/OrderCostInfoDO.java
0 → 100644
1 | +package com.order.erp.domain.dto.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
6 | +import java.io.Serializable; | ||
7 | +import java.math.BigDecimal; | ||
8 | + | ||
9 | +import com.order.erp.domain.dto.BaseDO; | ||
10 | +import io.swagger.annotations.ApiModel; | ||
11 | +import lombok.AllArgsConstructor; | ||
12 | +import lombok.Data; | ||
13 | +import lombok.EqualsAndHashCode; | ||
14 | +import lombok.NoArgsConstructor; | ||
15 | +import lombok.experimental.SuperBuilder; | ||
16 | + | ||
17 | +/** | ||
18 | + * <p> | ||
19 | + * | ||
20 | + * </p> | ||
21 | + * | ||
22 | + * @author author | ||
23 | + * @since 2024-12-22 | ||
24 | + */ | ||
25 | +@Data | ||
26 | +@EqualsAndHashCode(callSuper = false) | ||
27 | +@SuperBuilder | ||
28 | +@AllArgsConstructor | ||
29 | +@NoArgsConstructor | ||
30 | +@TableName("order_cost_info") | ||
31 | +@ApiModel(value="OrderCostinfo对象", description="") | ||
32 | +public class OrderCostInfoDO extends BaseDO implements Serializable { | ||
33 | + | ||
34 | + private static final long serialVersionUID = 1L; | ||
35 | + | ||
36 | + @TableId(value = "id", type = IdType.AUTO) | ||
37 | + private Long id; | ||
38 | + | ||
39 | + private Long orderId; | ||
40 | + | ||
41 | + private BigDecimal productionDepartmentPredictPrice; | ||
42 | + | ||
43 | + private BigDecimal productionActualPrice; | ||
44 | + | ||
45 | + private BigDecimal packetActualRmbTotalPrice; | ||
46 | + //包装费用明细表状态。 | ||
47 | + private Integer packStatus; | ||
48 | + //内部生产明细表状态。 | ||
49 | + private Integer innerProduceStatus; | ||
50 | + | ||
51 | +} |
src/main/java/com/order/erp/domain/dto/order/OrderProfitAnalysisDO.java
@@ -6,6 +6,7 @@ import lombok.*; | @@ -6,6 +6,7 @@ import lombok.*; | ||
6 | import lombok.experimental.SuperBuilder; | 6 | import lombok.experimental.SuperBuilder; |
7 | 7 | ||
8 | import java.io.Serializable; | 8 | import java.io.Serializable; |
9 | +import java.math.BigDecimal; | ||
9 | 10 | ||
10 | /** | 11 | /** |
11 | * 订单利润分析表(OrderProfitAnalysis)实体类 | 12 | * 订单利润分析表(OrderProfitAnalysis)实体类 |
src/main/java/com/order/erp/domain/dto/order/ProjectBaseAfterReviewSettingDO.java
0 → 100644
1 | +package com.order.erp.domain.dto.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.math.BigDecimal; | ||
8 | +/** | ||
9 | + * 存储,内部业务研发净利润审核通过的配置,以及内部生产净利润审核通过的配置 因为这个配置是每年都会改变,所以需要保存当时审核年份的配置,防止切换到其他年份配置更改之后,之前的数据又会被重新计算。 | ||
10 | + * */ | ||
11 | +@TableName("project_base_after_review_setting") | ||
12 | +@Data | ||
13 | +@AllArgsConstructor | ||
14 | +@ToString | ||
15 | +@NoArgsConstructor | ||
16 | +@EqualsAndHashCode(callSuper = false) | ||
17 | +@SuperBuilder | ||
18 | +public class ProjectBaseAfterReviewSettingDO { | ||
19 | + private Long id; | ||
20 | + /** | ||
21 | + * 存储项目号,可能存储项目号的前八位(业务研发净利润专属),也可能存储完整的项目号(内部生产净利润) | ||
22 | + * */ | ||
23 | + private String projectNoPrefix; | ||
24 | + /** | ||
25 | + * type=1代表为提成成本配置,type=2代表为生产科固定成本配置 | ||
26 | + * */ | ||
27 | + private Integer type; | ||
28 | + | ||
29 | + /** | ||
30 | + * 审核通过时的配置数据。 --提成成本配置或者生产科固定成本中的固定成本。 type=1代表为提成成本配置,type=2代表为生产科固定成本配置 | ||
31 | + * */ | ||
32 | + private BigDecimal fixedCost; | ||
33 | + /** | ||
34 | + * 审核通过时的配置数据。 --提成成本配置中的提成比例。 | ||
35 | + * */ | ||
36 | + private BigDecimal commissionRate; | ||
37 | + | ||
38 | + /** | ||
39 | + * 审核通过时的配置数据。 --提成成本配置中的西班牙提成比例。 | ||
40 | + * */ | ||
41 | + private BigDecimal spainCommissionRate; | ||
42 | + | ||
43 | + /** | ||
44 | + * 审核通过时的配置数据。 --生产科固定成本配置中的提成单价。 | ||
45 | + * */ | ||
46 | + private BigDecimal commissionUnitPrice; | ||
47 | +} |
src/main/java/com/order/erp/domain/dto/order/ProjectBaseDevelopOptLogDO.java
0 → 100644
1 | +package com.order.erp.domain.dto.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.order.erp.domain.dto.BaseDO; | ||
5 | +import lombok.*; | ||
6 | +import lombok.experimental.SuperBuilder; | ||
7 | + | ||
8 | +import java.io.Serializable; | ||
9 | + | ||
10 | +/** | ||
11 | + * 用户业务研发,内部生产操作日志表(ProjectBaseDevelopOptLogDO)实体类 | ||
12 | + * | ||
13 | + * @author makejava | ||
14 | + * @since 2023-09-08 15:14:46 | ||
15 | + */ | ||
16 | +@TableName("project_base_develop_opt_log") | ||
17 | +@Data | ||
18 | +@AllArgsConstructor | ||
19 | +@ToString | ||
20 | +@NoArgsConstructor | ||
21 | +@EqualsAndHashCode(callSuper = false) | ||
22 | +@SuperBuilder | ||
23 | +public class ProjectBaseDevelopOptLogDO extends BaseDO implements Serializable { | ||
24 | + private static final long serialVersionUID = -79481441736960701L; | ||
25 | + | ||
26 | + private Long id; | ||
27 | + /** | ||
28 | + * 项目号前八位前缀 或者前十位前缀 | ||
29 | + */ | ||
30 | + private String projectNoPrefix; | ||
31 | + /** | ||
32 | + * 用户id | ||
33 | + */ | ||
34 | + private Long userId; | ||
35 | + /** | ||
36 | + * 操作类型 | ||
37 | + */ | ||
38 | + private Integer type; | ||
39 | + | ||
40 | + /** | ||
41 | + * 操作类型描述 | ||
42 | + */ | ||
43 | + private String optType; | ||
44 | + /** | ||
45 | + * 操作字段 json字符串 | ||
46 | + */ | ||
47 | + private String fields; | ||
48 | + | ||
49 | +} |
src/main/java/com/order/erp/domain/dto/order/ProjectBaseInfoDO.java
0 → 100644
1 | +package com.order.erp.domain.dto.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
6 | + | ||
7 | +import java.math.BigDecimal; | ||
8 | +import java.time.LocalDateTime; | ||
9 | +import java.io.Serializable; | ||
10 | + | ||
11 | +import com.order.erp.domain.dto.BaseDO; | ||
12 | +import io.swagger.annotations.ApiModel; | ||
13 | +import lombok.Data; | ||
14 | +import lombok.EqualsAndHashCode; | ||
15 | +import lombok.experimental.Accessors; | ||
16 | + | ||
17 | +/** | ||
18 | + * <p> | ||
19 | + * | ||
20 | + * </p> | ||
21 | + * | ||
22 | + * @author author | ||
23 | + * @since 2024-12-18 | ||
24 | + */ | ||
25 | +@Data | ||
26 | +@EqualsAndHashCode(callSuper = false) | ||
27 | +@Accessors(chain = true) | ||
28 | +@TableName("project_base_info") | ||
29 | +@ApiModel(value="ProjectBaseInfoDO", description="") | ||
30 | +public class ProjectBaseInfoDO extends BaseDO implements Serializable { | ||
31 | + | ||
32 | + private static final long serialVersionUID = 1L; | ||
33 | + | ||
34 | + @TableId(value = "id", type = IdType.AUTO) | ||
35 | + private Long id; | ||
36 | + /** | ||
37 | + * 项目号的前缀 例如:A05-2303-2391,projectNoPrefix就是A05-2303。 | ||
38 | + * */ | ||
39 | + private String projectNoPrefix; | ||
40 | + /** | ||
41 | + * 研发复制费合计¥ | ||
42 | + * */ | ||
43 | + private BigDecimal developmentCopyRmbTotalPrice; | ||
44 | + /** | ||
45 | + * 项目开始时间 | ||
46 | + * */ | ||
47 | + private LocalDateTime projectStartTime; | ||
48 | + /** | ||
49 | + * 项目结束时间 | ||
50 | + * */ | ||
51 | + private LocalDateTime projectEndTime; | ||
52 | + | ||
53 | + private LocalDateTime projectInnerProfitInfoStartTime; | ||
54 | + | ||
55 | + private LocalDateTime projectInnerProfitInfoEndTime; | ||
56 | + | ||
57 | + /** | ||
58 | + * 西班牙已发提成 | ||
59 | + * */ | ||
60 | + private BigDecimal spainPaidRmbCommission; | ||
61 | + /** | ||
62 | + * 中国团队已发提成 | ||
63 | + * */ | ||
64 | + private BigDecimal paidRmbCommission; | ||
65 | + /** | ||
66 | + * 实际汇率 | ||
67 | + * */ | ||
68 | + private BigDecimal actualExchangeRate; | ||
69 | + | ||
70 | + /** | ||
71 | + * 业务研发净利润分析表审核状态 | ||
72 | + * */ | ||
73 | + private Integer developmentStatus; | ||
74 | + /** | ||
75 | + * 内部生产净利润分析表审核状态 | ||
76 | + * */ | ||
77 | + private Integer innerProductionStatus; | ||
78 | + | ||
79 | +} |
src/main/java/com/order/erp/domain/model/OrderCostFieldLockRecord.java
0 → 100644
1 | +package com.order.erp.domain.model; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
6 | +import java.time.LocalDateTime; | ||
7 | +import com.baomidou.mybatisplus.annotation.FieldFill; | ||
8 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
9 | +import java.io.Serializable; | ||
10 | + | ||
11 | +import com.order.erp.domain.dto.BaseDO; | ||
12 | +import io.swagger.annotations.ApiModel; | ||
13 | +import io.swagger.annotations.ApiModelProperty; | ||
14 | +import lombok.AllArgsConstructor; | ||
15 | +import lombok.Data; | ||
16 | +import lombok.EqualsAndHashCode; | ||
17 | +import lombok.NoArgsConstructor; | ||
18 | +import lombok.experimental.Accessors; | ||
19 | +import lombok.experimental.SuperBuilder; | ||
20 | + | ||
21 | +/** | ||
22 | + * <p> | ||
23 | + * | ||
24 | + * </p> | ||
25 | + * | ||
26 | + * @author author | ||
27 | + * @since 2024-12-22 | ||
28 | + */ | ||
29 | +@Data | ||
30 | +@EqualsAndHashCode(callSuper = false) | ||
31 | +@SuperBuilder | ||
32 | +@NoArgsConstructor | ||
33 | +@AllArgsConstructor | ||
34 | +@TableName("order_cost_field_lock_record") | ||
35 | +@ApiModel(value="OrderCostFieldLockRecord对象", description="") | ||
36 | +public class OrderCostFieldLockRecord extends BaseDO implements Serializable { | ||
37 | + | ||
38 | + private static final long serialVersionUID = 1L; | ||
39 | + | ||
40 | + @TableId(value = "id", type = IdType.AUTO) | ||
41 | + private Long id; | ||
42 | + | ||
43 | + private String fields; | ||
44 | + | ||
45 | + private Long userId; | ||
46 | + | ||
47 | + private Long orderId; | ||
48 | + | ||
49 | + | ||
50 | + | ||
51 | +} |
src/main/java/com/order/erp/domain/model/ProjectApplyDO.java
0 → 100644
1 | +package com.order.erp.domain.model; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | + | ||
9 | +import com.order.erp.domain.ProjectApplyTypeEnum; | ||
10 | +import com.order.erp.domain.dto.BaseDO; | ||
11 | +import io.swagger.annotations.ApiModel; | ||
12 | +import io.swagger.annotations.ApiModelProperty; | ||
13 | +import lombok.AllArgsConstructor; | ||
14 | +import lombok.Data; | ||
15 | +import lombok.EqualsAndHashCode; | ||
16 | +import lombok.NoArgsConstructor; | ||
17 | +import lombok.experimental.SuperBuilder; | ||
18 | + | ||
19 | +/** | ||
20 | + * <p> | ||
21 | + * 项目-字段锁定申请表 | ||
22 | + * </p> | ||
23 | + * | ||
24 | + * @author author | ||
25 | + * @since 2024-12-22 | ||
26 | + */ | ||
27 | +@Data | ||
28 | +@EqualsAndHashCode(callSuper = false) | ||
29 | +@SuperBuilder | ||
30 | +@AllArgsConstructor | ||
31 | +@NoArgsConstructor | ||
32 | +@TableName("project_apply") | ||
33 | +@ApiModel(value="ProjectFieldLockApply对象", description="项目-字段锁定申请表") | ||
34 | +public class ProjectApplyDO extends BaseDO implements Serializable { | ||
35 | + | ||
36 | + private static final long serialVersionUID = 1L; | ||
37 | + | ||
38 | + @TableId(value = "id", type = IdType.AUTO) | ||
39 | + private Long id; | ||
40 | + | ||
41 | + @ApiModelProperty(value = "项目号") | ||
42 | + private String projectNoPrefix; | ||
43 | + | ||
44 | + | ||
45 | + @ApiModelProperty(value = "申请用户id") | ||
46 | + private Long applyUserId; | ||
47 | + | ||
48 | + @ApiModelProperty(value = "审批用户id") | ||
49 | + private Long auditUserId; | ||
50 | + | ||
51 | + @ApiModelProperty(value = "锁定字段 json字符串") | ||
52 | + private String fields; | ||
53 | + | ||
54 | + @ApiModelProperty(value = "锁定字段 json字符串") | ||
55 | + private String type; | ||
56 | + | ||
57 | + @ApiModelProperty(value = "状态:0 待审批,1 通过,2 拒绝") | ||
58 | + private Integer status; | ||
59 | + | ||
60 | + @ApiModelProperty(value = "审核备注") | ||
61 | + private String auditRemark; | ||
62 | + | ||
63 | + @ApiModelProperty(value = "审批角色code集合,分割") | ||
64 | + private String auditRoleCodes; | ||
65 | + | ||
66 | + @ApiModelProperty(value = "申请原因") | ||
67 | + private String applyRemark; | ||
68 | + | ||
69 | + | ||
70 | + | ||
71 | +} |
src/main/java/com/order/erp/domain/model/ProjectFieldLockRecord.java
0 → 100644
1 | +package com.order.erp.domain.model; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
6 | +import java.time.LocalDateTime; | ||
7 | +import com.baomidou.mybatisplus.annotation.FieldFill; | ||
8 | +import com.baomidou.mybatisplus.annotation.TableField; | ||
9 | +import java.io.Serializable; | ||
10 | + | ||
11 | +import com.order.erp.domain.dto.BaseDO; | ||
12 | +import io.swagger.annotations.ApiModel; | ||
13 | +import io.swagger.annotations.ApiModelProperty; | ||
14 | +import lombok.AllArgsConstructor; | ||
15 | +import lombok.Data; | ||
16 | +import lombok.EqualsAndHashCode; | ||
17 | +import lombok.NoArgsConstructor; | ||
18 | +import lombok.experimental.Accessors; | ||
19 | +import lombok.experimental.SuperBuilder; | ||
20 | + | ||
21 | +/** | ||
22 | + * <p> | ||
23 | + * 项目-字段锁定记录表 | ||
24 | + * </p> | ||
25 | + * | ||
26 | + * @author author | ||
27 | + * @since 2024-12-22 | ||
28 | + */ | ||
29 | +@Data | ||
30 | +@EqualsAndHashCode(callSuper = false) | ||
31 | +@AllArgsConstructor | ||
32 | +@NoArgsConstructor | ||
33 | +@SuperBuilder | ||
34 | +@TableName("project_field_lock_record") | ||
35 | +@ApiModel(value="ProjectFieldLockRecord对象", description="项目-字段锁定记录表") | ||
36 | +public class ProjectFieldLockRecord extends BaseDO implements Serializable { | ||
37 | + | ||
38 | + private static final long serialVersionUID = 1L; | ||
39 | + | ||
40 | + @TableId(value = "id", type = IdType.AUTO) | ||
41 | + private Long id; | ||
42 | + | ||
43 | + | ||
44 | + @ApiModelProperty(value = "项目号") | ||
45 | + private String projectNoPrefix; | ||
46 | + | ||
47 | + @ApiModelProperty(value = "用户id") | ||
48 | + private Long userId; | ||
49 | + | ||
50 | + @ApiModelProperty(value = "锁定字段 json字符串") | ||
51 | + private String fields; | ||
52 | + | ||
53 | + | ||
54 | + | ||
55 | +} |
src/main/java/com/order/erp/domain/vo/order/AuditVO.java
1 | package com.order.erp.domain.vo.order; | 1 | package com.order.erp.domain.vo.order; |
2 | 2 | ||
3 | import com.order.erp.domain.vo.BasePageVO; | 3 | import com.order.erp.domain.vo.BasePageVO; |
4 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | import lombok.*; | 5 | import lombok.*; |
5 | import lombok.experimental.SuperBuilder; | 6 | import lombok.experimental.SuperBuilder; |
6 | 7 | ||
@@ -17,23 +18,26 @@ import java.io.Serializable; | @@ -17,23 +18,26 @@ import java.io.Serializable; | ||
17 | @NoArgsConstructor | 18 | @NoArgsConstructor |
18 | @EqualsAndHashCode(callSuper = false) | 19 | @EqualsAndHashCode(callSuper = false) |
19 | @SuperBuilder | 20 | @SuperBuilder |
20 | -public class AuditVO extends BasePageVO implements Serializable { | 21 | +public class AuditVO implements Serializable { |
21 | 22 | ||
22 | /** | 23 | /** |
23 | * 申请id | 24 | * 申请id |
24 | */ | 25 | */ |
25 | @NotNull(message = "申请id不能为空") | 26 | @NotNull(message = "申请id不能为空") |
27 | + @ApiModelProperty(value = "申请id", required = true) | ||
26 | private Long id; | 28 | private Long id; |
27 | 29 | ||
28 | /** | 30 | /** |
29 | * 状态:1 通过,2 拒绝 | 31 | * 状态:1 通过,2 拒绝 |
30 | */ | 32 | */ |
31 | @NotNull(message = "状态不能为空") | 33 | @NotNull(message = "状态不能为空") |
34 | + @ApiModelProperty(value = "状态:1 通过,2 拒绝", required = true) | ||
32 | private Integer status; | 35 | private Integer status; |
33 | 36 | ||
34 | /** | 37 | /** |
35 | * 拒绝原因备注 | 38 | * 拒绝原因备注 |
36 | */ | 39 | */ |
40 | + @ApiModelProperty(value = "拒绝原因备注") | ||
37 | private String refuseRemark; | 41 | private String refuseRemark; |
38 | } | 42 | } |
39 | 43 |
src/main/java/com/order/erp/domain/vo/order/BusinessCostExportSelect.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | + | ||
8 | + | ||
9 | +@Data | ||
10 | +@AllArgsConstructor | ||
11 | +@ToString | ||
12 | +@NoArgsConstructor | ||
13 | +@EqualsAndHashCode(callSuper = false) | ||
14 | +@SuperBuilder | ||
15 | +public class BusinessCostExportSelect { | ||
16 | + /** | ||
17 | + * 包装费用$ | ||
18 | + */ | ||
19 | + @ApiModelProperty(value = "包装费用(美元)") | ||
20 | + private String packetPrice; | ||
21 | + | ||
22 | + /** | ||
23 | + * 包装费用合计$ | ||
24 | + */ | ||
25 | + @ApiModelProperty(value = "包装费用合计(美元)") | ||
26 | + private String packetTotalPrice; | ||
27 | + | ||
28 | + /** | ||
29 | + * 包装费用合计¥ | ||
30 | + */ | ||
31 | + @ApiModelProperty(value = "包装费用合计(人民币)") | ||
32 | + private String packetRmbTotalPrice; | ||
33 | + | ||
34 | + /** | ||
35 | + * 包装费用实际金额 | ||
36 | + */ | ||
37 | + @ApiModelProperty(value = "包装费用实际金额(人民币)") | ||
38 | + private String packetActualRmbTotalPrice; | ||
39 | + | ||
40 | + /** | ||
41 | + * 实际跟单单价¥ | ||
42 | + */ | ||
43 | + @ApiModelProperty(value = "实际跟单单价(人民币)") | ||
44 | + private String packetActualRmbPrice; | ||
45 | + | ||
46 | + /** | ||
47 | + * 实际跟单单价$ | ||
48 | + */ | ||
49 | + @ApiModelProperty(value = "实际跟单单价(美元)") | ||
50 | + private String packetActualPrice; | ||
51 | + | ||
52 | + /** | ||
53 | + * 包装费用收益 | ||
54 | + */ | ||
55 | + @ApiModelProperty(value = "包装费用收益(人民币)") | ||
56 | + private String packetProfitRmbPrice; | ||
57 | + | ||
58 | + /** | ||
59 | + * 包装费用利润率 | ||
60 | + */ | ||
61 | + @ApiModelProperty(value = "包装费用利润率") | ||
62 | + private String packetProfitRate; | ||
63 | + | ||
64 | +} |
src/main/java/com/order/erp/domain/vo/order/BusinessProfitDetailVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.math.BigDecimal; | ||
9 | + | ||
10 | +/** | ||
11 | + * 业务/研发净利润分析 | ||
12 | + * | ||
13 | + * @author makejava | ||
14 | + * @since 2024-08-05 16:26:34 | ||
15 | + */ | ||
16 | +@Data | ||
17 | +@AllArgsConstructor | ||
18 | +@ToString | ||
19 | +@NoArgsConstructor | ||
20 | +@EqualsAndHashCode(callSuper = false) | ||
21 | +@SuperBuilder | ||
22 | +public class BusinessProfitDetailVO implements Serializable { | ||
23 | + | ||
24 | + | ||
25 | + /** | ||
26 | + * 客户编码 | ||
27 | + */ | ||
28 | + @ApiModelProperty(value = "客户编码") | ||
29 | + private String customerCode; | ||
30 | + | ||
31 | + /** | ||
32 | + * 项目号 | ||
33 | + */ | ||
34 | + @ApiModelProperty(value = "订单id") | ||
35 | + private Long orderId; | ||
36 | + | ||
37 | + /** | ||
38 | + * 项目号 | ||
39 | + */ | ||
40 | + @ApiModelProperty(value = "项目号") | ||
41 | + private String projectNo; | ||
42 | + | ||
43 | + /** | ||
44 | + * 生产科 | ||
45 | + */ | ||
46 | + @ApiModelProperty(value = "生产部门") | ||
47 | + private String productionDepartment; | ||
48 | + | ||
49 | + /** | ||
50 | + * 内部编号 | ||
51 | + */ | ||
52 | + @ApiModelProperty(value = "内部编号") | ||
53 | + private String innerNo; | ||
54 | + | ||
55 | + /** | ||
56 | + * pic图片地址 | ||
57 | + */ | ||
58 | + @ApiModelProperty(value = "图片地址") | ||
59 | + private String picUrl; | ||
60 | + | ||
61 | + /** | ||
62 | + * 订单数量 | ||
63 | + */ | ||
64 | + @ApiModelProperty(value = "订单数量") | ||
65 | + private Integer orderCount; | ||
66 | + | ||
67 | + /** | ||
68 | + * 包装费用$ | ||
69 | + */ | ||
70 | + @ApiModelProperty(value = "包装费用(美元)") | ||
71 | + private Double packetPrice; | ||
72 | + | ||
73 | + /** | ||
74 | + * 包装费用合计$ | ||
75 | + */ | ||
76 | + @ApiModelProperty(value = "包装费用合计(美元)") | ||
77 | + private Double packetTotalPrice; | ||
78 | + | ||
79 | + /** | ||
80 | + * 包装费用合计¥ | ||
81 | + */ | ||
82 | + @ApiModelProperty(value = "包装费用合计(人民币)") | ||
83 | + private Double packetRmbTotalPrice; | ||
84 | + | ||
85 | + /** | ||
86 | + * 包装费用实际金额 | ||
87 | + */ | ||
88 | + @ApiModelProperty(value = "包装费用实际金额(人民币)") | ||
89 | + private BigDecimal packetActualRmbTotalPrice; | ||
90 | + | ||
91 | + /** | ||
92 | + * 实际跟单单价¥ | ||
93 | + */ | ||
94 | + @ApiModelProperty(value = "实际跟单单价(人民币)") | ||
95 | + private BigDecimal packetActualRmbPrice; | ||
96 | + | ||
97 | + /** | ||
98 | + * 实际跟单单价$ | ||
99 | + */ | ||
100 | + @ApiModelProperty(value = "实际跟单单价(美元)") | ||
101 | + private BigDecimal packetActualPrice; | ||
102 | + | ||
103 | + /** | ||
104 | + * 包装费用收益 | ||
105 | + */ | ||
106 | + @ApiModelProperty(value = "包装费用收益(人民币)") | ||
107 | + private BigDecimal packetProfitRmbPrice; | ||
108 | + | ||
109 | + /** | ||
110 | + * 包装费用利润率 | ||
111 | + */ | ||
112 | + @ApiModelProperty(value = "包装费用利润率") | ||
113 | + private BigDecimal packetProfitRate; | ||
114 | + /** | ||
115 | + * 包装费用明细表状态 | ||
116 | + */ | ||
117 | + @ApiModelProperty(value = "包装费用明细表状态") | ||
118 | + private Integer packStatus; | ||
119 | + | ||
120 | + /** | ||
121 | + * 锁定字段信息 | ||
122 | + */ | ||
123 | + @ApiModelProperty(value = "锁定字段信息") | ||
124 | + private OrderCostInfolockFieldVO lockFields; | ||
125 | + | ||
126 | + | ||
127 | +} | ||
128 | + |
src/main/java/com/order/erp/domain/vo/order/BusinessProfitInfoVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.math.BigDecimal; | ||
9 | +import java.time.LocalDateTime; | ||
10 | +import java.util.List; | ||
11 | +import java.util.Set; | ||
12 | + | ||
13 | +/** | ||
14 | + * 业务/研发净利润分析 | ||
15 | + * | ||
16 | + * @author makejava | ||
17 | + * @since 2024-08-05 16:26:34 | ||
18 | + */ | ||
19 | +@Data | ||
20 | +@AllArgsConstructor | ||
21 | +@ToString | ||
22 | +@NoArgsConstructor | ||
23 | +@EqualsAndHashCode(callSuper = false) | ||
24 | +@SuperBuilder | ||
25 | +public class BusinessProfitInfoVO implements Serializable { | ||
26 | + | ||
27 | + | ||
28 | + /** | ||
29 | + * 客户编码 | ||
30 | + */ | ||
31 | + @ApiModelProperty(value = "客户编码") | ||
32 | + private String customerCode; | ||
33 | + | ||
34 | + /** | ||
35 | + * 项目号 | ||
36 | + */ | ||
37 | + @ApiModelProperty(value = "项目号") | ||
38 | + private String projectNoPrefix; | ||
39 | + | ||
40 | + @ApiModelProperty(value = "完整项目号,用于当做id来使用,因为没有返回id所以无法确实操作的是那一条数据,所以需要完整的项目号来确认是哪一条数据") | ||
41 | + private Set<String> detailProjectNo; | ||
42 | + | ||
43 | + /** | ||
44 | + * 客户总价¥ | ||
45 | + */ | ||
46 | + @ApiModelProperty(value = "客户总价(人民币)") | ||
47 | + private Double customerRmbTotalPrice; | ||
48 | + | ||
49 | + /** | ||
50 | + * 客户总价¥ | ||
51 | + */ | ||
52 | + @ApiModelProperty(value = "客户总价") | ||
53 | + private Double customerTotalPrice; | ||
54 | + | ||
55 | + /** | ||
56 | + * 生成科总价¥ | ||
57 | + */ | ||
58 | + @ApiModelProperty(value = "生产部门总价") | ||
59 | + private Double productionDepartmentTotalPrice; | ||
60 | + | ||
61 | + /** | ||
62 | + * 生产科 | ||
63 | + */ | ||
64 | + @ApiModelProperty(value = "生产部门") | ||
65 | + private String productionDepartment; | ||
66 | + | ||
67 | + /** | ||
68 | + * 内部编号 | ||
69 | + */ | ||
70 | + @ApiModelProperty(value = "内部编号") | ||
71 | + private String innerNo; | ||
72 | + | ||
73 | + /** | ||
74 | + * pic图片地址 | ||
75 | + */ | ||
76 | + @ApiModelProperty(value = "图片地址") | ||
77 | + private String picUrl; | ||
78 | + | ||
79 | + /** | ||
80 | + * 订单数量 | ||
81 | + */ | ||
82 | + @ApiModelProperty(value = "订单数量") | ||
83 | + private Integer orderCount; | ||
84 | + | ||
85 | + /** | ||
86 | + * 包装费用$ | ||
87 | + */ | ||
88 | + @ApiModelProperty(value = "包装费用(美元)") | ||
89 | + private Double packetPrice; | ||
90 | + | ||
91 | + /** | ||
92 | + * 包装费用合计$ | ||
93 | + */ | ||
94 | + @ApiModelProperty(value = "包装费用合计(美元)") | ||
95 | + private Double packetTotalPrice; | ||
96 | + | ||
97 | + /** | ||
98 | + * 包装费用合计¥ | ||
99 | + */ | ||
100 | + @ApiModelProperty(value = "包装费用合计(人民币)") | ||
101 | + private Double packetRmbTotalPrice; | ||
102 | + | ||
103 | + /** | ||
104 | + * 包装费用实际金额 | ||
105 | + */ | ||
106 | + @ApiModelProperty(value = "包装费用实际金额(人民币)") | ||
107 | + private BigDecimal packetActualRmbTotalPrice; | ||
108 | + | ||
109 | + /** | ||
110 | + * 包装费用实际金额¥ | ||
111 | + */ | ||
112 | + @ApiModelProperty(value = "包装费用实际金额(人民币)") | ||
113 | + private BigDecimal packetActualRmbPrice; | ||
114 | + | ||
115 | + /** | ||
116 | + * 包装费用实际金额$ | ||
117 | + */ | ||
118 | + @ApiModelProperty(value = "包装费用实际金额(美元)") | ||
119 | + private BigDecimal packetActualPrice; | ||
120 | + | ||
121 | + /** | ||
122 | + * 包装费用收益 | ||
123 | + */ | ||
124 | + @ApiModelProperty(value = "包装费用收益(人民币)") | ||
125 | + private BigDecimal packetProfitRmbPrice; | ||
126 | + | ||
127 | + /** | ||
128 | + * 包装费用利润率 | ||
129 | + */ | ||
130 | + @ApiModelProperty(value = "包装费用利润率") | ||
131 | + private BigDecimal packetProfitRate; | ||
132 | + | ||
133 | + /** | ||
134 | + * 研发复制费合计¥ | ||
135 | + */ | ||
136 | + @ApiModelProperty(value = "研发复制费合计(人民币)") | ||
137 | + private BigDecimal developmentCopyRmbTotalPrice; | ||
138 | + | ||
139 | + /** | ||
140 | + * 固定成本 | ||
141 | + */ | ||
142 | + @ApiModelProperty(value = "固定成本") | ||
143 | + private BigDecimal fixedCost; | ||
144 | + | ||
145 | + /** | ||
146 | + * 西班牙已发提成¥ | ||
147 | + */ | ||
148 | + @ApiModelProperty(value = "西班牙已发提成(人民币)") | ||
149 | + private BigDecimal spainPaidRmbCommission; | ||
150 | + | ||
151 | + /** | ||
152 | + * 西班牙提成¥ | ||
153 | + */ | ||
154 | + @ApiModelProperty(value = "西班牙提成(人民币)") | ||
155 | + private BigDecimal spainRmbCommission; | ||
156 | + | ||
157 | + /** | ||
158 | + * 西班牙未发提成¥ | ||
159 | + */ | ||
160 | + @ApiModelProperty(value = "西班牙未发提成(人民币)") | ||
161 | + private BigDecimal spainUnpaidRmbCommission; | ||
162 | + | ||
163 | + /** | ||
164 | + * 已发提成¥ | ||
165 | + */ | ||
166 | + @ApiModelProperty(value = "已发提成(人民币)") | ||
167 | + private BigDecimal paidRmbCommission; | ||
168 | + | ||
169 | + /** | ||
170 | + * 提成¥ | ||
171 | + */ | ||
172 | + @ApiModelProperty(value = "提成(人民币)") | ||
173 | + private BigDecimal rmbCommission; | ||
174 | + | ||
175 | + /** | ||
176 | + * 未发提成¥ | ||
177 | + */ | ||
178 | + @ApiModelProperty(value = "未发提成(人民币)") | ||
179 | + private BigDecimal unpaidRmbCommission; | ||
180 | + | ||
181 | + /** | ||
182 | + * 实际汇率 | ||
183 | + */ | ||
184 | + @ApiModelProperty(value = "实际汇率") | ||
185 | + private BigDecimal actualExchangeRate; | ||
186 | + | ||
187 | + /** | ||
188 | + * 支出合计 | ||
189 | + */ | ||
190 | + @ApiModelProperty(value = "支出合计(人民币)") | ||
191 | + private BigDecimal rmbTotalExpense; | ||
192 | + | ||
193 | + /** | ||
194 | + * 毛利润 | ||
195 | + */ | ||
196 | + @ApiModelProperty(value = "毛利润") | ||
197 | + private BigDecimal profit; | ||
198 | + | ||
199 | + /** | ||
200 | + * 毛利率 | ||
201 | + */ | ||
202 | + @ApiModelProperty(value = "毛利率") | ||
203 | + private BigDecimal profitRate; | ||
204 | + | ||
205 | + /** | ||
206 | + * 研发净利润 | ||
207 | + */ | ||
208 | + @ApiModelProperty(value = "研发净利润") | ||
209 | + private BigDecimal developmentProfit; | ||
210 | + | ||
211 | + /** | ||
212 | + * 净利润率 | ||
213 | + */ | ||
214 | + @ApiModelProperty(value = "净利润率") | ||
215 | + private BigDecimal developmentProfitRate; | ||
216 | + | ||
217 | + /** | ||
218 | + * 实际跟单单价 | ||
219 | + */ | ||
220 | + @ApiModelProperty(value = "实际跟单单价(人民币)") | ||
221 | + private BigDecimal actualOrderRmbPrice; | ||
222 | + | ||
223 | + /** | ||
224 | + * 实际跟单单价$ | ||
225 | + */ | ||
226 | + @ApiModelProperty(value = "实际跟单单价(美元)") | ||
227 | + private BigDecimal actualOrderPrice; | ||
228 | + | ||
229 | + /** | ||
230 | + * 汇率收益 | ||
231 | + */ | ||
232 | + @ApiModelProperty(value = "汇率收益") | ||
233 | + private BigDecimal exchangeRateProfit; | ||
234 | + | ||
235 | + /** | ||
236 | + * 综合收益 | ||
237 | + */ | ||
238 | + @ApiModelProperty(value = "综合收益") | ||
239 | + private BigDecimal comprehensiveProfit; | ||
240 | + | ||
241 | + | ||
242 | + /** | ||
243 | + * 业务研发净利润状态 | ||
244 | + */ | ||
245 | + @ApiModelProperty(value = "业务研发净利润状态") | ||
246 | + private Integer developmentStatus; | ||
247 | + | ||
248 | + /** | ||
249 | + * 内部生产净利润状态 | ||
250 | + */ | ||
251 | + @ApiModelProperty(value = "内部生产净利润状态") | ||
252 | + private Integer innerProductionStatus; | ||
253 | + | ||
254 | + /** | ||
255 | + * 项目开始时间 | ||
256 | + */ | ||
257 | + @ApiModelProperty(value = "项目开始时间") | ||
258 | + private LocalDateTime projectStartTime; | ||
259 | + | ||
260 | + /** | ||
261 | + * 项目结束时间 | ||
262 | + */ | ||
263 | + @ApiModelProperty(value = "项目结束时间") | ||
264 | + private LocalDateTime projectEndTime; | ||
265 | + | ||
266 | + @ApiModelProperty(value = "生产开始时间") | ||
267 | + private LocalDateTime produceStartTime; | ||
268 | + | ||
269 | + @ApiModelProperty(value = "生产结束时间") | ||
270 | + private LocalDateTime produceEndTime; | ||
271 | + | ||
272 | + @ApiModelProperty(value = "锁定字段信息") | ||
273 | + private ProjectBaseInfoLockFieldVO lockFields; | ||
274 | + | ||
275 | + | ||
276 | +} | ||
277 | + |
src/main/java/com/order/erp/domain/vo/order/InnerProfitDetailExportSelect.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | + | ||
8 | +@Data | ||
9 | +@AllArgsConstructor | ||
10 | +@ToString | ||
11 | +@NoArgsConstructor | ||
12 | +@EqualsAndHashCode(callSuper = false) | ||
13 | +@SuperBuilder | ||
14 | +public class InnerProfitDetailExportSelect { | ||
15 | + /** | ||
16 | + * 生产科预算金额由财务手动输入 | ||
17 | + */ | ||
18 | + @ApiModelProperty(value = "生产科预算金额") | ||
19 | + private String productionDepartmentPredictPrice; | ||
20 | + | ||
21 | + | ||
22 | + /** | ||
23 | + * 实际发生费用 手动输入 | ||
24 | + */ | ||
25 | + @ApiModelProperty(value = "实际发生费用") | ||
26 | + private String productionActualPrice; | ||
27 | + | ||
28 | + /** | ||
29 | + * 生产科总价合计 | ||
30 | + */ | ||
31 | + @ApiModelProperty(value = "生产科总价") | ||
32 | + private String productionDepartmentTotalPrice; | ||
33 | + /** | ||
34 | + * 生产科总价合计 | ||
35 | + */ | ||
36 | + @ApiModelProperty(value = "生产科单价") | ||
37 | + private String productionDepartmentPrice; | ||
38 | + | ||
39 | + | ||
40 | + /** | ||
41 | + * 预算占比 | ||
42 | + * 预算占比计算(实际发生费用/预算金额 | ||
43 | + */ | ||
44 | + @ApiModelProperty(value = "预算占比") | ||
45 | + private String predictRatio; | ||
46 | + | ||
47 | + /** | ||
48 | + * 预算占比与实际占比差 | ||
49 | + * 预算占比与实际占比差计算(1-预算占比) | ||
50 | + */ | ||
51 | + @ApiModelProperty(value = "预算占比与实际占比差") | ||
52 | + private String predictAndActualRatio; | ||
53 | + | ||
54 | + /** | ||
55 | + * 内部生产毛利润计算:生产科总价-预算金额 | ||
56 | + */ | ||
57 | + @ApiModelProperty(value = "事前毛利润") | ||
58 | + private String beforeGrossProfit; | ||
59 | + | ||
60 | + /** | ||
61 | + * 内部生产毛利润率计算:事前毛利润/生产科总价 | ||
62 | + */ | ||
63 | + @ApiModelProperty(value = "事前毛利率") | ||
64 | + private String beforeGrossProfitRate; | ||
65 | + | ||
66 | + /** | ||
67 | + * 内部生产毛利润计算:生产科总价-实际发生费用就是得出 | ||
68 | + */ | ||
69 | + @ApiModelProperty(value = "事后毛利润") | ||
70 | + private String grossProfit; | ||
71 | + | ||
72 | + /** | ||
73 | + * 内部生产毛利润率计算:事后毛利润/生产科总价 | ||
74 | + */ | ||
75 | + @ApiModelProperty(value = "事后毛利率") | ||
76 | + private String grossProfitRate; | ||
77 | + | ||
78 | +} |
src/main/java/com/order/erp/domain/vo/order/InnerProfitDetailVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.math.BigDecimal; | ||
9 | +import java.util.Map; | ||
10 | + | ||
11 | +/** | ||
12 | + * 业务/研发净利润分析 | ||
13 | + * | ||
14 | + * @author makejava | ||
15 | + * @since 2024-08-05 16:26:34 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@AllArgsConstructor | ||
19 | +@ToString | ||
20 | +@NoArgsConstructor | ||
21 | +@EqualsAndHashCode(callSuper = false) | ||
22 | +@SuperBuilder | ||
23 | +public class InnerProfitDetailVO implements Serializable { | ||
24 | + | ||
25 | + /** | ||
26 | + * 订单id | ||
27 | + */ | ||
28 | + @ApiModelProperty(value = "订单id") | ||
29 | + private Long orderId; | ||
30 | + /** | ||
31 | + * 客户编码 | ||
32 | + */ | ||
33 | + @ApiModelProperty(value = "客户编码") | ||
34 | + private String customerCode; | ||
35 | + | ||
36 | + /** | ||
37 | + * 项目号 | ||
38 | + */ | ||
39 | + @ApiModelProperty(value = "项目号") | ||
40 | + private String projectNo; | ||
41 | + @ApiModelProperty(value = "生产科") | ||
42 | + private String productionDepartment; | ||
43 | + | ||
44 | + /** | ||
45 | + * 内部编号 | ||
46 | + */ | ||
47 | + @ApiModelProperty(value = "内部编码") | ||
48 | + private String innerNo; | ||
49 | + /** | ||
50 | + * pic图片地址 | ||
51 | + */ | ||
52 | + @ApiModelProperty(value = "图片") | ||
53 | + private String picUrl; | ||
54 | + | ||
55 | + /** | ||
56 | + * 订单数量 | ||
57 | + */ | ||
58 | + @ApiModelProperty(value = "数量") | ||
59 | + private Integer orderCount; | ||
60 | + | ||
61 | + /** | ||
62 | + * 生产科预算金额由财务手动输入 | ||
63 | + */ | ||
64 | + @ApiModelProperty(value = "生产科预算金额") | ||
65 | + private BigDecimal productionDepartmentPredictPrice; | ||
66 | + | ||
67 | + /** | ||
68 | + * 生产科预算单价,由生产科预算金额/数量。 | ||
69 | + */ | ||
70 | + @ApiModelProperty(value = "生产科预算金额") | ||
71 | + private BigDecimal productionDepartmentPredictUnitprice; | ||
72 | + | ||
73 | + | ||
74 | + /** | ||
75 | + * 实际发生费用 手动输入 | ||
76 | + */ | ||
77 | + @ApiModelProperty(value = "实际发生费用") | ||
78 | + private BigDecimal productionActualPrice; | ||
79 | + | ||
80 | + /** | ||
81 | + * 生产科总价合计 | ||
82 | + */ | ||
83 | + @ApiModelProperty(value = "生产科总价") | ||
84 | + private Double productionDepartmentTotalPrice; | ||
85 | + /** | ||
86 | + * 生产科总价合计 | ||
87 | + */ | ||
88 | + @ApiModelProperty(value = "生产科单价") | ||
89 | + private Double productionDepartmentPrice; | ||
90 | + | ||
91 | + | ||
92 | + /** | ||
93 | + * 预算占比 | ||
94 | + * 预算占比计算(实际发生费用/预算金额 | ||
95 | + */ | ||
96 | + @ApiModelProperty(value = "预算占比") | ||
97 | + private BigDecimal predictRatio; | ||
98 | + | ||
99 | + /** | ||
100 | + * 预算占比与实际占比差 | ||
101 | + * 预算占比与实际占比差计算(1-预算占比) | ||
102 | + */ | ||
103 | + @ApiModelProperty(value = "预算占比与实际占比差") | ||
104 | + private BigDecimal predictAndActualRatio; | ||
105 | + | ||
106 | + /** | ||
107 | + * 内部生产毛利润计算:生产科总价-预算金额 | ||
108 | + */ | ||
109 | + @ApiModelProperty(value = "事前毛利润") | ||
110 | + private BigDecimal beforeGrossProfit; | ||
111 | + | ||
112 | + /** | ||
113 | + * 内部生产毛利润率计算:事前毛利润/生产科总价 | ||
114 | + */ | ||
115 | + @ApiModelProperty(value = "事前毛利润") | ||
116 | + private BigDecimal beforeGrossProfitRate; | ||
117 | + | ||
118 | + /** | ||
119 | + * 内部生产毛利润计算:生产科总价-实际发生费用就是得出 | ||
120 | + */ | ||
121 | + @ApiModelProperty(value = "事后毛利润") | ||
122 | + private BigDecimal grossProfit; | ||
123 | + | ||
124 | + /** | ||
125 | + * 内部生产毛利润率计算:事后毛利润/生产科总价 | ||
126 | + */ | ||
127 | + @ApiModelProperty(value = "事后毛利润") | ||
128 | + private BigDecimal grossProfitRate; | ||
129 | + /** | ||
130 | + * 内部生产明细表状态 | ||
131 | + */ | ||
132 | + @ApiModelProperty(value = "内部生产明细表状态") | ||
133 | + private Integer innerProduceStatus ; | ||
134 | + | ||
135 | + private OrderCostInfolockFieldVO lockFields; | ||
136 | + | ||
137 | +} | ||
138 | + |
src/main/java/com/order/erp/domain/vo/order/InnerProfitInfoExportSelect.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | + | ||
8 | + | ||
9 | +@Data | ||
10 | +@AllArgsConstructor | ||
11 | +@ToString | ||
12 | +@NoArgsConstructor | ||
13 | +@EqualsAndHashCode(callSuper = false) | ||
14 | +@SuperBuilder | ||
15 | +public class InnerProfitInfoExportSelect { | ||
16 | + | ||
17 | + | ||
18 | + | ||
19 | + /** | ||
20 | + * 生产科预算金额由财务手动输入 | ||
21 | + */ | ||
22 | + @ApiModelProperty(value = "生产科预算金额") | ||
23 | + private String productionDepartmentPredictPrice; | ||
24 | + | ||
25 | + | ||
26 | + /** | ||
27 | + * 实际发生费用 手动输入 | ||
28 | + */ | ||
29 | + @ApiModelProperty(value = "实际发生费用") | ||
30 | + private String productionActualPrice; | ||
31 | + | ||
32 | + /** | ||
33 | + * 生产科总价合计 | ||
34 | + */ | ||
35 | + @ApiModelProperty(value = "生产科单价") | ||
36 | + private String productionDepartmentUnitPrice; | ||
37 | + | ||
38 | + /** | ||
39 | + * 生产科总价合计 | ||
40 | + */ | ||
41 | + @ApiModelProperty(value = "生产科总价") | ||
42 | + private String productionDepartmentTotalPrice; | ||
43 | + | ||
44 | + | ||
45 | + /** | ||
46 | + * 预算占比 | ||
47 | + * 预算占比计算(实际发生费用/预算金额 | ||
48 | + */ | ||
49 | + @ApiModelProperty(value = "预算占比") | ||
50 | + private String predictRatio; | ||
51 | + | ||
52 | + /** | ||
53 | + * 预算占比与实际占比差 | ||
54 | + * 预算占比与实际占比差计算(1-预算占比) | ||
55 | + */ | ||
56 | + @ApiModelProperty(value = "预算占比与实际占比差") | ||
57 | + private String predictAndActualRatio; | ||
58 | + | ||
59 | + /** | ||
60 | + * 内部生产毛利润计算:生产科总价-预算金额 | ||
61 | + */ | ||
62 | + @ApiModelProperty(value = "事前毛利润") | ||
63 | + private String beforeGrossProfit; | ||
64 | + | ||
65 | + /** | ||
66 | + * 内部生产毛利润率计算:事前毛利润/生产科总价 | ||
67 | + */ | ||
68 | + @ApiModelProperty(value = "事前毛利率") | ||
69 | + private String beforeGrossProfitRate; | ||
70 | + | ||
71 | + /** | ||
72 | + * 内部生产毛利润计算:生产科总价-实际发生费用就是得出 | ||
73 | + */ | ||
74 | + @ApiModelProperty(value = "事后毛利润") | ||
75 | + private String grossProfit; | ||
76 | + | ||
77 | + /** | ||
78 | + * 内部生产毛利润率计算:事后毛利润/生产科总价 | ||
79 | + */ | ||
80 | + @ApiModelProperty(value = "事后毛利率") | ||
81 | + private String grossProfitRate; | ||
82 | + | ||
83 | + /** | ||
84 | + * 内部生产固定成本 | ||
85 | + */ | ||
86 | + @ApiModelProperty(value = "内部生产固定成本") | ||
87 | + private String innerProductionFixedCost; | ||
88 | + | ||
89 | + /** | ||
90 | + * 内部生产提成 | ||
91 | + */ | ||
92 | + @ApiModelProperty(value = "内部生产提成") | ||
93 | + private String innerProductionCommission; | ||
94 | + /** | ||
95 | + * 内部生产净利润 | ||
96 | + */ | ||
97 | + @ApiModelProperty(value = "内部生产净利润") | ||
98 | + private String innerProductionProfit; | ||
99 | + /** | ||
100 | + * 内部生产净利润率 | ||
101 | + */ | ||
102 | + @ApiModelProperty(value = "内部生产净利润率") | ||
103 | + private String innerProductionProfitRate; | ||
104 | +} |
src/main/java/com/order/erp/domain/vo/order/InnerProfitInfoVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.math.BigDecimal; | ||
9 | +import java.time.LocalDateTime; | ||
10 | + | ||
11 | +/** | ||
12 | + * 业务/研发净利润分析 | ||
13 | + * | ||
14 | + * @author makejava | ||
15 | + * @since 2024-08-05 16:26:34 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@AllArgsConstructor | ||
19 | +@ToString | ||
20 | +@NoArgsConstructor | ||
21 | +@EqualsAndHashCode(callSuper = false) | ||
22 | +@SuperBuilder | ||
23 | +public class InnerProfitInfoVO implements Serializable { | ||
24 | + | ||
25 | + | ||
26 | + /** | ||
27 | + * 客户编码 | ||
28 | + */ | ||
29 | + @ApiModelProperty(value = "客户编码") | ||
30 | + private String customerCode; | ||
31 | + | ||
32 | + /** | ||
33 | + * 项目号 | ||
34 | + */ | ||
35 | + @ApiModelProperty(value = "项目号") | ||
36 | + private String projectNoPrefix; | ||
37 | + @ApiModelProperty(value = "生产科") | ||
38 | + private String productionDepartment; | ||
39 | + | ||
40 | + /** | ||
41 | + * 订单数量 | ||
42 | + */ | ||
43 | + @ApiModelProperty(value = "数量") | ||
44 | + private Integer orderCount; | ||
45 | + | ||
46 | + /** | ||
47 | + * 生产科预算金额由财务手动输入 | ||
48 | + */ | ||
49 | + @ApiModelProperty(value = "生产科预算金额") | ||
50 | + private BigDecimal productionDepartmentPredictPrice; | ||
51 | + | ||
52 | + | ||
53 | + /** | ||
54 | + * 实际发生费用 手动输入 | ||
55 | + */ | ||
56 | + @ApiModelProperty(value = "实际发生费用") | ||
57 | + private BigDecimal productionActualPrice; | ||
58 | + | ||
59 | + /** | ||
60 | + * 生产科总价合计 | ||
61 | + */ | ||
62 | + @ApiModelProperty(value = "生产科单价") | ||
63 | + private Double productionDepartmentUnitPrice; | ||
64 | + | ||
65 | + /** | ||
66 | + * 生产科总价合计 | ||
67 | + */ | ||
68 | + @ApiModelProperty(value = "生产科总价") | ||
69 | + private Double productionDepartmentTotalPrice; | ||
70 | + | ||
71 | + | ||
72 | + /** | ||
73 | + * 预算占比 | ||
74 | + * 预算占比计算(实际发生费用/预算金额 | ||
75 | + */ | ||
76 | + @ApiModelProperty(value = "预算占比") | ||
77 | + private BigDecimal predictRatio; | ||
78 | + | ||
79 | + /** | ||
80 | + * 预算占比与实际占比差 | ||
81 | + * 预算占比与实际占比差计算(1-预算占比) | ||
82 | + */ | ||
83 | + @ApiModelProperty(value = "预算占比与实际占比差") | ||
84 | + private BigDecimal predictAndActualRatio; | ||
85 | + | ||
86 | + /** | ||
87 | + * 内部生产毛利润计算:生产科总价-预算金额 | ||
88 | + */ | ||
89 | + @ApiModelProperty(value = "事前毛利润") | ||
90 | + private BigDecimal beforeGrossProfit; | ||
91 | + | ||
92 | + /** | ||
93 | + * 内部生产毛利润率计算:事前毛利润/生产科总价 | ||
94 | + */ | ||
95 | + @ApiModelProperty(value = "事前毛利润") | ||
96 | + private BigDecimal beforeGrossProfitRate; | ||
97 | + | ||
98 | + /** | ||
99 | + * 内部生产毛利润计算:生产科总价-实际发生费用就是得出 | ||
100 | + */ | ||
101 | + @ApiModelProperty(value = "事后毛利润") | ||
102 | + private BigDecimal grossProfit; | ||
103 | + | ||
104 | + /** | ||
105 | + * 内部生产毛利润率计算:事后毛利润/生产科总价 | ||
106 | + */ | ||
107 | + @ApiModelProperty(value = "事后毛利润") | ||
108 | + private BigDecimal grossProfitRate; | ||
109 | + | ||
110 | + /** | ||
111 | + * 内部生产固定成本 | ||
112 | + */ | ||
113 | + @ApiModelProperty(value = "内部生产固定成本") | ||
114 | + private BigDecimal innerProductionFixedCost; | ||
115 | + | ||
116 | + /** | ||
117 | + * 内部生产提成 | ||
118 | + */ | ||
119 | + @ApiModelProperty(value = "内部生产提成") | ||
120 | + private BigDecimal innerProductionCommission; | ||
121 | + /** | ||
122 | + * 内部生产净利润 | ||
123 | + */ | ||
124 | + @ApiModelProperty(value = "内部生产净利润") | ||
125 | + private BigDecimal innerProductionProfit; | ||
126 | + /** | ||
127 | + * 内部生产净利润率 | ||
128 | + */ | ||
129 | + @ApiModelProperty(value = "内部生产净利润率") | ||
130 | + private BigDecimal innerProductionProfitRate; | ||
131 | + | ||
132 | + /** | ||
133 | + * 项目开始时间 | ||
134 | + */ | ||
135 | + @ApiModelProperty(value = "项目开始时间") | ||
136 | + private LocalDateTime produceStartTime; | ||
137 | + /** | ||
138 | + * 项目结束时间 | ||
139 | + */ | ||
140 | + @ApiModelProperty(value = "项目结束时间") | ||
141 | + private LocalDateTime produceEndTime; | ||
142 | + | ||
143 | + /** | ||
144 | + * 内部生产净利润分析表状态 | ||
145 | + */ | ||
146 | + @ApiModelProperty(value = "内部生产净利润分析表状态") | ||
147 | + private Integer innerProductionStatus; | ||
148 | + | ||
149 | + private ProjectBaseInfoLockFieldVO lockFields; | ||
150 | + | ||
151 | +} | ||
152 | + |
src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
@@ -61,6 +61,12 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { | @@ -61,6 +61,12 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable { | ||
61 | private List<String> projectNo; | 61 | private List<String> projectNo; |
62 | 62 | ||
63 | /** | 63 | /** |
64 | + * 项目号右模糊 | ||
65 | + */ | ||
66 | + private String projectNoLikeRight; | ||
67 | + | ||
68 | + | ||
69 | + /** | ||
64 | * 客户编码集合 | 70 | * 客户编码集合 |
65 | */ | 71 | */ |
66 | private List<String> customerCode; | 72 | private List<String> customerCode; |
src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoVO.java
@@ -4,6 +4,7 @@ import lombok.*; | @@ -4,6 +4,7 @@ import lombok.*; | ||
4 | import lombok.experimental.SuperBuilder; | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | ||
6 | import java.io.Serializable; | 6 | import java.io.Serializable; |
7 | +import java.time.LocalDateTime; | ||
7 | 8 | ||
8 | /** | 9 | /** |
9 | * 订单基础信息表(OrderBaseInfo)实体类 | 10 | * 订单基础信息表(OrderBaseInfo)实体类 |
@@ -26,6 +27,8 @@ public class OrderBaseInfoVO implements Serializable { | @@ -26,6 +27,8 @@ public class OrderBaseInfoVO implements Serializable { | ||
26 | */ | 27 | */ |
27 | private String invoiceNo; | 28 | private String invoiceNo; |
28 | 29 | ||
30 | + private LocalDateTime createTime; | ||
31 | + | ||
29 | /** | 32 | /** |
30 | * 生产科对账单号 如果要在首页添加生产科对账单号列数,就需要在这里加上。 | 33 | * 生产科对账单号 如果要在首页添加生产科对账单号列数,就需要在这里加上。 |
31 | */ | 34 | */ |
src/main/java/com/order/erp/domain/vo/order/OrderCostDetailedOptedLogQueryVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.vo.BasePageVO; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.util.List; | ||
9 | +@Data | ||
10 | +@AllArgsConstructor | ||
11 | +@ToString | ||
12 | +@NoArgsConstructor | ||
13 | +@EqualsAndHashCode(callSuper = false) | ||
14 | +@SuperBuilder | ||
15 | +public class OrderCostDetailedOptedLogQueryVO extends BasePageVO implements Serializable { | ||
16 | + | ||
17 | + private List<Long> ids; | ||
18 | + | ||
19 | + private Long id; | ||
20 | + | ||
21 | + /** | ||
22 | + * 项目号前缀 | ||
23 | + * */ | ||
24 | + private Long orderId; | ||
25 | + | ||
26 | + /** | ||
27 | + * 业务类型 20:包装费用明细表创建/编辑 40:对应内部生产明细表创建/编辑 | ||
28 | + * */ | ||
29 | + private Integer type; | ||
30 | +} |
src/main/java/com/order/erp/domain/vo/order/OrderCostInfoVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
6 | +import io.swagger.annotations.ApiModel; | ||
7 | +import lombok.AllArgsConstructor; | ||
8 | +import lombok.Data; | ||
9 | +import lombok.EqualsAndHashCode; | ||
10 | +import lombok.NoArgsConstructor; | ||
11 | +import lombok.experimental.SuperBuilder; | ||
12 | + | ||
13 | +import java.io.Serializable; | ||
14 | +import java.math.BigDecimal; | ||
15 | + | ||
16 | +/** | ||
17 | + * <p> | ||
18 | + * | ||
19 | + * </p> | ||
20 | + * | ||
21 | + * @author author | ||
22 | + * @since 2024-12-22 | ||
23 | + */ | ||
24 | +@Data | ||
25 | +@EqualsAndHashCode(callSuper = false) | ||
26 | +@SuperBuilder | ||
27 | +@AllArgsConstructor | ||
28 | +@NoArgsConstructor | ||
29 | +@TableName("order_cost_info") | ||
30 | +@ApiModel(value="OrderCostDetail对象", description="") | ||
31 | +public class OrderCostInfoVO implements Serializable { | ||
32 | + | ||
33 | + private static final long serialVersionUID = 1L; | ||
34 | + | ||
35 | + @TableId(value = "id", type = IdType.AUTO) | ||
36 | + private Long id; | ||
37 | + | ||
38 | + private Long orderId; | ||
39 | + | ||
40 | + private BigDecimal productionDepartmentPredictPrice; | ||
41 | + | ||
42 | + private BigDecimal productionActualPrice; | ||
43 | + | ||
44 | + private BigDecimal packetActualRmbTotalPrice; | ||
45 | + private Integer orderCount; | ||
46 | + //单价 之前前端是传递productionDepartmentPredictPrice,现在改为传递单价,所以传递productionDepartmentPredictUnitPrice。 | ||
47 | + private BigDecimal productionDepartmentPredictUnitPrice; | ||
48 | + | ||
49 | + //内部生产费用明细表状态。 | ||
50 | + private Integer innerProduceStatus; | ||
51 | + //包装费用费用明细表状态。 | ||
52 | + private Integer packStatus; | ||
53 | + | ||
54 | +} |
src/main/java/com/order/erp/domain/vo/order/OrderCostInfolockFieldVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import io.swagger.annotations.ApiModel; | ||
5 | +import lombok.AllArgsConstructor; | ||
6 | +import lombok.Data; | ||
7 | +import lombok.EqualsAndHashCode; | ||
8 | +import lombok.NoArgsConstructor; | ||
9 | +import lombok.experimental.SuperBuilder; | ||
10 | + | ||
11 | +import javax.validation.constraints.NotNull; | ||
12 | +import java.io.Serializable; | ||
13 | + | ||
14 | +/** | ||
15 | + * <p> | ||
16 | + * | ||
17 | + * </p> | ||
18 | + * | ||
19 | + * @author author | ||
20 | + * @since 2024-12-22 | ||
21 | + */ | ||
22 | +@Data | ||
23 | +@EqualsAndHashCode(callSuper = false) | ||
24 | +@SuperBuilder | ||
25 | +@AllArgsConstructor | ||
26 | +@NoArgsConstructor | ||
27 | +@TableName("order_cost_info") | ||
28 | +@ApiModel(value="OrderCostDetail对象", description="") | ||
29 | +public class OrderCostInfolockFieldVO implements Serializable { | ||
30 | + | ||
31 | + private static final long serialVersionUID = 1L; | ||
32 | + | ||
33 | + @NotNull | ||
34 | + private Integer type; | ||
35 | + @NotNull | ||
36 | + private Long orderId; | ||
37 | + | ||
38 | + private String productionDepartmentPredictPrice; | ||
39 | + | ||
40 | + private String productionActualPrice; | ||
41 | + | ||
42 | + private String packetActualRmbTotalPrice; | ||
43 | + /** | ||
44 | + * 生产科预算单价。 | ||
45 | + * */ | ||
46 | + private String productionDepartmentPredictUnitPrice; | ||
47 | + | ||
48 | + private String applyRemark; | ||
49 | +} |
src/main/java/com/order/erp/domain/vo/order/OrderCostOptLogResultVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import lombok.*; | ||
4 | +import lombok.experimental.SuperBuilder; | ||
5 | + | ||
6 | +import java.io.Serializable; | ||
7 | +import java.time.LocalDateTime; | ||
8 | +@Data | ||
9 | +@AllArgsConstructor | ||
10 | +@ToString | ||
11 | +@NoArgsConstructor | ||
12 | +@EqualsAndHashCode(callSuper = false) | ||
13 | +@SuperBuilder | ||
14 | +public class OrderCostOptLogResultVO implements Serializable { | ||
15 | + private Long id; | ||
16 | + /** | ||
17 | + * 订单id | ||
18 | + * */ | ||
19 | + private Long orderId; | ||
20 | + /** | ||
21 | + * 用户id | ||
22 | + * */ | ||
23 | + private Long userId; | ||
24 | + /** | ||
25 | + * 用户名称 | ||
26 | + * */ | ||
27 | + private String userName; | ||
28 | + /** | ||
29 | + * 操作类型 | ||
30 | + * */ | ||
31 | + private String optType; | ||
32 | + /** | ||
33 | + * 操作字段 json字符串 | ||
34 | + * */ | ||
35 | + private String fields; | ||
36 | + | ||
37 | + private LocalDateTime createTime; | ||
38 | +} |
src/main/java/com/order/erp/domain/vo/order/OrderFieldLockApplyQueryVO.java
@@ -59,6 +59,11 @@ public class OrderFieldLockApplyQueryVO extends BasePageVO implements Serializab | @@ -59,6 +59,11 @@ public class OrderFieldLockApplyQueryVO extends BasePageVO implements Serializab | ||
59 | private Integer type; | 59 | private Integer type; |
60 | 60 | ||
61 | /** | 61 | /** |
62 | + * 申请类型:枚举类ApplyTypeEnum | ||
63 | + */ | ||
64 | + private List<Integer> typeIn; | ||
65 | + | ||
66 | + /** | ||
62 | * 项目号 | 67 | * 项目号 |
63 | */ | 68 | */ |
64 | private List<String> projectNo; | 69 | private List<String> projectNo; |
src/main/java/com/order/erp/domain/vo/order/OrderInfoResultVO.java
@@ -38,6 +38,10 @@ public class OrderInfoResultVO extends OrderBaseInfoVO implements Serializable { | @@ -38,6 +38,10 @@ public class OrderInfoResultVO extends OrderBaseInfoVO implements Serializable { | ||
38 | * 质检信息 | 38 | * 质检信息 |
39 | */ | 39 | */ |
40 | private OrderInspectionStageVO inspectionStageInfo; | 40 | private OrderInspectionStageVO inspectionStageInfo; |
41 | + /** | ||
42 | + * 费用明细 | ||
43 | + */ | ||
44 | + private OrderCostInfoVO orderCostInfo; | ||
41 | 45 | ||
42 | /** | 46 | /** |
43 | * 字段锁定集合 | 47 | * 字段锁定集合 |
src/main/java/com/order/erp/domain/vo/order/OrderLockFieldVO.java
@@ -46,6 +46,11 @@ public class OrderLockFieldVO implements Serializable { | @@ -46,6 +46,11 @@ public class OrderLockFieldVO implements Serializable { | ||
46 | private OrderInspectionStageFieldVO inspectionStageFields; | 46 | private OrderInspectionStageFieldVO inspectionStageFields; |
47 | 47 | ||
48 | /** | 48 | /** |
49 | + * 费用字段 | ||
50 | + */ | ||
51 | + private OrderCostInfolockFieldVO costInfolockFieldVO; | ||
52 | + | ||
53 | + /** | ||
49 | * 应收款账单字段 | 54 | * 应收款账单字段 |
50 | */ | 55 | */ |
51 | 56 |
src/main/java/com/order/erp/domain/vo/order/OrderProfitAnalysisVO.java
@@ -4,6 +4,7 @@ import lombok.*; | @@ -4,6 +4,7 @@ import lombok.*; | ||
4 | import lombok.experimental.SuperBuilder; | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | ||
6 | import java.io.Serializable; | 6 | import java.io.Serializable; |
7 | +import java.math.BigDecimal; | ||
7 | 8 | ||
8 | /** | 9 | /** |
9 | * 订单利润分析表(OrderProfitAnalysis)实体类 | 10 | * 订单利润分析表(OrderProfitAnalysis)实体类 |
@@ -34,7 +35,6 @@ public class OrderProfitAnalysisVO implements Serializable { | @@ -34,7 +35,6 @@ public class OrderProfitAnalysisVO implements Serializable { | ||
34 | */ | 35 | */ |
35 | private Double customerTotalPrice; | 36 | private Double customerTotalPrice; |
36 | 37 | ||
37 | - | ||
38 | /** | 38 | /** |
39 | * 客户单价¥ | 39 | * 客户单价¥ |
40 | */ | 40 | */ |
@@ -115,4 +115,6 @@ public class OrderProfitAnalysisVO implements Serializable { | @@ -115,4 +115,6 @@ public class OrderProfitAnalysisVO implements Serializable { | ||
115 | */ | 115 | */ |
116 | private String endCheckResult; | 116 | private String endCheckResult; |
117 | 117 | ||
118 | + | ||
119 | + | ||
118 | } | 120 | } |
src/main/java/com/order/erp/domain/vo/order/OrderProfitQueryVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.vo.BasePageVO; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.util.List; | ||
9 | +import java.util.Set; | ||
10 | + | ||
11 | +/** | ||
12 | + * 订单基础信息表(OrderBaseInfo)实体类 | ||
13 | + * | ||
14 | + * @author makejava | ||
15 | + * @since 2023-09-08 15:26:43 | ||
16 | + */ | ||
17 | +@Data | ||
18 | +@AllArgsConstructor | ||
19 | +@ToString | ||
20 | +@NoArgsConstructor | ||
21 | +@EqualsAndHashCode(callSuper = false) | ||
22 | +@SuperBuilder | ||
23 | +public class OrderProfitQueryVO extends BasePageVO implements Serializable { | ||
24 | + private static final long serialVersionUID = -84816007994858993L; | ||
25 | + | ||
26 | + private List<Long> ids; | ||
27 | + | ||
28 | + private Set<Long> orderIds; | ||
29 | + | ||
30 | + | ||
31 | + private Long id; | ||
32 | + | ||
33 | + /** | ||
34 | + * 生成开始时间 | ||
35 | + */ | ||
36 | + private String createStartTime; | ||
37 | + | ||
38 | + /** | ||
39 | + * 生成结束时间 | ||
40 | + */ | ||
41 | + private String createEndTime; | ||
42 | + | ||
43 | + /** | ||
44 | + * 单据状态 | ||
45 | + */ | ||
46 | + private List<String> orderStatus; | ||
47 | + | ||
48 | + /** | ||
49 | + * 提交人名称 | ||
50 | + */ | ||
51 | + private String commitUserName; | ||
52 | + | ||
53 | + /** | ||
54 | + * 提交人手机号码 | ||
55 | + */ | ||
56 | + private String commitUserPhone; | ||
57 | + | ||
58 | + /** | ||
59 | + * 项目号 | ||
60 | + */ | ||
61 | + private List<String> projectNo; | ||
62 | + | ||
63 | + /** | ||
64 | + * 客户编码集合 | ||
65 | + */ | ||
66 | + private List<String> customerCode; | ||
67 | + | ||
68 | + /** | ||
69 | + * 客户STYLE# | ||
70 | + */ | ||
71 | + private List<String> customerStyle; | ||
72 | + | ||
73 | + /** | ||
74 | + * 内部编号 | ||
75 | + */ | ||
76 | + private List<String> innerNo; | ||
77 | + | ||
78 | + /** | ||
79 | + * 生产科 | ||
80 | + */ | ||
81 | + private List<String> productionDepartment; | ||
82 | + | ||
83 | + /** | ||
84 | + * 生成科拖货开始时间 | ||
85 | + */ | ||
86 | + private String productionDepartmentConsignStartTime; | ||
87 | + | ||
88 | + /** | ||
89 | + * 生成科拖货结束时间 | ||
90 | + */ | ||
91 | + private String productionDepartmentConsignEndTime; | ||
92 | + | ||
93 | + /** | ||
94 | + * 订单上HOD开始时间 | ||
95 | + */ | ||
96 | + private String orderHodStartTime; | ||
97 | + | ||
98 | + /** | ||
99 | + * 订单上HOD结束时间 | ||
100 | + */ | ||
101 | + private String orderHodEndTime; | ||
102 | + | ||
103 | + /** | ||
104 | + * 最小利润率 | ||
105 | + */ | ||
106 | + private Double profitRateLqt; | ||
107 | + | ||
108 | + /** | ||
109 | + * 最大利润率 | ||
110 | + */ | ||
111 | + private Double profitRateGqt; | ||
112 | + | ||
113 | + /** | ||
114 | + * 想法来源 | ||
115 | + */ | ||
116 | + private List<String> ideaSource; | ||
117 | + | ||
118 | + /** | ||
119 | + * 想法来源占比 | ||
120 | + */ | ||
121 | + private Double ideaSourceRate; | ||
122 | + | ||
123 | + /** | ||
124 | + * 设计师 | ||
125 | + */ | ||
126 | + private String designer; | ||
127 | + | ||
128 | + /** | ||
129 | + * 手工初型1 | ||
130 | + */ | ||
131 | + private List<String> manualPreform1; | ||
132 | + | ||
133 | + /** | ||
134 | + * 手工初型1占比 | ||
135 | + */ | ||
136 | + private Double manualPreform1Rate; | ||
137 | + | ||
138 | + /** | ||
139 | + * 手工初型2 | ||
140 | + */ | ||
141 | + private List<String> manualPreform2; | ||
142 | + | ||
143 | + /** | ||
144 | + * 手工初型2占比 | ||
145 | + */ | ||
146 | + private Double manualPreform2Rate; | ||
147 | + | ||
148 | + /** | ||
149 | + * pp样品确认意见 | ||
150 | + */ | ||
151 | + private List<String> ppConfirmResult; | ||
152 | + | ||
153 | + /** | ||
154 | + * 自测通过开始时间 | ||
155 | + */ | ||
156 | + private String selfTestPassStartTime; | ||
157 | + | ||
158 | + /** | ||
159 | + * 自测通过结束时间 | ||
160 | + */ | ||
161 | + private String selfTestPassEndTime; | ||
162 | + | ||
163 | + /** | ||
164 | + * 中期验货结果PASS / FAIL | ||
165 | + */ | ||
166 | + private List<String> midCheckResult; | ||
167 | + | ||
168 | + /** | ||
169 | + * 尾期验货结果PASS / FAIL | ||
170 | + */ | ||
171 | + private List<String> endCheckResult; | ||
172 | + | ||
173 | + /** | ||
174 | + * 选择的字段 | ||
175 | + */ | ||
176 | + private OrderLockFieldVO fieldVO; | ||
177 | + | ||
178 | + /** | ||
179 | + * 创建人 | ||
180 | + */ | ||
181 | + private String createBy; | ||
182 | + | ||
183 | + /** | ||
184 | + * 业务员 | ||
185 | + */ | ||
186 | + private List<String> businessPerson; | ||
187 | + | ||
188 | + | ||
189 | + private List<Long> exportOrderIds; | ||
190 | + | ||
191 | + /** | ||
192 | + * invoice 首页筛选invoice。 | ||
193 | + */ | ||
194 | + private List<String> invoiceNo; | ||
195 | + | ||
196 | + /** | ||
197 | + * checkNo 首页筛选Check。 | ||
198 | + */ | ||
199 | + private List<String> CheckNo; | ||
200 | + /** | ||
201 | + * invoice invoice状态。 | ||
202 | + */ | ||
203 | + private Long invoiceStatus; | ||
204 | + /** | ||
205 | + * checkNo checkNo状态。 | ||
206 | + */ | ||
207 | + private Long checkNoStatus; | ||
208 | +} | ||
209 | + |
src/main/java/com/order/erp/domain/vo/order/ProjectApplyVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
6 | +import com.order.erp.domain.dto.BaseDO; | ||
7 | +import io.swagger.annotations.ApiModel; | ||
8 | +import io.swagger.annotations.ApiModelProperty; | ||
9 | +import lombok.AllArgsConstructor; | ||
10 | +import lombok.Data; | ||
11 | +import lombok.EqualsAndHashCode; | ||
12 | +import lombok.NoArgsConstructor; | ||
13 | +import lombok.experimental.SuperBuilder; | ||
14 | + | ||
15 | +import java.io.Serializable; | ||
16 | + | ||
17 | +/** | ||
18 | + * <p> | ||
19 | + * 项目-字段锁定申请表 | ||
20 | + * </p> | ||
21 | + * | ||
22 | + * @author author | ||
23 | + * @since 2024-12-22 | ||
24 | + */ | ||
25 | +@Data | ||
26 | +@EqualsAndHashCode(callSuper = false) | ||
27 | +@SuperBuilder | ||
28 | +@AllArgsConstructor | ||
29 | +@NoArgsConstructor | ||
30 | +@TableName("project_apply") | ||
31 | +@ApiModel(value="ProjectApply对象", description="项目-字段锁定申请表") | ||
32 | +public class ProjectApplyVO extends BaseDO implements Serializable { | ||
33 | + | ||
34 | + private static final long serialVersionUID = 1L; | ||
35 | + | ||
36 | + @TableId(value = "id", type = IdType.AUTO) | ||
37 | + private Long id; | ||
38 | + | ||
39 | + @ApiModelProperty(value = "项目id") | ||
40 | + private Long projectId; | ||
41 | + | ||
42 | + @ApiModelProperty(value = "项目号") | ||
43 | + private String projectNoPrefix; | ||
44 | + | ||
45 | + @ApiModelProperty(value = "申请用户id") | ||
46 | + private Long applyUserId; | ||
47 | + | ||
48 | + @ApiModelProperty(value = "审批用户id") | ||
49 | + private Long auditUserId; | ||
50 | + | ||
51 | + @ApiModelProperty(value = "申请类型") | ||
52 | + private String type; | ||
53 | + | ||
54 | + @ApiModelProperty(value = "锁定字段 json字符串") | ||
55 | + private String fields; | ||
56 | + | ||
57 | + @ApiModelProperty(value = "状态:0 待审批,1 通过,2 拒绝") | ||
58 | + private Integer status; | ||
59 | + | ||
60 | + @ApiModelProperty(value = "审核备注") | ||
61 | + private String auditRemark; | ||
62 | + | ||
63 | + @ApiModelProperty(value = "审批角色code集合,分割") | ||
64 | + private String auditRoleCodes; | ||
65 | + | ||
66 | + @ApiModelProperty(value = "申请原因") | ||
67 | + private String applyRemark; | ||
68 | + | ||
69 | + | ||
70 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectBaseInfoAuditStatus.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import lombok.*; | ||
4 | +import lombok.experimental.SuperBuilder; | ||
5 | + | ||
6 | +@Data | ||
7 | +@AllArgsConstructor | ||
8 | +@ToString | ||
9 | +@NoArgsConstructor | ||
10 | +@EqualsAndHashCode(callSuper = false) | ||
11 | +@SuperBuilder | ||
12 | +public class ProjectBaseInfoAuditStatus { | ||
13 | + /** | ||
14 | + * 设置状态时传递过来的projectNo可能只包含前八位(业务研发净利润分析),或者全部包含(内部生产净利润分析表)。 | ||
15 | + * */ | ||
16 | + private String projectNo; | ||
17 | + | ||
18 | + /** | ||
19 | + * 类型,用来判断是业务研发净利润分析表还是内部生产净利润分析表 | ||
20 | + * */ | ||
21 | + private String type; | ||
22 | + | ||
23 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectBaseInfoLockFieldVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
6 | +import com.order.erp.domain.dto.BaseDO; | ||
7 | +import io.swagger.annotations.ApiModel; | ||
8 | +import io.swagger.annotations.ApiModelProperty; | ||
9 | +import lombok.AllArgsConstructor; | ||
10 | +import lombok.Data; | ||
11 | +import lombok.EqualsAndHashCode; | ||
12 | +import lombok.NoArgsConstructor; | ||
13 | +import lombok.experimental.Accessors; | ||
14 | +import lombok.experimental.SuperBuilder; | ||
15 | + | ||
16 | +import java.io.Serializable; | ||
17 | +import java.math.BigDecimal; | ||
18 | +import java.time.LocalDateTime; | ||
19 | + | ||
20 | +/** | ||
21 | + * <p> | ||
22 | + * 项目-字段锁定申请表 | ||
23 | + * </p> | ||
24 | + * | ||
25 | + * @author author | ||
26 | + * @since 2024-12-22 | ||
27 | + */ | ||
28 | +@Data | ||
29 | +@EqualsAndHashCode(callSuper = false) | ||
30 | +@SuperBuilder | ||
31 | +@AllArgsConstructor | ||
32 | +@NoArgsConstructor | ||
33 | +@ApiModel(value="ProjectFieldLockApply对象", description="项目-字段锁定申请表") | ||
34 | +public class ProjectBaseInfoLockFieldVO implements Serializable { | ||
35 | + | ||
36 | + | ||
37 | + private Long projectId; | ||
38 | + | ||
39 | + private String projectNoPrefix; | ||
40 | + | ||
41 | + private String applyRemark; | ||
42 | + | ||
43 | + private String developmentCopyRmbTotalPrice; | ||
44 | + | ||
45 | + private String projectStartTime; | ||
46 | + | ||
47 | + private String projectEndTime; | ||
48 | + | ||
49 | + | ||
50 | + private String spainPaidRmbCommission; | ||
51 | + | ||
52 | + private String paidRmbCommission; | ||
53 | + | ||
54 | + private String actualExchangeRate; | ||
55 | + | ||
56 | + private String projectInnerProfitInfoStartTime; | ||
57 | + | ||
58 | + private String projectInnerProfitInfoEndTime; | ||
59 | + | ||
60 | + private String type; | ||
61 | + | ||
62 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectBaseInfoQueryVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.dto.BaseDO; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.util.List; | ||
9 | +import java.util.Set; | ||
10 | + | ||
11 | +@Data | ||
12 | +@AllArgsConstructor | ||
13 | +@ToString | ||
14 | +@NoArgsConstructor | ||
15 | +@EqualsAndHashCode(callSuper = false) | ||
16 | +@SuperBuilder | ||
17 | +public class ProjectBaseInfoQueryVO extends BaseDO implements Serializable { | ||
18 | + /** | ||
19 | + * 业务研发净利润表以及内部生产明细表,用于条件查询的项目号,需要传递完整的项目号 | ||
20 | + * */ | ||
21 | + private List<String> detailProjectNo; | ||
22 | + | ||
23 | + /** | ||
24 | + * 包装费用明细表以及内部生产明细表,用于条件查询。 | ||
25 | + * */ | ||
26 | + private Set<Long> orderIds; | ||
27 | + | ||
28 | + /** | ||
29 | + * 筛选条件 不传orderId时就传递筛选条件 -客户编码。 | ||
30 | + * */ | ||
31 | + private List<String> customerCode; | ||
32 | + | ||
33 | + /** | ||
34 | + * 筛选条件 不传orderId时就传递筛选条件 -内部编号。 | ||
35 | + * */ | ||
36 | + private List<String> innerNo; | ||
37 | + | ||
38 | + /** | ||
39 | + * 筛选条件 不传orderId时就传递筛选条件 -生产科。 | ||
40 | + * */ | ||
41 | + private List<String> productionDepartment; | ||
42 | + | ||
43 | + /** | ||
44 | + * 筛选条件 不传orderId时就传递筛选条件 -项目号。 | ||
45 | + * */ | ||
46 | + private List<String> projectNo; | ||
47 | + | ||
48 | + /** | ||
49 | + * 业务研发净利润分析选择导出字段 | ||
50 | + * */ | ||
51 | + private ProjectExportSelect projectExportSelect; | ||
52 | + | ||
53 | + /** | ||
54 | + * 内部研发净利润分析选择导出字段 | ||
55 | + * */ | ||
56 | + private InnerProfitInfoExportSelect innerProfitInfoExportSelect; | ||
57 | + | ||
58 | + /** | ||
59 | + * 包装费用明细表选择导出字段 | ||
60 | + * */ | ||
61 | + private BusinessCostExportSelect businessCostExportSelect; | ||
62 | + | ||
63 | + /** | ||
64 | + * 内部生产费用明细表选择导出字段 | ||
65 | + * */ | ||
66 | + private InnerProfitDetailExportSelect innerProfitDetailExportSelect; | ||
67 | + | ||
68 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectBaseInfoVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.IdType; | ||
4 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
6 | +import io.swagger.annotations.ApiModel; | ||
7 | +import lombok.Data; | ||
8 | +import lombok.EqualsAndHashCode; | ||
9 | +import lombok.experimental.Accessors; | ||
10 | + | ||
11 | +import java.io.Serializable; | ||
12 | +import java.math.BigDecimal; | ||
13 | +import java.time.LocalDateTime; | ||
14 | + | ||
15 | +/** | ||
16 | + * <p> | ||
17 | + * | ||
18 | + * </p> | ||
19 | + * | ||
20 | + * @author author | ||
21 | + * @since 2024-12-18 | ||
22 | + */ | ||
23 | +@Data | ||
24 | +@EqualsAndHashCode(callSuper = false) | ||
25 | +@Accessors(chain = true) | ||
26 | +@TableName("project_base_info") | ||
27 | +@ApiModel(value="ProjectBaseInfoDO", description="") | ||
28 | +public class ProjectBaseInfoVO implements Serializable { | ||
29 | + | ||
30 | + private static final long serialVersionUID = 1L; | ||
31 | + | ||
32 | + @TableId(value = "id", type = IdType.AUTO) | ||
33 | + private Long id; | ||
34 | + | ||
35 | + private String projectNoPrefix; | ||
36 | + | ||
37 | + private BigDecimal developmentCopyRmbTotalPrice; | ||
38 | + | ||
39 | + private LocalDateTime projectStartTime; | ||
40 | + | ||
41 | + private LocalDateTime projectEndTime; | ||
42 | + | ||
43 | + private LocalDateTime projectInnerProfitInfoStartTime; | ||
44 | + | ||
45 | + private LocalDateTime projectInnerProfitInfoEndTime; | ||
46 | + | ||
47 | + private BigDecimal spainPaidRmbCommission; | ||
48 | + | ||
49 | + private BigDecimal paidRmbCommission; | ||
50 | + | ||
51 | + private BigDecimal actualExchangeRate; | ||
52 | + | ||
53 | + private String fieldType; | ||
54 | + | ||
55 | + | ||
56 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectExportSelect.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import io.swagger.annotations.ApiModelProperty; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +@Data | ||
8 | +@AllArgsConstructor | ||
9 | +@ToString | ||
10 | +@NoArgsConstructor | ||
11 | +@EqualsAndHashCode(callSuper = false) | ||
12 | +@SuperBuilder | ||
13 | +public class ProjectExportSelect { | ||
14 | + /** | ||
15 | + * 客户总价¥ | ||
16 | + */ | ||
17 | + @ApiModelProperty(value = "客户总价(人民币)") | ||
18 | + private String customerRmbTotalPrice; | ||
19 | + | ||
20 | + /** | ||
21 | + * 客户总价$ | ||
22 | + */ | ||
23 | + @ApiModelProperty(value = "客户总价") | ||
24 | + private String customerTotalPrice; | ||
25 | + | ||
26 | + /** | ||
27 | + * 生成科总价¥ | ||
28 | + */ | ||
29 | + @ApiModelProperty(value = "生产部门总价") | ||
30 | + private String productionDepartmentTotalPrice; | ||
31 | + | ||
32 | + | ||
33 | + | ||
34 | + /** | ||
35 | + * 订单数量 | ||
36 | + */ | ||
37 | + @ApiModelProperty(value = "订单数量") | ||
38 | + private String orderCount; | ||
39 | + | ||
40 | + | ||
41 | + /** | ||
42 | + * 包装费用合计$ | ||
43 | + */ | ||
44 | + @ApiModelProperty(value = "包装费用合计(美元)") | ||
45 | + private String packetTotalPrice; | ||
46 | + | ||
47 | + /** | ||
48 | + * 包装费用合计¥ | ||
49 | + */ | ||
50 | + @ApiModelProperty(value = "包装费用合计(人民币)") | ||
51 | + private String packetRmbTotalPrice; | ||
52 | + | ||
53 | + | ||
54 | + /** | ||
55 | + * 包装费用实际金额$ | ||
56 | + */ | ||
57 | + @ApiModelProperty(value = "包装费用实际金额(人民币)") | ||
58 | + private String packetActualRmbPrice; | ||
59 | + | ||
60 | + | ||
61 | + /** | ||
62 | + * 包装费用收益 | ||
63 | + */ | ||
64 | + @ApiModelProperty(value = "包装费用收益(人民币)") | ||
65 | + private String packetProfitRmbPrice; | ||
66 | + | ||
67 | + | ||
68 | + /** | ||
69 | + * 研发复制费合计¥ | ||
70 | + */ | ||
71 | + @ApiModelProperty(value = "研发复制费合计(人民币)") | ||
72 | + private String developmentCopyRmbTotalPrice; | ||
73 | + | ||
74 | + /** | ||
75 | + * 固定成本 | ||
76 | + */ | ||
77 | + @ApiModelProperty(value = "固定成本") | ||
78 | + private String fixedCost; | ||
79 | + | ||
80 | + /** | ||
81 | + * 西班牙已发提成¥ | ||
82 | + */ | ||
83 | + @ApiModelProperty(value = "西班牙已发提成(人民币)") | ||
84 | + private String spainPaidRmbCommission; | ||
85 | + | ||
86 | + /** | ||
87 | + * 西班牙提成¥ | ||
88 | + */ | ||
89 | + @ApiModelProperty(value = "西班牙提成(人民币)") | ||
90 | + private String spainRmbCommission; | ||
91 | + | ||
92 | + /** | ||
93 | + * 西班牙未发提成¥ | ||
94 | + */ | ||
95 | + @ApiModelProperty(value = "西班牙未发提成(人民币)") | ||
96 | + private String spainUnpaidRmbCommission; | ||
97 | + | ||
98 | + /** | ||
99 | + * 已发提成¥ | ||
100 | + */ | ||
101 | + @ApiModelProperty(value = "已发提成(人民币)") | ||
102 | + private String paidRmbCommission; | ||
103 | + | ||
104 | + /** | ||
105 | + * 提成¥ | ||
106 | + */ | ||
107 | + @ApiModelProperty(value = "提成(人民币)") | ||
108 | + private String rmbCommission; | ||
109 | + | ||
110 | + /** | ||
111 | + * 未发提成¥ | ||
112 | + */ | ||
113 | + @ApiModelProperty(value = "未发提成(人民币)") | ||
114 | + private String unpaidRmbCommission; | ||
115 | + | ||
116 | + | ||
117 | + /** | ||
118 | + * 支出合计 | ||
119 | + */ | ||
120 | + @ApiModelProperty(value = "支出合计(人民币)") | ||
121 | + private String rmbTotalExpense; | ||
122 | + | ||
123 | + /** | ||
124 | + * 毛利润 | ||
125 | + */ | ||
126 | + @ApiModelProperty(value = "毛利润") | ||
127 | + private String profit; | ||
128 | + | ||
129 | + /** | ||
130 | + * 毛利率 | ||
131 | + */ | ||
132 | + @ApiModelProperty(value = "毛利率") | ||
133 | + private String profitRate; | ||
134 | + | ||
135 | + /** | ||
136 | + * 研发净利润 | ||
137 | + */ | ||
138 | + @ApiModelProperty(value = "研发净利润") | ||
139 | + private String developmentProfit; | ||
140 | + | ||
141 | + /** | ||
142 | + * 净利润率 | ||
143 | + */ | ||
144 | + @ApiModelProperty(value = "净利润率") | ||
145 | + private String developmentProfitRate; | ||
146 | + | ||
147 | + /** | ||
148 | + * 实际跟单单价 | ||
149 | + */ | ||
150 | + @ApiModelProperty(value = "实际跟单单价(人民币)") | ||
151 | + private String actualOrderRmbPrice; | ||
152 | + | ||
153 | + /** | ||
154 | + * 实际跟单单价$ | ||
155 | + */ | ||
156 | + @ApiModelProperty(value = "实际跟单单价(美元)") | ||
157 | + private String actualOrderPrice; | ||
158 | + | ||
159 | + | ||
160 | + /** | ||
161 | + * 综合收益 | ||
162 | + */ | ||
163 | + @ApiModelProperty(value = "综合收益") | ||
164 | + private String comprehensiveProfit; | ||
165 | + | ||
166 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectOptLogQueryVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.vo.BasePageVO; | ||
4 | +import lombok.*; | ||
5 | +import lombok.experimental.SuperBuilder; | ||
6 | + | ||
7 | +import java.io.Serializable; | ||
8 | +import java.util.List; | ||
9 | +@Data | ||
10 | +@AllArgsConstructor | ||
11 | +@ToString | ||
12 | +@NoArgsConstructor | ||
13 | +@EqualsAndHashCode(callSuper = false) | ||
14 | +@SuperBuilder | ||
15 | +public class ProjectOptLogQueryVO extends BasePageVO implements Serializable { | ||
16 | + private static final long serialVersionUID = 1L; | ||
17 | + private List<Long> ids; | ||
18 | + | ||
19 | + private Long id; | ||
20 | + | ||
21 | + /** | ||
22 | + * 项目号前缀 | ||
23 | + * */ | ||
24 | + private String projectNoPrefix; | ||
25 | + | ||
26 | + /** | ||
27 | + * 业务类型 10:对应业务研发净利润创建/编辑 30:对应内部生产净利润创建/编辑 | ||
28 | + * */ | ||
29 | + private Integer type; | ||
30 | +} |
src/main/java/com/order/erp/domain/vo/order/ProjectOptLogResultVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import lombok.*; | ||
4 | +import lombok.experimental.SuperBuilder; | ||
5 | + | ||
6 | +import java.io.Serializable; | ||
7 | +import java.time.LocalDateTime; | ||
8 | + | ||
9 | +@Data | ||
10 | +@AllArgsConstructor | ||
11 | +@ToString | ||
12 | +@NoArgsConstructor | ||
13 | +@EqualsAndHashCode(callSuper = false) | ||
14 | +@SuperBuilder | ||
15 | +public class ProjectOptLogResultVO implements Serializable { | ||
16 | + private Long id; | ||
17 | + /** | ||
18 | + * 项目号前缀,前八位或者前十位。 | ||
19 | + */ | ||
20 | + private String projectNoPrefix; | ||
21 | + /** | ||
22 | + * 用户id | ||
23 | + */ | ||
24 | + private Long userId; | ||
25 | + | ||
26 | + /** | ||
27 | + * 用户名称 | ||
28 | + */ | ||
29 | + private String userName; | ||
30 | + /** | ||
31 | + * 操作类型 | ||
32 | + */ | ||
33 | + private String optType; | ||
34 | + /** | ||
35 | + * 操作字段 json字符串 | ||
36 | + */ | ||
37 | + private String fields; | ||
38 | + | ||
39 | + private LocalDateTime createTime; | ||
40 | + | ||
41 | +} |
src/main/java/com/order/erp/domain/vo/order/QueryProjectLockFieldVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
4 | +import com.order.erp.domain.vo.BasePageVO; | ||
5 | +import io.swagger.annotations.ApiModel; | ||
6 | +import lombok.AllArgsConstructor; | ||
7 | +import lombok.Data; | ||
8 | +import lombok.EqualsAndHashCode; | ||
9 | +import lombok.NoArgsConstructor; | ||
10 | +import lombok.experimental.SuperBuilder; | ||
11 | + | ||
12 | +import java.io.Serializable; | ||
13 | + | ||
14 | +/** | ||
15 | + * <p> | ||
16 | + * | ||
17 | + * </p> | ||
18 | + * | ||
19 | + * @author author | ||
20 | + * @since 2024-12-22 | ||
21 | + */ | ||
22 | +@Data | ||
23 | +@EqualsAndHashCode(callSuper = false) | ||
24 | +@SuperBuilder | ||
25 | +@AllArgsConstructor | ||
26 | +@NoArgsConstructor | ||
27 | +@TableName("order_cost_info") | ||
28 | +@ApiModel(value="OrderCostDetail对象", description="") | ||
29 | +public class QueryProjectLockFieldVO extends BasePageVO implements Serializable { | ||
30 | + | ||
31 | + private static final long serialVersionUID = 1L; | ||
32 | + | ||
33 | + private Long orderId; | ||
34 | + /** | ||
35 | + * NO_COMMIT(-1, "未提交审核"), | ||
36 | + * | ||
37 | + * WAIT_AUDIT(0, "待审批"), | ||
38 | + * | ||
39 | + * AUDIT_PASS(10, "已通过"), | ||
40 | + * | ||
41 | + * AUDIT_REFUSE(20, "已驳回") | ||
42 | + */ | ||
43 | + private String status; | ||
44 | + | ||
45 | + private String productionDepartmentPredictPrice; | ||
46 | + | ||
47 | + private String productionActualPrice; | ||
48 | + | ||
49 | + private String packetActualRmbTotalPrice; | ||
50 | + | ||
51 | + private Integer type; | ||
52 | + | ||
53 | + | ||
54 | +} |
src/main/java/com/order/erp/mapper/OrderCostFieldLockRecordMapper.java
0 → 100644
1 | +package com.order.erp.mapper; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
4 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * Mapper 接口 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface OrderCostFieldLockRecordMapper extends BaseMapper<OrderCostFieldLockRecord> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/mapper/ProjectApplyMapper.java
0 → 100644
1 | +package com.order.erp.mapper; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectApplyDO; | ||
4 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * 项目-字段锁定申请表 Mapper 接口 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface ProjectApplyMapper extends BaseMapper<ProjectApplyDO> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/mapper/ProjectFieldLockRecordMapper.java
0 → 100644
1 | +package com.order.erp.mapper; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectFieldLockRecord; | ||
4 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * 项目-字段锁定记录表 Mapper 接口 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface ProjectFieldLockRecordMapper extends BaseMapper<ProjectFieldLockRecord> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/mapper/order/OrderCostDetailedOptLogMapper.java
0 → 100644
src/main/java/com/order/erp/mapper/order/OrderCostInfoMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.dto.order.OrderCostInfoDO; | ||
4 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * Mapper 接口 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface OrderCostInfoMapper extends BaseMapper<OrderCostInfoDO> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/mapper/order/ProjectBaseAfterReviewSettingMapper.java
0 → 100644
src/main/java/com/order/erp/mapper/order/ProjectBaseDevelopOptLogMapper.java
0 → 100644
src/main/java/com/order/erp/mapper/order/ProjectBaseInfoMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | ||
2 | + | ||
3 | +import com.order.erp.domain.dto.order.ProjectBaseInfoDO; | ||
4 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * Mapper 接口 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-18 | ||
13 | + */ | ||
14 | +public interface ProjectBaseInfoMapper extends BaseMapper<ProjectBaseInfoDO> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/service/IOrderCostFieldLockRecordService.java
0 → 100644
1 | +package com.order.erp.service; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
4 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * 服务类 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface IOrderCostFieldLockRecordService extends IService<OrderCostFieldLockRecord> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/service/IProjectApplyService.java
0 → 100644
1 | +package com.order.erp.service; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectApplyDO; | ||
4 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * 项目-字段锁定申请表 服务类 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface IProjectApplyService extends IService<ProjectApplyDO> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/service/IProjectFieldLockRecordService.java
0 → 100644
1 | +package com.order.erp.service; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectFieldLockRecord; | ||
4 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
5 | + | ||
6 | +/** | ||
7 | + * <p> | ||
8 | + * 项目-字段锁定记录表 服务类 | ||
9 | + * </p> | ||
10 | + * | ||
11 | + * @author author | ||
12 | + * @since 2024-12-22 | ||
13 | + */ | ||
14 | +public interface IProjectFieldLockRecordService extends IService<ProjectFieldLockRecord> { | ||
15 | + | ||
16 | +} |
src/main/java/com/order/erp/service/SystemSettingService.java
@@ -6,6 +6,8 @@ import com.order.erp.domain.dto.SystemSettingDO; | @@ -6,6 +6,8 @@ import com.order.erp.domain.dto.SystemSettingDO; | ||
6 | import com.order.erp.domain.vo.SystemSettingQueryVO; | 6 | import com.order.erp.domain.vo.SystemSettingQueryVO; |
7 | import com.order.erp.domain.vo.SystemSettingVO; | 7 | import com.order.erp.domain.vo.SystemSettingVO; |
8 | 8 | ||
9 | +import java.math.BigDecimal; | ||
10 | + | ||
9 | /** | 11 | /** |
10 | * 系统配置(SystemSetting)表服务接口 | 12 | * 系统配置(SystemSetting)表服务接口 |
11 | * | 13 | * |
@@ -37,6 +39,8 @@ public interface SystemSettingService extends IService<SystemSettingDO> { | @@ -37,6 +39,8 @@ public interface SystemSettingService extends IService<SystemSettingDO> { | ||
37 | */ | 39 | */ |
38 | ServerResult listByPage(SystemSettingQueryVO systemSettingQueryVO); | 40 | ServerResult listByPage(SystemSettingQueryVO systemSettingQueryVO); |
39 | 41 | ||
42 | + BigDecimal getExchangeRate(); | ||
43 | + | ||
40 | /** | 44 | /** |
41 | * 新增数据 | 45 | * 新增数据 |
42 | * | 46 | * |
src/main/java/com/order/erp/service/impl/OrderCostFieldLockRecordServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.impl; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
4 | +import com.order.erp.mapper.OrderCostFieldLockRecordMapper; | ||
5 | +import com.order.erp.service.IOrderCostFieldLockRecordService; | ||
6 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
7 | +import org.springframework.stereotype.Service; | ||
8 | + | ||
9 | +/** | ||
10 | + * <p> | ||
11 | + * 服务实现类 | ||
12 | + * </p> | ||
13 | + * | ||
14 | + * @author author | ||
15 | + * @since 2024-12-22 | ||
16 | + */ | ||
17 | +@Service | ||
18 | +public class OrderCostFieldLockRecordServiceImpl extends ServiceImpl<OrderCostFieldLockRecordMapper, OrderCostFieldLockRecord> implements IOrderCostFieldLockRecordService { | ||
19 | + | ||
20 | +} |
src/main/java/com/order/erp/service/impl/ProjectApplyServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.impl; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectApplyDO; | ||
4 | +import com.order.erp.mapper.ProjectApplyMapper; | ||
5 | +import com.order.erp.service.IProjectApplyService; | ||
6 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
7 | +import org.springframework.stereotype.Service; | ||
8 | + | ||
9 | +/** | ||
10 | + * <p> | ||
11 | + * 项目-字段锁定申请表 服务实现类 | ||
12 | + * </p> | ||
13 | + * | ||
14 | + * @author author | ||
15 | + * @since 2024-12-22 | ||
16 | + */ | ||
17 | +@Service | ||
18 | +public class ProjectApplyServiceImpl extends ServiceImpl<ProjectApplyMapper, ProjectApplyDO> implements IProjectApplyService { | ||
19 | + | ||
20 | +} |
src/main/java/com/order/erp/service/impl/ProjectFieldLockRecordServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.impl; | ||
2 | + | ||
3 | +import com.order.erp.domain.model.ProjectFieldLockRecord; | ||
4 | +import com.order.erp.mapper.ProjectFieldLockRecordMapper; | ||
5 | +import com.order.erp.service.IProjectFieldLockRecordService; | ||
6 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
7 | +import org.springframework.stereotype.Service; | ||
8 | + | ||
9 | +/** | ||
10 | + * <p> | ||
11 | + * 项目-字段锁定记录表 服务实现类 | ||
12 | + * </p> | ||
13 | + * | ||
14 | + * @author author | ||
15 | + * @since 2024-12-22 | ||
16 | + */ | ||
17 | +@Service | ||
18 | +public class ProjectFieldLockRecordServiceImpl extends ServiceImpl<ProjectFieldLockRecordMapper, ProjectFieldLockRecord> implements IProjectFieldLockRecordService { | ||
19 | + | ||
20 | +} |
src/main/java/com/order/erp/service/impl/SystemSettingServiceImpl.java
@@ -24,7 +24,9 @@ import com.order.erp.service.SystemSettingService; | @@ -24,7 +24,9 @@ import com.order.erp.service.SystemSettingService; | ||
24 | import lombok.extern.slf4j.Slf4j; | 24 | import lombok.extern.slf4j.Slf4j; |
25 | import org.springframework.beans.BeanUtils; | 25 | import org.springframework.beans.BeanUtils; |
26 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
27 | +import springfox.documentation.annotations.Cacheable; | ||
27 | 28 | ||
29 | +import java.math.BigDecimal; | ||
28 | import java.util.List; | 30 | import java.util.List; |
29 | import java.util.Objects; | 31 | import java.util.Objects; |
30 | import java.util.stream.Collectors; | 32 | import java.util.stream.Collectors; |
@@ -110,6 +112,15 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S | @@ -110,6 +112,15 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S | ||
110 | .eq(StringUtils.isNotBlank(queryVO.getRelationCode()), SystemSettingDO::getRelationCode, queryVO.getRelationCode()); | 112 | .eq(StringUtils.isNotBlank(queryVO.getRelationCode()), SystemSettingDO::getRelationCode, queryVO.getRelationCode()); |
111 | } | 113 | } |
112 | 114 | ||
115 | + @Override | ||
116 | + public BigDecimal getExchangeRate(){ | ||
117 | + SystemSettingDO exchangeRate = this.lambdaQuery() | ||
118 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
119 | + .eq(SystemSettingDO::getSettingCode, "exchangeRate") | ||
120 | + .one(); | ||
121 | + return BigDecimal.valueOf(Double.parseDouble(exchangeRate.getSettingValue())); | ||
122 | + } | ||
123 | + | ||
113 | 124 | ||
114 | /** | 125 | /** |
115 | * 新增数据 | 126 | * 新增数据 |
src/main/java/com/order/erp/service/order/IOrderCostInfoService.java
0 → 100644
1 | +package com.order.erp.service.order; | ||
2 | + | ||
3 | +import com.order.erp.common.constant.ServerResult; | ||
4 | +import com.order.erp.domain.dto.order.OrderCostInfoDO; | ||
5 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
6 | +import com.order.erp.domain.vo.order.OrderBaseInfoQueryVO; | ||
7 | +import com.order.erp.domain.vo.order.OrderCostInfoVO; | ||
8 | +import com.order.erp.domain.vo.order.OrderCostInfolockFieldVO; | ||
9 | +import com.order.erp.domain.vo.order.ProjectBaseInfoQueryVO; | ||
10 | + | ||
11 | +import javax.servlet.http.HttpServletResponse; | ||
12 | +import java.io.IOException; | ||
13 | + | ||
14 | +/** | ||
15 | + * <p> | ||
16 | + * 服务类 | ||
17 | + * </p> | ||
18 | + * | ||
19 | + * @author author | ||
20 | + * @since 2024-12-22 | ||
21 | + */ | ||
22 | +public interface IOrderCostInfoService extends IService<OrderCostInfoDO> { | ||
23 | + | ||
24 | + ServerResult edit(OrderCostInfoVO vo); | ||
25 | + | ||
26 | + ServerResult applyEditFileds(OrderCostInfolockFieldVO vo); | ||
27 | + | ||
28 | + ServerResult listInnerProfitDetailByPage(OrderBaseInfoQueryVO queryVO); | ||
29 | + | ||
30 | + ServerResult listBusinessProfitDetailByPage(OrderBaseInfoQueryVO queryVO); | ||
31 | + void exportBusinessProfitDetailExcel(HttpServletResponse response,ProjectBaseInfoQueryVO queryVO) throws Exception; | ||
32 | + void exportInnerProfitDetailExcel(HttpServletResponse response,ProjectBaseInfoQueryVO queryVO) throws Exception; | ||
33 | + void setPackStatus(OrderCostInfoVO vo); | ||
34 | + void setInnerProduceStatus(OrderCostInfoVO vo); | ||
35 | +} |
src/main/java/com/order/erp/service/order/IProjectBaseInfoService.java
0 → 100644
1 | +package com.order.erp.service.order; | ||
2 | + | ||
3 | +import com.order.erp.common.constant.ServerResult; | ||
4 | +import com.order.erp.domain.dto.order.ProjectBaseInfoDO; | ||
5 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
6 | +import com.order.erp.domain.vo.order.*; | ||
7 | + | ||
8 | +import javax.servlet.http.HttpServletResponse; | ||
9 | +import java.io.IOException; | ||
10 | + | ||
11 | +/** | ||
12 | + * <p> | ||
13 | + * 服务类 | ||
14 | + * </p> | ||
15 | + * | ||
16 | + * @author author | ||
17 | + * @since 2024-12-18 | ||
18 | + */ | ||
19 | +public interface IProjectBaseInfoService extends IService<ProjectBaseInfoDO> { | ||
20 | + | ||
21 | + ServerResult edit(ProjectBaseInfoVO vo); | ||
22 | + | ||
23 | + ServerResult applyEditFileds(ProjectBaseInfoLockFieldVO vo); | ||
24 | + | ||
25 | + ServerResult pageProjectLockFieldApply(QueryProjectLockFieldVO vo); | ||
26 | + | ||
27 | + ServerResult audit(AuditVO vo); | ||
28 | + | ||
29 | + ServerResult listInnerProfitInfoByPage(OrderBaseInfoQueryVO queryVO); | ||
30 | + | ||
31 | + ServerResult listBusinessProfitInfoByPage(OrderBaseInfoQueryVO queryVO); | ||
32 | + | ||
33 | + void exportBusinessProfitInfo(HttpServletResponse response, String projectNoPrefix) throws Exception; | ||
34 | + | ||
35 | + void exportInnerProfitInfo(HttpServletResponse response, String projectNoPrefix) throws Exception; | ||
36 | + void exportBusinessProfitExcel(HttpServletResponse response, ProjectBaseInfoQueryVO queryVO) throws Exception; | ||
37 | + void exportInnerProfitInfoExcel(HttpServletResponse response, ProjectBaseInfoQueryVO queryVO) throws Exception; | ||
38 | + | ||
39 | + void setProjectBaseInfoDevelopmentStatus(OrderBaseInfoVO vo); | ||
40 | + void setInnerProductionStatus(OrderBaseInfoVO vo); | ||
41 | +} |
src/main/java/com/order/erp/service/order/OrderCostDetailedOptLogService.java
0 → 100644
1 | +package com.order.erp.service.order; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
4 | +import com.order.erp.common.constant.ServerResult; | ||
5 | +import com.order.erp.domain.dto.order.OrderCostDetailedOptLogDO; | ||
6 | +import com.order.erp.domain.vo.order.OrderCostDetailedOptedLogQueryVO; | ||
7 | + | ||
8 | + | ||
9 | +public interface OrderCostDetailedOptLogService extends IService<OrderCostDetailedOptLogDO> { | ||
10 | + ServerResult listByPage(OrderCostDetailedOptedLogQueryVO queryVO); | ||
11 | + | ||
12 | +} |
src/main/java/com/order/erp/service/order/OrderProfitAnalysisService.java
@@ -4,11 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; | @@ -4,11 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; | ||
4 | import com.order.erp.common.constant.ServerResult; | 4 | import com.order.erp.common.constant.ServerResult; |
5 | import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; | 5 | import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; |
6 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; | 6 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; |
7 | -import com.order.erp.domain.vo.order.OrderProfitAnalysisQueryVO; | ||
8 | -import com.order.erp.domain.vo.order.OrderProfitAnalysisVO; | ||
9 | -import com.order.erp.domain.vo.order.ProfitCalculateVO; | 7 | +import com.order.erp.domain.vo.order.*; |
10 | 8 | ||
11 | import java.time.LocalDate; | 9 | import java.time.LocalDate; |
10 | +import javax.servlet.http.HttpServletResponse; | ||
12 | import java.util.List; | 11 | import java.util.List; |
13 | 12 | ||
14 | /** | 13 | /** |
src/main/java/com/order/erp/service/order/ProjectBaseAfterReviewSettingService.java
0 → 100644
src/main/java/com/order/erp/service/order/ProjectBaseDevelopOptLogService.java
0 → 100644
1 | +package com.order.erp.service.order; | ||
2 | + | ||
3 | + | ||
4 | +import com.baomidou.mybatisplus.extension.service.IService; | ||
5 | +import com.order.erp.common.constant.ServerResult; | ||
6 | + | ||
7 | +import com.order.erp.domain.dto.order.ProjectBaseDevelopOptLogDO; | ||
8 | +import com.order.erp.domain.vo.order.ProjectOptLogQueryVO; | ||
9 | + | ||
10 | +import java.util.List; | ||
11 | + | ||
12 | +public interface ProjectBaseDevelopOptLogService extends IService<ProjectBaseDevelopOptLogDO> { | ||
13 | + ServerResult listByPage(ProjectOptLogQueryVO queryVO); | ||
14 | +} |
src/main/java/com/order/erp/service/order/impl/CalculateProfitServiceImpl.java
@@ -67,6 +67,10 @@ public class CalculateProfitServiceImpl { | @@ -67,6 +67,10 @@ public class CalculateProfitServiceImpl { | ||
67 | */ | 67 | */ |
68 | public ServerResult businessProfitRatioExport(HttpServletResponse response, BusinessProfitRatioQueryVO queryVO) throws IOException { | 68 | public ServerResult businessProfitRatioExport(HttpServletResponse response, BusinessProfitRatioQueryVO queryVO) throws IOException { |
69 | BusinessProfitRatioResultVO resultVO = buildBusinessProfitRatioResultVO(queryVO); | 69 | BusinessProfitRatioResultVO resultVO = buildBusinessProfitRatioResultVO(queryVO); |
70 | + return writeBusinessProfitRatioResult(response, resultVO); | ||
71 | + } | ||
72 | + | ||
73 | + private ServerResult<Object> writeBusinessProfitRatioResult(HttpServletResponse response, BusinessProfitRatioResultVO resultVO) throws IOException { | ||
70 | //开始 | 74 | //开始 |
71 | Workbook workbook = new XSSFWorkbook(); | 75 | Workbook workbook = new XSSFWorkbook(); |
72 | Sheet sheet = workbook.createSheet("业务净利润分析表"); | 76 | Sheet sheet = workbook.createSheet("业务净利润分析表"); |
@@ -90,7 +94,7 @@ public class CalculateProfitServiceImpl { | @@ -90,7 +94,7 @@ public class CalculateProfitServiceImpl { | ||
90 | 94 | ||
91 | // 第二行 | 95 | // 第二行 |
92 | createMergedCell(sheet, workbook, 4, 0, 4, 5, 0, 1, "项目号"); | 96 | createMergedCell(sheet, workbook, 4, 0, 4, 5, 0, 1, "项目号"); |
93 | - createMergedCell(sheet, workbook, 4, 2, 4, 5, 2, 4, String.join(",",resultVO.getProjectNo())); | 97 | + createMergedCell(sheet, workbook, 4, 2, 4, 5, 2, 4, String.join(",", resultVO.getProjectNo())); |
94 | createMergedCell(sheet, workbook, 4, 5, 4, 5, 5, 6, "开始时间"); | 98 | createMergedCell(sheet, workbook, 4, 5, 4, 5, 5, 6, "开始时间"); |
95 | createMergedCell(sheet, workbook, 4, 7, 4, 5, 7, 9, "结束时间"); | 99 | createMergedCell(sheet, workbook, 4, 7, 4, 5, 7, 9, "结束时间"); |
96 | // 第三行 | 100 | // 第三行 |
@@ -111,55 +115,55 @@ public class CalculateProfitServiceImpl { | @@ -111,55 +115,55 @@ public class CalculateProfitServiceImpl { | ||
111 | createMergedCell(sheet, workbook, 10, 7, 10, 11, 7, 9, "备注"); | 115 | createMergedCell(sheet, workbook, 10, 7, 10, 11, 7, 9, "备注"); |
112 | //第六行 | 116 | //第六行 |
113 | createMergedCell(sheet, workbook, 12, 0, 12, 13, 0, 4, "客户总金额计算"); | 117 | createMergedCell(sheet, workbook, 12, 0, 12, 13, 0, 4, "客户总金额计算"); |
114 | - createMergedCell(sheet, workbook, 12, 5, 12, 13, 5, 6, "¥"+resultVO.getCustomerTotalPrice()); | ||
115 | - createMergedCell(sheet, workbook, 12, 7, 12, 13, 7, 9, "$"+resultVO.getCustomerTotalPriceUsd()); | 118 | + createMergedCell(sheet, workbook, 12, 5, 12, 13, 5, 6, "¥"+ resultVO.getCustomerTotalPrice()); |
119 | + createMergedCell(sheet, workbook, 12, 7, 12, 13, 7, 9, "$"+ resultVO.getCustomerTotalPriceUsd()); | ||
116 | ////第七行 | 120 | ////第七行 |
117 | createMergedCell(sheet, workbook, 14, 0, 14, 15, 0, 4, "生产科总价合计"); | 121 | createMergedCell(sheet, workbook, 14, 0, 14, 15, 0, 4, "生产科总价合计"); |
118 | - createMergedCell(sheet, workbook, 14, 5, 14, 15, 5, 6, "¥"+resultVO.getProductionDepartmentTotalPrice()); | ||
119 | - createMergedCell(sheet, workbook, 14, 7, 14, 15, 7, 9, "$"+resultVO.getProductionDepartmentTotalPriceUsd()); | 122 | + createMergedCell(sheet, workbook, 14, 5, 14, 15, 5, 6, "¥"+ resultVO.getProductionDepartmentTotalPrice()); |
123 | + createMergedCell(sheet, workbook, 14, 7, 14, 15, 7, 9, "$"+ resultVO.getProductionDepartmentTotalPriceUsd()); | ||
120 | ////第八行 | 124 | ////第八行 |
121 | createMergedCell(sheet, workbook, 16, 0, 16, 17, 0, 4, "包装费用合计"); | 125 | createMergedCell(sheet, workbook, 16, 0, 16, 17, 0, 4, "包装费用合计"); |
122 | - createMergedCell(sheet, workbook, 16, 5, 16, 17, 5, 6, "¥"+resultVO.getPacketTotalPrice()); | ||
123 | - createMergedCell(sheet, workbook, 16, 7, 16, 17, 7, 9, "$"+resultVO.getPacketTotalPriceUsd()); | 126 | + createMergedCell(sheet, workbook, 16, 5, 16, 17, 5, 6, "¥"+ resultVO.getPacketTotalPrice()); |
127 | + createMergedCell(sheet, workbook, 16, 7, 16, 17, 7, 9, "$"+ resultVO.getPacketTotalPriceUsd()); | ||
124 | ////第九行 | 128 | ////第九行 |
125 | createMergedCell(sheet, workbook, 18, 0, 18, 19, 0, 4, "研发开发费合计"); | 129 | createMergedCell(sheet, workbook, 18, 0, 18, 19, 0, 4, "研发开发费合计"); |
126 | - createMergedCell(sheet, workbook, 18, 5, 18, 19, 5, 6, "¥"+resultVO.getDevelopTotalPrice().setScale(2, RoundingMode.HALF_UP)); | 130 | + createMergedCell(sheet, workbook, 18, 5, 18, 19, 5, 6, "¥"+ resultVO.getDevelopTotalPrice().setScale(2, RoundingMode.HALF_UP)); |
127 | createMergedCell(sheet, workbook, 18, 7, 18, 19, 7, 9, ""); | 131 | createMergedCell(sheet, workbook, 18, 7, 18, 19, 7, 9, ""); |
128 | ////第十行 | 132 | ////第十行 |
129 | createMergedCell(sheet, workbook, 20, 0, 20, 21, 0, 4, "复制费用合计"); | 133 | createMergedCell(sheet, workbook, 20, 0, 20, 21, 0, 4, "复制费用合计"); |
130 | - createMergedCell(sheet, workbook, 20, 5, 20, 21, 5, 6, "¥"+resultVO.getCopyTotalPrice().setScale(2, RoundingMode.HALF_UP)); | 134 | + createMergedCell(sheet, workbook, 20, 5, 20, 21, 5, 6, "¥"+ resultVO.getCopyTotalPrice().setScale(2, RoundingMode.HALF_UP)); |
131 | createMergedCell(sheet, workbook, 20, 7, 20, 21, 7, 9, ""); | 135 | createMergedCell(sheet, workbook, 20, 7, 20, 21, 7, 9, ""); |
132 | //第十一行 | 136 | //第十一行 |
133 | createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 4, "固定成本"); | 137 | createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 4, "固定成本"); |
134 | - createMergedCell(sheet, workbook, 22, 5, 22, 23, 5, 6, "¥"+resultVO.getFixCost()); | 138 | + createMergedCell(sheet, workbook, 22, 5, 22, 23, 5, 6, "¥"+ resultVO.getFixCost()); |
135 | createMergedCell(sheet, workbook, 22, 7, 22, 23, 7, 9, ""); | 139 | createMergedCell(sheet, workbook, 22, 7, 22, 23, 7, 9, ""); |
136 | //第十二行 | 140 | //第十二行 |
137 | createMergedCell(sheet, workbook, 24, 0, 24, 25, 0, 4, "西班牙提成"); | 141 | createMergedCell(sheet, workbook, 24, 0, 24, 25, 0, 4, "西班牙提成"); |
138 | - createMergedCell(sheet, workbook, 24, 5, 24, 25, 5, 6, "¥"+resultVO.getSpainRatioProfitPrice()); | 142 | + createMergedCell(sheet, workbook, 24, 5, 24, 25, 5, 6, "¥"+ resultVO.getSpainRatioProfitPrice()); |
139 | createMergedCell(sheet, workbook, 24, 7, 24, 25, 7, 9, ""); | 143 | createMergedCell(sheet, workbook, 24, 7, 24, 25, 7, 9, ""); |
140 | //第十三行 | 144 | //第十三行 |
141 | createMergedCell(sheet, workbook, 26, 0, 26, 27, 0, 4, "中国团队提成"); | 145 | createMergedCell(sheet, workbook, 26, 0, 26, 27, 0, 4, "中国团队提成"); |
142 | - createMergedCell(sheet, workbook, 26, 5, 26, 27, 5, 6, "¥"+resultVO.getChinaRatioProfitPrice()); | 146 | + createMergedCell(sheet, workbook, 26, 5, 26, 27, 5, 6, "¥"+ resultVO.getChinaRatioProfitPrice()); |
143 | createMergedCell(sheet, workbook, 26, 7, 26, 27, 7, 9, ""); | 147 | createMergedCell(sheet, workbook, 26, 7, 26, 27, 7, 9, ""); |
144 | - //第十四行 | 148 | + //第十四行 |
145 | createMergedCell(sheet, workbook, 28, 0, 28, 29, 0, 4, "支出合计"); | 149 | createMergedCell(sheet, workbook, 28, 0, 28, 29, 0, 4, "支出合计"); |
146 | - createMergedCell(sheet, workbook, 28, 5, 28, 29, 5, 6, "¥"+resultVO.getOutTotalPrice()); | 150 | + createMergedCell(sheet, workbook, 28, 5, 28, 29, 5, 6, "¥"+ resultVO.getOutTotalPrice()); |
147 | createMergedCell(sheet, workbook, 28, 7, 28, 29, 7, 9, ""); | 151 | createMergedCell(sheet, workbook, 28, 7, 28, 29, 7, 9, ""); |
148 | //第十五行 | 152 | //第十五行 |
149 | createMergedCell(sheet, workbook, 30, 0, 30, 31, 0, 4, "毛利润"); | 153 | createMergedCell(sheet, workbook, 30, 0, 30, 31, 0, 4, "毛利润"); |
150 | - createMergedCell(sheet, workbook, 30, 5, 30, 31, 5, 6, "¥"+resultVO.getGrossProfit()); | 154 | + createMergedCell(sheet, workbook, 30, 5, 30, 31, 5, 6, "¥"+ resultVO.getGrossProfit()); |
151 | createMergedCell(sheet, workbook, 30, 7, 30, 31, 7, 9, ""); | 155 | createMergedCell(sheet, workbook, 30, 7, 30, 31, 7, 9, ""); |
152 | ////第十六行 | 156 | ////第十六行 |
153 | createMergedCell(sheet, workbook, 32, 0, 32, 33, 0, 4, "研发贸易净利润"); | 157 | createMergedCell(sheet, workbook, 32, 0, 32, 33, 0, 4, "研发贸易净利润"); |
154 | - createMergedCell(sheet, workbook, 32, 5, 32, 33, 5, 6, "¥"+resultVO.getDevelopProfit()); | 158 | + createMergedCell(sheet, workbook, 32, 5, 32, 33, 5, 6, "¥"+ resultVO.getDevelopProfit()); |
155 | createMergedCell(sheet, workbook, 32, 7, 32, 33, 7, 9, ""); | 159 | createMergedCell(sheet, workbook, 32, 7, 32, 33, 7, 9, ""); |
156 | ////第十七行 | 160 | ////第十七行 |
157 | createMergedCell(sheet, workbook, 34, 0, 34, 35, 0, 4, "包装费用合计金额"); | 161 | createMergedCell(sheet, workbook, 34, 0, 34, 35, 0, 4, "包装费用合计金额"); |
158 | - createMergedCell(sheet, workbook, 34, 5, 34, 35, 5, 6, "¥"+resultVO.getPacketTotalPrice()); | 162 | + createMergedCell(sheet, workbook, 34, 5, 34, 35, 5, 6, "¥"+ resultVO.getPacketTotalPrice()); |
159 | createMergedCell(sheet, workbook, 34, 7, 34, 35, 7, 9, ""); | 163 | createMergedCell(sheet, workbook, 34, 7, 34, 35, 7, 9, ""); |
160 | ////第十八行 | 164 | ////第十八行 |
161 | createMergedCell(sheet, workbook, 36, 0, 36, 37, 0, 4, "包装费用实际金额"); | 165 | createMergedCell(sheet, workbook, 36, 0, 36, 37, 0, 4, "包装费用实际金额"); |
162 | - createMergedCell(sheet, workbook, 36, 5, 36, 37, 5, 6, "¥"+resultVO.getPacketActualTotalPrice().setScale(2, RoundingMode.HALF_UP)); | 166 | + createMergedCell(sheet, workbook, 36, 5, 36, 37, 5, 6, "¥"+ resultVO.getPacketActualTotalPrice().setScale(2, RoundingMode.HALF_UP)); |
163 | createMergedCell(sheet, workbook, 36, 7, 36, 37, 7, 9, ""); | 167 | createMergedCell(sheet, workbook, 36, 7, 36, 37, 7, 9, ""); |
164 | ////第十九行 | 168 | ////第十九行 |
165 | createMergedCell(sheet, workbook, 38, 0, 38, 39, 0, 4, "订单总数量"); | 169 | createMergedCell(sheet, workbook, 38, 0, 38, 39, 0, 4, "订单总数量"); |
@@ -167,27 +171,27 @@ public class CalculateProfitServiceImpl { | @@ -167,27 +171,27 @@ public class CalculateProfitServiceImpl { | ||
167 | createMergedCell(sheet, workbook, 38, 7, 38, 39, 7, 9, ""); | 171 | createMergedCell(sheet, workbook, 38, 7, 38, 39, 7, 9, ""); |
168 | ////第二十行 | 172 | ////第二十行 |
169 | createMergedCell(sheet, workbook, 40, 0, 40, 41, 0, 4, "实际跟单单价=实际跟单费用/件数"); | 173 | createMergedCell(sheet, workbook, 40, 0, 40, 41, 0, 4, "实际跟单单价=实际跟单费用/件数"); |
170 | - createMergedCell(sheet, workbook, 40, 5, 40, 41, 5, 6, "¥"+resultVO.getActualRmbPrice()); | 174 | + createMergedCell(sheet, workbook, 40, 5, 40, 41, 5, 6, "¥"+ resultVO.getActualRmbPrice()); |
171 | createMergedCell(sheet, workbook, 40, 7, 40, 41, 7, 9, ""); | 175 | createMergedCell(sheet, workbook, 40, 7, 40, 41, 7, 9, ""); |
172 | //第二十一行 | 176 | //第二十一行 |
173 | createMergedCell(sheet, workbook, 42, 0, 42, 43, 0, 4, "实际跟单单价折算美金"); | 177 | createMergedCell(sheet, workbook, 42, 0, 42, 43, 0, 4, "实际跟单单价折算美金"); |
174 | - createMergedCell(sheet, workbook, 42, 5, 42, 43, 5, 6, "$"+resultVO.getActualPrice()); | 178 | + createMergedCell(sheet, workbook, 42, 5, 42, 43, 5, 6, "$"+ resultVO.getActualPrice()); |
175 | createMergedCell(sheet, workbook, 42, 7, 42, 43, 7, 9, ""); | 179 | createMergedCell(sheet, workbook, 42, 7, 42, 43, 7, 9, ""); |
176 | //第二十二行 | 180 | //第二十二行 |
177 | createMergedCell(sheet, workbook, 44, 0, 44, 45, 0, 4, "包装费用收益"); | 181 | createMergedCell(sheet, workbook, 44, 0, 44, 45, 0, 4, "包装费用收益"); |
178 | - createMergedCell(sheet, workbook, 44, 5, 44, 45, 5, 6, "¥"+resultVO.getPacketProfitPrice()); | 182 | + createMergedCell(sheet, workbook, 44, 5, 44, 45, 5, 6, "¥"+ resultVO.getPacketProfitPrice()); |
179 | createMergedCell(sheet, workbook, 44, 7, 44, 45, 7, 9, ""); | 183 | createMergedCell(sheet, workbook, 44, 7, 44, 45, 7, 9, ""); |
180 | //第二十三行 | 184 | //第二十三行 |
181 | createMergedCell(sheet, workbook, 46, 0, 46, 47, 0, 4, "实际汇率"); | 185 | createMergedCell(sheet, workbook, 46, 0, 46, 47, 0, 4, "实际汇率"); |
182 | - createMergedCell(sheet, workbook, 46, 5, 46, 47, 5, 6, "¥"+resultVO.getActualRatio().setScale(2, RoundingMode.HALF_UP)); | 186 | + createMergedCell(sheet, workbook, 46, 5, 46, 47, 5, 6, "¥"+ resultVO.getActualRatio().setScale(2, RoundingMode.HALF_UP)); |
183 | createMergedCell(sheet, workbook, 46, 7, 46, 47, 7, 9, ""); | 187 | createMergedCell(sheet, workbook, 46, 7, 46, 47, 7, 9, ""); |
184 | //第二十四行 | 188 | //第二十四行 |
185 | createMergedCell(sheet, workbook, 48, 0, 48, 49, 0, 4, "汇率收益"); | 189 | createMergedCell(sheet, workbook, 48, 0, 48, 49, 0, 4, "汇率收益"); |
186 | - createMergedCell(sheet, workbook, 48, 5, 48, 49, 5, 6, "¥"+resultVO.getActualRatioProfitPrice()); | 190 | + createMergedCell(sheet, workbook, 48, 5, 48, 49, 5, 6, "¥"+ resultVO.getActualRatioProfitPrice()); |
187 | createMergedCell(sheet, workbook, 48, 7, 48, 49, 7, 9, ""); | 191 | createMergedCell(sheet, workbook, 48, 7, 48, 49, 7, 9, ""); |
188 | //第二十五行 | 192 | //第二十五行 |
189 | createMergedCell(sheet, workbook, 50, 0, 50, 51, 0, 4, "综合收益"); | 193 | createMergedCell(sheet, workbook, 50, 0, 50, 51, 0, 4, "综合收益"); |
190 | - createMergedCell(sheet, workbook, 50, 5, 50, 51, 5, 6, "¥"+resultVO.getTotalProfitPrice()); | 194 | + createMergedCell(sheet, workbook, 50, 5, 50, 51, 5, 6, "¥"+ resultVO.getTotalProfitPrice()); |
191 | createMergedCell(sheet, workbook, 50, 7, 50, 51, 7, 9, ""); | 195 | createMergedCell(sheet, workbook, 50, 7, 50, 51, 7, 9, ""); |
192 | response.setHeader("Content-Disposition", "attachment; filename=\"-.xlsx\""); | 196 | response.setHeader("Content-Disposition", "attachment; filename=\"-.xlsx\""); |
193 | workbook.write(response.getOutputStream()); | 197 | workbook.write(response.getOutputStream()); |
@@ -203,6 +207,10 @@ public class CalculateProfitServiceImpl { | @@ -203,6 +207,10 @@ public class CalculateProfitServiceImpl { | ||
203 | */ | 207 | */ |
204 | public ServerResult innerProfitRatioExport(HttpServletResponse response,InnerProfitRatioQueryVO queryVO) throws IOException { | 208 | public ServerResult innerProfitRatioExport(HttpServletResponse response,InnerProfitRatioQueryVO queryVO) throws IOException { |
205 | InnerProfitRatioResultVO resultVO = buildInnerProfitRatioResultVO(queryVO); | 209 | InnerProfitRatioResultVO resultVO = buildInnerProfitRatioResultVO(queryVO); |
210 | + return writeInnerProfitRatioData(response, resultVO); | ||
211 | + } | ||
212 | + | ||
213 | + private ServerResult<Object> writeInnerProfitRatioData(HttpServletResponse response, InnerProfitRatioResultVO resultVO) throws IOException { | ||
206 | Workbook workbook = new XSSFWorkbook(); | 214 | Workbook workbook = new XSSFWorkbook(); |
207 | Sheet sheet = workbook.createSheet("内部生产净利润分析表"); | 215 | Sheet sheet = workbook.createSheet("内部生产净利润分析表"); |
208 | Row row = sheet.createRow(0); | 216 | Row row = sheet.createRow(0); |
@@ -270,7 +278,7 @@ public class CalculateProfitServiceImpl { | @@ -270,7 +278,7 @@ public class CalculateProfitServiceImpl { | ||
270 | createMergedCell(sheet, workbook, 20, 4, 20, 21, 4, 5, "¥"+ resultVO.getInnerProduceTotalPrice()); | 278 | createMergedCell(sheet, workbook, 20, 4, 20, 21, 4, 5, "¥"+ resultVO.getInnerProduceTotalPrice()); |
271 | createMergedCell(sheet, workbook, 20, 6, 20, 21, 6, 7, ""); | 279 | createMergedCell(sheet, workbook, 20, 6, 20, 21, 6, 7, ""); |
272 | createMergedCell(sheet, workbook, 20, 8, 20, 21, 8, 10, ""); | 280 | createMergedCell(sheet, workbook, 20, 8, 20, 21, 8, 10, ""); |
273 | - //第十一行 | 281 | + //第十一行 |
274 | createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 3, "内部生产净利润"); | 282 | createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 3, "内部生产净利润"); |
275 | createMergedCell(sheet, workbook, 22, 4, 22, 23, 4, 5, "¥"+ resultVO.getInnerProduceTotalProfit()); | 283 | createMergedCell(sheet, workbook, 22, 4, 22, 23, 4, 5, "¥"+ resultVO.getInnerProduceTotalProfit()); |
276 | createMergedCell(sheet, workbook, 22, 6, 22, 23, 6, 7, ""); | 284 | createMergedCell(sheet, workbook, 22, 6, 22, 23, 6, 7, ""); |
@@ -281,6 +289,7 @@ public class CalculateProfitServiceImpl { | @@ -281,6 +289,7 @@ public class CalculateProfitServiceImpl { | ||
281 | workbook.close(); | 289 | workbook.close(); |
282 | return ServerResult.success(); | 290 | return ServerResult.success(); |
283 | } | 291 | } |
292 | + | ||
284 | public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { | 293 | public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { |
285 | // 创建或获取当前行 | 294 | // 创建或获取当前行 |
286 | Row row = sheet.getRow(rowIndex); | 295 | Row row = sheet.getRow(rowIndex); |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -35,22 +35,19 @@ import com.order.erp.domain.excel.AccountStatementExcelVO; | @@ -35,22 +35,19 @@ import com.order.erp.domain.excel.AccountStatementExcelVO; | ||
35 | import com.order.erp.domain.vo.AccountStatementVO; | 35 | import com.order.erp.domain.vo.AccountStatementVO; |
36 | import com.order.erp.domain.vo.ProducePdfVO; | 36 | import com.order.erp.domain.vo.ProducePdfVO; |
37 | import com.order.erp.domain.vo.order.*; | 37 | import com.order.erp.domain.vo.order.*; |
38 | -import com.order.erp.job.OrderOverTimeEventJob; | ||
39 | import com.order.erp.mapper.order.OrderBaseInfoMapper; | 38 | import com.order.erp.mapper.order.OrderBaseInfoMapper; |
40 | import com.order.erp.service.SystemSettingService; | 39 | import com.order.erp.service.SystemSettingService; |
41 | import com.order.erp.service.admin.AdminUserRoleService; | 40 | import com.order.erp.service.admin.AdminUserRoleService; |
42 | import com.order.erp.service.admin.AdminUserService; | 41 | import com.order.erp.service.admin.AdminUserService; |
43 | import com.order.erp.service.order.*; | 42 | import com.order.erp.service.order.*; |
44 | -import freemarker.template.TemplateException; | ||
45 | import lombok.extern.slf4j.Slf4j; | 43 | import lombok.extern.slf4j.Slf4j; |
46 | -import org.joda.time.DateTime; | ||
47 | import org.springframework.beans.BeanUtils; | 44 | import org.springframework.beans.BeanUtils; |
45 | +import org.springframework.beans.factory.annotation.Autowired; | ||
48 | import org.springframework.beans.factory.annotation.Value; | 46 | import org.springframework.beans.factory.annotation.Value; |
49 | import org.springframework.stereotype.Service; | 47 | import org.springframework.stereotype.Service; |
50 | import org.springframework.transaction.annotation.Transactional; | 48 | import org.springframework.transaction.annotation.Transactional; |
51 | 49 | ||
52 | import javax.annotation.Resource; | 50 | import javax.annotation.Resource; |
53 | -import javax.mail.MessagingException; | ||
54 | import javax.servlet.http.HttpServletResponse; | 51 | import javax.servlet.http.HttpServletResponse; |
55 | import java.io.*; | 52 | import java.io.*; |
56 | import java.math.BigDecimal; | 53 | import java.math.BigDecimal; |
@@ -150,6 +147,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -150,6 +147,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
150 | 147 | ||
151 | @Resource | 148 | @Resource |
152 | private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; | 149 | private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; |
150 | + @Autowired | ||
151 | + private IOrderCostInfoService orderCostInfoService; | ||
153 | 152 | ||
154 | @Resource | 153 | @Resource |
155 | private OrderTrackStageService orderTrackStageService; | 154 | private OrderTrackStageService orderTrackStageService; |
@@ -267,6 +266,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -267,6 +266,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
267 | 266 | ||
268 | // 填充发票信息 对于填充发票信息和填充生产科对账单号,其实不需要在这里写了,而且这里只是填充了invoice号和check号,这里的代码是填充数据,达到一个进度条的效果,既然没有根据是否填充发票来填充进度条,这里就不需要写。 | 267 | // 填充发票信息 对于填充发票信息和填充生产科对账单号,其实不需要在这里写了,而且这里只是填充了invoice号和check号,这里的代码是填充数据,达到一个进度条的效果,既然没有根据是否填充发票来填充进度条,这里就不需要写。 |
269 | // fillInvoiceNo(resultVOList); | 268 | // fillInvoiceNo(resultVOList); |
269 | + | ||
270 | + fillOrderCostDetils(resultVOList); | ||
270 | //第四版 start | 271 | //第四版 start |
271 | /* //需要填充生产科对账单号信息 | 272 | /* //需要填充生产科对账单号信息 |
272 | fillCheckNo(resultVOList); | 273 | fillCheckNo(resultVOList); |
@@ -287,6 +288,29 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | @@ -287,6 +288,29 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O | ||
287 | return resultVOList; | 288 | return resultVOList; |
288 | } | 289 | } |
289 | 290 | ||
291 | + private void fillOrderCostDetils(List<OrderInfoResultVO> resultVOList) { | ||
292 | + if (CollectionUtils.isEmpty(resultVOList)) { | ||
293 | + return; | ||
294 | + } | ||
295 | + | ||
296 | + Set<Long> orderIds = resultVOList.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | ||
297 | + List<OrderCostInfoDO> orderCostInfoDOS = orderCostInfoService.lambdaQuery() | ||
298 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
299 | + .in(OrderCostInfoDO::getOrderId, orderIds) | ||
300 | + .list(); | ||
301 | + | ||
302 | + if (CollectionUtils.isNotEmpty(orderCostInfoDOS)) { | ||
303 | + Map<Long, OrderCostInfoDO> orderCostDetailDOMap = orderCostInfoDOS.stream().collect(Collectors.toMap(OrderCostInfoDO::getOrderId, Function.identity(), (v1, v2) -> v1)); | ||
304 | + resultVOList.forEach(result -> { | ||
305 | + if (orderCostDetailDOMap.containsKey(result.getId())) { | ||
306 | + OrderCostInfoDO orderCostInfoDO = orderCostDetailDOMap.get(result.getId()); | ||
307 | + OrderCostInfoVO orderCostInfoVO = BeanUtil.copyProperties(orderCostInfoDO, OrderCostInfoVO.class); | ||
308 | + result.setOrderCostInfo(orderCostInfoVO); | ||
309 | + } | ||
310 | + }); | ||
311 | + } | ||
312 | + } | ||
313 | + | ||
290 | @Override | 314 | @Override |
291 | public void export(HttpServletResponse response, OrderBaseInfoQueryVO queryVO) throws IOException, Excel4JException { | 315 | public void export(HttpServletResponse response, OrderBaseInfoQueryVO queryVO) throws IOException, Excel4JException { |
292 | OrderLockFieldVO lockFieldVO = queryVO.getFieldVO(); | 316 | OrderLockFieldVO lockFieldVO = queryVO.getFieldVO(); |
@@ -1585,6 +1609,8 @@ end | @@ -1585,6 +1609,8 @@ end | ||
1585 | .in(CollectionUtils.isNotEmpty(queryVO.getCheckNo()),OrderBaseInfoDO::getCheckNo,queryVO.getCheckNo()) | 1609 | .in(CollectionUtils.isNotEmpty(queryVO.getCheckNo()),OrderBaseInfoDO::getCheckNo,queryVO.getCheckNo()) |
1586 | .eq(Objects.nonNull(queryVO.getInvoiceStatus()), OrderBaseInfoDO::getInvoiceStatus, queryVO.getInvoiceStatus()) | 1610 | .eq(Objects.nonNull(queryVO.getInvoiceStatus()), OrderBaseInfoDO::getInvoiceStatus, queryVO.getInvoiceStatus()) |
1587 | .eq(Objects.nonNull(queryVO.getCheckNoStatus()), OrderBaseInfoDO::getCheckStatus, queryVO.getCheckNoStatus()) | 1611 | .eq(Objects.nonNull(queryVO.getCheckNoStatus()), OrderBaseInfoDO::getCheckStatus, queryVO.getCheckNoStatus()) |
1612 | + .in(CollUtil.isNotEmpty(queryVO.getIds()), OrderBaseInfoDO::getId, queryVO.getIds()) | ||
1613 | + .likeRight(StringUtils.isNotBlank(queryVO.getProjectNoLikeRight()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNoLikeRight()) | ||
1588 | .orderByDesc(OrderBaseInfoDO::getId) | 1614 | .orderByDesc(OrderBaseInfoDO::getId) |
1589 | ; | 1615 | ; |
1590 | } | 1616 | } |
src/main/java/com/order/erp/service/order/impl/OrderCostDetailedOptLogServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
6 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
7 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
8 | +import com.order.erp.common.constant.Constant; | ||
9 | +import com.order.erp.common.constant.ServerResult; | ||
10 | +import com.order.erp.domain.dto.BaseDO; | ||
11 | +import com.order.erp.domain.dto.admin.AdminUserDO; | ||
12 | +import com.order.erp.domain.dto.order.OrderCostDetailedOptLogDO; | ||
13 | +import com.order.erp.domain.dto.order.ProjectBaseDevelopOptLogDO; | ||
14 | +import com.order.erp.domain.vo.order.OrderCostDetailedOptedLogQueryVO; | ||
15 | +import com.order.erp.domain.vo.order.OrderCostOptLogResultVO; | ||
16 | +import com.order.erp.domain.vo.order.ProjectOptLogQueryVO; | ||
17 | +import com.order.erp.domain.vo.order.ProjectOptLogResultVO; | ||
18 | +import com.order.erp.mapper.order.OrderCostDetailedOptLogMapper; | ||
19 | +import com.order.erp.service.admin.AdminUserService; | ||
20 | +import com.order.erp.service.order.OrderCostDetailedOptLogService; | ||
21 | +import org.springframework.beans.BeanUtils; | ||
22 | +import org.springframework.stereotype.Service; | ||
23 | + | ||
24 | +import javax.annotation.Resource; | ||
25 | +import java.util.*; | ||
26 | +import java.util.function.Function; | ||
27 | +import java.util.stream.Collectors; | ||
28 | + | ||
29 | +@Service | ||
30 | +public class OrderCostDetailedOptLogServiceImpl extends ServiceImpl<OrderCostDetailedOptLogMapper, OrderCostDetailedOptLogDO> implements OrderCostDetailedOptLogService{ | ||
31 | + @Resource | ||
32 | + private AdminUserService userService; | ||
33 | + | ||
34 | + @Override | ||
35 | + public ServerResult listByPage(OrderCostDetailedOptedLogQueryVO queryVO) { | ||
36 | + LambdaQueryWrapper<OrderCostDetailedOptLogDO> queryWrapper = buildQueryByParam(queryVO); | ||
37 | + Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); | ||
38 | + IPage<OrderCostDetailedOptLogDO> iPage = page(page, queryWrapper); | ||
39 | + | ||
40 | + Page<OrderCostOptLogResultVO> webVOPage = new Page<>(); | ||
41 | + List<OrderCostDetailedOptLogDO> OrderCostDetailedOptLogDOS = iPage.getRecords(); | ||
42 | + if (CollectionUtils.isNotEmpty(OrderCostDetailedOptLogDOS)) { | ||
43 | + Set<Long> userIds = OrderCostDetailedOptLogDOS.stream().map(OrderCostDetailedOptLogDO::getUserId).collect(Collectors.toSet()); | ||
44 | + Map<Long, AdminUserDO> userDOMap = new HashMap<>(); | ||
45 | + if (CollectionUtils.isNotEmpty(userIds)) { | ||
46 | + List<AdminUserDO> userDOS = userService.listByIds(userIds); | ||
47 | + if (CollectionUtils.isNotEmpty(userDOS)) { | ||
48 | + userDOMap = userDOS.stream().collect(Collectors.toMap(AdminUserDO::getId, Function.identity())); | ||
49 | + } | ||
50 | + } | ||
51 | + Map<Long, AdminUserDO> finalUserDOMap = userDOMap; | ||
52 | + List<OrderCostOptLogResultVO> resultVOList = OrderCostDetailedOptLogDOS.stream().map(x -> { | ||
53 | + OrderCostOptLogResultVO resultVO = new OrderCostOptLogResultVO(); | ||
54 | + BeanUtils.copyProperties(x, resultVO); | ||
55 | + if (finalUserDOMap.containsKey(x.getUserId())) { | ||
56 | + resultVO.setUserName(finalUserDOMap.get(x.getUserId()).getUserName()); | ||
57 | + } | ||
58 | + return resultVO; | ||
59 | + }).collect(Collectors.toList()); | ||
60 | + | ||
61 | + webVOPage.setRecords(resultVOList); | ||
62 | + } | ||
63 | + BeanUtils.copyProperties(page, webVOPage, "records"); | ||
64 | + return ServerResult.success(webVOPage); | ||
65 | + } | ||
66 | + | ||
67 | + private LambdaQueryWrapper<OrderCostDetailedOptLogDO> buildQueryByParam(OrderCostDetailedOptedLogQueryVO queryVO) { | ||
68 | + return new LambdaQueryWrapper<OrderCostDetailedOptLogDO>() | ||
69 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
70 | + .eq(Objects.nonNull(queryVO.getOrderId()), OrderCostDetailedOptLogDO::getOrderId, queryVO.getOrderId()) | ||
71 | + .eq(Objects.nonNull(queryVO.getType()), OrderCostDetailedOptLogDO::getType, queryVO.getType()) | ||
72 | + .orderByDesc(OrderCostDetailedOptLogDO::getId); | ||
73 | + } | ||
74 | + | ||
75 | + | ||
76 | +} |
src/main/java/com/order/erp/service/order/impl/OrderCostInfoServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | ||
2 | + | ||
3 | +import cn.hutool.core.bean.BeanUtil; | ||
4 | +import cn.hutool.core.bean.copier.CopyOptions; | ||
5 | +import cn.hutool.core.collection.CollUtil; | ||
6 | +import com.alibaba.fastjson.JSONObject; | ||
7 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
8 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
9 | +import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||
10 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
11 | +import com.fasterxml.jackson.core.JsonProcessingException; | ||
12 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
13 | +import com.github.stupdit1t.excel.common.PoiWorkbookType; | ||
14 | +import com.github.stupdit1t.excel.core.ExcelHelper; | ||
15 | +import com.github.stupdit1t.excel.style.CellPosition; | ||
16 | +import com.order.erp.common.constant.Constant; | ||
17 | +import com.order.erp.common.constant.ServerResult; | ||
18 | +import com.order.erp.common.constant.ServerResultCode; | ||
19 | +import com.order.erp.common.exception.BusinessException; | ||
20 | +import com.order.erp.config.DataScope; | ||
21 | +import com.order.erp.domain.*; | ||
22 | +import com.order.erp.domain.dto.BaseDO; | ||
23 | +import com.order.erp.domain.dto.order.OrderBaseInfoDO; | ||
24 | +import com.order.erp.domain.dto.order.OrderCostDetailedOptLogDO; | ||
25 | +import com.order.erp.domain.dto.order.OrderCostInfoDO; | ||
26 | +import com.order.erp.domain.dto.order.OrderFieldLockApplyDO; | ||
27 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
28 | +import com.order.erp.domain.vo.order.*; | ||
29 | +import com.order.erp.mapper.order.OrderCostInfoMapper; | ||
30 | +import com.order.erp.service.IOrderCostFieldLockRecordService; | ||
31 | +import com.order.erp.service.SystemSettingService; | ||
32 | +import com.order.erp.service.order.*; | ||
33 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
34 | +import org.springframework.beans.BeanUtils; | ||
35 | +import org.springframework.beans.factory.annotation.Autowired; | ||
36 | +import org.springframework.stereotype.Service; | ||
37 | +import org.springframework.transaction.annotation.Transactional; | ||
38 | + | ||
39 | +import javax.annotation.Resource; | ||
40 | +import javax.servlet.http.HttpServletResponse; | ||
41 | +import java.io.IOException; | ||
42 | +import java.math.BigDecimal; | ||
43 | +import java.math.RoundingMode; | ||
44 | +import java.util.*; | ||
45 | +import java.util.stream.Collectors; | ||
46 | + | ||
47 | +/** | ||
48 | + * <p> | ||
49 | + * 服务实现类 | ||
50 | + * </p> | ||
51 | + * | ||
52 | + * @author author | ||
53 | + * @since 2024-12-22 | ||
54 | + */ | ||
55 | +@Service | ||
56 | +public class OrderCostInfoServiceImpl extends ServiceImpl<OrderCostInfoMapper, OrderCostInfoDO> implements IOrderCostInfoService { | ||
57 | + @Autowired | ||
58 | + private DataScope dataScope; | ||
59 | + @Resource | ||
60 | + private OrderFieldLockApplyService orderFieldLockApplyService; | ||
61 | + @Autowired | ||
62 | + private OrderBaseInfoService orderBaseInfoService; | ||
63 | + @Autowired | ||
64 | + private IOrderCostFieldLockRecordService orderCostFieldLockRecordService; | ||
65 | + @Autowired | ||
66 | + private SystemSettingService systemSettingService; | ||
67 | + @Autowired | ||
68 | + private OrderCostDetailedOptLogService orderCostDetailedOptLogService; | ||
69 | + | ||
70 | + @Override | ||
71 | + @Transactional(rollbackFor = Exception.class) | ||
72 | + public ServerResult edit(OrderCostInfoVO vo) { | ||
73 | + Integer type=null; | ||
74 | + String operationDesc=null; | ||
75 | + Long id = vo.getOrderId(); | ||
76 | + Optional<OrderCostInfoDO> orderCostInfoDOOpt = this.lambdaQuery() | ||
77 | + .eq(OrderCostInfoDO::getOrderId, id) | ||
78 | + .last(" limit 1 ") | ||
79 | + .oneOpt(); | ||
80 | + OrderCostInfoDO orderCostInfoDO = null; | ||
81 | + OrderCostInfoDO oldOrderCostInfoDO = null; | ||
82 | + boolean isUpdate = orderCostInfoDOOpt.isPresent(); | ||
83 | + if (!isUpdate) { | ||
84 | + //对象不存在。 | ||
85 | + orderCostInfoDO = BeanUtil.copyProperties(vo, OrderCostInfoDO.class); | ||
86 | + } else { | ||
87 | + orderCostInfoDO = orderCostInfoDOOpt.get(); | ||
88 | + oldOrderCostInfoDO = BeanUtil.copyProperties(orderCostInfoDO, OrderCostInfoDO.class,"id","orderId","createTime","createBy","modifyTime","modifyBy","enableFlag"); | ||
89 | + BeanUtil.copyProperties(vo, orderCostInfoDO, CopyOptions.create().ignoreNullValue()); | ||
90 | + } | ||
91 | + // 如果对于新旧数据一致时,则不会进行状态设置。 但是对于第一次创建数据应该怎么办呢? 通过isUpdate来进行判断。 对象不存在时,就不需要判断数据是否一致,对象存在时,就需要进行判断数据是否一致。如果一致,则不要进行状态设置,反之则需要进行状态设置。 | ||
92 | + | ||
93 | + Optional<OrderCostFieldLockRecord> orderCostFieldLockRecordOpt = orderCostFieldLockRecordService | ||
94 | + .lambdaQuery() | ||
95 | + .eq(OrderCostFieldLockRecord::getOrderId, id) | ||
96 | + .last(" limit 1 ") | ||
97 | + .oneOpt(); | ||
98 | + OrderCostFieldLockRecord orderCostFieldLockRecord = orderCostFieldLockRecordOpt.orElse( | ||
99 | + OrderCostFieldLockRecord.builder() | ||
100 | + .orderId(id) | ||
101 | + .userId(dataScope.getLoginUserId()) | ||
102 | + .build() | ||
103 | + ); | ||
104 | + OrderCostInfolockFieldVO originOrderCostInfolockFieldVO = JSONObject.parseObject(Optional.ofNullable(orderCostFieldLockRecord.getFields()).orElse("{}"), OrderCostInfolockFieldVO.class); | ||
105 | + if(Objects.nonNull(vo.getPacketActualRmbTotalPrice())){ | ||
106 | + originOrderCostInfolockFieldVO.setPacketActualRmbTotalPrice(OrderLockFieldEnum.LOCKED.name()); | ||
107 | + type=ProjectOptTypeEnum.PACKAGING_COST_TYPE.getType(); | ||
108 | + operationDesc = isUpdate | ||
109 | + ? OrderOptTypeEnum.PROJECT_COST_EDIT.getDesc() | ||
110 | + : OrderOptTypeEnum.PROJECT_COST_ADD.getDesc(); | ||
111 | + //编辑包装费用实际金额之后状态为待审核 | ||
112 | + /*需要考虑一个问题,假如状态为已通过,但是没有进行任何的修改而点击了确认,那么它的状态会由已审核变为待审核,所以需要进行判断一下,此次传递来的数据是否与上一次的数据一致,如果不一致则需要进行状态设置*/ | ||
113 | + if(isUpdate && ProfitStatusEnum.APPROVED.getStatus().equals(oldOrderCostInfoDO.getPackStatus()) | ||
114 | + && oldOrderCostInfoDO.getPacketActualRmbTotalPrice().compareTo(vo.getPacketActualRmbTotalPrice()) == 0){ | ||
115 | + }else{ | ||
116 | + orderCostInfoDO.setPackStatus(ProfitStatusEnum.PENDING_APPROVAL.getStatus()); | ||
117 | + } | ||
118 | + }else if(Objects.nonNull(vo.getProductionActualPrice())||Objects.nonNull(vo.getProductionDepartmentPredictUnitPrice())) { | ||
119 | + //todo 以前是直接填写总价,现在是填写单价,然后乘以数量自动计算总价,需要前端传递一个数量参数过来。 | ||
120 | + vo.setProductionDepartmentPredictPrice(vo.getProductionDepartmentPredictUnitPrice().multiply(BigDecimal.valueOf(vo.getOrderCount()))); | ||
121 | + orderCostInfoDO.setProductionDepartmentPredictPrice(vo.getProductionDepartmentPredictPrice()); | ||
122 | + originOrderCostInfolockFieldVO.setProductionActualPrice(OrderLockFieldEnum.LOCKED.name()); | ||
123 | + originOrderCostInfolockFieldVO.setProductionDepartmentPredictPrice(OrderLockFieldEnum.LOCKED.name()); | ||
124 | + type=ProjectOptTypeEnum.INTERNAL_PRODUCE_DETAILS_TYPE.getType(); | ||
125 | + operationDesc = isUpdate | ||
126 | + ? OrderOptTypeEnum.PROJECT_INNER_PRODUCE_PROFIT_EDIT.getDesc() | ||
127 | + : OrderOptTypeEnum.PROJECT_INNER_PRODUCE_PROFIT_ADD.getDesc(); | ||
128 | + //编辑生产科预算金额和实际发生费用之后状态为待审核 | ||
129 | + /*也需要考虑问题,假如状态为已通过,但是没有进行任何修改二点击了确认,那么它的状态会由已审核变为待审核*/ | ||
130 | + if(isUpdate && ProfitStatusEnum.APPROVED.getStatus().equals(oldOrderCostInfoDO.getInnerProduceStatus()) && | ||
131 | + oldOrderCostInfoDO.getProductionActualPrice().compareTo(vo.getProductionActualPrice()) ==0 && | ||
132 | + //前端传递的是单价和数量,但是后端只是保存了总价,所以需要进行判断一下,此次传递来的数据和上一次的数据是否一致,如果不一致则需要进行状态设置 | ||
133 | + oldOrderCostInfoDO.getProductionDepartmentPredictPrice().compareTo(vo.getProductionDepartmentPredictUnitPrice().multiply(BigDecimal.valueOf(vo.getOrderCount()))) ==0){ | ||
134 | + }else{ | ||
135 | + orderCostInfoDO.setInnerProduceStatus(ProfitStatusEnum.PENDING_APPROVAL.getStatus()); | ||
136 | + } | ||
137 | + } | ||
138 | + orderCostFieldLockRecord.setFields(JSONObject.toJSONString(originOrderCostInfolockFieldVO)); | ||
139 | + orderCostFieldLockRecordService.saveOrUpdate(orderCostFieldLockRecord); | ||
140 | + this.saveOrUpdate(orderCostInfoDO); | ||
141 | + //进行日志记录。 | ||
142 | + OrderCostInfoVO orderCostInfoVO = buildOrderConstInfoVO(vo, id); | ||
143 | + OrderCostDetailedOptLogDO orderConstOptLogDo = buildOrderConstOptLogDo(id, dataScope.getLoginUserId(),type ,operationDesc,JSONObject.toJSONString(orderCostInfoVO)); | ||
144 | + return ServerResult.success(orderCostDetailedOptLogService.save(orderConstOptLogDo)); | ||
145 | + } | ||
146 | + | ||
147 | + @Override | ||
148 | + public ServerResult applyEditFileds(OrderCostInfolockFieldVO vo) { | ||
149 | + Integer applyType=null; | ||
150 | + List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() | ||
151 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
152 | + .eq(OrderFieldLockApplyDO::getOrderId, vo.getOrderId()) | ||
153 | + .eq(OrderFieldLockApplyDO::getApplyUserId, dataScope.getLoginUserId()) | ||
154 | + .eq(OrderFieldLockApplyDO::getType, vo.getType()) | ||
155 | + .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus())); | ||
156 | + if (CollectionUtils.isNotEmpty(applyDOS)) { | ||
157 | + throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); | ||
158 | + } | ||
159 | + OrderCostInfolockFieldVO lockField = OrderCostInfolockFieldVO.builder() | ||
160 | + .packetActualRmbTotalPrice(vo.getPacketActualRmbTotalPrice()) | ||
161 | + .productionActualPrice(vo.getProductionActualPrice()) | ||
162 | + .productionDepartmentPredictPrice(vo.getProductionDepartmentPredictPrice()) | ||
163 | + .productionDepartmentPredictUnitPrice(vo.getProductionDepartmentPredictUnitPrice()) | ||
164 | + .build(); | ||
165 | + OrderFieldLockApplyDO build = OrderFieldLockApplyDO.builder() | ||
166 | + .orderId(vo.getOrderId()) | ||
167 | + .applyUserId(dataScope.getLoginUserId()) | ||
168 | + .applyRemark(vo.getApplyRemark()) | ||
169 | + .fields(JSONObject.toJSONString(lockField)) | ||
170 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | ||
171 | + .type(vo.getType()) | ||
172 | + .remark(OrderCostApplyTpeEnum.getNameByType(vo.getType())) | ||
173 | + .build(); | ||
174 | + orderFieldLockApplyService.save(build); | ||
175 | + //进行审批记录的保存。需要前端在申请字段申请时传递这条数据的id。 | ||
176 | + if(OrderCostApplyTpeEnum.ORDER_PRODUCTION_COST_FIELD_EDIT_APPLY.getType().equals(vo.getType())){ | ||
177 | + applyType=OrderCostApplyTpeEnum.ORDER_PRODUCTION_COST_FIELD_EDIT_APPLY.getType(); | ||
178 | + }else{ | ||
179 | + applyType=OrderCostApplyTpeEnum.ORDER_PACKET_COST_FIELD_EDIT_APPLY.getType(); | ||
180 | + } | ||
181 | + orderCostDetailedOptLogService.save(buildOrderConstOptLogDo(vo.getOrderId(), dataScope.getLoginUserId(),applyType,OrderCostApplyTpeEnum.getNameByType(applyType),JSONObject.toJSONString(lockField))); | ||
182 | + return ServerResult.success(); | ||
183 | + } | ||
184 | + | ||
185 | + @Override | ||
186 | + public ServerResult<Page<InnerProfitDetailVO>> listInnerProfitDetailByPage(OrderBaseInfoQueryVO queryVO) { | ||
187 | + ServerResult serverResult = orderBaseInfoService.listByPage(queryVO); | ||
188 | + Page<OrderInfoResultVO> page = (Page<OrderInfoResultVO>) serverResult.getData(); | ||
189 | + List<OrderInfoResultVO> records = page.getRecords(); | ||
190 | + List<OrderCostFieldLockRecord> lockRecords = orderCostFieldLockRecordService | ||
191 | + .lambdaQuery() | ||
192 | + .func(query -> { | ||
193 | + Set<Long> collect = records.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | ||
194 | + if (CollUtil.isNotEmpty(collect)) { | ||
195 | + query.in(OrderCostFieldLockRecord::getOrderId, collect); | ||
196 | + | ||
197 | + } else { | ||
198 | + query.apply("1!=1"); | ||
199 | + } | ||
200 | + }) | ||
201 | + .list(); | ||
202 | + ObjectMapper objectMapper = new ObjectMapper(); | ||
203 | + Map<Long, OrderCostInfolockFieldVO> orderId2fieldMapMap = lockRecords.stream().collect(Collectors.toMap(OrderCostFieldLockRecord::getOrderId, record -> { | ||
204 | + try { | ||
205 | + return objectMapper.readValue(record.getFields(), OrderCostInfolockFieldVO.class); | ||
206 | + } catch (JsonProcessingException e) { | ||
207 | + throw new RuntimeException(e); | ||
208 | + } | ||
209 | + })); | ||
210 | + List<InnerProfitDetailVO> innerProfitRatioResultVOs = records.stream().map(record -> { | ||
211 | + OrderCostInfoVO orderCostInfo = record.getOrderCostInfo(); | ||
212 | + OrderCostInfolockFieldVO lockFields = Optional.ofNullable(orderId2fieldMapMap.get(record.getId())) | ||
213 | + .orElse(new OrderCostInfolockFieldVO() | ||
214 | + ); | ||
215 | + if(Objects.isNull(lockFields.getPacketActualRmbTotalPrice())){ | ||
216 | + lockFields.setPacketActualRmbTotalPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getPacketActualRmbTotalPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
217 | + } | ||
218 | + if(Objects.isNull(lockFields.getProductionActualPrice())){ | ||
219 | + lockFields.setProductionActualPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getProductionActualPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
220 | + } | ||
221 | + if(Objects.isNull(lockFields.getProductionDepartmentPredictPrice())){ | ||
222 | + lockFields.setProductionDepartmentPredictPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getProductionDepartmentPredictPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
223 | + } | ||
224 | + if(Objects.isNull(lockFields.getProductionDepartmentPredictUnitPrice())){ | ||
225 | + lockFields.setProductionDepartmentPredictUnitPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getProductionDepartmentPredictUnitPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
226 | + } | ||
227 | + InnerProfitDetailVO vo = InnerProfitDetailVO.builder() | ||
228 | + .orderId(record.getId()) | ||
229 | + .customerCode(record.getCustomerCode()) | ||
230 | + .projectNo(record.getProjectNo()) | ||
231 | + .productionDepartment(record.getProductionDepartment()) | ||
232 | + .innerNo(record.getInnerNo()) | ||
233 | + .picUrl(record.getPicUrl()) | ||
234 | + .orderCount(record.getOrderCount()) | ||
235 | + .productionDepartmentPrice(Objects.isNull(record.getProfitAnalysisInfo()) ? null : record.getProfitAnalysisInfo().getProductionDepartmentPrice()) | ||
236 | + .productionDepartmentTotalPrice(Objects.isNull(record.getProfitAnalysisInfo()) ? null : record.getProfitAnalysisInfo().getProductionDepartmentTotalPrice()) | ||
237 | + .productionDepartmentPredictPrice(Objects.isNull(record.getOrderCostInfo()) ? null : record.getOrderCostInfo().getProductionDepartmentPredictPrice()) | ||
238 | + .productionActualPrice(Objects.isNull(record.getOrderCostInfo()) ? null : record.getOrderCostInfo().getProductionActualPrice()) | ||
239 | + .innerProduceStatus((Objects.isNull(record.getOrderCostInfo()) || Objects.isNull(record.getOrderCostInfo().getInnerProduceStatus())) ? ProfitStatusEnum.Not_COMPLETED.getStatus() : record.getOrderCostInfo().getInnerProduceStatus()) | ||
240 | + .lockFields(lockFields) | ||
241 | + .build(); | ||
242 | + | ||
243 | + if (Objects.nonNull(vo.getProductionDepartmentPredictPrice()) | ||
244 | + && Objects.nonNull(vo.getProductionActualPrice()) | ||
245 | + && vo.getProductionDepartmentPredictPrice().compareTo(BigDecimal.ZERO) != 0) { | ||
246 | + //预算占比=实际发生费用/预算金额 | ||
247 | + vo.setPredictRatio(vo.getProductionActualPrice().divide(vo.getProductionDepartmentPredictPrice(), 4, RoundingMode.HALF_UP)); | ||
248 | + //预算占比与实际比占比差:1-预算占比 | ||
249 | + vo.setPredictAndActualRatio(new BigDecimal(1).subtract(vo.getPredictRatio())); | ||
250 | + } | ||
251 | + if (Objects.nonNull(vo.getProductionDepartmentTotalPrice()) | ||
252 | + && Objects.nonNull(vo.getProductionDepartmentPredictPrice())) { | ||
253 | + //事前毛利润=生产总额-预算金额 | ||
254 | + vo.setBeforeGrossProfit(BigDecimal.valueOf(vo.getProductionDepartmentTotalPrice()).subtract(vo.getProductionDepartmentPredictPrice())); | ||
255 | + if (Objects.nonNull(vo.getProductionDepartmentTotalPrice()) | ||
256 | + && vo.getProductionDepartmentTotalPrice().compareTo(0.0) != 0) { | ||
257 | + //事前毛利润率=事前毛利润/生产总额 | ||
258 | + vo.setBeforeGrossProfitRate(vo.getBeforeGrossProfit().divide(BigDecimal.valueOf(vo.getProductionDepartmentTotalPrice()), 4, RoundingMode.HALF_UP)); | ||
259 | + } | ||
260 | + } | ||
261 | + if (Objects.nonNull(vo.getProductionDepartmentTotalPrice()) | ||
262 | + && Objects.nonNull(vo.getProductionActualPrice())) { | ||
263 | + //事后毛利润=实际发生费用-生产总额 | ||
264 | + vo.setGrossProfit(BigDecimal.valueOf(vo.getProductionDepartmentTotalPrice()).subtract(vo.getProductionActualPrice())); | ||
265 | + if (Objects.nonNull(vo.getProductionDepartmentTotalPrice()) | ||
266 | + && vo.getProductionDepartmentTotalPrice().compareTo(0.0) != 0) { | ||
267 | + //事后毛利润率=事后毛利润/生产总额 | ||
268 | + vo.setGrossProfitRate(vo.getGrossProfit().divide(BigDecimal.valueOf(vo.getProductionDepartmentTotalPrice()), 4, RoundingMode.HALF_UP)); | ||
269 | + } | ||
270 | + } | ||
271 | + if(Objects.nonNull(vo.getProductionDepartmentPredictPrice())){ | ||
272 | + vo.setProductionDepartmentPredictUnitprice(vo.getProductionDepartmentPredictPrice().divide(BigDecimal.valueOf(record.getOrderCount()), 2, RoundingMode.HALF_UP)); | ||
273 | + } | ||
274 | + return vo; | ||
275 | + }).collect(Collectors.toList()); | ||
276 | + Page<InnerProfitDetailVO> webVOPage = new Page<>(); | ||
277 | + webVOPage.setRecords(innerProfitRatioResultVOs); | ||
278 | + BeanUtils.copyProperties(page, webVOPage, "records"); | ||
279 | + return ServerResult.success(webVOPage); | ||
280 | + } | ||
281 | + | ||
282 | + | ||
283 | + @Override | ||
284 | + public ServerResult<Page<BusinessProfitDetailVO>> listBusinessProfitDetailByPage(OrderBaseInfoQueryVO queryVO) { | ||
285 | + ServerResult serverResult = orderBaseInfoService.listByPage(queryVO); | ||
286 | + Page<OrderInfoResultVO> page = (Page<OrderInfoResultVO>) serverResult.getData(); | ||
287 | + List<OrderInfoResultVO> records = page.getRecords(); | ||
288 | + List<OrderCostFieldLockRecord> lockRecords = orderCostFieldLockRecordService | ||
289 | + .lambdaQuery() | ||
290 | + .func(query -> { | ||
291 | + Set<Long> collect = records.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | ||
292 | + if (CollUtil.isNotEmpty(collect)) { | ||
293 | + query.in(OrderCostFieldLockRecord::getOrderId, collect); | ||
294 | + | ||
295 | + } else { | ||
296 | + query.apply("1!=1"); | ||
297 | + } | ||
298 | + }) | ||
299 | + .list(); | ||
300 | + ObjectMapper objectMapper = new ObjectMapper(); | ||
301 | + Map<Long, OrderCostInfolockFieldVO> orderId2fieldMapMap = lockRecords.stream().collect(Collectors.toMap(OrderCostFieldLockRecord::getOrderId, record -> { | ||
302 | + try { | ||
303 | + return objectMapper.readValue(record.getFields(), OrderCostInfolockFieldVO.class); | ||
304 | + } catch (JsonProcessingException e) { | ||
305 | + throw new RuntimeException(e); | ||
306 | + } | ||
307 | + })); | ||
308 | + BigDecimal exchangeRate = systemSettingService.getExchangeRate(); | ||
309 | + | ||
310 | + List<BusinessProfitDetailVO> innerProfitRatioResultVOs = records.stream().map(record -> { | ||
311 | + OrderCostInfoVO orderCostInfo = record.getOrderCostInfo(); | ||
312 | + OrderCostInfolockFieldVO lockFields = Optional.ofNullable(orderId2fieldMapMap.get(record.getId())).orElse( | ||
313 | + new OrderCostInfolockFieldVO() | ||
314 | + ); | ||
315 | + if(Objects.isNull(lockFields.getPacketActualRmbTotalPrice())){ | ||
316 | + lockFields.setPacketActualRmbTotalPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getPacketActualRmbTotalPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
317 | + } | ||
318 | + if(Objects.isNull(lockFields.getProductionActualPrice())){ | ||
319 | + lockFields.setProductionActualPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getProductionActualPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
320 | + } | ||
321 | + if(Objects.isNull(lockFields.getProductionDepartmentPredictPrice())){ | ||
322 | + lockFields.setProductionDepartmentPredictPrice(Objects.isNull(orderCostInfo) || Objects.isNull(orderCostInfo.getProductionDepartmentPredictPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()); | ||
323 | + } | ||
324 | + BusinessProfitDetailVO vo = BusinessProfitDetailVO.builder() | ||
325 | + .orderId(record.getId()) | ||
326 | + .customerCode(record.getCustomerCode()) | ||
327 | + .projectNo(record.getProjectNo()) | ||
328 | + .productionDepartment(record.getProductionDepartment()) | ||
329 | + .innerNo(record.getInnerNo()) | ||
330 | + .picUrl(record.getPicUrl()) | ||
331 | + .orderCount(record.getOrderCount()) | ||
332 | + .packetPrice(Objects.isNull(record.getProfitAnalysisInfo()) ? null : record.getProfitAnalysisInfo().getPacketPrice()) | ||
333 | + .packetTotalPrice(Objects.isNull(record.getProfitAnalysisInfo()) ? null : record.getProfitAnalysisInfo().getPacketTotalPrice()) | ||
334 | + .packetActualRmbTotalPrice(Objects.isNull(record.getOrderCostInfo()) ? null : record.getOrderCostInfo().getPacketActualRmbTotalPrice()) | ||
335 | + .packStatus((Objects.isNull(record.getOrderCostInfo()) || Objects.isNull(record.getOrderCostInfo().getPackStatus())) ? ProfitStatusEnum.Not_COMPLETED.getStatus() : record.getOrderCostInfo().getPackStatus()) | ||
336 | + .lockFields(lockFields) | ||
337 | + .build(); | ||
338 | + if (Objects.nonNull(vo.getPacketTotalPrice())) { | ||
339 | + //包装费用合计 = 包装费合计*汇率 | ||
340 | + vo.setPacketRmbTotalPrice(BigDecimal.valueOf(vo.getPacketTotalPrice()).multiply(exchangeRate.setScale(4, RoundingMode.HALF_UP)).doubleValue()); | ||
341 | + } | ||
342 | + if (Objects.nonNull(vo.getPacketActualRmbTotalPrice()) && Objects.nonNull(vo.getOrderCount())) { | ||
343 | + //实际跟单单价 = 包装费用实际金额/数量 | ||
344 | + vo.setPacketActualRmbPrice(vo.getPacketActualRmbTotalPrice().divide(BigDecimal.valueOf(vo.getOrderCount()), 4, RoundingMode.HALF_UP)); | ||
345 | + //实际跟单单价折算美金$ = 人民币单价/汇率 | ||
346 | + vo.setPacketActualPrice(vo.getPacketActualRmbPrice().divide(exchangeRate, 4, RoundingMode.HALF_UP)); | ||
347 | + } | ||
348 | + if (Objects.nonNull(vo.getPacketRmbTotalPrice()) && Objects.nonNull(vo.getPacketActualRmbPrice())) { | ||
349 | + //包装费用收益¥ = 包装费用合计-包装费用实际金额 | ||
350 | + vo.setPacketProfitRmbPrice(BigDecimal.valueOf(vo.getPacketRmbTotalPrice()).subtract(vo.getPacketActualRmbTotalPrice())); | ||
351 | + } | ||
352 | + if (Objects.nonNull(vo.getPacketProfitRmbPrice()) && Objects.nonNull(vo.getPacketRmbTotalPrice())) { | ||
353 | + //包装费用净利润率 = 包装费用收益/包装费用合计 | ||
354 | + vo.setPacketProfitRate(vo.getPacketProfitRmbPrice().divide(BigDecimal.valueOf(vo.getPacketRmbTotalPrice()), 4, RoundingMode.HALF_UP)); | ||
355 | + } | ||
356 | + return vo; | ||
357 | + }).collect(Collectors.toList()); | ||
358 | + Page<BusinessProfitDetailVO> webVOPage = new Page<>(); | ||
359 | + webVOPage.setRecords(innerProfitRatioResultVOs); | ||
360 | + BeanUtils.copyProperties(page, webVOPage, "records"); | ||
361 | + return ServerResult.success(webVOPage); | ||
362 | + } | ||
363 | + | ||
364 | + @Override | ||
365 | + public void exportBusinessProfitDetailExcel(HttpServletResponse response,ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
366 | + if(CollectionUtils.isEmpty(queryVO.getOrderIds()) && | ||
367 | + CollectionUtils.isEmpty(queryVO.getProjectNo()) && | ||
368 | + CollectionUtils.isEmpty(queryVO.getCustomerCode()) && | ||
369 | + CollectionUtils.isEmpty(queryVO.getInnerNo()) && | ||
370 | + CollectionUtils.isEmpty(queryVO.getProductionDepartment())){ | ||
371 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
372 | + } | ||
373 | + OrderBaseInfoQueryVO.OrderBaseInfoQueryVOBuilder builder = OrderBaseInfoQueryVO.builder() | ||
374 | + .page(1) | ||
375 | + .pageSize(200); // 设置大一点,确保导出数据不遗漏 | ||
376 | + | ||
377 | + // 根据传入条件设置筛选字段 | ||
378 | + if (CollectionUtils.isNotEmpty(queryVO.getOrderIds())) { | ||
379 | + builder.orderIds(queryVO.getOrderIds()); | ||
380 | + } else { | ||
381 | + //如果orderIds为空就代表传递的是筛选条件。 | ||
382 | + if (CollectionUtils.isNotEmpty(queryVO.getProjectNo())) { | ||
383 | + builder.projectNo(queryVO.getProjectNo()); | ||
384 | + } | ||
385 | + if (CollectionUtils.isNotEmpty(queryVO.getCustomerCode())) { | ||
386 | + builder.customerCode(queryVO.getCustomerCode()); | ||
387 | + } | ||
388 | + if (CollectionUtils.isNotEmpty(queryVO.getProductionDepartment())) { | ||
389 | + builder.productionDepartment(queryVO.getProductionDepartment()); | ||
390 | + } | ||
391 | + if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) { | ||
392 | + builder.innerNo(queryVO.getInnerNo()); | ||
393 | + } | ||
394 | + } | ||
395 | + ServerResult serverResult = listBusinessProfitDetailByPage(builder.build()); | ||
396 | + Page<BusinessProfitDetailVO> page = (Page<BusinessProfitDetailVO>) serverResult.getData(); | ||
397 | + List<BusinessProfitDetailVO> businessProfitDetailVOS = page.getRecords(); | ||
398 | + System.out.println("订单数量:"+businessProfitDetailVOS.size()); | ||
399 | + if(CollectionUtils.isNotEmpty(businessProfitDetailVOS)){ | ||
400 | + List<Map<String, Object>> list = buildBusinessProfitExportExcel(businessProfitDetailVOS, queryVO); | ||
401 | + if(CollectionUtils.isNotEmpty(list)){ | ||
402 | + List<String> keys = new ArrayList<>(list.get(Constant.ZERO).keySet()); | ||
403 | + ExcelHelper.opsExport(PoiWorkbookType.XLSX) | ||
404 | + .opsSheet(list) | ||
405 | + .opsHeader().simple().texts(keys).done() | ||
406 | + .opsColumn().fields(keys).done() | ||
407 | + .height(CellPosition.CELL, 750) | ||
408 | + .done() | ||
409 | + .export(response.getOutputStream()); | ||
410 | + System.out.println("导出成功"); | ||
411 | + } | ||
412 | + } | ||
413 | + System.out.println(businessProfitDetailVOS); | ||
414 | + } | ||
415 | + | ||
416 | + @Override | ||
417 | + public void exportInnerProfitDetailExcel(HttpServletResponse response, ProjectBaseInfoQueryVO queryVO) throws Exception { | ||
418 | + if(CollectionUtils.isEmpty(queryVO.getOrderIds()) && | ||
419 | + CollectionUtils.isEmpty(queryVO.getProjectNo()) && | ||
420 | + CollectionUtils.isEmpty(queryVO.getCustomerCode()) && | ||
421 | + CollectionUtils.isEmpty(queryVO.getInnerNo()) && | ||
422 | + CollectionUtils.isEmpty(queryVO.getProductionDepartment())){ | ||
423 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
424 | + } | ||
425 | + OrderBaseInfoQueryVO.OrderBaseInfoQueryVOBuilder builder = OrderBaseInfoQueryVO.builder() | ||
426 | + .page(1) | ||
427 | + .pageSize(200); //设置大一点,确保导出数据不遗漏 | ||
428 | + if(CollectionUtils.isNotEmpty(queryVO.getOrderIds())){ | ||
429 | + builder.orderIds(queryVO.getOrderIds()); | ||
430 | + }else{ | ||
431 | + //如果orderIds为空就代表传递的是筛选条件。 | ||
432 | + if(CollectionUtils.isNotEmpty(queryVO.getProjectNo())){ | ||
433 | + builder.projectNo(queryVO.getProjectNo()); | ||
434 | + } | ||
435 | + if(CollectionUtils.isNotEmpty(queryVO.getCustomerCode())){ | ||
436 | + builder.customerCode(queryVO.getCustomerCode()); | ||
437 | + } | ||
438 | + if(CollectionUtils.isNotEmpty(queryVO.getProductionDepartment())){ | ||
439 | + builder.productionDepartment(queryVO.getProductionDepartment()); | ||
440 | + } | ||
441 | + if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | ||
442 | + builder.innerNo(queryVO.getInnerNo()); | ||
443 | + } | ||
444 | + } | ||
445 | + //这里设置为100是故意设置大一点,防止导出多条数据。 | ||
446 | + ServerResult<Page<InnerProfitDetailVO>> serverResult= listInnerProfitDetailByPage(builder.build()); | ||
447 | + Page<InnerProfitDetailVO> page=(Page<InnerProfitDetailVO>) serverResult.getData(); | ||
448 | + List<InnerProfitDetailVO> innerProfitDetailVOS = page.getRecords(); | ||
449 | + System.out.println("订单数量"+innerProfitDetailVOS.size()); | ||
450 | + if(CollectionUtils.isNotEmpty(innerProfitDetailVOS)){ | ||
451 | + List<Map<String, Object>> list = buildInnerProfitDetailExcel(innerProfitDetailVOS, queryVO); | ||
452 | + if(CollectionUtils.isNotEmpty(list)){ | ||
453 | + List<String> keys = new ArrayList<>(list.get(Constant.ZERO).keySet()); | ||
454 | + ExcelHelper.opsExport(PoiWorkbookType.XLSX) | ||
455 | + .opsSheet(list) | ||
456 | + .opsHeader().simple().texts(keys).done() | ||
457 | + .opsColumn().fields(keys).done() | ||
458 | + .height(CellPosition.CELL, 750) | ||
459 | + .done() | ||
460 | + .export(response.getOutputStream()); | ||
461 | + System.out.println("导出成功"); | ||
462 | + } | ||
463 | + } | ||
464 | + } | ||
465 | + | ||
466 | + @Override | ||
467 | + public void setPackStatus(OrderCostInfoVO vo) { | ||
468 | + //首先判断orderId是否为空。 | ||
469 | + if(Objects.isNull(vo.getOrderId())){ | ||
470 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
471 | + } | ||
472 | + OrderCostInfoDO orderCostInfoDO = getOne(new LambdaQueryWrapper<OrderCostInfoDO>() | ||
473 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
474 | + .eq(OrderCostInfoDO::getOrderId, vo.getOrderId()) | ||
475 | + .last("limit 1")); | ||
476 | + if(Objects.isNull(orderCostInfoDO)){ | ||
477 | + throw new BusinessException(ServerResultCode.EMPTY_LIST); | ||
478 | + } | ||
479 | + orderCostInfoDO.setPackStatus(ProfitStatusEnum.APPROVED.getStatus()); | ||
480 | + updateById(orderCostInfoDO); | ||
481 | + } | ||
482 | + | ||
483 | + @Override | ||
484 | + public void setInnerProduceStatus(OrderCostInfoVO vo) { | ||
485 | + if(Objects.isNull(vo.getOrderId())){ | ||
486 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | ||
487 | + } | ||
488 | + OrderCostInfoDO orderCostInfoDO = getOne(new LambdaQueryWrapper<OrderCostInfoDO>() | ||
489 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
490 | + .eq(OrderCostInfoDO::getOrderId, vo.getOrderId()) | ||
491 | + .last("limit 1")); | ||
492 | + if(Objects.isNull(orderCostInfoDO)){ | ||
493 | + throw new BusinessException(ServerResultCode.EMPTY_LIST); | ||
494 | + } | ||
495 | + orderCostInfoDO.setInnerProduceStatus(ProfitStatusEnum.APPROVED.getStatus()); | ||
496 | + updateById(orderCostInfoDO); | ||
497 | + } | ||
498 | + | ||
499 | + | ||
500 | + private OrderCostDetailedOptLogDO buildOrderConstOptLogDo(Long orderId, Long userId , Integer type, String optType, String field){ | ||
501 | + return OrderCostDetailedOptLogDO.builder() | ||
502 | + .orderId(orderId) | ||
503 | + .userId(userId) | ||
504 | + .type(type) | ||
505 | + .optType(optType) | ||
506 | + .fields(field) | ||
507 | + .build(); | ||
508 | + } | ||
509 | + private OrderCostInfoVO buildOrderConstInfoVO(OrderCostInfoVO vo,Long orderId){ | ||
510 | + OrderCostInfoVO orderCostInfoVO = new OrderCostInfoVO(); | ||
511 | + BeanUtils.copyProperties(vo, orderCostInfoVO, "id"); | ||
512 | + orderCostInfoVO.setId(orderId); | ||
513 | + return orderCostInfoVO; | ||
514 | + } | ||
515 | + | ||
516 | + private List<Map<String,Object>> buildBusinessProfitExportExcel(List<BusinessProfitDetailVO> businessProfitDetailVOS,ProjectBaseInfoQueryVO queryVO){ | ||
517 | + List<Map<String,Object>> list= new ArrayList<>(); | ||
518 | + for(BusinessProfitDetailVO vo:businessProfitDetailVOS){ | ||
519 | + Map<String, Object> map = new LinkedHashMap<>(); | ||
520 | + map.put("客户编码",Objects.nonNull(vo.getCustomerCode()) ? vo.getCustomerCode() : ""); | ||
521 | + map.put("项目号",Objects.nonNull(vo.getProjectNo()) ? vo.getProjectNo() : ""); | ||
522 | + map.put("生产科",Objects.nonNull(vo.getProductionDepartment()) ? vo.getProductionDepartment() : ""); | ||
523 | + map.put("内部编号",Objects.nonNull(vo.getInnerNo()) ? vo.getInnerNo() : ""); | ||
524 | + map.put("图片地址",Objects.nonNull(vo.getPicUrl()) ? vo.getPicUrl() : ""); | ||
525 | + map.put("订单数量",Objects.nonNull(vo.getOrderCount()) ? vo.getOrderCount() : ""); | ||
526 | + map.put("包装费用$",Objects.nonNull(vo.getPacketPrice()) ? String.format("%.2f",vo.getPacketPrice()) : ""); | ||
527 | + map.put("包装费用合计$",Objects.nonNull(vo.getPacketTotalPrice()) ? String.format("%.2f",vo.getPacketTotalPrice()) : ""); | ||
528 | + map.put("包装费用合计¥",Objects.nonNull(vo.getPacketRmbTotalPrice()) ? String.format("%.2f",vo.getPacketRmbTotalPrice()) : ""); | ||
529 | + map.put("包装费用实际金额¥",Objects.nonNull(vo.getPacketActualRmbTotalPrice()) ? vo.getPacketActualRmbTotalPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
530 | + map.put("实际跟单单价¥",Objects.nonNull(vo.getPacketActualRmbPrice()) ? vo.getPacketActualRmbPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
531 | + map.put("实际跟单单价$",Objects.nonNull(vo.getPacketActualPrice()) ? vo.getPacketActualPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
532 | + map.put("包装费用净利润率",Objects.nonNull(vo.getPacketProfitRate()) ? vo.getPacketProfitRate().multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%" : ""); | ||
533 | +// if(StringUtils.isNotBlank(queryVO.getBusinessCostExportSelect().getPacketPrice()) && | ||
534 | +// OrderLockFieldEnum.SELECTED.name().equals(queryVO.getBusinessCostExportSelect().getPacketPrice())){ | ||
535 | +// | ||
536 | +// } | ||
537 | + list.add(map); | ||
538 | + } | ||
539 | + return list; | ||
540 | + } | ||
541 | + | ||
542 | + private List<Map<String,Object>> buildInnerProfitDetailExcel(List<InnerProfitDetailVO> innerProfitDetailVOS, ProjectBaseInfoQueryVO queryVO){ | ||
543 | + List<Map<String,Object>> list = new ArrayList<>(); | ||
544 | + for (InnerProfitDetailVO vo:innerProfitDetailVOS){ | ||
545 | + Map<String, Object> hashMap = new LinkedHashMap<>(); | ||
546 | + hashMap.put("客户编码",Objects.nonNull(vo.getCustomerCode()) ? vo.getCustomerCode() : ""); | ||
547 | + hashMap.put("项目号",Objects.nonNull(vo.getProjectNo()) ? vo.getProjectNo() : ""); | ||
548 | + hashMap.put("生产科",Objects.nonNull(vo.getProductionDepartment()) ? vo.getProductionDepartment() : ""); | ||
549 | + hashMap.put("内部编号",Objects.nonNull(vo.getInnerNo()) ? vo.getInnerNo() : ""); | ||
550 | + hashMap.put("图片地址",Objects.nonNull(vo.getPicUrl()) ? vo.getPicUrl() : ""); | ||
551 | + hashMap.put("订单数量",Objects.nonNull(vo.getOrderCount()) ? vo.getOrderCount() : ""); | ||
552 | + hashMap.put("生产科单价¥",Objects.nonNull(vo.getProductionDepartmentPrice()) ? String.format("%.2f",vo.getProductionDepartmentPrice()) : ""); | ||
553 | + hashMap.put("生产科总价¥",Objects.nonNull(vo.getProductionDepartmentTotalPrice()) ? String.format("%.2f",vo.getProductionDepartmentTotalPrice()) : ""); | ||
554 | + hashMap.put("生产科预算金额¥",Objects.nonNull(vo.getProductionDepartmentPredictPrice()) ? vo.getProductionDepartmentPredictPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
555 | + hashMap.put("实际发生费用¥",Objects.nonNull(vo.getProductionActualPrice()) ? vo.getProductionActualPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
556 | + hashMap.put("预算占比",Objects.nonNull(vo.getPredictRatio()) ? vo.getPredictRatio().multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%" : ""); | ||
557 | + hashMap.put("预算占比与实际占比差",Objects.nonNull(vo.getPredictAndActualRatio()) ? vo.getPredictAndActualRatio().multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%" : ""); | ||
558 | + hashMap.put("事前毛利润",Objects.nonNull(vo.getBeforeGrossProfit()) ? vo.getBeforeGrossProfit().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
559 | + hashMap.put("事前毛利率",Objects.nonNull(vo.getBeforeGrossProfitRate()) ? vo.getBeforeGrossProfitRate().multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%" : ""); | ||
560 | + hashMap.put("事后毛利润",Objects.nonNull(vo.getGrossProfit()) ? vo.getGrossProfit().setScale(2, RoundingMode.HALF_UP).toPlainString() : ""); | ||
561 | + hashMap.put("事后毛利率",Objects.nonNull(vo.getGrossProfitRate()) ? vo.getGrossProfitRate().multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP) + "%" : ""); | ||
562 | + /*if(StringUtils.isNotBlank(queryVO.getInnerProfitDetailExportSelect().getProductionDepartmentPrice()) && | ||
563 | + OrderLockFieldEnum.SELECTED.name().equals(queryVO.getInnerProfitDetailExportSelect().getProductionDepartmentPrice())){ | ||
564 | + | ||
565 | + }*/ | ||
566 | + list.add(hashMap); | ||
567 | + } | ||
568 | + return list; | ||
569 | + } | ||
570 | + | ||
571 | +} |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
1 | package com.order.erp.service.order.impl; | 1 | package com.order.erp.service.order.impl; |
2 | 2 | ||
3 | import cn.hutool.core.bean.BeanUtil; | 3 | import cn.hutool.core.bean.BeanUtil; |
4 | +import cn.hutool.core.bean.copier.CopyOptions; | ||
4 | import cn.hutool.core.collection.CollUtil; | 5 | import cn.hutool.core.collection.CollUtil; |
5 | import com.alibaba.fastjson.JSONObject; | 6 | import com.alibaba.fastjson.JSONObject; |
6 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 7 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
@@ -20,12 +21,15 @@ import com.order.erp.config.DataScope; | @@ -20,12 +21,15 @@ import com.order.erp.config.DataScope; | ||
20 | import com.order.erp.domain.*; | 21 | import com.order.erp.domain.*; |
21 | import com.order.erp.domain.dto.BaseDO; | 22 | import com.order.erp.domain.dto.BaseDO; |
22 | import com.order.erp.domain.dto.order.*; | 23 | import com.order.erp.domain.dto.order.*; |
24 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
23 | import com.order.erp.domain.vo.order.*; | 25 | import com.order.erp.domain.vo.order.*; |
24 | import com.order.erp.mapper.order.OrderFieldLockApplyMapper; | 26 | import com.order.erp.mapper.order.OrderFieldLockApplyMapper; |
27 | +import com.order.erp.service.IOrderCostFieldLockRecordService; | ||
25 | import com.order.erp.service.order.*; | 28 | import com.order.erp.service.order.*; |
26 | import lombok.extern.slf4j.Slf4j; | 29 | import lombok.extern.slf4j.Slf4j; |
27 | import org.joda.time.DateTime; | 30 | import org.joda.time.DateTime; |
28 | import org.springframework.beans.BeanUtils; | 31 | import org.springframework.beans.BeanUtils; |
32 | +import org.springframework.beans.factory.annotation.Autowired; | ||
29 | import org.springframework.stereotype.Service; | 33 | import org.springframework.stereotype.Service; |
30 | import org.springframework.transaction.annotation.Transactional; | 34 | import org.springframework.transaction.annotation.Transactional; |
31 | 35 | ||
@@ -35,6 +39,7 @@ import java.util.*; | @@ -35,6 +39,7 @@ import java.util.*; | ||
35 | import java.util.concurrent.TimeUnit; | 39 | import java.util.concurrent.TimeUnit; |
36 | import java.util.function.Function; | 40 | import java.util.function.Function; |
37 | import java.util.stream.Collectors; | 41 | import java.util.stream.Collectors; |
42 | +import java.util.stream.Stream; | ||
38 | 43 | ||
39 | /** | 44 | /** |
40 | * 用户订单-字段锁定申请表(OrderFieldLockApply)表服务实现类 | 45 | * 用户订单-字段锁定申请表(OrderFieldLockApply)表服务实现类 |
@@ -52,6 +57,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -52,6 +57,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
52 | @Resource | 57 | @Resource |
53 | private OrderFieldLockRecordService fieldLockRecordService; | 58 | private OrderFieldLockRecordService fieldLockRecordService; |
54 | 59 | ||
60 | + @Autowired | ||
61 | + private IOrderCostFieldLockRecordService orderCostFieldLockRecordService; | ||
62 | + | ||
55 | @Resource | 63 | @Resource |
56 | private OrderFieldLockApplyService applyService; | 64 | private OrderFieldLockApplyService applyService; |
57 | 65 | ||
@@ -121,15 +129,23 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -121,15 +129,23 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
121 | BeanUtils.copyProperties(x, resultVO); | 129 | BeanUtils.copyProperties(x, resultVO); |
122 | String fields = x.getFields(); | 130 | String fields = x.getFields(); |
123 | if (StringUtils.isNotBlank(fields)) { | 131 | if (StringUtils.isNotBlank(fields)) { |
124 | - if (ApplyTypeEnum.FIELD_EDIT_APPLY.getType() .equals(x.getType())) { | 132 | + if (ApplyTypeEnum.FIELD_EDIT_APPLY.getType().equals(x.getType())) { |
125 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); | 133 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
126 | } | 134 | } |
135 | + // todo | ||
136 | + if (Stream.of(OrderCostApplyTpeEnum.ORDER_PACKET_COST_FIELD_EDIT_APPLY, | ||
137 | + OrderCostApplyTpeEnum.ORDER_PRODUCTION_COST_FIELD_EDIT_APPLY) | ||
138 | + .map(OrderCostApplyTpeEnum::getType) | ||
139 | + .anyMatch(type -> type.equals(x.getType()))) { | ||
140 | + OrderCostInfolockFieldVO orderCostInfolockFieldVO = JSONObject.parseObject(fields, OrderCostInfolockFieldVO.class); | ||
141 | + resultVO.setFieldInfos(OrderLockFieldVO.builder().costInfolockFieldVO(orderCostInfolockFieldVO).build()); | ||
142 | + } | ||
127 | if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(x.getType())) { | 143 | if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(x.getType())) { |
128 | OrderLockFieldVO fieldVO = new OrderLockFieldVO(); | 144 | OrderLockFieldVO fieldVO = new OrderLockFieldVO(); |
129 | fieldVO.setReportFields(JSONObject.parseObject(fields, OrderCompletionReportFieldVO.class)); | 145 | fieldVO.setReportFields(JSONObject.parseObject(fields, OrderCompletionReportFieldVO.class)); |
130 | resultVO.setFieldInfos(fieldVO); | 146 | resultVO.setFieldInfos(fieldVO); |
131 | } | 147 | } |
132 | - if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType() .equals(x.getType())) { | 148 | + if (ApplyTypeEnum.ORDER_PROFIT_APPLY.getType().equals(x.getType())) { |
133 | OrderLockFieldVO fieldVO = new OrderLockFieldVO(); | 149 | OrderLockFieldVO fieldVO = new OrderLockFieldVO(); |
134 | fieldVO.setProfitAnalysisFields(JSONObject.parseObject(fields, OrderProfitAnalysisFieldVO.class)); | 150 | fieldVO.setProfitAnalysisFields(JSONObject.parseObject(fields, OrderProfitAnalysisFieldVO.class)); |
135 | resultVO.setFieldInfos(fieldVO); | 151 | resultVO.setFieldInfos(fieldVO); |
@@ -158,8 +174,8 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -158,8 +174,8 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
158 | } else{ | 174 | } else{ |
159 | resultVO.setFieldInfos(orderLockFieldVO); | 175 | resultVO.setFieldInfos(orderLockFieldVO); |
160 | } | 176 | } |
161 | - if(Objects.isNull(resultVO.getFieldInfos())){ | ||
162 | - resultVO=null; | 177 | + if (Objects.isNull(resultVO.getFieldInfos())) { |
178 | + resultVO = null; | ||
163 | } | 179 | } |
164 | } | 180 | } |
165 | if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(x.getType()) || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(x.getType()) || ApplyTypeEnum.CHECK_DEDUCT_URL.getType().equals(x.getType())) { | 181 | if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(x.getType()) || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(x.getType()) || ApplyTypeEnum.CHECK_DEDUCT_URL.getType().equals(x.getType())) { |
@@ -200,13 +216,13 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -200,13 +216,13 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
200 | } else{ | 216 | } else{ |
201 | resultVO.setFieldInfos(orderLockFieldVO); | 217 | resultVO.setFieldInfos(orderLockFieldVO); |
202 | } | 218 | } |
203 | - if(Objects.isNull(resultVO.getFieldInfos())){ | ||
204 | - resultVO=null; | 219 | + if (Objects.isNull(resultVO.getFieldInfos())) { |
220 | + resultVO = null; | ||
205 | } | 221 | } |
206 | } | 222 | } |
207 | } | 223 | } |
208 | return resultVO; | 224 | return resultVO; |
209 | - }).filter(result->result!=null).collect(Collectors.toList()); | 225 | + }).filter(Objects::nonNull).collect(Collectors.toList()); |
210 | if (resultVOList != null && resultVOList.stream().noneMatch(x -> ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(x.getType()) | 226 | if (resultVOList != null && resultVOList.stream().noneMatch(x -> ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(x.getType()) |
211 | || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(x.getType()) | 227 | || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(x.getType()) |
212 | || ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(x.getType()) | 228 | || ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(x.getType()) |
@@ -406,7 +422,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -406,7 +422,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
406 | * @param queryVO | 422 | * @param queryVO |
407 | * @return | 423 | * @return |
408 | */ | 424 | */ |
409 | - private LambdaQueryWrapper<OrderFieldLockApplyDO> buildQueryByParam(OrderFieldLockApplyQueryVO queryVO,RoleEnum roleEnum) { | 425 | + private LambdaQueryWrapper<OrderFieldLockApplyDO> buildQueryByParam(OrderFieldLockApplyQueryVO queryVO, RoleEnum roleEnum) { |
410 | RoleEnum roleSelect = null; | 426 | RoleEnum roleSelect = null; |
411 | if (RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())) { | 427 | if (RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())) { |
412 | queryVO.setBusinessPerson(dataScope.getLoginUserName()); | 428 | queryVO.setBusinessPerson(dataScope.getLoginUserName()); |
@@ -424,7 +440,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -424,7 +440,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
424 | // queryVO.getType==Constant.SIXTY完全是为了跟单和业务对于应收账单类型请求时,屏蔽掉应收账单,只展示invoice扣款单申请数据。 | 440 | // queryVO.getType==Constant.SIXTY完全是为了跟单和业务对于应收账单类型请求时,屏蔽掉应收账单,只展示invoice扣款单申请数据。 |
425 | if(queryVO.getType()==Constant.THIRTY || queryVO.getType()==4050 || queryVO.getType()==Constant.SIXTY){ | 441 | if(queryVO.getType()==Constant.THIRTY || queryVO.getType()==4050 || queryVO.getType()==Constant.SIXTY){ |
426 | 442 | ||
427 | - }else{ | 443 | + } else { |
428 | /** 这部分代码是之前的,每台看懂,就先不修改了,保留*/ | 444 | /** 这部分代码是之前的,每台看懂,就先不修改了,保留*/ |
429 | //这里是否还u需要添加财务角色权限的逻辑。 | 445 | //这里是否还u需要添加财务角色权限的逻辑。 |
430 | if (StringUtils.isNotBlank(queryVO.getBusinessPerson()) || CollectionUtils.isNotEmpty(queryVO.getCustomerCode()) || CollectionUtils.isNotEmpty(queryVO.getInnerNo()) | 446 | if (StringUtils.isNotBlank(queryVO.getBusinessPerson()) || CollectionUtils.isNotEmpty(queryVO.getCustomerCode()) || CollectionUtils.isNotEmpty(queryVO.getInnerNo()) |
@@ -450,14 +466,14 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -450,14 +466,14 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
450 | .in(CollectionUtils.isNotEmpty(queryVO.getStatusList()), OrderFieldLockApplyDO::getStatus, queryVO.getStatusList()) | 466 | .in(CollectionUtils.isNotEmpty(queryVO.getStatusList()), OrderFieldLockApplyDO::getStatus, queryVO.getStatusList()) |
451 | .in(CollectionUtils.isNotEmpty(orderIds), OrderFieldLockApplyDO::getOrderId, orderIds); | 467 | .in(CollectionUtils.isNotEmpty(orderIds), OrderFieldLockApplyDO::getOrderId, orderIds); |
452 | //这里应该加上应收款待审核,应付款待审核,应付款已审核,应收款已审核已审核的一个条件。 目前只支持单个字符串搜索,不支持多个。 | 468 | //这里应该加上应收款待审核,应付款待审核,应付款已审核,应收款已审核已审核的一个条件。 目前只支持单个字符串搜索,不支持多个。 |
453 | - if(Objects.nonNull(queryVO.getType())){ | 469 | + if (Objects.nonNull(queryVO.getType())) { |
454 | //发票,应付款审核。 | 470 | //发票,应付款审核。 |
455 | - if(Constant.FOUR == String.valueOf(queryVO.getType()).length()){ | 471 | + if (Constant.FOUR == String.valueOf(queryVO.getType()).length()) { |
456 | int firstTwoDigits = queryVO.getType() / 100; | 472 | int firstTwoDigits = queryVO.getType() / 100; |
457 | int lastTwoDigits = queryVO.getType() % 100; | 473 | int lastTwoDigits = queryVO.getType() % 100; |
458 | queryWrapper.in(OrderFieldLockApplyDO::getType,firstTwoDigits,lastTwoDigits,ApplyTypeEnum.CHECK_DEDUCT_URL.getType()); | 474 | queryWrapper.in(OrderFieldLockApplyDO::getType,firstTwoDigits,lastTwoDigits,ApplyTypeEnum.CHECK_DEDUCT_URL.getType()); |
459 | //目前是只能通过内部编号查询出应付款审核,无法查询出发票信息。 | 475 | //目前是只能通过内部编号查询出应付款审核,无法查询出发票信息。 |
460 | - if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | 476 | + if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) { |
461 | String queryInnerNo = queryVO.getInnerNo().get(0).trim(); | 477 | String queryInnerNo = queryVO.getInnerNo().get(0).trim(); |
462 | queryWrapper.apply( | 478 | queryWrapper.apply( |
463 | "(" + | 479 | "(" + |
@@ -472,7 +488,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -472,7 +488,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
472 | //应收款审核。 | 488 | //应收款审核。 |
473 | queryWrapper.in(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType(),ApplyTypeEnum.INVOICE_DEDUCT_URL.getType()); | 489 | queryWrapper.in(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType(),ApplyTypeEnum.INVOICE_DEDUCT_URL.getType()); |
474 | //这个内部编号单独针对于应付款申请设置的。 | 490 | //这个内部编号单独针对于应付款申请设置的。 |
475 | - if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | 491 | + if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) { |
476 | String queryInnerNo = queryVO.getInnerNo().get(0).trim(); | 492 | String queryInnerNo = queryVO.getInnerNo().get(0).trim(); |
477 | queryWrapper.apply( | 493 | queryWrapper.apply( |
478 | "(" + | 494 | "(" + |
@@ -525,15 +541,22 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -525,15 +541,22 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
525 | 541 | ||
526 | }else if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode()) && (queryVO.getType()==Constant.THIRTY || queryVO.getType()==4050 || queryVO.getType() ==Constant.SIXTY)){ | 542 | }else if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode()) && (queryVO.getType()==Constant.THIRTY || queryVO.getType()==4050 || queryVO.getType() ==Constant.SIXTY)){ |
527 | 543 | ||
528 | - }else{ | 544 | + } else { |
529 | if (Objects.isNull(roleSelect)) { | 545 | if (Objects.isNull(roleSelect)) { |
530 | queryWrapper.like(Objects.nonNull(roleEnum), OrderFieldLockApplyDO::getAuditRoleCodes, roleEnum.getCode()); | 546 | queryWrapper.like(Objects.nonNull(roleEnum), OrderFieldLockApplyDO::getAuditRoleCodes, roleEnum.getCode()); |
531 | - }else { | 547 | + } else { |
532 | queryWrapper.eq(Objects.nonNull(roleSelect), OrderFieldLockApplyDO::getAuditRoleCodes, roleSelect.getCode()); | 548 | queryWrapper.eq(Objects.nonNull(roleSelect), OrderFieldLockApplyDO::getAuditRoleCodes, roleSelect.getCode()); |
533 | 549 | ||
534 | } | 550 | } |
535 | } | 551 | } |
536 | - return queryWrapper; | 552 | + return queryWrapper |
553 | + .func(Objects.nonNull(queryVO.getTypeIn()), query -> { | ||
554 | + if (CollUtil.isNotEmpty(queryVO.getTypeIn())) { | ||
555 | + query.in(OrderFieldLockApplyDO::getType, queryVO.getTypeIn()); | ||
556 | + } else { | ||
557 | + query.apply("1!=1"); | ||
558 | + } | ||
559 | + }); | ||
537 | } | 560 | } |
538 | 561 | ||
539 | /** | 562 | /** |
@@ -676,16 +699,16 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -676,16 +699,16 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
676 | throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); | 699 | throw new BusinessException(ServerResultCode.ORDER_BASE_INFO_EMPTY); |
677 | } | 700 | } |
678 | } | 701 | } |
679 | - if(ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(applyDO.getType())){ | ||
680 | - InvoiceBillOrderDO invoiceBillOrderDO= invoiceBillOrderService.getById(applyDO.getOrderId()); | ||
681 | - if(Objects.isNull(invoiceBillOrderDO)){ | ||
682 | - throw new BusinessException(ServerResultCode. APPLY_NOT_EXIST); | 702 | + if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(applyDO.getType())) { |
703 | + InvoiceBillOrderDO invoiceBillOrderDO = invoiceBillOrderService.getById(applyDO.getOrderId()); | ||
704 | + if (Objects.isNull(invoiceBillOrderDO)) { | ||
705 | + throw new BusinessException(ServerResultCode.APPLY_NOT_EXIST); | ||
683 | } | 706 | } |
684 | } | 707 | } |
685 | - if(ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType()) || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ | ||
686 | - ProducePaymentCheckBillOrderDO checkBillOrderDO= checkBillOrderService.getById(applyDO.getOrderId()); | ||
687 | - if(Objects.isNull(checkBillOrderDO)){ | ||
688 | - throw new BusinessException(ServerResultCode. APPLY_NOT_EXIST); | 708 | + if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType()) || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
709 | + ProducePaymentCheckBillOrderDO checkBillOrderDO = checkBillOrderService.getById(applyDO.getOrderId()); | ||
710 | + if (Objects.isNull(checkBillOrderDO)) { | ||
711 | + throw new BusinessException(ServerResultCode.APPLY_NOT_EXIST); | ||
689 | } | 712 | } |
690 | } | 713 | } |
691 | if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) { | 714 | if (ApplyTypeEnum.ORDER_REPORT_APPLY.getType().equals(applyDO.getType())) { |
@@ -696,7 +719,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -696,7 +719,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
696 | orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_REFUSE.getStatus()); | 719 | orderBaseInfoDO.setOrderStatus(OrderStatusEnum.PROFIT_AUDIT_REFUSE.getStatus()); |
697 | orderBaseInfoService.updateById(orderBaseInfoDO); | 720 | orderBaseInfoService.updateById(orderBaseInfoDO); |
698 | } else if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(applyDO.getType())) { | 721 | } else if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(applyDO.getType())) { |
699 | - OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 722 | + OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
700 | InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); | 723 | InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); |
701 | //查询是否存在未审核的扣款单。 | 724 | //查询是否存在未审核的扣款单。 |
702 | List<OrderFieldLockApplyDO> InvoiceDeductUrlList = list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() | 725 | List<OrderFieldLockApplyDO> InvoiceDeductUrlList = list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() |
@@ -708,7 +731,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -708,7 +731,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
708 | throw new BusinessException("该Invoice存在未审批的扣款单,请先审批该对账单的扣款单!"); | 731 | throw new BusinessException("该Invoice存在未审批的扣款单,请先审批该对账单的扣款单!"); |
709 | } | 732 | } |
710 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.listByIds(invoiceBillOrderDO.getInvoiceId()); | 733 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.listByIds(invoiceBillOrderDO.getInvoiceId()); |
711 | - if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ | 734 | + if (CollectionUtils.isNotEmpty(invoiceBillOrderDOList)) { |
712 | List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { | 735 | List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { |
713 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | 736 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); |
714 | return x; | 737 | return x; |
@@ -757,8 +780,8 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -757,8 +780,8 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
757 | throw new BusinessException("该生产科对账单存在未审批的扣款单,请先审批该对账单的扣款单!"); | 780 | throw new BusinessException("该生产科对账单存在未审批的扣款单,请先审批该对账单的扣款单!"); |
758 | } | 781 | } |
759 | List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = checkBillOrderService.listByIds(producePaymentCheckBillId); | 782 | List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = checkBillOrderService.listByIds(producePaymentCheckBillId); |
760 | - if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ | ||
761 | - List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS= producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { | 783 | + if (CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)) { |
784 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { | ||
762 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | 785 | x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); |
763 | return x; | 786 | return x; |
764 | }).collect(Collectors.toList()); | 787 | }).collect(Collectors.toList()); |
@@ -783,7 +806,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -783,7 +806,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
783 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO,false); | 806 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO,false); |
784 | } | 807 | } |
785 | 808 | ||
786 | - } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ | 809 | + } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
787 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 810 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
788 | ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO(); | 811 | ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO(); |
789 | 812 | ||
@@ -791,9 +814,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -791,9 +814,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
791 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); | 814 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); |
792 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); | 815 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); |
793 | //传递给审核一直都是最新的发票。 | 816 | //传递给审核一直都是最新的发票。 |
794 | - if(com.order.erp.common.utils.StringUtils.isNotBlank(invoiceInfoDO.getInvoiceUrl())){ | 817 | + if (com.order.erp.common.utils.StringUtils.isNotBlank(invoiceInfoDO.getInvoiceUrl())) { |
795 | log.info("checkBillOrderDO.getInvoiceUrl() 极有可能为空: {}", checkBillOrderDO.getInvoiceUrl()); | 818 | log.info("checkBillOrderDO.getInvoiceUrl() 极有可能为空: {}", checkBillOrderDO.getInvoiceUrl()); |
796 | - if(Arrays.stream(invoiceInfoDO.getInvoiceUrl().split(",")).anyMatch(item->item.equals(checkBillOrderDO.getInvoiceUrl()))){ | 819 | + if (Arrays.stream(invoiceInfoDO.getInvoiceUrl().split(",")).anyMatch(item -> item.equals(checkBillOrderDO.getInvoiceUrl()))) { |
797 | // 将 invoiceUrls 分割成 List 并删除相同项 | 820 | // 将 invoiceUrls 分割成 List 并删除相同项 |
798 | List<String> urlList = new ArrayList<>(Arrays.asList(invoiceInfoDO.getInvoiceUrl().split(","))); | 821 | List<String> urlList = new ArrayList<>(Arrays.asList(invoiceInfoDO.getInvoiceUrl().split(","))); |
799 | urlList.removeIf(url -> url.equals(checkBillOrderDO.getInvoiceUrl())); | 822 | urlList.removeIf(url -> url.equals(checkBillOrderDO.getInvoiceUrl())); |
@@ -802,7 +825,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -802,7 +825,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
802 | String updatedInvoiceUrls = String.join(",", urlList); | 825 | String updatedInvoiceUrls = String.join(",", urlList); |
803 | invoiceInfoDO.setInvoiceUrl(updatedInvoiceUrls); | 826 | invoiceInfoDO.setInvoiceUrl(updatedInvoiceUrls); |
804 | } | 827 | } |
805 | - }else{ | 828 | + } else { |
806 | invoiceInfoDO.setInvoiceUrl(null); | 829 | invoiceInfoDO.setInvoiceUrl(null); |
807 | } | 830 | } |
808 | checkBillOrderService.updateById(invoiceInfoDO); | 831 | checkBillOrderService.updateById(invoiceInfoDO); |
@@ -992,7 +1015,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -992,7 +1015,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
992 | //后期需要判断是否存在存在未审核的扣款单。 | 1015 | //后期需要判断是否存在存在未审核的扣款单。 |
993 | applyDO.setAuditUserId(auditUserId); | 1016 | applyDO.setAuditUserId(auditUserId); |
994 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | 1017 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
995 | - OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 1018 | + OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
996 | InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); | 1019 | InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); |
997 | List<Long> invoiceId = invoiceBillOrderDO.getInvoiceId(); | 1020 | List<Long> invoiceId = invoiceBillOrderDO.getInvoiceId(); |
998 | //查询是否存在未审核的扣款单。 | 1021 | //查询是否存在未审核的扣款单。 |
@@ -1005,7 +1028,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1005,7 +1028,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1005 | throw new BusinessException("该Invoice存在未审批的扣款单,请先审批该对账单的扣款单!"); | 1028 | throw new BusinessException("该Invoice存在未审批的扣款单,请先审批该对账单的扣款单!"); |
1006 | } | 1029 | } |
1007 | List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderService.listByIds(invoiceId); | 1030 | List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderService.listByIds(invoiceId); |
1008 | - if(CollectionUtils.isNotEmpty(invoiceBillOrderDOS)){ | 1031 | + if (CollectionUtils.isNotEmpty(invoiceBillOrderDOS)) { |
1009 | List<InvoiceBillOrderDO> invoiceeBillOrderDOs = invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { | 1032 | List<InvoiceBillOrderDO> invoiceeBillOrderDOs = invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { |
1010 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | 1033 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); |
1011 | return x; | 1034 | return x; |
@@ -1054,7 +1077,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1054,7 +1077,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1054 | throw new BusinessException("该生产科对账单存在未审批的扣款单,请先审批该对账单的扣款单!"); | 1077 | throw new BusinessException("该生产科对账单存在未审批的扣款单,请先审批该对账单的扣款单!"); |
1055 | } | 1078 | } |
1056 | List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = checkBillOrderService.listByIds(producePaymentCheckBillId); | 1079 | List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = checkBillOrderService.listByIds(producePaymentCheckBillId); |
1057 | - if(CollectionUtils.isNotEmpty(checkBillOrderDOS)){ | 1080 | + if (CollectionUtils.isNotEmpty(checkBillOrderDOS)) { |
1058 | List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = checkBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { | 1081 | List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = checkBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { |
1059 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | 1082 | x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); |
1060 | return x; | 1083 | return x; |
@@ -1068,7 +1091,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1068,7 +1091,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1068 | x.setCheckStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | 1091 | x.setCheckStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); |
1069 | return x; | 1092 | return x; |
1070 | }).collect(Collectors.toList()); | 1093 | }).collect(Collectors.toList()); |
1071 | - transactionHelper.run(() ->{ | 1094 | + transactionHelper.run(() -> { |
1072 | orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | 1095 | orderBaseInfoService.updateBatchById(orderBaseInfoDOS); |
1073 | checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | 1096 | checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); |
1074 | }); | 1097 | }); |
@@ -1079,7 +1102,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1079,7 +1102,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1079 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); | 1102 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); |
1080 | 1103 | ||
1081 | } | 1104 | } |
1082 | - } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { | 1105 | + } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
1083 | applyDO.setAuditUserId(auditUserId); | 1106 | applyDO.setAuditUserId(auditUserId); |
1084 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | 1107 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
1085 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 1108 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
@@ -1088,18 +1111,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1088,18 +1111,18 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1088 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); | 1111 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); |
1089 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | 1112 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
1090 | //传递给审核一直都是最新的发票。 | 1113 | //传递给审核一直都是最新的发票。 |
1091 | - if(com.order.erp.common.utils.StringUtils.isNotBlank(invoiceInfoDO.getInvoiceUrl())){ | ||
1092 | - if(com.order.erp.common.utils.StringUtils.isNotBlank(checkBillOrderDO.getInvoiceUrl())){ | 1114 | + if (com.order.erp.common.utils.StringUtils.isNotBlank(invoiceInfoDO.getInvoiceUrl())) { |
1115 | + if (com.order.erp.common.utils.StringUtils.isNotBlank(checkBillOrderDO.getInvoiceUrl())) { | ||
1093 | Set<String> deductUrlSet = new HashSet<>(Arrays.asList( | 1116 | Set<String> deductUrlSet = new HashSet<>(Arrays.asList( |
1094 | org.apache.commons.lang3.StringUtils.defaultString(invoiceInfoDO.getInvoiceUrl()).split(","))); | 1117 | org.apache.commons.lang3.StringUtils.defaultString(invoiceInfoDO.getInvoiceUrl()).split(","))); |
1095 | - if(!deductUrlSet.contains(checkBillOrderDO.getInvoiceUrl())){ | 1118 | + if (!deductUrlSet.contains(checkBillOrderDO.getInvoiceUrl())) { |
1096 | deductUrlSet.add(checkBillOrderDO.getInvoiceUrl()); | 1119 | deductUrlSet.add(checkBillOrderDO.getInvoiceUrl()); |
1097 | - String updateDeductUrl=String.join(",",deductUrlSet); | 1120 | + String updateDeductUrl = String.join(",", deductUrlSet); |
1098 | invoiceInfoDO.setInvoiceUrl(updateDeductUrl); | 1121 | invoiceInfoDO.setInvoiceUrl(updateDeductUrl); |
1099 | } | 1122 | } |
1100 | } | 1123 | } |
1101 | - }else{ | ||
1102 | - if(com.order.erp.common.utils.StringUtils.isNotBlank(checkBillOrderDO.getInvoiceUrl())){ | 1124 | + } else { |
1125 | + if (com.order.erp.common.utils.StringUtils.isNotBlank(checkBillOrderDO.getInvoiceUrl())) { | ||
1103 | invoiceInfoDO.setInvoiceUrl(checkBillOrderDO.getInvoiceUrl()); | 1126 | invoiceInfoDO.setInvoiceUrl(checkBillOrderDO.getInvoiceUrl()); |
1104 | } | 1127 | } |
1105 | } | 1128 | } |
@@ -1166,6 +1189,39 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -1166,6 +1189,39 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
1166 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 1189 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
1167 | invoiceAndCheckBillSendEmailVO.setDeductionUrlFieldVO(deductionUrlFieldVO); | 1190 | invoiceAndCheckBillSendEmailVO.setDeductionUrlFieldVO(deductionUrlFieldVO); |
1168 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_DEDUCTURL_PASS,invoiceAndCheckBillSendEmailVO,true); | 1191 | emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_DEDUCTURL_PASS,invoiceAndCheckBillSendEmailVO,true); |
1192 | + //todo | ||
1193 | + } else if (Stream.of(OrderCostApplyTpeEnum.ORDER_PACKET_COST_FIELD_EDIT_APPLY, | ||
1194 | + OrderCostApplyTpeEnum.ORDER_PRODUCTION_COST_FIELD_EDIT_APPLY) | ||
1195 | + .map(OrderCostApplyTpeEnum::getType) | ||
1196 | + .anyMatch(x -> x.equals(applyDO.getType()))) { | ||
1197 | + applyDO.setAuditUserId(auditUserId); | ||
1198 | + applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | ||
1199 | + | ||
1200 | + OrderCostFieldLockRecord recordDO = orderCostFieldLockRecordService.getOne(new LambdaQueryWrapper<OrderCostFieldLockRecord>() | ||
1201 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
1202 | + .eq(OrderCostFieldLockRecord::getOrderId, applyDO.getOrderId()) | ||
1203 | + .eq(OrderCostFieldLockRecord::getUserId, applyDO.getApplyUserId()) | ||
1204 | + .orderByDesc(OrderCostFieldLockRecord::getId) | ||
1205 | + .last("limit 1")); | ||
1206 | + if (Objects.isNull(recordDO)) { | ||
1207 | + recordDO = OrderCostFieldLockRecord.builder() | ||
1208 | + .orderId(applyDO.getOrderId()) | ||
1209 | + .userId(applyDO.getApplyUserId()) | ||
1210 | + .fields(applyDO.getFields()) | ||
1211 | + .build(); | ||
1212 | + } else { | ||
1213 | + String originFields = recordDO.getFields(); | ||
1214 | + OrderCostInfolockFieldVO originOrderCostInfolockFieldVO = JSONObject.parseObject(originFields, OrderCostInfolockFieldVO.class); | ||
1215 | + String fields = applyDO.getFields(); | ||
1216 | + OrderCostInfolockFieldVO orderCostInfolockFieldVO = JSONObject.parseObject(fields, OrderCostInfolockFieldVO.class); | ||
1217 | + BeanUtil.copyProperties(orderCostInfolockFieldVO, originOrderCostInfolockFieldVO, CopyOptions.create().ignoreNullValue()); | ||
1218 | + recordDO.setFields(JSONObject.toJSONString(originOrderCostInfolockFieldVO)); | ||
1219 | + } | ||
1220 | + if (Objects.isNull(recordDO.getId())) { | ||
1221 | + orderCostFieldLockRecordService.save(recordDO); | ||
1222 | + } else { | ||
1223 | + orderCostFieldLockRecordService.updateById(recordDO); | ||
1224 | + } | ||
1169 | } | 1225 | } |
1170 | 1226 | ||
1171 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); | 1227 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); |
src/main/java/com/order/erp/service/order/impl/OrderProfitAnalysisServiceImpl.java
@@ -3,30 +3,55 @@ package com.order.erp.service.order.impl; | @@ -3,30 +3,55 @@ package com.order.erp.service.order.impl; | ||
3 | import cn.hutool.core.bean.BeanUtil; | 3 | import cn.hutool.core.bean.BeanUtil; |
4 | import cn.hutool.core.collection.CollUtil; | 4 | import cn.hutool.core.collection.CollUtil; |
5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
6 | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | ||
6 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 7 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
7 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | 8 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
9 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 10 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
11 | +import com.fasterxml.jackson.core.JsonProcessingException; | ||
12 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
9 | import com.order.erp.common.constant.Constant; | 13 | import com.order.erp.common.constant.Constant; |
10 | import com.order.erp.common.constant.ServerResult; | 14 | import com.order.erp.common.constant.ServerResult; |
11 | import com.order.erp.common.exception.BusinessException; | 15 | import com.order.erp.common.exception.BusinessException; |
12 | import com.order.erp.common.utils.ProfitUtils; | 16 | import com.order.erp.common.utils.ProfitUtils; |
13 | import com.order.erp.common.utils.StringUtils; | 17 | import com.order.erp.common.utils.StringUtils; |
14 | import com.order.erp.domain.dto.BaseDO; | 18 | import com.order.erp.domain.dto.BaseDO; |
19 | +import com.order.erp.domain.dto.SystemSettingDO; | ||
15 | import com.order.erp.domain.dto.order.OrderBaseInfoDO; | 20 | import com.order.erp.domain.dto.order.OrderBaseInfoDO; |
16 | import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; | 21 | import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; |
22 | +import com.order.erp.domain.dto.order.ProjectBaseInfoDO; | ||
23 | +import com.order.erp.domain.model.OrderCostFieldLockRecord; | ||
24 | +import com.order.erp.domain.model.ProjectFieldLockRecord; | ||
17 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; | 25 | import com.order.erp.domain.vo.OrderProfitAnalysisVo; |
18 | -import com.order.erp.domain.vo.order.OrderProfitAnalysisQueryVO; | ||
19 | -import com.order.erp.domain.vo.order.OrderProfitAnalysisVO; | ||
20 | -import com.order.erp.domain.vo.order.ProfitCalculateVO; | 26 | +import com.order.erp.domain.vo.order.*; |
21 | import com.order.erp.mapper.order.OrderProfitAnalysisMapper; | 27 | import com.order.erp.mapper.order.OrderProfitAnalysisMapper; |
28 | +import com.order.erp.service.IProjectFieldLockRecordService; | ||
29 | +import com.order.erp.service.SystemSettingService; | ||
30 | +import com.order.erp.service.impl.OrderCostFieldLockRecordServiceImpl; | ||
31 | +import com.order.erp.service.order.IProjectBaseInfoService; | ||
22 | import com.order.erp.service.order.OrderBaseInfoService; | 32 | import com.order.erp.service.order.OrderBaseInfoService; |
33 | +import com.order.erp.service.order.OrderFieldLockRecordService; | ||
23 | import com.order.erp.service.order.OrderProfitAnalysisService; | 34 | import com.order.erp.service.order.OrderProfitAnalysisService; |
24 | import lombok.extern.slf4j.Slf4j; | 35 | import lombok.extern.slf4j.Slf4j; |
36 | +import org.apache.poi.ss.usermodel.*; | ||
37 | +import org.apache.poi.ss.util.CellRangeAddress; | ||
38 | +import org.apache.poi.xssf.usermodel.XSSFFont; | ||
39 | +import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||
25 | import org.springframework.beans.BeanUtils; | 40 | import org.springframework.beans.BeanUtils; |
41 | +import org.springframework.beans.factory.annotation.Autowired; | ||
26 | import org.springframework.stereotype.Service; | 42 | import org.springframework.stereotype.Service; |
27 | 43 | ||
28 | import javax.annotation.Resource; | 44 | import javax.annotation.Resource; |
45 | +import javax.servlet.http.HttpServletResponse; | ||
46 | +import java.io.OutputStream; | ||
29 | import java.math.BigDecimal; | 47 | import java.math.BigDecimal; |
48 | +import java.math.RoundingMode; | ||
49 | +import java.time.Duration; | ||
50 | +import java.time.LocalDateTime; | ||
51 | +import java.time.format.DateTimeFormatter; | ||
52 | +import java.time.temporal.ChronoUnit; | ||
53 | +import java.util.*; | ||
54 | +import java.util.function.Function; | ||
30 | import java.time.LocalDate; | 55 | import java.time.LocalDate; |
31 | import java.util.HashSet; | 56 | import java.util.HashSet; |
32 | import java.util.List; | 57 | import java.util.List; |
@@ -46,6 +71,16 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnaly | @@ -46,6 +71,16 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnaly | ||
46 | 71 | ||
47 | @Resource | 72 | @Resource |
48 | private OrderBaseInfoService orderBaseInfoService; | 73 | private OrderBaseInfoService orderBaseInfoService; |
74 | + @Autowired | ||
75 | + private SystemSettingService systemSettingService; | ||
76 | + @Autowired | ||
77 | + private IProjectBaseInfoService projectProfitAnalysisService; | ||
78 | + @Autowired | ||
79 | + private IProjectFieldLockRecordService projectionFieldLockRecordService; | ||
80 | + @Resource | ||
81 | + private OrderFieldLockRecordService orderFieldLockRecordService; | ||
82 | + @Autowired | ||
83 | + OrderCostFieldLockRecordServiceImpl orderCostFieldLockRecordService; | ||
49 | 84 | ||
50 | /** | 85 | /** |
51 | * 通过ID查询单条数据 | 86 | * 通过ID查询单条数据 |
@@ -109,6 +144,7 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnaly | @@ -109,6 +144,7 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnaly | ||
109 | if (Objects.isNull(orderProfitAnalysisVO.getId())) { | 144 | if (Objects.isNull(orderProfitAnalysisVO.getId())) { |
110 | return ServerResult.fail("id 不能为空"); | 145 | return ServerResult.fail("id 不能为空"); |
111 | } | 146 | } |
147 | + orderProfitAnalysisVO.getId(); | ||
112 | OrderProfitAnalysisDO orderProfitAnalysisDo = BeanUtil.copyProperties(orderProfitAnalysisVO, OrderProfitAnalysisDO.class); | 148 | OrderProfitAnalysisDO orderProfitAnalysisDo = BeanUtil.copyProperties(orderProfitAnalysisVO, OrderProfitAnalysisDO.class); |
113 | 149 | ||
114 | updateById(orderProfitAnalysisDo); | 150 | updateById(orderProfitAnalysisDo); |
src/main/java/com/order/erp/service/order/impl/ProjectBaseAfterReviewSettingServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
4 | +import com.order.erp.domain.dto.order.ProjectBaseAfterReviewSettingDO; | ||
5 | +import com.order.erp.mapper.order.ProjectBaseAfterReviewSettingMapper; | ||
6 | +import com.order.erp.service.order.ProjectBaseAfterReviewSettingService; | ||
7 | +import lombok.extern.slf4j.Slf4j; | ||
8 | +import org.springframework.stereotype.Service; | ||
9 | + | ||
10 | +@Slf4j | ||
11 | +@Service | ||
12 | +public class ProjectBaseAfterReviewSettingServiceImpl extends ServiceImpl<ProjectBaseAfterReviewSettingMapper, ProjectBaseAfterReviewSettingDO> implements ProjectBaseAfterReviewSettingService { | ||
13 | +} |
src/main/java/com/order/erp/service/order/impl/ProjectBaseDevelopOptLogServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | ||
2 | + | ||
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | ||
5 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | ||
6 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||
7 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||
8 | +import com.order.erp.common.constant.Constant; | ||
9 | +import com.order.erp.common.constant.ServerResult; | ||
10 | +import com.order.erp.domain.dto.BaseDO; | ||
11 | +import com.order.erp.domain.dto.admin.AdminUserDO; | ||
12 | +import com.order.erp.domain.dto.order.ProjectBaseDevelopOptLogDO; | ||
13 | +import com.order.erp.domain.vo.order.ProjectOptLogQueryVO; | ||
14 | +import com.order.erp.domain.vo.order.ProjectOptLogResultVO; | ||
15 | +import com.order.erp.mapper.order.ProjectBaseDevelopOptLogMapper; | ||
16 | +import com.order.erp.service.admin.AdminUserService; | ||
17 | + | ||
18 | +import com.order.erp.service.order.ProjectBaseDevelopOptLogService; | ||
19 | +import org.springframework.beans.BeanUtils; | ||
20 | +import org.springframework.stereotype.Service; | ||
21 | + | ||
22 | +import javax.annotation.Resource; | ||
23 | +import java.util.*; | ||
24 | +import java.util.function.Function; | ||
25 | +import java.util.stream.Collectors; | ||
26 | + | ||
27 | +@Service | ||
28 | +public class ProjectBaseDevelopOptLogServiceImpl extends ServiceImpl<ProjectBaseDevelopOptLogMapper, ProjectBaseDevelopOptLogDO> implements ProjectBaseDevelopOptLogService { | ||
29 | + @Resource | ||
30 | + private AdminUserService userService; | ||
31 | + | ||
32 | + @Override | ||
33 | + public ServerResult listByPage(ProjectOptLogQueryVO queryVO) { | ||
34 | + LambdaQueryWrapper<ProjectBaseDevelopOptLogDO> queryWrapper = buildQueryByParam(queryVO); | ||
35 | + Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); | ||
36 | + IPage<ProjectBaseDevelopOptLogDO> iPage = page(page, queryWrapper); | ||
37 | + | ||
38 | + Page<ProjectOptLogResultVO> webVOPage = new Page<>(); | ||
39 | + List<ProjectBaseDevelopOptLogDO> ProjectDevelopOptLogDOS = iPage.getRecords(); | ||
40 | + if (CollectionUtils.isNotEmpty(ProjectDevelopOptLogDOS)) { | ||
41 | + Set<Long> userIds = ProjectDevelopOptLogDOS.stream().map(ProjectBaseDevelopOptLogDO::getUserId).collect(Collectors.toSet()); | ||
42 | + Map<Long, AdminUserDO> userDOMap = new HashMap<>(); | ||
43 | + if (CollectionUtils.isNotEmpty(userIds)) { | ||
44 | + List<AdminUserDO> userDOS = userService.listByIds(userIds); | ||
45 | + if (CollectionUtils.isNotEmpty(userDOS)) { | ||
46 | + userDOMap = userDOS.stream().collect(Collectors.toMap(AdminUserDO::getId, Function.identity())); | ||
47 | + } | ||
48 | + } | ||
49 | + Map<Long, AdminUserDO> finalUserDOMap = userDOMap; | ||
50 | + List<ProjectOptLogResultVO> resultVOList = ProjectDevelopOptLogDOS.stream().map(x -> { | ||
51 | + ProjectOptLogResultVO resultVO = new ProjectOptLogResultVO(); | ||
52 | + BeanUtils.copyProperties(x, resultVO); | ||
53 | + if (finalUserDOMap.containsKey(x.getUserId())) { | ||
54 | + resultVO.setUserName(finalUserDOMap.get(x.getUserId()).getUserName()); | ||
55 | + } | ||
56 | + return resultVO; | ||
57 | + }).collect(Collectors.toList()); | ||
58 | + | ||
59 | + webVOPage.setRecords(resultVOList); | ||
60 | + } | ||
61 | + BeanUtils.copyProperties(page, webVOPage, "records"); | ||
62 | + return ServerResult.success(webVOPage); | ||
63 | + } | ||
64 | + | ||
65 | + private LambdaQueryWrapper<ProjectBaseDevelopOptLogDO> buildQueryByParam(ProjectOptLogQueryVO queryVO) { | ||
66 | + return new LambdaQueryWrapper<ProjectBaseDevelopOptLogDO>() | ||
67 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | ||
68 | + .eq(Objects.nonNull(queryVO.getProjectNoPrefix()), ProjectBaseDevelopOptLogDO::getProjectNoPrefix, queryVO.getProjectNoPrefix()) | ||
69 | + .eq(Objects.nonNull(queryVO.getType()), ProjectBaseDevelopOptLogDO::getType, queryVO.getType()) | ||
70 | + .orderByDesc(ProjectBaseDevelopOptLogDO::getId); | ||
71 | + } | ||
72 | +} | ||
0 | \ No newline at end of file | 73 | \ No newline at end of file |