Commit a3b7a347ff264236a5e48919c2f5ba5d5e148dda
1 parent
25b987be
添加财务模块,main分支为完整的未添加财务模块之前的线上正常代码
Showing
74 changed files
with
4461 additions
and
11 deletions
Too many changes to show.
To preserve performance only 74 of 82 files are displayed.
src/main/java/com/order/erp/common/constant/Constant.java
... | ... | @@ -185,6 +185,8 @@ public class Constant { |
185 | 185 | |
186 | 186 | public static final String DELETE_SUCCESS_RESULT_CHARACTER = "删除成功"; |
187 | 187 | |
188 | + public static final String REDISKEY = "REDISKEY"; | |
189 | + | |
188 | 190 | |
189 | 191 | /** |
190 | 192 | * token rediskey |
... | ... | @@ -335,4 +337,6 @@ public class Constant { |
335 | 337 | */ |
336 | 338 | public static final long REDIS_EMAIL_TIME = 90; |
337 | 339 | |
340 | + public static final String FINANCE_EVENT_TIME = "请自行去系统中查询!"; | |
341 | + | |
338 | 342 | } | ... | ... |
src/main/java/com/order/erp/common/utils/EasyPdfUtils.java
... | ... | @@ -63,7 +63,8 @@ public class EasyPdfUtils { |
63 | 63 | public List<OrderProducePdfVO> build(List<Long> ids) { |
64 | 64 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(new LambdaQueryWrapper<OrderBaseInfoDO>() |
65 | 65 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
66 | - .in(OrderBaseInfoDO::getId, ids)); | |
66 | + .in(OrderBaseInfoDO::getId, ids) | |
67 | + .orderByAsc(OrderBaseInfoDO::getInnerNo)); | |
67 | 68 | Set<String> productionDepartments = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getProductionDepartment).filter(Objects::nonNull) |
68 | 69 | .filter(department -> !department.trim().isEmpty()).collect(Collectors.toSet()); |
69 | 70 | if (productionDepartments.size() > 1) { |
... | ... | @@ -79,7 +80,7 @@ public class EasyPdfUtils { |
79 | 80 | List<String> personList= new ArrayList<>(setPerson); |
80 | 81 | Set<Long> orderIds = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet()); |
81 | 82 | List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>().in(OrderProfitAnalysisDO::getOrderId, orderIds)); |
82 | - Map<Long, OrderProfitAnalysisDO> profitAnalysisDOMap = profitAnalysisDOS.stream().collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity())); | |
83 | + Map<Long, OrderProfitAnalysisDO> profitAnalysisDOMap = profitAnalysisDOS.stream().collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(),(x,y)->x)); | |
83 | 84 | return orderBaseInfoDOList.stream().map(x -> { |
84 | 85 | OrderProducePdfVO producePdfVO = new OrderProducePdfVO(); |
85 | 86 | BeanUtils.copyProperties(x, producePdfVO); | ... | ... |
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
1 | 1 | package com.order.erp.common.utils; |
2 | 2 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
3 | 3 | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
4 | +import com.order.erp.common.constant.Constant; | |
4 | 5 | import com.order.erp.common.constant.ServerResultCode; |
5 | 6 | import com.order.erp.common.exception.BusinessException; |
6 | 7 | import com.order.erp.domain.EmailTemplateEnum; |
8 | +import com.order.erp.domain.FinanceOverEnum; | |
9 | +import com.order.erp.domain.vo.order.FinanceEventJobVO; | |
7 | 10 | import com.order.erp.domain.vo.order.OrderEventJobVO; |
8 | 11 | import freemarker.template.Template; |
9 | 12 | import freemarker.template.TemplateException; |
... | ... | @@ -107,4 +110,41 @@ public class EmailSendUtils { |
107 | 110 | } |
108 | 111 | javaMailSender.send(mimeMessage); |
109 | 112 | } |
113 | + | |
114 | + | |
115 | + /** | |
116 | + * @Description: 发送财务应收款,应付款过期时间的单据 | |
117 | + * @param emailTemplateEnum 应收款,应付款邮件事件类型 | |
118 | + * @param receiveemailList 收件人邮箱 | |
119 | + * @param orderEventJobVO 应收款,应付款订单。 | |
120 | + * @throws IOException | |
121 | + */ | |
122 | + | |
123 | + public void sendEmail(FinanceOverEnum emailTemplateEnum, List<String> receiveemailList, FinanceEventJobVO orderEventJobVO) { | |
124 | + if(CollectionUtils.isEmpty(receiveemailList) && emailTemplateEnum ==null && ObjectUtils.isNull(orderEventJobVO)){ | |
125 | + throw new BusinessException(ServerResultCode.PARAM_ERROR); | |
126 | + } | |
127 | + MimeMessage mimeMessage = javaMailSender.createMimeMessage(); | |
128 | + MimeMessageHelper helper= null; | |
129 | + //设置收件人 | |
130 | + String[] receiveemailListArray = receiveemailList.toArray(new String[receiveemailList.size()]); | |
131 | + try { | |
132 | + helper = new MimeMessageHelper(mimeMessage); | |
133 | + //设置邮件的主题 | |
134 | + helper.setSubject(emailTemplateEnum.getTitle()); | |
135 | + //设置发件人 | |
136 | + helper.setFrom(sendEmail); | |
137 | + helper.setTo(receiveemailListArray); | |
138 | + helper.setSentDate(new Date()); | |
139 | + if(FinanceOverEnum.INVOICE_OVERTIME==emailTemplateEnum){ | |
140 | + helper.setText(emailTemplateEnum.getDesc()+orderEventJobVO.getInvoiceBillOrderDO().getInvoiceNo()+" "+ Constant.FINANCE_EVENT_TIME); | |
141 | + }else if(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME==emailTemplateEnum){ | |
142 | + helper.setText(emailTemplateEnum.getDesc()+orderEventJobVO.getProducePaymentCheckBillOrderDO().getCheckNo()+" "+Constant.FINANCE_EVENT_TIME); | |
143 | + } | |
144 | + } catch ( MessagingException e) { | |
145 | + throw new RuntimeException("邮件发送失败!", e); | |
146 | + } | |
147 | + javaMailSender.send(mimeMessage); | |
148 | + } | |
149 | + | |
110 | 150 | } |
111 | 151 | \ No newline at end of file | ... | ... |
src/main/java/com/order/erp/common/utils/OrderFieldUtils.java
... | ... | @@ -38,9 +38,9 @@ public class OrderFieldUtils { |
38 | 38 | * @param orderId |
39 | 39 | * @return |
40 | 40 | */ |
41 | - public static OrderFieldLockApplyDO generatorBaseInfoFieldLockApplyDO(OrderBaseFieldVO baseFields, Long userId, Long orderId) { | |
41 | + public static OrderFieldLockApplyDO generatorBaseInfoFieldLockApplyDO(OrderUnlockFieldApplyVO fieldVO, Long userId, Long orderId) { | |
42 | 42 | OrderLockFieldVO lockFieldVO = new OrderLockFieldVO(); |
43 | - lockFieldVO.setBaseFields(baseFields); | |
43 | + lockFieldVO.setBaseFields(fieldVO.getBaseFields()); | |
44 | 44 | OrderFieldLockApplyDO applyDO = OrderFieldLockApplyDO.builder() |
45 | 45 | .applyUserId(userId) |
46 | 46 | .auditUserId(null) |
... | ... | @@ -49,12 +49,14 @@ public class OrderFieldUtils { |
49 | 49 | .remark(ApplyTypeEnum.FIELD_EDIT_APPLY.getDesc()) |
50 | 50 | .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) |
51 | 51 | .build(); |
52 | - if (Objects.nonNull(baseFields) && checkOrderBaseField4apply(baseFields)) { | |
52 | + if (Objects.nonNull(fieldVO.getBaseFields()) && checkOrderBaseField4apply(fieldVO.getBaseFields())) { | |
53 | 53 | lockFieldVO.setInspectionStageFields(initInspectionStageField(OrderLockFieldEnum.LOCKED)); |
54 | 54 | lockFieldVO.setProfitAnalysisFields(initProfitAnalysisField(OrderLockFieldEnum.LOCKED)); |
55 | 55 | lockFieldVO.setReportFields(initReportField(OrderLockFieldEnum.LOCKED)); |
56 | 56 | lockFieldVO.setTrackStageFields(initTrackStageField(OrderLockFieldEnum.LOCKED)); |
57 | 57 | applyDO.setFields(JSONObject.toJSONString(lockFieldVO)); |
58 | + //在这里增加字段的描述。 applyDO.setXxxx("xxxx原因。"); | |
59 | + applyDO.setApplyRemark(fieldVO.getApplyRemark()); | |
58 | 60 | applyDO.setAuditRoleCodes(RoleEnum.BUSINESS_USER.getCode() + Constant.COMMA_CHARACTER + RoleEnum.ADMIN.getCode()); |
59 | 61 | return applyDO; |
60 | 62 | } else { |
... | ... | @@ -97,7 +99,7 @@ public class OrderFieldUtils { |
97 | 99 | */ |
98 | 100 | public static List<OrderFieldLockApplyDO> initOrderFieldLockApplyDOS(OrderUnlockFieldApplyVO fieldVO, Long userId) { |
99 | 101 | List<OrderFieldLockApplyDO> resultList = new ArrayList<>(); |
100 | - OrderFieldLockApplyDO baseLockApply = generatorBaseInfoFieldLockApplyDO(fieldVO.getBaseFields(), userId, fieldVO.getOrderId()); | |
102 | + OrderFieldLockApplyDO baseLockApply = generatorBaseInfoFieldLockApplyDO(fieldVO, userId, fieldVO.getOrderId()); | |
101 | 103 | if (Objects.nonNull(baseLockApply)) { |
102 | 104 | resultList.add(baseLockApply); |
103 | 105 | } | ... | ... |
src/main/java/com/order/erp/common/utils/RedisUtils.java
... | ... | @@ -167,11 +167,17 @@ public class RedisUtils { |
167 | 167 | * @param keys |
168 | 168 | * @return |
169 | 169 | */ |
170 | - public List<Object> multiGet(List<String> keys) { | |
171 | - Object obj = redisTemplate.opsForValue().multiGet(Collections.singleton(keys)); | |
172 | - return null; | |
170 | + public List<Object> multiGet(List<Object> keys) { | |
171 | + try { | |
172 | + List<Object> values = redisTemplate.opsForValue().multiGet(keys); | |
173 | + return values != null ? values : Collections.emptyList(); | |
174 | + } catch (Exception e) { | |
175 | + e.printStackTrace(); | |
176 | + return Collections.emptyList(); | |
177 | + } | |
173 | 178 | } |
174 | 179 | |
180 | + | |
175 | 181 | /** |
176 | 182 | * 普通缓存放入 |
177 | 183 | * |
... | ... | @@ -643,4 +649,41 @@ public class RedisUtils { |
643 | 649 | return 0; |
644 | 650 | } |
645 | 651 | } |
652 | + /** | |
653 | + * set方式设置值 | |
654 | + * | |
655 | + * @param key 键 | |
656 | + * @param count 移除多少个 | |
657 | + * @param value 值 | |
658 | + * @return 移除的个数 | |
659 | + */ | |
660 | + public boolean saddWithExpiry(String key, Object value, long time, TimeUnit timeUnit) { | |
661 | + try { | |
662 | + redisTemplate.opsForSet().add(key, value); | |
663 | + if (time > 0) { | |
664 | + redisTemplate.expire(key, time, timeUnit); | |
665 | + } | |
666 | + return true; | |
667 | + } catch (Exception e) { | |
668 | + e.printStackTrace(); | |
669 | + return false; | |
670 | + } | |
671 | + } | |
672 | + /** | |
673 | + * set方式获取多个值 | |
674 | + * | |
675 | + * @param key 键 | |
676 | + * @param count 移除多少个 | |
677 | + * @param value 值 | |
678 | + * @return 移除的个数 | |
679 | + */ | |
680 | + public Set<Object> getSetValues(String key) { | |
681 | + try { | |
682 | + return redisTemplate.opsForSet().members(key); | |
683 | + } catch (Exception e) { | |
684 | + e.printStackTrace(); | |
685 | + return null; | |
686 | + } | |
687 | + } | |
688 | + | |
646 | 689 | } | ... | ... |
src/main/java/com/order/erp/controller/CalculateProfitController.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.BusinessProfitRatioQueryVO; | |
5 | +import com.order.erp.domain.vo.order.InnerProfitRatioQueryVO; | |
6 | +import com.order.erp.service.order.impl.CalculateProfitServiceImpl; | |
7 | +import org.springframework.validation.annotation.Validated; | |
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 | +import javax.annotation.Resource; | |
14 | +import javax.servlet.http.HttpServletResponse; | |
15 | +import java.io.IOException; | |
16 | + | |
17 | +/** | |
18 | + * 应收款账单表(InvoiceBillOrder)表控制层 | |
19 | + * | |
20 | + * @author makejava | |
21 | + * @since 2024-08-05 16:26:34 | |
22 | + */ | |
23 | +@RestController | |
24 | +@RequestMapping("/order/erp/calculate_profit") | |
25 | +public class CalculateProfitController { | |
26 | + /** | |
27 | + * 服务对象 | |
28 | + */ | |
29 | + @Resource | |
30 | + private CalculateProfitServiceImpl calculateProfitService; | |
31 | + | |
32 | + /** | |
33 | + * 业务/研发净利润分析 | |
34 | + * | |
35 | + * @param queryVO 查询条件 | |
36 | + * @return 查询结果 | |
37 | + */ | |
38 | + @PostMapping("/business_profit_ratio") | |
39 | + public ServerResult businessProfitRatio(@RequestBody @Validated BusinessProfitRatioQueryVO queryVO) { | |
40 | + return calculateProfitService.businessProfitRatio(queryVO); | |
41 | + } | |
42 | + | |
43 | + /** | |
44 | + * 业务/研发净利润分析-导出 | |
45 | + * | |
46 | + * @param queryVO 查询条件 | |
47 | + * @return 查询结果 | |
48 | + */ | |
49 | + @PostMapping("/business_profit_ratio_export") | |
50 | + public void businessProfitRatioExport(HttpServletResponse response, @RequestBody @Validated BusinessProfitRatioQueryVO queryVO) throws IOException { | |
51 | + calculateProfitService.businessProfitRatioExport(response, queryVO); | |
52 | + } | |
53 | + | |
54 | + /** | |
55 | + * 内部生产净利润分析表 | |
56 | + * | |
57 | + * @param queryVO 查询条件 | |
58 | + * @return 查询结果 | |
59 | + */ | |
60 | + @PostMapping("/inner_profit_ratio") | |
61 | + public ServerResult innerProfitRatio(@RequestBody @Validated InnerProfitRatioQueryVO queryVO) { | |
62 | + return calculateProfitService.innerProfitRatio(queryVO); | |
63 | + } | |
64 | + | |
65 | + /** | |
66 | + * 内部生产净利润分析表-导出 | |
67 | + * | |
68 | + * @param queryVO 查询条件 | |
69 | + * @return 查询结果 | |
70 | + */ | |
71 | + @PostMapping("/inner_profit_ratio_export") | |
72 | + public void innerProfitRatioExport(HttpServletResponse response,@RequestBody @Validated InnerProfitRatioQueryVO queryVO) throws IOException { | |
73 | + calculateProfitService.innerProfitRatioExport(response,queryVO); | |
74 | + } | |
75 | +} | |
76 | + | ... | ... |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
0 → 100644
1 | +package com.order.erp.controller; | |
2 | + | |
3 | +import com.order.erp.common.annotation.AnonymousAccess; | |
4 | +import com.order.erp.common.constant.ServerResult; | |
5 | +import com.order.erp.common.excel4j.exceptions.Excel4JException; | |
6 | +import com.order.erp.common.jsr303.OperateGroup; | |
7 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
8 | +import com.order.erp.domain.vo.order.*; | |
9 | +import com.order.erp.service.order.InvoiceBillOrderService; | |
10 | +import io.swagger.annotations.ApiOperation; | |
11 | +import org.springframework.validation.annotation.Validated; | |
12 | +import org.springframework.web.bind.annotation.PostMapping; | |
13 | +import org.springframework.web.bind.annotation.RequestBody; | |
14 | +import org.springframework.web.bind.annotation.RequestMapping; | |
15 | +import org.springframework.web.bind.annotation.RestController; | |
16 | + | |
17 | +import javax.annotation.Resource; | |
18 | +import javax.servlet.http.HttpServletResponse; | |
19 | +import java.io.IOException; | |
20 | + | |
21 | +/** | |
22 | + * 应收款账单表(InvoiceBillOrder)表控制层 | |
23 | + * | |
24 | + * @author makejava | |
25 | + * @since 2024-08-05 16:26:34 | |
26 | + */ | |
27 | +@RestController | |
28 | +@RequestMapping("/order/erp/invoice_bill") | |
29 | +public class InvoiceBillOrderController { | |
30 | + /** | |
31 | + * 服务对象 | |
32 | + */ | |
33 | + @Resource | |
34 | + private InvoiceBillOrderService invoiceBillOrderService; | |
35 | + | |
36 | + /** | |
37 | + * 分页查询 | |
38 | + * | |
39 | + * @param invoiceBillOrderQueryVO 查询条件 | |
40 | + * @return 查询结果 | |
41 | + */ | |
42 | + @PostMapping("/list_by_page") | |
43 | + public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) { | |
44 | + return invoiceBillOrderService.listByPage(invoiceBillOrderQueryVO); | |
45 | + } | |
46 | + | |
47 | + /** | |
48 | + * 基础订单查询 | |
49 | + * | |
50 | + * @param queryVO 查询条件 | |
51 | + * @return 查询结果 | |
52 | + */ | |
53 | + @PostMapping("/list_base_order_info_by") | |
54 | + public ServerResult listBaseOrderInfoBy(@RequestBody @Validated InvoiceBaseOrderQueryVO queryVO) { | |
55 | + return invoiceBillOrderService.listBaseOrderInfoBy(queryVO); | |
56 | + } | |
57 | + | |
58 | + /** | |
59 | + * 分析列表 | |
60 | + * | |
61 | + * @param queryVO 查询条件 | |
62 | + * @return 查询结果 | |
63 | + */ | |
64 | + @PostMapping("/list_analysis_by") | |
65 | + public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBillAnalysisVO queryVO) { | |
66 | + return invoiceBillOrderService.listAnalysisBy(queryVO); | |
67 | + } | |
68 | + | |
69 | + /** | |
70 | + * 导出分析列表 | |
71 | + * | |
72 | + * @param queryVO 查询条件 | |
73 | + * @return 查询结果 | |
74 | + */ | |
75 | + @PostMapping(value = "/export") | |
76 | + @ApiOperation("导出分析列表") | |
77 | + @AnonymousAccess | |
78 | + public void export(HttpServletResponse response, @RequestBody @Validated InvoiceBillAnalysisVO queryVO) throws IOException, Excel4JException { | |
79 | + invoiceBillOrderService.export(response, queryVO); | |
80 | + } | |
81 | + | |
82 | + /** | |
83 | + * 创建invoice单据 | |
84 | + * | |
85 | + * @param createVO 数据VO | |
86 | + * @return 新增结果 | |
87 | + */ | |
88 | + @PostMapping("/create") | |
89 | + public ServerResult create(@RequestBody InvoiceBillCreateVO createVO) { | |
90 | + return invoiceBillOrderService.create(createVO); | |
91 | + } | |
92 | + | |
93 | + /** | |
94 | + * 获取必须回款日期 | |
95 | + * | |
96 | + * @param createVO 数据VO | |
97 | + * @return 新增结果 | |
98 | + */ | |
99 | + @PostMapping("/get_back_refund_date") | |
100 | + public ServerResult getBackRefundDate(@RequestBody InvoiceBillCreateVO createVO) { | |
101 | + return invoiceBillOrderService.getBackRefundDate(createVO); | |
102 | + } | |
103 | + | |
104 | + /** | |
105 | + * 更新扣款信息 | |
106 | + * | |
107 | + * @param deductInfoVO 数据VO | |
108 | + * @return 编辑结果 | |
109 | + */ | |
110 | + @PostMapping("/update_deduct_info") | |
111 | + public ServerResult updateDeductInfo(@RequestBody InvoiceBillDeductInfoVO deductInfoVO) { | |
112 | + return invoiceBillOrderService.updateDeductInfo(deductInfoVO); | |
113 | + } | |
114 | + | |
115 | + /** | |
116 | + * 更新其他金额信息 | |
117 | + * | |
118 | + * @param amountInfoVO 数据VO | |
119 | + * @return 编辑结果 | |
120 | + */ | |
121 | + @PostMapping("/update_amount_info") | |
122 | + public ServerResult updateAmountInfo(@RequestBody InvoiceBillAmountInfoVO amountInfoVO) { | |
123 | + return invoiceBillOrderService.updateAmountInfo(amountInfoVO); | |
124 | + } | |
125 | + | |
126 | + /** | |
127 | + * 提交审核 | |
128 | + * | |
129 | + * @param commitApplyVO 数据VO | |
130 | + * @return 编辑结果 | |
131 | + */ | |
132 | + @PostMapping("/commit_apply") | |
133 | + public ServerResult commitApply(@RequestBody InvoiceBillCommitApplyVO commitApplyVO) { | |
134 | + return invoiceBillOrderService.commitApply(commitApplyVO); | |
135 | + } | |
136 | + | |
137 | + /** | |
138 | + * 删除数据 | |
139 | + * | |
140 | + * @param invoiceBillOrderQueryVO 查询条件 | |
141 | + * @return 删除是否成功 | |
142 | + */ | |
143 | + @PostMapping("/delete_by_id") | |
144 | + public ServerResult deleteById(@RequestBody InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) { | |
145 | + return invoiceBillOrderService.deleteById(invoiceBillOrderQueryVO); | |
146 | + } | |
147 | + /** | |
148 | + * 获取扣款单 | |
149 | + * | |
150 | + * @param invoiceBillOrderQueryVO 查询条件 | |
151 | + * @return 扣款单 | |
152 | + */ | |
153 | + @PostMapping("/getDeductUrl_by_id") | |
154 | + public ServerResult getDeductUrl(@RequestBody InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) { | |
155 | + return invoiceBillOrderService.getDeductUrlById(invoiceBillOrderQueryVO); | |
156 | + } | |
157 | + /** | |
158 | + * 重新上传报关单 | |
159 | + * | |
160 | + * @param bgUrl 报关单 | |
161 | + * @return | |
162 | + */ | |
163 | + @PostMapping("/reUploadBgUrl") | |
164 | + public ServerResult getDeductUrl(@RequestBody InvoiceBillCreateVO bgUrl) { | |
165 | + return invoiceBillOrderService.reUploadBgurl(bgUrl); | |
166 | + } | |
167 | + | |
168 | + /** | |
169 | + * 审核时导出的付款单 | |
170 | + * @param queryVO 报关单 | |
171 | + * @return | |
172 | + */ | |
173 | + @PostMapping("/exportReceipt") | |
174 | + @AnonymousAccess | |
175 | + public void exportReceipt(HttpServletResponse response, @RequestBody InvoiceBillOrderDO queryVO) throws IOException { | |
176 | + invoiceBillOrderService.exportReceipt(response,queryVO); | |
177 | + } | |
178 | + | |
179 | +} | |
180 | + | ... | ... |
src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java
0 → 100644
1 | +package com.order.erp.controller; | |
2 | + | |
3 | +import com.order.erp.common.annotation.AnonymousAccess; | |
4 | +import com.order.erp.common.constant.ServerResult; | |
5 | +import com.order.erp.common.excel4j.exceptions.Excel4JException; | |
6 | +import com.order.erp.common.jsr303.OperateGroup; | |
7 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
8 | +import com.order.erp.domain.vo.order.*; | |
9 | +import com.order.erp.service.order.ProducePaymentCheckBillOrderService; | |
10 | +import io.swagger.annotations.ApiOperation; | |
11 | +import org.springframework.validation.annotation.Validated; | |
12 | +import org.springframework.web.bind.annotation.PostMapping; | |
13 | +import org.springframework.web.bind.annotation.RequestBody; | |
14 | +import org.springframework.web.bind.annotation.RequestMapping; | |
15 | +import org.springframework.web.bind.annotation.RestController; | |
16 | + | |
17 | +import javax.annotation.Resource; | |
18 | +import javax.servlet.http.HttpServletResponse; | |
19 | +import java.io.IOException; | |
20 | + | |
21 | +/** | |
22 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)表控制 | |
23 | + * | |
24 | + * @author makejava | |
25 | + * @since 2024-08-05 16:26:35 | |
26 | + */ | |
27 | +@RestController | |
28 | +@RequestMapping("/order/erp/check_bill/") | |
29 | +public class ProducePaymentCheckBillOrderController { | |
30 | + /** | |
31 | + * 服务对象 | |
32 | + */ | |
33 | + @Resource | |
34 | + private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; | |
35 | + | |
36 | + /** | |
37 | + * 分页查询 | |
38 | + * | |
39 | + * @param queryVO 查询条件 | |
40 | + * @return 查询结果 | |
41 | + */ | |
42 | + @PostMapping("/list_by_page") | |
43 | + public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) { | |
44 | + return producePaymentCheckBillOrderService.listByPage(queryVO); | |
45 | + } | |
46 | + | |
47 | + /** | |
48 | + * 基础订单查询 | |
49 | + * | |
50 | + * @param queryVO 查询条件 | |
51 | + * @return 查询结果 | |
52 | + */ | |
53 | + @PostMapping("/list_base_order_info_by") | |
54 | + public ServerResult listBaseOrderInfoBy(@RequestBody @Validated ProducePaymentBaseOrderQueryVO queryVO) { | |
55 | + return producePaymentCheckBillOrderService.listBaseOrderInfoBy(queryVO); | |
56 | + } | |
57 | + | |
58 | + /** | |
59 | + * 分析列表 | |
60 | + * | |
61 | + * @param queryVO 查询条件 | |
62 | + * @return 查询结果 | |
63 | + */ | |
64 | + @PostMapping("/list_analysis_by") | |
65 | + public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) { | |
66 | + return producePaymentCheckBillOrderService.listAnalysisBy(queryVO); | |
67 | + } | |
68 | + | |
69 | + /** | |
70 | + * 导出分析列表 | |
71 | + * | |
72 | + * @param queryVO 查询条件 | |
73 | + * @return 查询结果 | |
74 | + */ | |
75 | + @PostMapping(value = "/export") | |
76 | + @ApiOperation("导出分析列表") | |
77 | + @AnonymousAccess | |
78 | + public void export(HttpServletResponse response, @RequestBody @Validated ProducePaymentCheckBillOrderQueryVO queryVO) throws IOException, Excel4JException { | |
79 | + producePaymentCheckBillOrderService.export(response, queryVO); | |
80 | + } | |
81 | + | |
82 | + /** | |
83 | + * 创建生产科应付单据 | |
84 | + * | |
85 | + * @param createVO 数据VO | |
86 | + * @return 新增结果 | |
87 | + */ | |
88 | + @PostMapping("/create") | |
89 | + public ServerResult create(@RequestBody ProducePaymentCheckBillCreateVO createVO) { | |
90 | + return producePaymentCheckBillOrderService.create(createVO); | |
91 | + } | |
92 | + | |
93 | + /** | |
94 | + * 获取生产科应回款日期 | |
95 | + * | |
96 | + * @param createVO 数据VO | |
97 | + * @return 新增结果 | |
98 | + */ | |
99 | + @PostMapping("/get_payed_date") | |
100 | + public ServerResult getPayedDate(@RequestBody ProducePaymentCheckBillCreateVO createVO) { | |
101 | + return producePaymentCheckBillOrderService.getPayedDate(createVO); | |
102 | + } | |
103 | + | |
104 | + /** | |
105 | + * 更新扣款信息 | |
106 | + * | |
107 | + * @param deductInfoVO 数据VO | |
108 | + * @return 编辑结果 | |
109 | + */ | |
110 | + @PostMapping("/update_deduct_info") | |
111 | + public ServerResult updateDeductInfo(@RequestBody ProducePaymentCheckBillDeductInfoVO deductInfoVO) { | |
112 | + return producePaymentCheckBillOrderService.updateDeductInfo(deductInfoVO); | |
113 | + } | |
114 | + | |
115 | + /** | |
116 | + * 更新其他金额信息 | |
117 | + * | |
118 | + * @param amountInfoVO 数据VO | |
119 | + * @return 编辑结果 | |
120 | + */ | |
121 | + @PostMapping("/update_amount_info") | |
122 | + public ServerResult updateAmountInfo(@RequestBody ProducePaymentCheckBillAmountInfoVO amountInfoVO) { | |
123 | + return producePaymentCheckBillOrderService.updateAmountInfo(amountInfoVO); | |
124 | + } | |
125 | + | |
126 | + /** | |
127 | + * 更新发票信息 | |
128 | + * | |
129 | + * @param invoiceInfoVO 数据VO | |
130 | + * @return 编辑结果 | |
131 | + */ | |
132 | + @PostMapping("/update_invoice_info") | |
133 | + public ServerResult updateInvoiceInfo(@RequestBody ProducePaymentCheckBillInvoiceInfoVO invoiceInfoVO) { | |
134 | + return producePaymentCheckBillOrderService.updateInvoiceInfo(invoiceInfoVO); | |
135 | + } | |
136 | + | |
137 | + /** | |
138 | + * 提交审核 | |
139 | + * | |
140 | + * @param commitApplyVO 数据VO | |
141 | + * @return 编辑结果 | |
142 | + */ | |
143 | + @PostMapping("/commit_apply") | |
144 | + public ServerResult commitApply(@RequestBody ProducePaymentCheckBillCommitApplyVO commitApplyVO) { | |
145 | + return producePaymentCheckBillOrderService.commitApply(commitApplyVO); | |
146 | + } | |
147 | + | |
148 | + /** | |
149 | + * 删除数据 | |
150 | + * | |
151 | + * @param producePaymentCheckBillOrderQueryVO 查询条件 | |
152 | + * @return 删除是否成功 | |
153 | + */ | |
154 | + @PostMapping("/delete_by_id") | |
155 | + public ServerResult deleteById(@RequestBody ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO) { | |
156 | + return producePaymentCheckBillOrderService.deleteById(producePaymentCheckBillOrderQueryVO); | |
157 | + } | |
158 | + /** | |
159 | + * 获取扣款单 | |
160 | + * | |
161 | + * @param producePaymentCheckBillOrderQueryVO 查询条件 | |
162 | + * @return 扣款单 | |
163 | + */ | |
164 | + @PostMapping("/getDeductUrl_by_id") | |
165 | + public ServerResult getDeductUrl(@RequestBody ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO) { | |
166 | + //一定要保证文件中包含?和/.这样才不会报错。 | |
167 | + return producePaymentCheckBillOrderService.getDeductUrlById(producePaymentCheckBillOrderQueryVO); | |
168 | + } | |
169 | + /** | |
170 | + * 获取生产科发票 | |
171 | + * | |
172 | + * @param producePaymentCheckBillOrderQueryVO 查询条件 | |
173 | + * @return 扣款单 | |
174 | + */ | |
175 | + @PostMapping("/getInvoiceUrl_by_id") | |
176 | + public ServerResult getInvoiceUrl(@RequestBody ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO) { | |
177 | + return producePaymentCheckBillOrderService.getInvoiceUrlById(producePaymentCheckBillOrderQueryVO); | |
178 | + } | |
179 | + /** | |
180 | + * 审核付款单导出 | |
181 | + * | |
182 | + * @param queryVO 查询条件 | |
183 | + * @return 扣款单 | |
184 | + */ | |
185 | + @PostMapping("/exportReceipt") | |
186 | + @AnonymousAccess | |
187 | + public void exportReceipt(HttpServletResponse response, @RequestBody ProducePaymentCheckBillOrderDO queryVO) throws IOException { | |
188 | + producePaymentCheckBillOrderService.exportReceipt(response,queryVO); | |
189 | + } | |
190 | +} | |
191 | + | ... | ... |
src/main/java/com/order/erp/domain/ApplyStatusEnum.java
src/main/java/com/order/erp/domain/ApplyTypeEnum.java
... | ... | @@ -18,6 +18,12 @@ public enum ApplyTypeEnum { |
18 | 18 | ORDER_PROFIT_APPLY(10, "利润分析申请"), |
19 | 19 | |
20 | 20 | ORDER_REPORT_APPLY(20, "项目报告书申请"), |
21 | + | |
22 | + INVOICE_BILL_APPLY(30, "应收账单申请"), | |
23 | + | |
24 | + CHECK_BILL_APPLY(40, "应付账单申请"), | |
25 | + | |
26 | + DEPARTMENT_INVOICE_APPLY(50,"生产科发票申请"), | |
21 | 27 | ; |
22 | 28 | private Integer type; |
23 | 29 | ... | ... |
src/main/java/com/order/erp/domain/FinanceOverEnum.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 FinanceOverEnum { | |
9 | + INVOICE_OVERTIME("你有invoice应收款未提交,请查收","Hi All 你以下invoice已超过回款日期,仍未生成应收款对账单提交审核,麻烦财务查询是否已打款,如未打款请业务员及时跟进\n。Invoice号为:"), | |
10 | + PRODUCE_PAYMENT_CHECK_OVERTIME("你有生产科对账单未提交,请查收","Hi All 你以下生产科对账单已超过应付款日期,麻烦财务查询是否已打款,如未打款请说明原因,如未收到发票,请业务员及时跟进\n。生产科对账单号为:"), | |
11 | + ; | |
12 | + | |
13 | + private String title; | |
14 | + private String desc; | |
15 | + | |
16 | +} | ... | ... |
src/main/java/com/order/erp/domain/RoleEnum.java
src/main/java/com/order/erp/domain/dto/order/CheckBillMappingDO.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 | + * 生产科对账单应收账单映射表(CheckBillMapping)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:36 | |
15 | + */ | |
16 | +@TableName("check_bill_mapping") | |
17 | +@Data | |
18 | +@AllArgsConstructor | |
19 | +@ToString | |
20 | +@NoArgsConstructor | |
21 | +@EqualsAndHashCode(callSuper = false) | |
22 | +@SuperBuilder | |
23 | +public class CheckBillMappingDO extends BaseDO implements Serializable { | |
24 | + private static final long serialVersionUID = 199786248752278040L; | |
25 | + | |
26 | + private Long id; | |
27 | + /** | |
28 | + * 生产科对账单号 | |
29 | + */ | |
30 | + private String checkNo; | |
31 | + /** | |
32 | + * check账单id | |
33 | + */ | |
34 | + private Long checkBillId; | |
35 | + /** | |
36 | + * 订单id | |
37 | + */ | |
38 | + private Long orderId; | |
39 | + | |
40 | +} | ... | ... |
src/main/java/com/order/erp/domain/dto/order/InvoiceBillMappingDO.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 | + * 应收款账单关联订单映射表(InvoiceBillMapping)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:36 | |
15 | + */ | |
16 | +@TableName("invoice_bill_mapping") | |
17 | +@Data | |
18 | +@AllArgsConstructor | |
19 | +@ToString | |
20 | +@NoArgsConstructor | |
21 | +@EqualsAndHashCode(callSuper = false) | |
22 | +@SuperBuilder | |
23 | +public class InvoiceBillMappingDO extends BaseDO implements Serializable { | |
24 | + | |
25 | + private Long id; | |
26 | + /** | |
27 | + * 发票单号 | |
28 | + */ | |
29 | + private String invoiceNo; | |
30 | + /** | |
31 | + * invoice账单id | |
32 | + */ | |
33 | + private Long invoiceBillId; | |
34 | + /** | |
35 | + * 订单id | |
36 | + */ | |
37 | + private Long orderId; | |
38 | + | |
39 | +} | ... | ... |
src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.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 | +import java.math.BigDecimal; | |
10 | + | |
11 | +/** | |
12 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
13 | + * | |
14 | + * @author makejava | |
15 | + * @since 2024-08-05 16:26:33 | |
16 | + */ | |
17 | +@TableName("invoice_bill_order") | |
18 | +@Data | |
19 | +@AllArgsConstructor | |
20 | +@ToString | |
21 | +@NoArgsConstructor | |
22 | +@EqualsAndHashCode(callSuper = false) | |
23 | +@SuperBuilder | |
24 | +public class InvoiceBillOrderDO extends BaseDO implements Serializable { | |
25 | + | |
26 | + private Long id; | |
27 | + /** | |
28 | + * 发票单号 | |
29 | + */ | |
30 | + private String invoiceNo; | |
31 | + /** | |
32 | + * 报关单url地址 | |
33 | + */ | |
34 | + private String bgUrl; | |
35 | + /** | |
36 | + * 必须回款日期 | |
37 | + */ | |
38 | + private String backRefundDate; | |
39 | + /** | |
40 | + * 实际回款日期 | |
41 | + */ | |
42 | + private String actualRefundDate; | |
43 | + | |
44 | + /** | |
45 | + * 发生扣款金额 | |
46 | + */ | |
47 | + private BigDecimal deductAmount; | |
48 | + /** | |
49 | + * 扣款单url地址 | |
50 | + */ | |
51 | + private String deductUrl; | |
52 | + /** | |
53 | + * 实际应收金额 | |
54 | + */ | |
55 | + private BigDecimal actualReceivableAmount; | |
56 | + /** | |
57 | + * 实际应付金额1 | |
58 | + */ | |
59 | + private BigDecimal actualPayedAmount1; | |
60 | + /** | |
61 | + * 实际应付金额2 | |
62 | + */ | |
63 | + private BigDecimal actualPayedAmount2; | |
64 | + /** | |
65 | + * 实际应付金额3 | |
66 | + */ | |
67 | + private BigDecimal actualPayedAmount3; | |
68 | + /** | |
69 | + * 其他费用金额 | |
70 | + */ | |
71 | + private BigDecimal otherAmount; | |
72 | + /** | |
73 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
74 | + */ | |
75 | + private Integer status; | |
76 | + //需要在表中添加字段。 | |
77 | + /** | |
78 | + * 客户总价金额汇总 | |
79 | + * */ | |
80 | + private BigDecimal totalCustomerAmount; | |
81 | + | |
82 | + /** | |
83 | + * 实际付款金额汇总 | |
84 | + * */ | |
85 | + private BigDecimal totalPayAmount; | |
86 | + /** | |
87 | + * 业务员 | |
88 | + * */ | |
89 | + private String businesPerson; | |
90 | + /** | |
91 | + * 收款单位 | |
92 | + * */ | |
93 | + private String payee; | |
94 | + /** | |
95 | + * 财务 --审核时使用。 | |
96 | + * */ | |
97 | + private String financePerson; | |
98 | + | |
99 | +} | ... | ... |
src/main/java/com/order/erp/domain/dto/order/OrderFieldLockApplyDO.java
src/main/java/com/order/erp/domain/dto/order/OrderProfitAnalysisDO.java
src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.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 | +import java.math.BigDecimal; | |
10 | + | |
11 | +/** | |
12 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
13 | + * | |
14 | + * @author makejava | |
15 | + * @since 2024-08-05 16:26:35 | |
16 | + */ | |
17 | +@TableName("produce_payment_check_bill_order") | |
18 | +@Data | |
19 | +@AllArgsConstructor | |
20 | +@ToString | |
21 | +@NoArgsConstructor | |
22 | +@EqualsAndHashCode(callSuper = false) | |
23 | +@SuperBuilder | |
24 | +public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializable { | |
25 | + | |
26 | + private Long id; | |
27 | + /** | |
28 | + * 生产科对账单 | |
29 | + */ | |
30 | + private String checkNo; | |
31 | + /** | |
32 | + * 发票url地址 | |
33 | + */ | |
34 | + private String invoiceUrl; | |
35 | + /** | |
36 | + * 扣款单url地址 | |
37 | + */ | |
38 | + private String deductUrl; | |
39 | + /** | |
40 | + * 生产科应付款日期 | |
41 | + */ | |
42 | + private String payedDate; | |
43 | + | |
44 | + /** | |
45 | + * 生产科实际付款日期 | |
46 | + */ | |
47 | + private String actualPayedDate; | |
48 | + | |
49 | + /** | |
50 | + * 生产科扣款责任部门 | |
51 | + */ | |
52 | + private String deductDept; | |
53 | + /** | |
54 | + * 生产科扣款金额 | |
55 | + */ | |
56 | + private BigDecimal deductAmount; | |
57 | + /** | |
58 | + * 实际应付金额 | |
59 | + */ | |
60 | + private BigDecimal actualPayedAmount; | |
61 | + /** | |
62 | + * 实际应付金额1 | |
63 | + */ | |
64 | + private BigDecimal actualPayedAmount1; | |
65 | + /** | |
66 | + * 实际应付金额2 | |
67 | + */ | |
68 | + private BigDecimal actualPayedAmount2; | |
69 | + /** | |
70 | + * 实际应付金额3 | |
71 | + */ | |
72 | + private BigDecimal actualPayedAmount3; | |
73 | + /** | |
74 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
75 | + */ | |
76 | + private Integer status; | |
77 | + //需要在表中添加三个字段。 | |
78 | + /** | |
79 | + * 生产科发票审核状态 0:待审核、1:审核通过,2:审核驳回 | |
80 | + */ | |
81 | + private Integer departmentInvoiceStatus; | |
82 | + | |
83 | + /** | |
84 | + * 生产科总金额汇总 | |
85 | + * */ | |
86 | + private BigDecimal totalProductionAmount; | |
87 | + /** | |
88 | + * 实际付款金额汇总 | |
89 | + * */ | |
90 | + private BigDecimal totalActualPayedAmount; | |
91 | + /** | |
92 | + * 创建生产科对账单号选择的生产科 | |
93 | + * */ | |
94 | + private String productionName; | |
95 | + /** | |
96 | + * 未付金额 | |
97 | + * */ | |
98 | + private BigDecimal unPayedAmount; | |
99 | + /** | |
100 | + * 业务员 | |
101 | + * */ | |
102 | + private String businesPerson; | |
103 | + /** | |
104 | + * 财务 --审核时使用。 | |
105 | + * */ | |
106 | + private String financePerson; | |
107 | + | |
108 | + | |
109 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/CostSettingItemVO.java
0 → 100644
1 | +package com.order.erp.domain.vo; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | +import java.io.Serializable; | |
7 | + | |
8 | +/** | |
9 | + * 系统配置(SystemSetting)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2023-12-05 13:44:01 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class CostSettingItemVO implements Serializable { | |
21 | + | |
22 | + /** | |
23 | + * 关联code | |
24 | + */ | |
25 | + private String relationCode; | |
26 | + /** | |
27 | + * 名称 | |
28 | + */ | |
29 | + private String relationName; | |
30 | + /** | |
31 | + * 值 | |
32 | + */ | |
33 | + private String relationValue; | |
34 | + | |
35 | + | |
36 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/SystemSettingResultVO.java
... | ... | @@ -4,6 +4,7 @@ import lombok.*; |
4 | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | |
6 | 6 | import java.io.Serializable; |
7 | +import java.util.List; | |
7 | 8 | |
8 | 9 | /** |
9 | 10 | * @author makejava |
... | ... | @@ -47,5 +48,9 @@ public class SystemSettingResultVO implements Serializable { |
47 | 48 | */ |
48 | 49 | private String relationValue; |
49 | 50 | |
51 | + /** | |
52 | + * 成本配置 | |
53 | + */ | |
54 | + private List<CostSettingItemVO> costSettingItemVOS; | |
50 | 55 | |
51 | 56 | } | ... | ... |
src/main/java/com/order/erp/domain/vo/SystemSettingVO.java
... | ... | @@ -4,6 +4,7 @@ import lombok.*; |
4 | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | |
6 | 6 | import java.io.Serializable; |
7 | +import java.util.List; | |
7 | 8 | |
8 | 9 | /** |
9 | 10 | * 系统配置(SystemSetting)实体类 |
... | ... | @@ -49,5 +50,8 @@ public class SystemSettingVO implements Serializable { |
49 | 50 | */ |
50 | 51 | private String relationValue; |
51 | 52 | |
52 | - | |
53 | + /** | |
54 | + * 成本配置 | |
55 | + */ | |
56 | + private List<CostSettingItemVO> costSettingItemVOS; | |
53 | 57 | } | ... | ... |
src/main/java/com/order/erp/domain/vo/order/BusinessProfitRatioQueryVO.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 javax.validation.constraints.NotEmpty; | |
8 | +import javax.validation.constraints.NotNull; | |
9 | +import java.io.Serializable; | |
10 | +import java.math.BigDecimal; | |
11 | +import java.util.List; | |
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 BusinessProfitRatioQueryVO extends BasePageVO implements Serializable { | |
26 | + /** | |
27 | + * ids | |
28 | + */ | |
29 | + @NotEmpty(message = "选择订单不能为空") | |
30 | + private List<Long> ids; | |
31 | + | |
32 | + /** | |
33 | + * 客户编码 | |
34 | + */ | |
35 | + @NotEmpty(message = "客户编码不能为空") | |
36 | + private String customerCode; | |
37 | + | |
38 | + /** | |
39 | + * 项目号 | |
40 | + */ | |
41 | + @NotEmpty(message = "项目号不能为空") | |
42 | + private List<String> projectNo; | |
43 | + | |
44 | + /** | |
45 | + * 项目开发开始时间 | |
46 | + */ | |
47 | + @NotEmpty(message = "项目开发开始时间不能为空") | |
48 | + private String projectStartTime; | |
49 | + | |
50 | + /** | |
51 | + * 项目开发结束时间 | |
52 | + */ | |
53 | + @NotEmpty(message = "项目开发结束时间不能为空") | |
54 | + private String projectEndTime; | |
55 | + | |
56 | + /** | |
57 | + * 生产进行开始时间 这个没有使用过,应该不需要,所以应该不需要校验。 | |
58 | + */ | |
59 | + @NotEmpty(message = "生产进行开始时间不能为空") | |
60 | + private String produceStartTime; | |
61 | + | |
62 | + /** | |
63 | + * 生产进行结束时间 这个没有使用过,应该不需要,所以应该不需要校验。 | |
64 | + */ | |
65 | + @NotEmpty(message = "生产进行结束时间不能为空") | |
66 | + private String produceEndTime; | |
67 | + | |
68 | + | |
69 | + /** | |
70 | + * 研发开发费合计 | |
71 | + */ | |
72 | + @NotNull(message = "研发开发费合计不能为空") | |
73 | + private BigDecimal developTotalPrice; | |
74 | + | |
75 | + /** | |
76 | + * 复制费合计 | |
77 | + */ | |
78 | + @NotNull(message = "复制费合计不能为空") | |
79 | + private BigDecimal copyTotalPrice; | |
80 | + | |
81 | + | |
82 | + /** | |
83 | + * 西班牙提成比例 这个没有使用过,采用的是从系统中取出来的值。 应该可以删除。 | |
84 | + */ | |
85 | +// @NotNull(message = "西班牙提成比例不能为空") | |
86 | + private Double spainRatio; | |
87 | + | |
88 | + /** | |
89 | + * 中国团队提成比例 这个没有使用过,采用的是从系统中取出来的值。 应该可以删除。 | |
90 | + */ | |
91 | +// @NotNull(message = "中国团队提成比例不能为空") | |
92 | + private Double chinaRatio; | |
93 | + | |
94 | + | |
95 | + /** | |
96 | + * 包装费用实际金额由财务手动输入 | |
97 | + */ | |
98 | + @NotNull(message = "包装费用实际金额不能为空") | |
99 | + private BigDecimal packetActualTotalPrice; | |
100 | + | |
101 | + | |
102 | + /** | |
103 | + * 实际跟单单价=实际跟单费用/件数(人民币格式) | |
104 | + */ | |
105 | +// @NotNull(message = "实际跟单单价不能为空") | |
106 | + private Double actualRmbPrice; | |
107 | + | |
108 | + /** | |
109 | + * 实际跟单单价折算美金:人民币单价/汇率(6.2) | |
110 | + */ | |
111 | +// @NotNull(message = "实际跟单单价折算美金不能为空") | |
112 | + private Double actualPrice; | |
113 | + | |
114 | + /** | |
115 | + * 实际汇率(财务手动输入) | |
116 | + */ | |
117 | + @NotNull(message = "实际汇率不能为空") | |
118 | + private BigDecimal actualRatio; | |
119 | + /** | |
120 | + * 实际跟单费用(财务手动输入) | |
121 | + */ | |
122 | +// @NotNull(message = "实际跟单费用不能为空") | |
123 | + private Double actualdocumentaryPrice; | |
124 | + | |
125 | +} | |
126 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/BusinessProfitRatioResultVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 业务/研发净利润分析 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:34 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class BusinessProfitRatioResultVO implements Serializable { | |
22 | + | |
23 | + | |
24 | + /** | |
25 | + * 客户编码 | |
26 | + */ | |
27 | + private String customerCode; | |
28 | + | |
29 | + /** | |
30 | + * 项目号 | |
31 | + */ | |
32 | + private String projectNo; | |
33 | + | |
34 | + /** | |
35 | + * 项目开发开始时间 | |
36 | + */ | |
37 | + private String projectStartTime; | |
38 | + | |
39 | + /** | |
40 | + * 项目开发结束时间 | |
41 | + */ | |
42 | + private String projectEndTime; | |
43 | + | |
44 | + /** | |
45 | + * 生产进行开始时间 | |
46 | + */ | |
47 | + private String produceStartTime; | |
48 | + | |
49 | + /** | |
50 | + * 生产进行结束时间 | |
51 | + */ | |
52 | + private String produceEndTime; | |
53 | + | |
54 | + /** | |
55 | + * 客户总价$ | |
56 | + */ | |
57 | + private BigDecimal customerTotalPrice; | |
58 | + | |
59 | + /** | |
60 | + * 生成科总价¥ | |
61 | + */ | |
62 | + private BigDecimal productionDepartmentTotalPrice; | |
63 | + | |
64 | + /** | |
65 | + * 包装费用合计¥ | |
66 | + */ | |
67 | + private BigDecimal packetTotalPrice; | |
68 | + | |
69 | + /** | |
70 | + * 研发开发费合计 | |
71 | + */ | |
72 | + private BigDecimal developTotalPrice; | |
73 | + | |
74 | + /** | |
75 | + * 复制费合计 | |
76 | + */ | |
77 | + private BigDecimal copyTotalPrice; | |
78 | + | |
79 | + /** | |
80 | + * 固定成本 | |
81 | + * 开发持续时间*日固定成本(日固定成本需要从系统配置读取) | |
82 | + */ | |
83 | + private BigDecimal fixCost; | |
84 | + | |
85 | + /** | |
86 | + * 西班牙提成比例 | |
87 | + */ | |
88 | + private BigDecimal spainRatioProfitPrice; | |
89 | + | |
90 | + /** | |
91 | + * 中国团队提成比例 | |
92 | + */ | |
93 | + private BigDecimal chinaRatioProfitPrice; | |
94 | + | |
95 | + /** | |
96 | + * 支出合计计算:客户总金额+生产科总价+包装费用+研发开发费+复制费用+固定成本+西班牙提成+中国团队提成 | |
97 | + */ | |
98 | + private BigDecimal outTotalPrice; | |
99 | + | |
100 | + /** | |
101 | + * 毛利润 | |
102 | + * 订单收入-Loca费用-跟单费用(正数黑色字体、负数红色字体并加上-号) | |
103 | + */ | |
104 | + private BigDecimal grossProfit; | |
105 | + | |
106 | + /** | |
107 | + * 研发贸易利润 | |
108 | + * 客户金额合计-支出合计(正数黑色字体、负数红色字体并加上-号) | |
109 | + */ | |
110 | + private BigDecimal developProfit; | |
111 | + | |
112 | + /** | |
113 | + * 包装费用实际金额由财务手动输入 | |
114 | + */ | |
115 | + private BigDecimal packetActualTotalPrice; | |
116 | + | |
117 | + /** | |
118 | + * 订单总数量 | |
119 | + * 订单总数量计算项目号的数量合计 | |
120 | + */ | |
121 | + private Integer orderCount; | |
122 | + | |
123 | + /** | |
124 | + * 实际跟单单价=实际跟单费用/件数(人民币格式) | |
125 | + */ | |
126 | + private BigDecimal actualRmbPrice; | |
127 | + | |
128 | + /** | |
129 | + * 实际跟单单价折算美金:人民币单价/汇率(6.2) | |
130 | + */ | |
131 | + private BigDecimal actualPrice; | |
132 | + | |
133 | + /** | |
134 | + * 包装费用收益计算:包装费用合计金额-包装费用实际金额 | |
135 | + */ | |
136 | + private BigDecimal packetProfitPrice; | |
137 | + | |
138 | + /** | |
139 | + * 实际汇率(财务手动输入) | |
140 | + */ | |
141 | + private BigDecimal actualRatio; | |
142 | + | |
143 | + /** | |
144 | + * 汇率收益计算:实际汇率(财务手动输入)-固定汇率(取系统汇率)*客户金额合计(基础信息汇总) | |
145 | + */ | |
146 | + private BigDecimal actualRatioProfitPrice; | |
147 | + | |
148 | + /** | |
149 | + * 综合收益计算 | |
150 | + * 易研发净利润+包装费用收益+汇率收益 | |
151 | + */ | |
152 | + private BigDecimal totalProfitPrice; | |
153 | + /** | |
154 | + * 包装费用合计金额 | |
155 | + * 包装费用 * 汇率 (6.2) | |
156 | + */ | |
157 | + private BigDecimal packetTotalPriceCount; | |
158 | + /** | |
159 | + * 实际跟单费用 | |
160 | + */ | |
161 | + private BigDecimal actualdocumentaryPrice; | |
162 | +} | |
163 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckBillAnalysisExportVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应付款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class CheckBillAnalysisExportVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + | |
25 | + /** | |
26 | + * checkNo | |
27 | + */ | |
28 | + private String checkNo; | |
29 | + | |
30 | + | |
31 | + /** | |
32 | + * 生产科 | |
33 | + */ | |
34 | + private String productionDepartment; | |
35 | + | |
36 | + /** | |
37 | + * 生产科总价汇总 | |
38 | + */ | |
39 | + private BigDecimal productionDepartmentTotalPrice; | |
40 | + | |
41 | + /** | |
42 | + * 生产科扣款金额汇总 | |
43 | + */ | |
44 | + private BigDecimal deductAmount; | |
45 | + | |
46 | + | |
47 | + /** | |
48 | + * 实际付款金额汇总 | |
49 | + */ | |
50 | + private BigDecimal actualPayedAmount; | |
51 | + | |
52 | + /** | |
53 | + * 应付金额 - 扣款金额 | |
54 | + * 生产科实际应付金额 | |
55 | + */ | |
56 | + private BigDecimal calculateActualPayedAmount; | |
57 | + | |
58 | + /** | |
59 | + * 实际应付金额 - 实际付款金额 | |
60 | + * 未付金额金额 | |
61 | + */ | |
62 | + private BigDecimal unPayedAmount; | |
63 | + | |
64 | + /** | |
65 | + * 生产科应付款日期 | |
66 | + */ | |
67 | + private String payedDate; | |
68 | + | |
69 | + /** | |
70 | + * 生产科实际付款日期 | |
71 | + */ | |
72 | + private String actualPayedDate; | |
73 | + | |
74 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckBillAnalysisResultVO.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.math.BigDecimal; | |
8 | +import java.util.List; | |
9 | + | |
10 | +/** | |
11 | + * 应付款账单表(InvoiceBillOrder)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:33 | |
15 | + */ | |
16 | +@Data | |
17 | +@AllArgsConstructor | |
18 | +@ToString | |
19 | +@NoArgsConstructor | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class CheckBillAnalysisResultVO implements Serializable { | |
23 | + | |
24 | + | |
25 | + /** | |
26 | + * 导出列表 | |
27 | + */ | |
28 | + private List<CheckBillAnalysisExportVO> exportVOS; | |
29 | + | |
30 | + /** | |
31 | + * 合计数据 | |
32 | + */ | |
33 | + | |
34 | + /** | |
35 | + * 生产科总价汇总 | |
36 | + */ | |
37 | + private BigDecimal productionDepartmentTotalPrice; | |
38 | + | |
39 | + /** | |
40 | + * 生产科扣款金额汇总 | |
41 | + */ | |
42 | + private BigDecimal deductAmount; | |
43 | + | |
44 | + | |
45 | + /** | |
46 | + * 实际付款金额汇总 | |
47 | + */ | |
48 | + private BigDecimal actualPayedAmount; | |
49 | + | |
50 | + /** | |
51 | + * 应付金额 - 扣款金额 | |
52 | + * 生产科实际应付金额 | |
53 | + */ | |
54 | + private BigDecimal calculateActualPayedAmount; | |
55 | + | |
56 | + /** | |
57 | + * 实际应付金额 - 实际付款金额 | |
58 | + * 未付金额金额 | |
59 | + */ | |
60 | + private BigDecimal unPayedAmount; | |
61 | + | |
62 | + /** | |
63 | + * 合计数据 | |
64 | + */ | |
65 | + | |
66 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckBillMappingQueryVO.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 | + | |
10 | +/** | |
11 | + * 生产科对账单应收账单映射表(CheckBillMapping)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:37 | |
15 | + */ | |
16 | +@Data | |
17 | +@AllArgsConstructor | |
18 | +@ToString | |
19 | +@NoArgsConstructor | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class CheckBillMappingQueryVO extends BasePageVO implements Serializable { | |
23 | + | |
24 | + private List<Long> ids; | |
25 | + | |
26 | + | |
27 | + private Long id; | |
28 | + /** | |
29 | + * 生产科对账单号 | |
30 | + */ | |
31 | + private String checkNo; | |
32 | + /** | |
33 | + * check账单id | |
34 | + */ | |
35 | + private Long checkBillId; | |
36 | + /** | |
37 | + * 订单id | |
38 | + */ | |
39 | + private Long orderId; | |
40 | + | |
41 | + | |
42 | +} | |
43 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckBillMappingVO.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 | + | |
8 | +/** | |
9 | + * 生产科对账单应收账单映射表(CheckBillMapping)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:37 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class CheckBillMappingVO implements Serializable { | |
21 | + | |
22 | + private Long id; | |
23 | + /** | |
24 | + * 生产科对账单号 | |
25 | + */ | |
26 | + private String checkNo; | |
27 | + /** | |
28 | + * check账单id | |
29 | + */ | |
30 | + private Long checkBillId; | |
31 | + /** | |
32 | + * 订单id | |
33 | + */ | |
34 | + private Long orderId; | |
35 | + | |
36 | + | |
37 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckBillOrdeBaseResultVO.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 CheckBillOrdeBaseResultVO { | |
13 | + /** | |
14 | + * 客户编码 | |
15 | + */ | |
16 | + private String customerCode; | |
17 | + /** | |
18 | + * 项目号 | |
19 | + */ | |
20 | + private String projectNo; | |
21 | + /** | |
22 | + * 内部编号 | |
23 | + */ | |
24 | + private String innerNo; | |
25 | + /** | |
26 | + * 客户po号 | |
27 | + */ | |
28 | + private String customerPo; | |
29 | + /** | |
30 | + * 客户STYLE# | |
31 | + */ | |
32 | + private String customerStyle; | |
33 | + /** | |
34 | + * Modelo(REFERENCE) | |
35 | + */ | |
36 | + private String modeleLo; | |
37 | + /** | |
38 | + * 缩略图片地址 这里不确认前端拿到的数据是缩略图url还是图片url,先采用缩略图url。 | |
39 | + */ | |
40 | + private String smallPicUrl; | |
41 | + /** | |
42 | + * 数量 | |
43 | + */ | |
44 | + private Integer orderCount; | |
45 | + /** | |
46 | + * 生产科单价 | |
47 | + */ | |
48 | + private Double productionDepartmentPrice; | |
49 | + /** | |
50 | + * 生产科总价 | |
51 | + */ | |
52 | + private Double productionDepartmentTotalPrice; | |
53 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckHoldTimeItemVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import com.order.erp.domain.dto.order.OrderBaseInfoDO; | |
4 | +import lombok.*; | |
5 | +import lombok.experimental.SuperBuilder; | |
6 | + | |
7 | +import java.io.Serializable; | |
8 | + | |
9 | +/** | |
10 | + * 应付账单 -- holdTime | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class CheckHoldTimeItemVO implements Serializable { | |
22 | + | |
23 | + /** | |
24 | + * 生产科 | |
25 | + */ | |
26 | + private String productionDepartment; | |
27 | + | |
28 | + /** | |
29 | + * 订单hold时间 | |
30 | + */ | |
31 | + private String holdTime; | |
32 | + | |
33 | + /** | |
34 | + * 基础订单信息 | |
35 | + */ | |
36 | + private OrderBaseInfoDO baseInfoDO; | |
37 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/CheckOrderBaseItemVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应付款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class CheckOrderBaseItemVO implements Serializable { | |
22 | + | |
23 | + private Long orderId; | |
24 | + | |
25 | + /** | |
26 | + * checkNo编码 | |
27 | + */ | |
28 | + private String checkNo; | |
29 | + | |
30 | + /** | |
31 | + * 生产科 | |
32 | + */ | |
33 | + private String productionDepartment; | |
34 | + | |
35 | + /** | |
36 | + * 生成科总价 | |
37 | + */ | |
38 | + private BigDecimal productionDepartmentTotalPrice; | |
39 | + | |
40 | + | |
41 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/FinanceEventJobVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
4 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
5 | +import lombok.*; | |
6 | +import lombok.experimental.SuperBuilder; | |
7 | + | |
8 | +@Data | |
9 | +@AllArgsConstructor | |
10 | +@ToString | |
11 | +@NoArgsConstructor | |
12 | +@EqualsAndHashCode(callSuper = false) | |
13 | +@SuperBuilder | |
14 | +public class FinanceEventJobVO { | |
15 | + | |
16 | + //应收款。 | |
17 | + private InvoiceBillOrderDO invoiceBillOrderDO; | |
18 | + //未收款。 | |
19 | + private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; | |
20 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InnerProfitRatioQueryVO.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 javax.validation.constraints.NotEmpty; | |
8 | +import javax.validation.constraints.NotNull; | |
9 | +import java.io.Serializable; | |
10 | +import java.math.BigDecimal; | |
11 | +import java.util.List; | |
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 InnerProfitRatioQueryVO extends BasePageVO implements Serializable { | |
26 | + | |
27 | + /** | |
28 | + * ids | |
29 | + */ | |
30 | + @NotEmpty(message = "选择订单不能为空") | |
31 | + private List<Long> ids; | |
32 | + /** | |
33 | + * 客户编码 | |
34 | + */ | |
35 | + @NotEmpty(message = "客户编码不能为空") | |
36 | + private String customerCode; | |
37 | + | |
38 | + /** | |
39 | + * 项目号 | |
40 | + */ | |
41 | + @NotEmpty(message = "项目号不能为空") | |
42 | + private List<String> projectNo; | |
43 | + | |
44 | + /** | |
45 | + * 项目开发开始时间 | |
46 | + */ | |
47 | + @NotEmpty(message = "项目开发开始时间不能为空") | |
48 | + private String projectStartTime; | |
49 | + | |
50 | + /** | |
51 | + * 项目开发结束时间 | |
52 | + */ | |
53 | + @NotEmpty(message = "项目开发结束时间不能为空") | |
54 | + private String projectEndTime; | |
55 | + | |
56 | + /** | |
57 | + * 生产科预算金额由财务手动输入 | |
58 | + */ | |
59 | + @NotNull(message = "生产科预算金额不能为空") | |
60 | + private BigDecimal productionDepartmentPredictPrice; | |
61 | + | |
62 | + | |
63 | + /** | |
64 | + * 实际发生费用 手动输入 | |
65 | + */ | |
66 | + @NotNull(message = "实际发生费用不能为空") | |
67 | + private BigDecimal productionActualPrice; | |
68 | +} | |
69 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InnerProfitRatioResultVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 业务/研发净利润分析 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:34 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InnerProfitRatioResultVO implements Serializable { | |
22 | + | |
23 | + | |
24 | + /** | |
25 | + * 客户编码 | |
26 | + */ | |
27 | + private String customerCode; | |
28 | + | |
29 | + /** | |
30 | + * 项目号 | |
31 | + */ | |
32 | + private String projectNo; | |
33 | + | |
34 | + /** | |
35 | + * 项目开发开始时间 | |
36 | + */ | |
37 | + private String projectStartTime; | |
38 | + | |
39 | + /** | |
40 | + * 项目开发结束时间 | |
41 | + */ | |
42 | + private String projectEndTime; | |
43 | + | |
44 | + /** | |
45 | + * 生产持续时间 | |
46 | + */ | |
47 | + private Integer projectDays; | |
48 | + | |
49 | + /** | |
50 | + * 订单数量 | |
51 | + */ | |
52 | + private Integer orderCount; | |
53 | + | |
54 | + /** | |
55 | + * 客户总价$ | |
56 | + */ | |
57 | + private Double customerTotalPrice; | |
58 | + | |
59 | + | |
60 | + /** | |
61 | + * 生产科预算金额由财务手动输入 | |
62 | + */ | |
63 | + private BigDecimal productionDepartmentPredictPrice; | |
64 | + | |
65 | + | |
66 | + /** | |
67 | + * 实际发生费用 手动输入 | |
68 | + */ | |
69 | + private BigDecimal productionActualPrice; | |
70 | + | |
71 | + /** | |
72 | + * 生产科总价合计 | |
73 | + */ | |
74 | + private BigDecimal productionDepartmentTotalPrice; | |
75 | + | |
76 | + | |
77 | + /** | |
78 | + * 预算占比 | |
79 | + * 预算占比计算(实际发生费用/预算金额 | |
80 | + */ | |
81 | + private BigDecimal predictRatio; | |
82 | + | |
83 | + /** | |
84 | + * 预算占比与实际占比差 | |
85 | + * 预算占比与实际占比差计算(1-预算占比) | |
86 | + */ | |
87 | + private BigDecimal predictAndActualRatio; | |
88 | + | |
89 | + | |
90 | + /** | |
91 | + * 内部生产毛利润计算:生产科总价-实际发生费用就是得出 | |
92 | + */ | |
93 | + private BigDecimal grossProfit; | |
94 | + | |
95 | + /** | |
96 | + * 内部生产固定成本 | |
97 | + * 内部生产固定成本计算:生产持续时间*每天的固定成本(固定成本从系统配置中进行获取) | |
98 | + */ | |
99 | + private BigDecimal innerProduceFixProfit; | |
100 | + | |
101 | + /** | |
102 | + * 内部生产提成计算:订单数量*单价(单价从系统配置中进行获取) | |
103 | + */ | |
104 | + private BigDecimal innerProduceTotalPrice; | |
105 | + | |
106 | + /** | |
107 | + * 内部生产净利润计算:生产科总价-实际发生费用-内部生产提成 | |
108 | + */ | |
109 | + private BigDecimal innerProduceTotalProfit; | |
110 | + | |
111 | +} | |
112 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBaseOrderQueryVO.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 javax.validation.constraints.NotBlank; | |
8 | +import java.io.Serializable; | |
9 | + | |
10 | +/** | |
11 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
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 InvoiceBaseOrderQueryVO extends BasePageVO implements Serializable { | |
23 | + | |
24 | + /** | |
25 | + * 发票单号 | |
26 | + */ | |
27 | + @NotBlank(message = "发票单号不能为空") | |
28 | + private String invoiceNo; | |
29 | +} | |
30 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAmountInfoVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单 -- 其他金额信息 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceBillAmountInfoVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + | |
25 | + /** | |
26 | + * 报关单url地址 | |
27 | + */ | |
28 | + private String bgUrl; | |
29 | + | |
30 | + /** | |
31 | + * 实际应收金额 | |
32 | + */ | |
33 | + private BigDecimal actualReceivableAmount; | |
34 | + /** | |
35 | + * 实际应付金额1 | |
36 | + */ | |
37 | + private BigDecimal actualPayedAmount1; | |
38 | + /** | |
39 | + * 实际应付金额2 | |
40 | + */ | |
41 | + private BigDecimal actualPayedAmount2; | |
42 | + /** | |
43 | + * 实际应付金额3 | |
44 | + */ | |
45 | + private BigDecimal actualPayedAmount3; | |
46 | + /** | |
47 | + * 其他费用金额 | |
48 | + */ | |
49 | + private BigDecimal otherAmount; | |
50 | + | |
51 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAnalysisExportVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceBillAnalysisExportVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + | |
25 | + /** | |
26 | + * 客户编码 | |
27 | + */ | |
28 | + private String customerCode; | |
29 | + | |
30 | + /** | |
31 | + * 发票单号 | |
32 | + */ | |
33 | + private String invoiceNo; | |
34 | + | |
35 | + /** | |
36 | + * 客户总价$ | |
37 | + */ | |
38 | + private BigDecimal customerTotalPrice; | |
39 | + | |
40 | + /** | |
41 | + * 发生扣款金额 | |
42 | + */ | |
43 | + private BigDecimal deductAmount; | |
44 | + | |
45 | + /** | |
46 | + * 实际应收金额 | |
47 | + */ | |
48 | + private BigDecimal actualReceivableAmount; | |
49 | + | |
50 | + /** | |
51 | + * 实际应付金额 | |
52 | + */ | |
53 | + private BigDecimal actualPayedAmount; | |
54 | + | |
55 | + /** | |
56 | + * 实际应收 - 实际应付 | |
57 | + * 其他费用金额汇总 | |
58 | + */ | |
59 | + private BigDecimal otherAmount; | |
60 | + | |
61 | + /** | |
62 | + * 未付金额 | |
63 | + */ | |
64 | + private BigDecimal otherTotalAmount; | |
65 | + | |
66 | + /** | |
67 | + * 必须回款日期 | |
68 | + */ | |
69 | + private String backRefundDate; | |
70 | + | |
71 | + /** | |
72 | + * 实际回款日期 | |
73 | + */ | |
74 | + private String actualRefundDate; | |
75 | +// | |
76 | +// /** | |
77 | +// * 其他金额汇总 | |
78 | +// */ | |
79 | +// private BigDecimal unPayedAmount; | |
80 | + | |
81 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAnalysisResultVO.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.math.BigDecimal; | |
8 | +import java.util.List; | |
9 | + | |
10 | +/** | |
11 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:33 | |
15 | + */ | |
16 | +@Data | |
17 | +@AllArgsConstructor | |
18 | +@ToString | |
19 | +@NoArgsConstructor | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class InvoiceBillAnalysisResultVO implements Serializable { | |
23 | + | |
24 | + | |
25 | + /** | |
26 | + * 导出列表 | |
27 | + */ | |
28 | + private List<InvoiceBillAnalysisExportVO> exportVOS; | |
29 | + | |
30 | + /** | |
31 | + * 合计数据 | |
32 | + */ | |
33 | + | |
34 | + /** | |
35 | + * 客户总价$ | |
36 | + */ | |
37 | + private BigDecimal customerTotalPrice; | |
38 | + | |
39 | + /** | |
40 | + * 发生扣款金额 | |
41 | + */ | |
42 | + private BigDecimal deductAmount; | |
43 | + | |
44 | + /** | |
45 | + * 实际应收金额总计 实际应收1+2+3 | |
46 | + */ | |
47 | + private BigDecimal actualReceivableAmount; | |
48 | + | |
49 | + /** | |
50 | + * 未收金额合计 实际应收-发生扣款金额总计 | |
51 | + */ | |
52 | + private BigDecimal actualPayedAmount; | |
53 | + | |
54 | + /** | |
55 | + * 客户总金额-发生扣款金额总计 | |
56 | + * 实际应收 | |
57 | + */ | |
58 | + private BigDecimal otherAmount; | |
59 | + | |
60 | + /** | |
61 | + * 未付金额合计 | |
62 | + */ | |
63 | + private BigDecimal otherTotalAmount; | |
64 | + | |
65 | + /** | |
66 | + * 合计数据 | |
67 | + */ | |
68 | + | |
69 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAnalysisVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.AllArgsConstructor; | |
4 | +import lombok.Data; | |
5 | +import lombok.EqualsAndHashCode; | |
6 | +import lombok.ToString; | |
7 | +import lombok.experimental.SuperBuilder; | |
8 | + | |
9 | +import java.io.Serializable; | |
10 | + | |
11 | +/** | |
12 | + * 应收款账单 -- 分析 | |
13 | + * | |
14 | + * @author makejava | |
15 | + * @since 2024-08-05 16:26:33 | |
16 | + */ | |
17 | +@Data | |
18 | +@AllArgsConstructor | |
19 | +@ToString | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class InvoiceBillAnalysisVO extends InvoiceBillOrderQueryVO implements Serializable { | |
23 | + | |
24 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillCommitApplyVO.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 | + | |
8 | +/** | |
9 | + * 应收款账单 -- 提交审核 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:33 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class InvoiceBillCommitApplyVO implements Serializable { | |
21 | + | |
22 | + private Long id; | |
23 | + private String actualRefundDate; | |
24 | + private String payee; | |
25 | + | |
26 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillCreateVO.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.util.List; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceBillCreateVO implements Serializable { | |
22 | + private static final long serialVersionUID = 543899167451834300L; | |
23 | + | |
24 | + private Long id; | |
25 | + | |
26 | + /** | |
27 | + * 发票单号 | |
28 | + */ | |
29 | + private String invoiceNo; | |
30 | + | |
31 | + /** | |
32 | + * 报关单url地址 | |
33 | + */ | |
34 | + private String bgUrl; | |
35 | + | |
36 | + /** | |
37 | + * 必须回款日期 | |
38 | + */ | |
39 | + private String backRefundDate; | |
40 | + | |
41 | + /** | |
42 | + * 订单id集合 | |
43 | + */ | |
44 | + private List<Long> orderIds; | |
45 | + | |
46 | + | |
47 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillDeductInfoVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单 -- 扣款信息 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceBillDeductInfoVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + | |
25 | + /** | |
26 | + * 发票单号 | |
27 | + */ | |
28 | + private String invoiceNo; | |
29 | + | |
30 | + /** | |
31 | + * 发生扣款金额 | |
32 | + */ | |
33 | + private BigDecimal deductAmount; | |
34 | + | |
35 | + /** | |
36 | + * 扣款单url地址 | |
37 | + */ | |
38 | + private String deductUrl; | |
39 | + | |
40 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillMappingQueryVO.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 | + | |
10 | +/** | |
11 | + * 应收款账单关联订单映射表(InvoiceBillMapping)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:36 | |
15 | + */ | |
16 | +@Data | |
17 | +@AllArgsConstructor | |
18 | +@ToString | |
19 | +@NoArgsConstructor | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class InvoiceBillMappingQueryVO extends BasePageVO implements Serializable { | |
23 | + private static final long serialVersionUID = -10772282327497511L; | |
24 | + | |
25 | + private List<Long> ids; | |
26 | + | |
27 | + | |
28 | + private Long id; | |
29 | + /** | |
30 | + * 发票单号 | |
31 | + */ | |
32 | + private String invoiceNo; | |
33 | + /** | |
34 | + * invoice账单id | |
35 | + */ | |
36 | + private Long invoiceBillId; | |
37 | + /** | |
38 | + * 订单id | |
39 | + */ | |
40 | + private Long orderId; | |
41 | + | |
42 | + | |
43 | +} | |
44 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillMappingVO.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 | + | |
8 | +/** | |
9 | + * 应收款账单关联订单映射表(InvoiceBillMapping)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:36 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class InvoiceBillMappingVO implements Serializable { | |
21 | + private static final long serialVersionUID = -55765026730369748L; | |
22 | + | |
23 | + private Long id; | |
24 | + /** | |
25 | + * 发票单号 | |
26 | + */ | |
27 | + private String invoiceNo; | |
28 | + /** | |
29 | + * invoice账单id | |
30 | + */ | |
31 | + private Long invoiceBillId; | |
32 | + /** | |
33 | + * 订单id | |
34 | + */ | |
35 | + private Long orderId; | |
36 | + | |
37 | + | |
38 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrdeBaserResultVO.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 InvoiceBillOrdeBaserResultVO { | |
13 | + | |
14 | + /** | |
15 | + * 客户编码 | |
16 | + */ | |
17 | + private String customerCode; | |
18 | + /** | |
19 | + * 项目号 | |
20 | + */ | |
21 | + private String projectNo; | |
22 | + /** | |
23 | + * 内部编号 | |
24 | + */ | |
25 | + private String innerNo; | |
26 | + /** | |
27 | + * 客户po号 | |
28 | + */ | |
29 | + private String customerPo; | |
30 | + /** | |
31 | + * 客户STYLE# | |
32 | + */ | |
33 | + private String customerStyle; | |
34 | + /** | |
35 | + * Modelo(REFERENCE) | |
36 | + */ | |
37 | + private String modeleLo; | |
38 | + /** | |
39 | + * 缩略图片地址 这里不确认前端拿到的数据是缩略图url还是图片url,先采用缩略图url。 | |
40 | + */ | |
41 | + private String smallPicUrl; | |
42 | + /** | |
43 | + * 数量 | |
44 | + */ | |
45 | + private Integer orderCount; | |
46 | + /** | |
47 | + * 客户单价 $ | |
48 | + */ | |
49 | + private Double customerPrice; | |
50 | + /** | |
51 | + * 客户总价 $ | |
52 | + */ | |
53 | + private Double customerTotalPrice; | |
54 | + | |
55 | + | |
56 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.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 | + | |
10 | +/** | |
11 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
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 InvoiceBillOrderQueryVO extends BasePageVO implements Serializable { | |
23 | + | |
24 | + private List<Long> ids; | |
25 | + private Long id; | |
26 | + | |
27 | + /** | |
28 | + * 发票单号 | |
29 | + */ | |
30 | + private String invoiceNo; | |
31 | + | |
32 | + /** | |
33 | + * 总经理审核状态 -1,未提交审核,0:待审核、1:审核通过,2:审核驳回 | |
34 | + */ | |
35 | + private Integer status; | |
36 | + | |
37 | + /** | |
38 | + * 客户编码 | |
39 | + */ | |
40 | + private String customerCode; | |
41 | + | |
42 | + /** | |
43 | + * 项目号 | |
44 | + */ | |
45 | + private String projectNo; | |
46 | + | |
47 | + /** | |
48 | + * 生产科 | |
49 | + */ | |
50 | + private String productionDepartment; | |
51 | + | |
52 | + /** | |
53 | + * 内部编号 | |
54 | + */ | |
55 | + private String innerNo; | |
56 | + | |
57 | + /** | |
58 | + * 客户po号 | |
59 | + */ | |
60 | + private String customerPo; | |
61 | + | |
62 | + /** | |
63 | + * 开始时间 | |
64 | + */ | |
65 | + private String startTime; | |
66 | + | |
67 | + /** | |
68 | + * 结束时间 | |
69 | + */ | |
70 | + private String endTime; | |
71 | +} | |
72 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceBillOrderVO implements Serializable { | |
22 | + private static final long serialVersionUID = 543899167451834300L; | |
23 | + | |
24 | + private Long id; | |
25 | + | |
26 | + /** | |
27 | + * 发票单号 | |
28 | + */ | |
29 | + private String invoiceNo; | |
30 | + | |
31 | + /** | |
32 | + * 报关单url地址 | |
33 | + */ | |
34 | + private String bgUrl; | |
35 | + | |
36 | + /** | |
37 | + * 必须回款日期 | |
38 | + */ | |
39 | + private String backRefundDate; | |
40 | + | |
41 | + /** | |
42 | + * 发生扣款金额 | |
43 | + */ | |
44 | + private BigDecimal deductAmount; | |
45 | + | |
46 | + /** | |
47 | + * 扣款单url地址 | |
48 | + */ | |
49 | + private String deductUrl; | |
50 | + | |
51 | + /** | |
52 | + * 实际应收金额 | |
53 | + */ | |
54 | + private BigDecimal actualReceivableAmount; | |
55 | + | |
56 | + /** | |
57 | + * 实际应付金额1 | |
58 | + */ | |
59 | + private BigDecimal actualPayedAmount1; | |
60 | + | |
61 | + /** | |
62 | + * 实际应付金额2 | |
63 | + */ | |
64 | + private BigDecimal actualPayedAmount2; | |
65 | + | |
66 | + /** | |
67 | + * 实际应付金额3 | |
68 | + */ | |
69 | + private BigDecimal actualPayedAmount3; | |
70 | + | |
71 | + /** | |
72 | + * 其他费用金额 | |
73 | + */ | |
74 | + private BigDecimal otherAmount; | |
75 | + | |
76 | + /** | |
77 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
78 | + */ | |
79 | + private Integer status; | |
80 | + | |
81 | + | |
82 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceHoldTimeItemVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import com.order.erp.domain.dto.order.OrderBaseInfoDO; | |
4 | +import lombok.*; | |
5 | +import lombok.experimental.SuperBuilder; | |
6 | + | |
7 | +import java.io.Serializable; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单 -- holdTime | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceHoldTimeItemVO implements Serializable { | |
22 | + | |
23 | + /** | |
24 | + * 客户编码 | |
25 | + */ | |
26 | + private String customerCode; | |
27 | + | |
28 | + /** | |
29 | + * 订单hold时间 | |
30 | + */ | |
31 | + private String holdTime; | |
32 | + | |
33 | + /** | |
34 | + * 基础订单信息 | |
35 | + */ | |
36 | + private OrderBaseInfoDO baseInfoDO; | |
37 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceOrderBaseItemVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单表(InvoiceBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:33 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class InvoiceOrderBaseItemVO implements Serializable { | |
22 | + | |
23 | + private Long orderId; | |
24 | + | |
25 | + /** | |
26 | + * invoice编码 | |
27 | + */ | |
28 | + private String invoiceCode; | |
29 | + | |
30 | + /** | |
31 | + * 客户编码 | |
32 | + */ | |
33 | + private String customerCode; | |
34 | + | |
35 | + /** | |
36 | + * 客户总价$ | |
37 | + */ | |
38 | + private BigDecimal customerTotalPrice; | |
39 | + | |
40 | + | |
41 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderApplyResultVO.java
src/main/java/com/order/erp/domain/vo/order/OrderLockFieldVO.java
1 | 1 | package com.order.erp.domain.vo.order; |
2 | 2 | |
3 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
4 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
3 | 5 | import lombok.*; |
4 | 6 | import lombok.experimental.SuperBuilder; |
5 | 7 | |
... | ... | @@ -44,6 +46,16 @@ public class OrderLockFieldVO implements Serializable { |
44 | 46 | private OrderInspectionStageFieldVO inspectionStageFields; |
45 | 47 | |
46 | 48 | /** |
49 | + * 应收款账单字段 | |
50 | + */ | |
51 | + private InvoiceBillOrderDO invoiceBillOrderDO; | |
52 | + | |
53 | + /** | |
54 | + * 应付款账单字段 | |
55 | + */ | |
56 | + private ProducePaymentCheckBillOrderDO checkBillOrderDO; | |
57 | + | |
58 | + /** | |
47 | 59 | * 导出指定订单id集合 |
48 | 60 | */ |
49 | 61 | private List<Long> orderIds; | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderUnlockFieldApplyVO.java
src/main/java/com/order/erp/domain/vo/order/ProducePaymentBaseOrderQueryVO.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 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class ProducePaymentBaseOrderQueryVO extends BasePageVO implements Serializable { | |
22 | + | |
23 | + /** | |
24 | + * 生产科对账单 | |
25 | + */ | |
26 | + private String checkNo; | |
27 | + | |
28 | +} | |
29 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentBillOrderAnalysisVO.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 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class ProducePaymentBillOrderAnalysisVO extends BasePageVO implements Serializable { | |
22 | + | |
23 | + /** | |
24 | + * 生产科对账单 | |
25 | + */ | |
26 | + private String checkNo; | |
27 | + | |
28 | +} | |
29 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillAmountInfoVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class ProducePaymentCheckBillAmountInfoVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + | |
25 | + /** | |
26 | + * 实际应收金额 | |
27 | + */ | |
28 | + private BigDecimal actualPayedAmount; | |
29 | + /** | |
30 | + * 实际应付金额1 | |
31 | + */ | |
32 | + private BigDecimal actualPayedAmount1; | |
33 | + /** | |
34 | + * 实际应付金额2 | |
35 | + */ | |
36 | + private BigDecimal actualPayedAmount2; | |
37 | + /** | |
38 | + * 实际应付金额3 | |
39 | + */ | |
40 | + private BigDecimal actualPayedAmount3; | |
41 | + | |
42 | + | |
43 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillCommitApplyVO.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 | + | |
8 | +/** | |
9 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:35 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class ProducePaymentCheckBillCommitApplyVO implements Serializable { | |
21 | + | |
22 | + private Long id; | |
23 | + | |
24 | + private String actualPayedDate; | |
25 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillCreateVO.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.util.List; | |
8 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class ProducePaymentCheckBillCreateVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + /** | |
25 | + * 生产科对账单 | |
26 | + */ | |
27 | + private String checkNo; | |
28 | + | |
29 | + /** | |
30 | + * 生产科应付款日期 | |
31 | + */ | |
32 | + private String payedDate; | |
33 | + | |
34 | + /** | |
35 | + * 订单id集合 | |
36 | + */ | |
37 | + private List<Long> orderIds; | |
38 | + | |
39 | + | |
40 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillDeductInfoVO.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.math.BigDecimal; | |
8 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +@Data | |
16 | +@AllArgsConstructor | |
17 | +@ToString | |
18 | +@NoArgsConstructor | |
19 | +@EqualsAndHashCode(callSuper = false) | |
20 | +@SuperBuilder | |
21 | +public class ProducePaymentCheckBillDeductInfoVO implements Serializable { | |
22 | + | |
23 | + private Long id; | |
24 | + /** | |
25 | + * 生产科对账单 | |
26 | + */ | |
27 | + private String checkNo; | |
28 | + | |
29 | + /** | |
30 | + * 生产科扣款责任部门 | |
31 | + */ | |
32 | + private String deductDept; | |
33 | + | |
34 | + /** | |
35 | + * 发生扣款金额 | |
36 | + */ | |
37 | + private BigDecimal deductAmount; | |
38 | + | |
39 | + /** | |
40 | + * 扣款单url地址 | |
41 | + */ | |
42 | + private String deductUrl; | |
43 | + | |
44 | + | |
45 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillInvoiceInfoVO.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 | + | |
8 | +/** | |
9 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:35 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class ProducePaymentCheckBillInvoiceInfoVO implements Serializable { | |
21 | + | |
22 | + private Long id; | |
23 | + | |
24 | + /** | |
25 | + * 发票url地址 | |
26 | + */ | |
27 | + private String invoiceUrl; | |
28 | + | |
29 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillOrderQueryVO.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 | + | |
10 | +/** | |
11 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
12 | + * | |
13 | + * @author makejava | |
14 | + * @since 2024-08-05 16:26:35 | |
15 | + */ | |
16 | +@Data | |
17 | +@AllArgsConstructor | |
18 | +@ToString | |
19 | +@NoArgsConstructor | |
20 | +@EqualsAndHashCode(callSuper = false) | |
21 | +@SuperBuilder | |
22 | +public class ProducePaymentCheckBillOrderQueryVO extends BasePageVO implements Serializable { | |
23 | + | |
24 | + private List<Long> ids; | |
25 | + | |
26 | + | |
27 | + private Long id; | |
28 | + /** | |
29 | + * 生产科对账单 | |
30 | + */ | |
31 | + private String checkNo; | |
32 | + /** | |
33 | + * 总经理审核状态 -1,未提交审核,0:待审核、1:审核通过,2:审核驳回 | |
34 | + */ | |
35 | + private Integer status; | |
36 | + | |
37 | + /** | |
38 | + * 客户编码 | |
39 | + */ | |
40 | + private String customerCode; | |
41 | + | |
42 | + /** | |
43 | + * 项目号 | |
44 | + */ | |
45 | + private String projectNo; | |
46 | + | |
47 | + /** | |
48 | + * 生产科 | |
49 | + */ | |
50 | + private String productionDepartment; | |
51 | + | |
52 | + /** | |
53 | + * 内部编号 | |
54 | + */ | |
55 | + private String innerNo; | |
56 | + | |
57 | + /** | |
58 | + * 客户po号 | |
59 | + */ | |
60 | + private String customerPo; | |
61 | + | |
62 | + /** | |
63 | + * 开始时间 | |
64 | + */ | |
65 | + private String startTime; | |
66 | + | |
67 | + /** | |
68 | + * 结束时间 | |
69 | + */ | |
70 | + private String endTime; | |
71 | + | |
72 | +} | |
73 | + | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillOrderVO.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 | + | |
8 | +/** | |
9 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 | |
10 | + * | |
11 | + * @author makejava | |
12 | + * @since 2024-08-05 16:26:35 | |
13 | + */ | |
14 | +@Data | |
15 | +@AllArgsConstructor | |
16 | +@ToString | |
17 | +@NoArgsConstructor | |
18 | +@EqualsAndHashCode(callSuper = false) | |
19 | +@SuperBuilder | |
20 | +public class ProducePaymentCheckBillOrderVO implements Serializable { | |
21 | + private static final long serialVersionUID = 239047702576286556L; | |
22 | + | |
23 | + private Long id; | |
24 | + /** | |
25 | + * 生产科对账单 | |
26 | + */ | |
27 | + private String checkNo; | |
28 | + /** | |
29 | + * 发票url地址 | |
30 | + */ | |
31 | + private String invoiceUrl; | |
32 | + /** | |
33 | + * 扣款单url地址 | |
34 | + */ | |
35 | + private String deductPdfUrl; | |
36 | + /** | |
37 | + * 生产科应付款日期 | |
38 | + */ | |
39 | + private String payedDate; | |
40 | + /** | |
41 | + * 生产科扣款责任部门 | |
42 | + */ | |
43 | + private String deductDept; | |
44 | + /** | |
45 | + * 生产科扣款金额 | |
46 | + */ | |
47 | + private Double deductAmount; | |
48 | + /** | |
49 | + * 实际应付金额 | |
50 | + */ | |
51 | + private Double actualPayedAmount; | |
52 | + /** | |
53 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
54 | + */ | |
55 | + private Integer status; | |
56 | + | |
57 | + | |
58 | +} | ... | ... |
src/main/java/com/order/erp/job/FinanceJob.java
0 → 100644
1 | +package com.order.erp.job; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
4 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | |
5 | +import com.order.erp.common.constant.Constant; | |
6 | +import com.order.erp.common.utils.EmailSendUtils; | |
7 | +import com.order.erp.common.utils.RedisUtils; | |
8 | +import com.order.erp.domain.ApplyStatusEnum; | |
9 | +import com.order.erp.domain.FinanceOverEnum; | |
10 | +import com.order.erp.domain.dto.BaseDO; | |
11 | +import com.order.erp.domain.dto.admin.AdminUserDO; | |
12 | +import com.order.erp.domain.dto.admin.AdminUserRoleDO; | |
13 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
14 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
15 | +import com.order.erp.domain.vo.order.FinanceEventJobVO; | |
16 | +import com.order.erp.service.admin.AdminUserRoleService; | |
17 | +import com.order.erp.service.admin.AdminUserService; | |
18 | +import com.order.erp.service.order.InvoiceBillOrderService; | |
19 | +import com.order.erp.service.order.ProducePaymentCheckBillOrderService; | |
20 | +import lombok.extern.slf4j.Slf4j; | |
21 | +import org.apache.logging.log4j.util.Strings; | |
22 | +import org.springframework.scheduling.annotation.Scheduled; | |
23 | +import org.springframework.stereotype.Component; | |
24 | + | |
25 | +import javax.annotation.Resource; | |
26 | +import java.time.LocalDate; | |
27 | +import java.util.*; | |
28 | +import java.util.concurrent.TimeUnit; | |
29 | +import java.util.stream.Collectors; | |
30 | + | |
31 | +@Slf4j | |
32 | +@Component | |
33 | +public class FinanceJob { | |
34 | + @Resource | |
35 | + private EmailSendUtils emailSendUtils; | |
36 | + @Resource | |
37 | + private InvoiceBillOrderService invoiceBillOrderService; | |
38 | + @Resource | |
39 | + private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; | |
40 | + @Resource | |
41 | + private AdminUserRoleService adminUserRoleService; | |
42 | + @Resource | |
43 | + private AdminUserService adminUserService; | |
44 | + @Resource | |
45 | + private RedisUtils redisService; | |
46 | + //每天的7:15执行一次 | |
47 | +// @Scheduled(cron = "0 15 7 * * ?", zone = "Asia/Shanghai") | |
48 | + | |
49 | + //每分钟执行一次 | |
50 | + @Scheduled(cron = "0 * * * * ?", zone = "Asia/Shanghai") | |
51 | + public void financeJob() { | |
52 | + List<InvoiceBillOrderDO> eventInvoiceBillOrderDO=invoiceBillOrderService.getOverEvnetList(); | |
53 | + List<ProducePaymentCheckBillOrderDO> eventProducePaymentCheckBillOrderDO= producePaymentCheckBillOrderService.getOverEventList(); | |
54 | + LocalDate today = LocalDate.now(); | |
55 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = eventInvoiceBillOrderDO.stream().filter(invoice -> invoice.getBackRefundDate() != null && Strings.isNotEmpty(invoice.getBackRefundDate())) | |
56 | + .collect(Collectors.toList()); | |
57 | + Set<String> emailList= new HashSet<>(); | |
58 | + Set<String> twoEmail = new HashSet<>(); | |
59 | + //获取所有用户。 | |
60 | + List<AdminUserDO> allUser = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() | |
61 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)); | |
62 | + Map<Long, AdminUserDO> adminUserDOMap = allUser.stream().collect(Collectors.toMap(AdminUserDO::getId, AdminUserDO -> AdminUserDO, (existing, replacement) -> existing)); | |
63 | + Map<String, AdminUserDO> userName = allUser.stream().collect(Collectors.toMap(AdminUserDO::getUserName, AdminUserDO -> AdminUserDO, (existing, replacement) -> existing)); | |
64 | + //获取财务邮箱。 | |
65 | + List<AdminUserRoleDO> list = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() | |
66 | + .eq(AdminUserRoleDO::getRoleId, Constant.SEVEN)); | |
67 | + Set<Long> userIds= list.stream().map(AdminUserRoleDO::getUserId).collect(Collectors.toSet()); | |
68 | + List<String> financeEmailList = userIds.stream() | |
69 | + .map(userId -> Optional.ofNullable(adminUserDOMap.get(userId)) | |
70 | + .map(AdminUserDO::getEmail) | |
71 | + .filter(Strings::isNotEmpty) | |
72 | + .orElse(null)) | |
73 | + .filter(Objects::nonNull) | |
74 | + .collect(Collectors.toList()); | |
75 | + | |
76 | + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ | |
77 | + invoiceBillOrderDOList.forEach(invoiceBillOrderDO -> { | |
78 | + if(today.toString().equals(invoiceBillOrderDO.getBackRefundDate())) { | |
79 | + emailList.clear(); | |
80 | + String redisKey = "invoice:" + invoiceBillOrderDO.getId()+invoiceBillOrderDO.getInvoiceNo(); | |
81 | + //判断redis中是否有这个值,如果没有就发送邮件,如果有的话就不用发送邮件。 | |
82 | + if(!redisService.hasKey(redisKey)){ | |
83 | + if (CollectionUtils.isNotEmpty(financeEmailList)) { | |
84 | + emailList.addAll(financeEmailList); | |
85 | + } | |
86 | + Set<String> userSet = new HashSet<>(); | |
87 | + userSet.add(invoiceBillOrderDO.getCreateBy()); | |
88 | + userSet.add(invoiceBillOrderDO.getBusinesPerson()); | |
89 | + List<String> emails = userSet.stream() | |
90 | + .map(userName::get) | |
91 | + .filter(Objects::nonNull) // 确保 AdminUserDO 不为 null | |
92 | + .map(AdminUserDO::getEmail) // 获取邮箱 | |
93 | + .filter(Strings::isNotEmpty) // 确保邮箱不为空 | |
94 | + .collect(Collectors.toList()); | |
95 | + if (CollectionUtils.isNotEmpty(emails)) { | |
96 | + emailList.addAll(emails); | |
97 | + } | |
98 | + FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); | |
99 | + eventJobVO.setInvoiceBillOrderDO(invoiceBillOrderDO); | |
100 | + emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(emailList), eventJobVO); | |
101 | + boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.TWENTY_FIRST, TimeUnit.DAYS);// 设置为21天后过期 | |
102 | + if(set){ | |
103 | + redisService.saddWithExpiry(Constant.REDISKEY,redisKey, Constant.TWENTY_FIRST, TimeUnit.DAYS); | |
104 | + } | |
105 | + } | |
106 | + } | |
107 | + }); | |
108 | + } | |
109 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList= eventProducePaymentCheckBillOrderDO.stream().filter(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getPayedDate()!=null && Strings.isNotEmpty(producePaymentCheckBillOrderDO.getPayedDate())) | |
110 | + .collect(Collectors.toList()); | |
111 | + if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ | |
112 | + producePaymentCheckBillOrderDOList.forEach(producePaymentCheckBillOrderDO -> { | |
113 | + if(today.toString().equals(producePaymentCheckBillOrderDO.getPayedDate())){ | |
114 | + emailList.clear(); // 每次清除 uniqueEmails | |
115 | + String redisKey = "check:" + producePaymentCheckBillOrderDO.getId()+producePaymentCheckBillOrderDO.getCheckNo(); | |
116 | + if(!redisService.hasKey(redisKey)) { | |
117 | + if (CollectionUtils.isNotEmpty(financeEmailList)) { | |
118 | + emailList.addAll(financeEmailList); | |
119 | + } | |
120 | + //发送邮件 | |
121 | + Set<String> userSet = new HashSet<>(); | |
122 | + //获取业务,财务,管理员 | |
123 | + userSet.add(producePaymentCheckBillOrderDO.getCreateBy()); | |
124 | + userSet.add(producePaymentCheckBillOrderDO.getBusinesPerson()); | |
125 | + List<String> emails = userSet.stream() | |
126 | + .map(userName::get) | |
127 | + .filter(Objects::nonNull) // 确保 AdminUserDO 不为 null | |
128 | + .map(AdminUserDO::getEmail) // 获取邮箱 | |
129 | + .filter(Strings::isNotEmpty) // 确保邮箱不为空 | |
130 | + .collect(Collectors.toList()); | |
131 | + | |
132 | + if (CollectionUtils.isNotEmpty(emails)) { | |
133 | + emailList.addAll(emails); | |
134 | + } | |
135 | + FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); | |
136 | + eventJobVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDO); | |
137 | + emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(emailList), eventJobVO); | |
138 | + boolean set = redisService.set(redisKey, producePaymentCheckBillOrderDO, Constant.TWENTY_FIRST, TimeUnit.DAYS);// 设置为21天后过期 | |
139 | + if(set){ | |
140 | + redisService.saddWithExpiry(Constant.REDISKEY,redisKey, Constant.TWENTY_FIRST, TimeUnit.DAYS); | |
141 | + } | |
142 | + } | |
143 | + } | |
144 | + }); | |
145 | + } | |
146 | + | |
147 | + Map<String, List<Long>> stringListMap = byKeysGetValue(); | |
148 | + if (stringListMap != null) { | |
149 | + // 获取 InvoiceBillOrderDO 类型的 ID 列表 | |
150 | + List<Long> invoiceBillOrderIds = stringListMap.get("InvoiceBillOrderDO"); | |
151 | + if (invoiceBillOrderIds != null && !invoiceBillOrderIds.isEmpty()) { | |
152 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderService.listByIds(invoiceBillOrderIds); | |
153 | + invoiceBillOrderDOS.forEach(x->{ | |
154 | + if(ApplyStatusEnum.NO_COMMIT.getStatus()==x.getStatus() || ApplyStatusEnum.AUDIT_REFUSE.getStatus()==x.getStatus()){ | |
155 | + twoEmail.clear(); | |
156 | + twoEmail.addAll(financeEmailList); | |
157 | + Set<String> userSet = new HashSet<>(); | |
158 | + userSet.add(x.getCreateBy()); | |
159 | + userSet.add(x.getBusinesPerson()); | |
160 | + List<String> emails = userSet.stream() | |
161 | + .map(userName::get) | |
162 | + .filter(Objects::nonNull) // 确保 AdminUserDO 不为 null | |
163 | + .map(AdminUserDO::getEmail) // 获取邮箱 | |
164 | + .filter(Strings::isNotEmpty) // 确保邮箱不为空 | |
165 | + .collect(Collectors.toList()); | |
166 | + | |
167 | + if (CollectionUtils.isNotEmpty(emails)) { | |
168 | + twoEmail.addAll(emails); | |
169 | + } | |
170 | + FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); | |
171 | + eventJobVO.setInvoiceBillOrderDO(x); | |
172 | + emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); | |
173 | + } | |
174 | + }); | |
175 | + } | |
176 | + // 获取 ProducePaymentCheckBillOrderDO 类型的 ID 列表 | |
177 | + List<Long> producePaymentCheckBillIds = stringListMap.get("ProducePaymentCheckBillOrderDO"); | |
178 | + if (producePaymentCheckBillIds != null && !producePaymentCheckBillIds.isEmpty()) { | |
179 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderService.listByIds(producePaymentCheckBillIds); | |
180 | + producePaymentCheckBillOrderDOS.forEach(x->{ | |
181 | + if(ApplyStatusEnum.NO_COMMIT.getStatus()==x.getStatus() || ApplyStatusEnum.AUDIT_REFUSE.getStatus()==x.getStatus()){ | |
182 | + twoEmail.clear(); | |
183 | + twoEmail.addAll(financeEmailList); | |
184 | + Set<String> userSet = new HashSet<>(); | |
185 | + userSet.add(x.getCreateBy()); | |
186 | + userSet.add(x.getBusinesPerson()); | |
187 | + List<String> emails = userSet.stream() | |
188 | + .map(userName::get) | |
189 | + .filter(Objects::nonNull) // 确保 AdminUserDO 不为 null | |
190 | + .map(AdminUserDO::getEmail) // 获取邮箱 | |
191 | + .filter(Strings::isNotEmpty) // 确保邮箱不为空 | |
192 | + .collect(Collectors.toList()); | |
193 | + if (CollectionUtils.isNotEmpty(emails)) { | |
194 | + twoEmail.addAll(emails); | |
195 | + } | |
196 | + FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); | |
197 | + eventJobVO.setProducePaymentCheckBillOrderDO(x); | |
198 | + emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); | |
199 | + } | |
200 | + }); | |
201 | + } | |
202 | + } | |
203 | + } | |
204 | + | |
205 | + public Map<String, List<Long>> byKeysGetValue() { | |
206 | + Map<String, List<Long>> resultMap = new HashMap<>(); | |
207 | + List<Long> producePaymentCheckBillIds = new ArrayList<>(); | |
208 | + List<Long> invoiceBillOrderIds = new ArrayList<>(); | |
209 | + // 获取所有的 keys对应的value。 | |
210 | + Set<Object> redisKeySet = redisService.getSetValues(Constant.REDISKEY); | |
211 | + if (CollectionUtils.isNotEmpty(redisKeySet)) { | |
212 | + List<Object> validKeys = new ArrayList<>(); | |
213 | + | |
214 | + // 遍历所有 keys,检查每个 key 的过期时间 | |
215 | + for (Object key :redisKeySet) { | |
216 | + Long expireTime = redisService.getExpire(key); // 获取过期时间(单位:秒) | |
217 | + | |
218 | + if (expireTime != null && expireTime > 0) { // 确保 expireTime 有值且大于 0 | |
219 | + long daysRemaining = TimeUnit.SECONDS.toDays(expireTime); | |
220 | + // 如果剩余时间为14天7天或1天,则符合条件 | |
221 | + if (daysRemaining==14 || daysRemaining == 7 || daysRemaining == 1) { | |
222 | + validKeys.add(key); // 满足条件,加入有效的 keys 列表 | |
223 | + } | |
224 | + } | |
225 | + } | |
226 | + // 如果存在有效的 keys,获取其对应的值 | |
227 | + if (CollectionUtils.isNotEmpty(validKeys)) { | |
228 | + List<Object> values = redisService.multiGet(validKeys); | |
229 | + if (CollectionUtils.isNotEmpty(values)) { | |
230 | + // 遍历每个 value,按类型分别收集 ID | |
231 | + for (Object item : values) { | |
232 | + if (item instanceof ProducePaymentCheckBillOrderDO) { | |
233 | + ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = (ProducePaymentCheckBillOrderDO) item; | |
234 | + producePaymentCheckBillIds.add(producePaymentCheckBillOrderDO.getId()); | |
235 | + } else if (item instanceof InvoiceBillOrderDO) { | |
236 | + InvoiceBillOrderDO invoiceBillOrderDO = (InvoiceBillOrderDO) item; | |
237 | + invoiceBillOrderIds.add(invoiceBillOrderDO.getId()); | |
238 | + } | |
239 | + } | |
240 | + } | |
241 | + // 将结果放入 resultMap | |
242 | + resultMap.put("ProducePaymentCheckBillOrderDO", producePaymentCheckBillIds); | |
243 | + resultMap.put("InvoiceBillOrderDO", invoiceBillOrderIds); | |
244 | + } | |
245 | + } | |
246 | + return resultMap; | |
247 | + } | |
248 | + | |
249 | +} | ... | ... |
src/main/java/com/order/erp/mapper/order/CheckBillMappingMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
4 | +import com.order.erp.domain.dto.order.CheckBillMappingDO; | |
5 | + | |
6 | +/** | |
7 | + * 生产科对账单应收账单映射表(CheckBillMapping)表数据库访问层 | |
8 | + * | |
9 | + * @author makejava | |
10 | + * @since 2024-08-05 16:26:37 | |
11 | + */ | |
12 | +public interface CheckBillMappingMapper extends BaseMapper<CheckBillMappingDO> { | |
13 | + | |
14 | + | |
15 | +} | |
16 | + | ... | ... |
src/main/java/com/order/erp/mapper/order/InvoiceBillMappingMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
4 | +import com.order.erp.domain.dto.order.InvoiceBillMappingDO; | |
5 | + | |
6 | +/** | |
7 | + * 应收款账单关联订单映射表(InvoiceBillMapping)表数据库访问层 | |
8 | + * | |
9 | + * @author makejava | |
10 | + * @since 2024-08-05 16:26:36 | |
11 | + */ | |
12 | +public interface InvoiceBillMappingMapper extends BaseMapper<InvoiceBillMappingDO> { | |
13 | + | |
14 | + | |
15 | +} | |
16 | + | ... | ... |
src/main/java/com/order/erp/mapper/order/InvoiceBillOrderMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
4 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
5 | +import org.apache.ibatis.annotations.Select; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单表(InvoiceBillOrder)表数据库访问层 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:34 | |
14 | + */ | |
15 | +public interface InvoiceBillOrderMapper extends BaseMapper<InvoiceBillOrderDO> { | |
16 | +@Select("SELECT * FROM invoice_bill_order WHERE status in('-1','20') and enable_flag=10 and DATE_SUB(CURDATE(), INTERVAL 1 YEAR) <= date(create_time);") | |
17 | +List<InvoiceBillOrderDO> getOverEventList(); | |
18 | + | |
19 | +} | |
20 | + | ... | ... |
src/main/java/com/order/erp/mapper/order/ProducePaymentCheckBillOrderMapper.java
0 → 100644
1 | +package com.order.erp.mapper.order; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
4 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
5 | +import org.apache.ibatis.annotations.Select; | |
6 | + | |
7 | +import java.util.List; | |
8 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)表数据库访问层 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:35 | |
14 | + */ | |
15 | +public interface ProducePaymentCheckBillOrderMapper extends BaseMapper<ProducePaymentCheckBillOrderDO> { | |
16 | + @Select("SELECT * FROM produce_payment_check_bill_order WHERE status in('-1','20') and enable_flag=10 and DATE_SUB(CURDATE(), INTERVAL 1 YEAR) <= date(create_time);") | |
17 | + List<ProducePaymentCheckBillOrderDO> getOverEventList(); | |
18 | + | |
19 | + | |
20 | +} | |
21 | + | ... | ... |
src/main/java/com/order/erp/service/admin/impl/AdminUserServiceImpl.java
... | ... | @@ -346,6 +346,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser |
346 | 346 | if(RoleEnum.PRODUCE_USER.getId().equals(x.getRoleId())){ |
347 | 347 | result.set(RoleEnum.PRODUCE_USER); |
348 | 348 | } |
349 | + if (RoleEnum.FINANCE_USER.getId().equals(x.getRoleId())) { | |
350 | + result.set(RoleEnum.FINANCE_USER); | |
351 | + } | |
349 | 352 | }); |
350 | 353 | return ServerResult.success(result.get()); |
351 | 354 | } | ... | ... |
src/main/java/com/order/erp/service/impl/SystemSettingServiceImpl.java
... | ... | @@ -2,6 +2,7 @@ package com.order.erp.service.impl; |
2 | 2 | |
3 | 3 | import cn.hutool.core.bean.BeanUtil; |
4 | 4 | import cn.hutool.core.collection.CollUtil; |
5 | +import com.alibaba.fastjson.JSONArray; | |
5 | 6 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
6 | 7 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
7 | 8 | import com.baomidou.mybatisplus.core.metadata.IPage; |
... | ... | @@ -11,8 +12,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
11 | 12 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
12 | 13 | import com.order.erp.common.constant.Constant; |
13 | 14 | import com.order.erp.common.constant.ServerResult; |
15 | +import com.order.erp.common.exception.BusinessException; | |
14 | 16 | import com.order.erp.domain.dto.BaseDO; |
15 | 17 | import com.order.erp.domain.dto.SystemSettingDO; |
18 | +import com.order.erp.domain.vo.CostSettingItemVO; | |
16 | 19 | import com.order.erp.domain.vo.SystemSettingQueryVO; |
17 | 20 | import com.order.erp.domain.vo.SystemSettingResultVO; |
18 | 21 | import com.order.erp.domain.vo.SystemSettingVO; |
... | ... | @@ -84,6 +87,9 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S |
84 | 87 | List<SystemSettingResultVO> queryVos = systemSettingDOS.stream().map(x -> { |
85 | 88 | SystemSettingResultVO resultVO = new SystemSettingResultVO(); |
86 | 89 | BeanUtils.copyProperties(x, resultVO); |
90 | + if (x.getSettingType() == Constant.THREE && StringUtils.isNotBlank(x.getRelationValue())) { | |
91 | + resultVO.setCostSettingItemVOS(JSONArray.parseArray(x.getRelationValue(), CostSettingItemVO.class)); | |
92 | + } | |
87 | 93 | return resultVO; |
88 | 94 | }).collect(Collectors.toList()); |
89 | 95 | webVOPage.setRecords(queryVos); |
... | ... | @@ -117,6 +123,23 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S |
117 | 123 | if (Objects.nonNull(systemSettingVO.getId())) { |
118 | 124 | systemSettingVO.setId(null); |
119 | 125 | } |
126 | + if (systemSettingVO.getSettingType() == Constant.THREE || systemSettingVO.getSettingType() == Constant.FOUR) { | |
127 | + if (CollectionUtils.isEmpty(systemSettingVO.getCostSettingItemVOS())) { | |
128 | + throw new BusinessException("成本配置项不能为空"); | |
129 | + } | |
130 | + if(StringUtils.isNotBlank(systemSettingVO.getSettingValue())){ | |
131 | + SystemSettingDO systemSettingDO = getOne(new LambdaQueryWrapper<SystemSettingDO>() | |
132 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
133 | + .eq(SystemSettingDO::getSettingValue, systemSettingVO.getSettingValue()) | |
134 | + .eq(SystemSettingDO::getSettingType,systemSettingVO.getSettingType())); | |
135 | + if(Objects.nonNull(systemSettingDO)){ | |
136 | + throw new BusinessException("已配置"+systemSettingVO.getSettingValue()+"的提成数据!"); | |
137 | + } | |
138 | + } | |
139 | +// systemSettingVO.setRelationCode("costSettingItem"); | |
140 | +// systemSettingVO.setRelationName("成本配置项集合"); | |
141 | + systemSettingVO.setRelationValue(JSONArray.toJSONString(systemSettingVO.getCostSettingItemVOS())); | |
142 | + } | |
120 | 143 | SystemSettingDO systemSettingDo = BeanUtil.copyProperties(systemSettingVO, SystemSettingDO.class); |
121 | 144 | |
122 | 145 | save(systemSettingDo); |
... | ... | @@ -136,6 +159,14 @@ public class SystemSettingServiceImpl extends ServiceImpl<SystemSettingMapper, S |
136 | 159 | if (Objects.isNull(systemSettingVO.getId())) { |
137 | 160 | return ServerResult.fail("id 不能为空"); |
138 | 161 | } |
162 | + if (Objects.nonNull(systemSettingVO.getSettingType()) && (systemSettingVO.getSettingType() == Constant.THREE || systemSettingVO.getSettingType() == Constant.FOUR)) { | |
163 | + if (CollectionUtils.isEmpty(systemSettingVO.getCostSettingItemVOS())) { | |
164 | + throw new BusinessException("成本配置项不能为空"); | |
165 | + } | |
166 | +// systemSettingVO.setRelationCode("costSettingItem"); | |
167 | +// systemSettingVO.setRelationName("成本配置项集合"); | |
168 | + systemSettingVO.setRelationValue(JSONArray.toJSONString(systemSettingVO.getCostSettingItemVOS())); | |
169 | + } | |
139 | 170 | SystemSettingDO systemSettingDo = BeanUtil.copyProperties(systemSettingVO, SystemSettingDO.class); |
140 | 171 | |
141 | 172 | updateById(systemSettingDo); | ... | ... |
src/main/java/com/order/erp/service/order/CheckBillMappingService.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.CheckBillMappingDO; | |
6 | +import com.order.erp.domain.vo.order.CheckBillMappingQueryVO; | |
7 | +import com.order.erp.domain.vo.order.CheckBillMappingVO; | |
8 | + | |
9 | +/** | |
10 | + * 生产科对账单应收账单映射表(CheckBillMapping)表服务接口 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:37 | |
14 | + */ | |
15 | +public interface CheckBillMappingService extends IService<CheckBillMappingDO> { | |
16 | + | |
17 | + /** | |
18 | + * 通过ID查询单条数据 | |
19 | + * | |
20 | + * @param checkBillMappingQueryVO 主键 | |
21 | + * @return 实例对象 | |
22 | + */ | |
23 | + ServerResult queryById(CheckBillMappingQueryVO checkBillMappingQueryVO); | |
24 | + | |
25 | + /** | |
26 | + * 分页查询 | |
27 | + * | |
28 | + * @param checkBillMappingQueryVO 筛选条件 | |
29 | + * @return 查询结果 | |
30 | + */ | |
31 | + ServerResult list(CheckBillMappingQueryVO checkBillMappingQueryVO); | |
32 | + | |
33 | + /** | |
34 | + * 新增数据 | |
35 | + * | |
36 | + * @param checkBillMappingVO 数据VO | |
37 | + * @return 新增结果 | |
38 | + */ | |
39 | + ServerResult add(CheckBillMappingVO checkBillMappingVO); | |
40 | + | |
41 | + /** | |
42 | + * 修改数据 | |
43 | + * | |
44 | + * @param checkBillMappingVO 数据VO | |
45 | + * @return 编辑结果 | |
46 | + */ | |
47 | + ServerResult edit(CheckBillMappingVO checkBillMappingVO); | |
48 | + | |
49 | + /** | |
50 | + * 通过主键删除数据 | |
51 | + * | |
52 | + * @param checkBillMappingQueryVO 筛选条件 | |
53 | + * @return 是否成功 | |
54 | + */ | |
55 | + ServerResult deleteById(CheckBillMappingQueryVO checkBillMappingQueryVO); | |
56 | + | |
57 | +} | ... | ... |
src/main/java/com/order/erp/service/order/InvoiceBillMappingService.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.InvoiceBillMappingDO; | |
6 | +import com.order.erp.domain.vo.order.InvoiceBillMappingQueryVO; | |
7 | +import com.order.erp.domain.vo.order.InvoiceBillMappingVO; | |
8 | + | |
9 | +/** | |
10 | + * 应收款账单关联订单映射表(InvoiceBillMapping)表服务接口 | |
11 | + * | |
12 | + * @author makejava | |
13 | + * @since 2024-08-05 16:26:36 | |
14 | + */ | |
15 | +public interface InvoiceBillMappingService extends IService<InvoiceBillMappingDO> { | |
16 | + | |
17 | + /** | |
18 | + * 通过ID查询单条数据 | |
19 | + * | |
20 | + * @param invoiceBillMappingQueryVO 主键 | |
21 | + * @return 实例对象 | |
22 | + */ | |
23 | + ServerResult queryById(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO); | |
24 | + | |
25 | + /** | |
26 | + * 分页查询 | |
27 | + * | |
28 | + * @param invoiceBillMappingQueryVO 筛选条件 | |
29 | + * @return 查询结果 | |
30 | + */ | |
31 | + ServerResult list(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO); | |
32 | + | |
33 | + /** | |
34 | + * 新增数据 | |
35 | + * | |
36 | + * @param invoiceBillMappingVO 数据VO | |
37 | + * @return 新增结果 | |
38 | + */ | |
39 | + ServerResult add(InvoiceBillMappingVO invoiceBillMappingVO); | |
40 | + | |
41 | + /** | |
42 | + * 修改数据 | |
43 | + * | |
44 | + * @param invoiceBillMappingVO 数据VO | |
45 | + * @return 编辑结果 | |
46 | + */ | |
47 | + ServerResult edit(InvoiceBillMappingVO invoiceBillMappingVO); | |
48 | + | |
49 | + /** | |
50 | + * 通过主键删除数据 | |
51 | + * | |
52 | + * @param invoiceBillMappingQueryVO 筛选条件 | |
53 | + * @return 是否成功 | |
54 | + */ | |
55 | + ServerResult deleteById(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO); | |
56 | + | |
57 | +} | ... | ... |
src/main/java/com/order/erp/service/order/InvoiceBillOrderService.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.InvoiceBillOrderDO; | |
6 | +import com.order.erp.domain.vo.order.*; | |
7 | + | |
8 | +import javax.servlet.http.HttpServletResponse; | |
9 | +import java.io.IOException; | |
10 | +import java.util.List; | |
11 | + | |
12 | +/** | |
13 | + * 应收款账单表(InvoiceBillOrder)表服务接口 | |
14 | + * | |
15 | + * @author makejava | |
16 | + * @since 2024-08-05 16:26:34 | |
17 | + */ | |
18 | +public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { | |
19 | + | |
20 | + /** | |
21 | + * 分页查询 | |
22 | + * | |
23 | + * @param invoiceBillOrderQueryVO 筛选条件 | |
24 | + * @return 查询结果 | |
25 | + */ | |
26 | + ServerResult listByPage(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO); | |
27 | + | |
28 | + /** | |
29 | + * @param queryVO | |
30 | + * @return | |
31 | + */ | |
32 | + ServerResult listBaseOrderInfoBy(InvoiceBaseOrderQueryVO queryVO); | |
33 | + | |
34 | + /** | |
35 | + * @param queryVO | |
36 | + * @return | |
37 | + */ | |
38 | + ServerResult listAnalysisBy(InvoiceBillAnalysisVO queryVO); | |
39 | + | |
40 | + /** | |
41 | + * @param queryVO | |
42 | + * @return | |
43 | + */ | |
44 | + ServerResult export(HttpServletResponse response, InvoiceBillAnalysisVO queryVO) throws IOException; | |
45 | + | |
46 | + /** | |
47 | + * 新增数据 | |
48 | + * | |
49 | + * @param createVO 数据VO | |
50 | + * @return 新增结果 | |
51 | + */ | |
52 | + ServerResult create(InvoiceBillCreateVO createVO); | |
53 | + | |
54 | + /** | |
55 | + * | |
56 | + * @param createVO | |
57 | + * @return | |
58 | + */ | |
59 | + ServerResult getBackRefundDate(InvoiceBillCreateVO createVO); | |
60 | + | |
61 | + /** | |
62 | + * 更新扣款信息 | |
63 | + * | |
64 | + * @param deductInfoVO 数据VO | |
65 | + * @return 编辑结果 | |
66 | + */ | |
67 | + ServerResult updateDeductInfo(InvoiceBillDeductInfoVO deductInfoVO); | |
68 | + | |
69 | + /** | |
70 | + * 更新其他金额信息 | |
71 | + * | |
72 | + * @param amountInfoVO | |
73 | + * @return | |
74 | + */ | |
75 | + ServerResult updateAmountInfo(InvoiceBillAmountInfoVO amountInfoVO); | |
76 | + | |
77 | + /** | |
78 | + * 提交审核 | |
79 | + * | |
80 | + * @param commitApplyVO | |
81 | + * @return | |
82 | + */ | |
83 | + ServerResult commitApply(InvoiceBillCommitApplyVO commitApplyVO); | |
84 | + | |
85 | + /** | |
86 | + * 通过主键删除数据 | |
87 | + * | |
88 | + * @param invoiceBillOrderQueryVO 筛选条件 | |
89 | + * @return 是否成功 | |
90 | + */ | |
91 | + ServerResult deleteById(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO); | |
92 | + | |
93 | + /** | |
94 | + * 通过主键得到扣款信息。 | |
95 | + * | |
96 | + * @param invoiceBillOrderQueryVO 筛选条件 | |
97 | + * @return 是否成功 | |
98 | + */ | |
99 | + ServerResult getDeductUrlById(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO); | |
100 | + /** | |
101 | + * 重新更新报关单 | |
102 | + * | |
103 | + * @param bgUrl | |
104 | + * @return 是否成功 | |
105 | + */ | |
106 | + ServerResult reUploadBgurl(InvoiceBillCreateVO bgUrl); | |
107 | + | |
108 | + /** | |
109 | + * 导出审核收款单数据。 | |
110 | + * | |
111 | + * @param queryVO | |
112 | + * @return 是否成功 | |
113 | + */ | |
114 | + ServerResult exportReceipt(HttpServletResponse response,InvoiceBillOrderDO queryVO) throws IOException; | |
115 | + | |
116 | + List<InvoiceBillOrderDO> getOverEvnetList(); | |
117 | + | |
118 | +} | ... | ... |
src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.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.ProducePaymentCheckBillOrderDO; | |
6 | +import com.order.erp.domain.vo.order.*; | |
7 | + | |
8 | +import javax.servlet.http.HttpServletResponse; | |
9 | +import java.io.IOException; | |
10 | +import java.util.List; | |
11 | + | |
12 | +/** | |
13 | + * 生产科对账单应收账单(ProducePaymentCheckBillOrder)表服务接口 | |
14 | + * | |
15 | + * @author makejava | |
16 | + * @since 2024-08-05 16:26:35 | |
17 | + */ | |
18 | +public interface ProducePaymentCheckBillOrderService extends IService<ProducePaymentCheckBillOrderDO> { | |
19 | + | |
20 | + /** | |
21 | + * 分页查询 | |
22 | + * | |
23 | + * @param queryVO 筛选条件 | |
24 | + * @return 查询结果 | |
25 | + */ | |
26 | + ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO); | |
27 | + | |
28 | + /** | |
29 | + * 基础订单查询 | |
30 | + * | |
31 | + * @param queryVO | |
32 | + * @return | |
33 | + */ | |
34 | + ServerResult listBaseOrderInfoBy(ProducePaymentBaseOrderQueryVO queryVO); | |
35 | + | |
36 | + /** | |
37 | + * 分析列表 | |
38 | + * | |
39 | + * @param analysisVO | |
40 | + * @return | |
41 | + */ | |
42 | + ServerResult listAnalysisBy(ProducePaymentCheckBillOrderQueryVO analysisVO); | |
43 | + | |
44 | + /** | |
45 | + * | |
46 | + * @param analysisVO | |
47 | + * @return | |
48 | + */ | |
49 | + ServerResult export(HttpServletResponse response, ProducePaymentCheckBillOrderQueryVO analysisVO) throws IOException; | |
50 | + | |
51 | + /** | |
52 | + * 创建生产科应付单据 | |
53 | + * | |
54 | + * @param createVO 数据VO | |
55 | + * @return 新增结果 | |
56 | + */ | |
57 | + ServerResult create(ProducePaymentCheckBillCreateVO createVO); | |
58 | + | |
59 | + /** | |
60 | + * 获取生产科应回款日期 | |
61 | + * | |
62 | + * @param createVO | |
63 | + * @return | |
64 | + */ | |
65 | + ServerResult getPayedDate(ProducePaymentCheckBillCreateVO createVO); | |
66 | + | |
67 | + /** | |
68 | + * 更新扣款信息 | |
69 | + * | |
70 | + * @param deductInfoVO 数据VO | |
71 | + * @return 编辑结果 | |
72 | + */ | |
73 | + ServerResult updateDeductInfo(ProducePaymentCheckBillDeductInfoVO deductInfoVO); | |
74 | + | |
75 | + /** | |
76 | + * 更新其他金额信息 | |
77 | + * | |
78 | + * @param amountInfoVO | |
79 | + * @return | |
80 | + */ | |
81 | + ServerResult updateAmountInfo(ProducePaymentCheckBillAmountInfoVO amountInfoVO); | |
82 | + | |
83 | + /** | |
84 | + * 更新发票信息 | |
85 | + * | |
86 | + * @param invoiceInfoVO | |
87 | + * @return | |
88 | + */ | |
89 | + ServerResult updateInvoiceInfo(ProducePaymentCheckBillInvoiceInfoVO invoiceInfoVO); | |
90 | + | |
91 | + /** | |
92 | + * @param commitApplyVO | |
93 | + * @return | |
94 | + */ | |
95 | + ServerResult commitApply(ProducePaymentCheckBillCommitApplyVO commitApplyVO); | |
96 | + | |
97 | + /** | |
98 | + * 通过主键删除数据 | |
99 | + * | |
100 | + * @param producePaymentCheckBillOrderQueryVO 筛选条件 | |
101 | + * @return 是否成功 | |
102 | + */ | |
103 | + ServerResult deleteById(ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO); | |
104 | + | |
105 | + ServerResult getDeductUrlById(ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO); | |
106 | + | |
107 | + ServerResult getInvoiceUrlById(ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO); | |
108 | + ServerResult exportReceipt(HttpServletResponse response, ProducePaymentCheckBillOrderDO queryVO) throws IOException; | |
109 | + | |
110 | + List<ProducePaymentCheckBillOrderDO> getOverEventList(); | |
111 | +} | ... | ... |
src/main/java/com/order/erp/service/order/impl/CalculateProfitServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | |
2 | + | |
3 | +import com.alibaba.fastjson.JSONObject; | |
4 | +import com.alibaba.fastjson.TypeReference; | |
5 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
6 | +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; | |
7 | +import com.order.erp.common.constant.Constant; | |
8 | +import com.order.erp.common.constant.ServerResult; | |
9 | +import com.order.erp.common.exception.BusinessException; | |
10 | +import com.order.erp.common.utils.DateUtils; | |
11 | +import com.order.erp.common.utils.EasyPdfUtils; | |
12 | +import com.order.erp.domain.dto.BaseDO; | |
13 | +import com.order.erp.domain.dto.SystemSettingDO; | |
14 | +import com.order.erp.domain.dto.order.OrderBaseInfoDO; | |
15 | +import com.order.erp.domain.dto.order.OrderProfitAnalysisDO; | |
16 | +import com.order.erp.domain.vo.CostSettingItemVO; | |
17 | +import com.order.erp.domain.vo.order.BusinessProfitRatioQueryVO; | |
18 | +import com.order.erp.domain.vo.order.BusinessProfitRatioResultVO; | |
19 | +import com.order.erp.domain.vo.order.InnerProfitRatioQueryVO; | |
20 | +import com.order.erp.domain.vo.order.InnerProfitRatioResultVO; | |
21 | +import com.order.erp.service.SystemSettingService; | |
22 | +import com.order.erp.service.order.OrderBaseInfoService; | |
23 | +import lombok.extern.slf4j.Slf4j; | |
24 | +import org.apache.poi.ss.usermodel.*; | |
25 | +import org.apache.poi.ss.util.CellRangeAddress; | |
26 | +import org.apache.poi.xssf.usermodel.XSSFWorkbook; | |
27 | +import org.springframework.beans.BeanUtils; | |
28 | +import org.springframework.stereotype.Service; | |
29 | + | |
30 | +import javax.annotation.Resource; | |
31 | +import javax.servlet.http.HttpServletResponse; | |
32 | +import java.io.IOException; | |
33 | +import java.math.BigDecimal; | |
34 | +import java.math.RoundingMode; | |
35 | +import java.util.List; | |
36 | +import java.util.Objects; | |
37 | +import java.util.Set; | |
38 | +import java.util.function.Function; | |
39 | +import java.util.stream.Collectors; | |
40 | + | |
41 | +/** | |
42 | + * @author: xms | |
43 | + * @description: TODO | |
44 | + * @date: 2024/8/26 16:17 | |
45 | + * @version: 1.0 | |
46 | + */ | |
47 | +@Slf4j | |
48 | +@Service | |
49 | +public class CalculateProfitServiceImpl { | |
50 | + | |
51 | + | |
52 | + @Resource | |
53 | + private OrderBaseInfoService orderBaseInfoService; | |
54 | + | |
55 | + @Resource | |
56 | + private OrderProfitAnalysisServiceImpl orderProfitAnalysisService; | |
57 | + | |
58 | + @Resource | |
59 | + private EasyPdfUtils pdfUtils; | |
60 | + @Resource | |
61 | + private SystemSettingService systemSettingService; | |
62 | + | |
63 | + /** | |
64 | + * @param response | |
65 | + * @param queryVO | |
66 | + * @return | |
67 | + */ | |
68 | + public ServerResult businessProfitRatioExport(HttpServletResponse response, BusinessProfitRatioQueryVO queryVO) throws IOException { | |
69 | + BusinessProfitRatioResultVO resultVO = buildBusinessProfitRatioResultVO(queryVO); | |
70 | +// File file = pdfUtils.createBusinessProfitResultPdf(resultVO, "business_profit_ratio.pdf"); | |
71 | +// FileUtil.downloadFile(request, response, file, true); | |
72 | + //开始 | |
73 | + Workbook workbook = new XSSFWorkbook(); | |
74 | + Sheet sheet = workbook.createSheet("业务净利润分析表"); | |
75 | + Row row = sheet.createRow(0); | |
76 | + Cell cell = row.createCell(0); | |
77 | + cell.setCellValue("业务净利润分析表"); | |
78 | + sheet.setMargin(sheet.LeftMargin,0.5); | |
79 | + sheet.setMargin(sheet.RightMargin,0.5); | |
80 | + | |
81 | + CellStyle titleStyle = workbook.createCellStyle(); | |
82 | + Font titleFont = workbook.createFont(); | |
83 | + titleFont.setFontHeightInPoints((short) 26); // 字体大小 | |
84 | + titleFont.setBold(true); // 加粗 | |
85 | + titleFont.setFontName("等线"); | |
86 | + titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 | |
87 | + titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 | |
88 | + // 合并单元格(第一行的第一列到第三列) | |
89 | + sheet.addMergedRegion(new CellRangeAddress(0, 3, 0, 9)); | |
90 | + titleStyle.setFont(titleFont); | |
91 | + cell.setCellStyle(titleStyle); | |
92 | + | |
93 | + // 第二行 | |
94 | + createMergedCell(sheet, workbook, 4, 0, 4, 5, 0, 1, "项目号"); | |
95 | + createMergedCell(sheet, workbook, 4, 2, 4, 5, 2, 4, String.join(",",resultVO.getProjectNo())); | |
96 | + createMergedCell(sheet, workbook, 4, 5, 4, 5, 5, 6, "开始时间"); | |
97 | + createMergedCell(sheet, workbook, 4, 7, 4, 5, 7, 9, "结束时间"); | |
98 | +// 第三行 | |
99 | + createMergedCell(sheet, workbook, 6, 0, 6, 7, 0, 1, ""); | |
100 | + createMergedCell(sheet, workbook, 6, 2, 6, 7, 2, 4, "项目开始时间"); | |
101 | + createMergedCell(sheet, workbook, 6, 5, 6, 7, 5, 6, resultVO.getProjectStartTime()); | |
102 | + createMergedCell(sheet, workbook, 6, 7, 6, 7, 7, 9, resultVO.getProjectEndTime()); | |
103 | + | |
104 | +// 第四行 | |
105 | + createMergedCell(sheet, workbook, 8, 0, 8, 9, 0, 1, ""); | |
106 | + createMergedCell(sheet, workbook, 8, 2, 8, 9, 2, 4, "生产进行时间"); | |
107 | + createMergedCell(sheet, workbook, 8, 5, 8, 9, 5, 6, resultVO.getProduceStartTime()); | |
108 | + createMergedCell(sheet, workbook, 8, 7, 8, 9, 7, 9, resultVO.getProduceEndTime()); | |
109 | +//第五行 | |
110 | + createMergedCell(sheet, workbook, 10, 0, 10, 11, 0, 1, "客户编码"); | |
111 | + createMergedCell(sheet, workbook, 10, 2, 10, 11, 2, 4, resultVO.getCustomerCode()); | |
112 | + createMergedCell(sheet, workbook, 10, 5, 10, 11, 5, 6, ""); | |
113 | + createMergedCell(sheet, workbook, 10, 7, 10, 11, 7, 9, "备注"); | |
114 | +//第六行 | |
115 | + createMergedCell(sheet, workbook, 12, 0, 12, 13, 0, 4, "客户总金额计算"); | |
116 | + createMergedCell(sheet, workbook, 12, 5, 12, 13, 5, 6, "¥"+resultVO.getCustomerTotalPrice()); | |
117 | + createMergedCell(sheet, workbook, 12, 9, 12, 13, 7, 9, ""); | |
118 | +////第七行 | |
119 | + createMergedCell(sheet, workbook, 14, 0, 14, 15, 0, 4, "生产科总价合计"); | |
120 | + createMergedCell(sheet, workbook, 14, 5, 14, 15, 5, 6, "¥"+resultVO.getProductionDepartmentTotalPrice()); | |
121 | + createMergedCell(sheet, workbook, 14, 7, 14, 15, 7, 9, ""); | |
122 | +////第八行 | |
123 | + createMergedCell(sheet, workbook, 16, 0, 16, 17, 0, 4, "包装费用合计"); | |
124 | + createMergedCell(sheet, workbook, 16, 5, 16, 17, 5, 6, "¥"+resultVO.getPacketTotalPrice()); | |
125 | + createMergedCell(sheet, workbook, 16, 7, 16, 17, 7, 9, ""); | |
126 | +////第九行 | |
127 | + createMergedCell(sheet, workbook, 18, 0, 18, 19, 0, 4, "研发开发费合计"); | |
128 | + createMergedCell(sheet, workbook, 18, 5, 18, 19, 5, 6, "¥"+resultVO.getDevelopTotalPrice().setScale(2, RoundingMode.HALF_UP)); | |
129 | + createMergedCell(sheet, workbook, 18, 7, 18, 19, 7, 9, ""); | |
130 | +////第十行 | |
131 | + createMergedCell(sheet, workbook, 20, 0, 20, 21, 0, 4, "复制费用合计"); | |
132 | + createMergedCell(sheet, workbook, 20, 5, 20, 21, 5, 6, "¥"+resultVO.getCopyTotalPrice().setScale(2, RoundingMode.HALF_UP)); | |
133 | + createMergedCell(sheet, workbook, 20, 7, 20, 21, 7, 9, ""); | |
134 | +//第十一行 | |
135 | + createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 4, "固定成本"); | |
136 | + createMergedCell(sheet, workbook, 22, 5, 22, 23, 5, 6, "¥"+resultVO.getFixCost()); | |
137 | + createMergedCell(sheet, workbook, 22, 7, 22, 23, 7, 9, ""); | |
138 | +//第十二行 | |
139 | + createMergedCell(sheet, workbook, 24, 0, 24, 25, 0, 4, "西班牙提成"); | |
140 | + createMergedCell(sheet, workbook, 24, 5, 24, 25, 5, 6, "¥"+resultVO.getSpainRatioProfitPrice()); | |
141 | + createMergedCell(sheet, workbook, 24, 7, 24, 25, 7, 9, ""); | |
142 | +//第十三行 | |
143 | + createMergedCell(sheet, workbook, 26, 0, 26, 27, 0, 4, "中国团队提成"); | |
144 | + createMergedCell(sheet, workbook, 26, 5, 26, 27, 5, 6, "¥"+resultVO.getChinaRatioProfitPrice()); | |
145 | + createMergedCell(sheet, workbook, 26, 7, 26, 27, 7, 9, ""); | |
146 | + //第十四行 | |
147 | + createMergedCell(sheet, workbook, 28, 0, 28, 29, 0, 4, "支出合计"); | |
148 | + createMergedCell(sheet, workbook, 28, 5, 28, 29, 5, 6, "¥"+resultVO.getOutTotalPrice()); | |
149 | + createMergedCell(sheet, workbook, 28, 7, 28, 29, 7, 9, ""); | |
150 | +//第十五行 | |
151 | + createMergedCell(sheet, workbook, 30, 0, 30, 31, 0, 4, "毛利润"); | |
152 | + createMergedCell(sheet, workbook, 30, 5, 30, 31, 5, 6, "¥"+resultVO.getGrossProfit()); | |
153 | + createMergedCell(sheet, workbook, 30, 7, 30, 31, 7, 9, ""); | |
154 | +////第十六行 | |
155 | + createMergedCell(sheet, workbook, 32, 0, 32, 33, 0, 4, "研发贸易净利润"); | |
156 | + createMergedCell(sheet, workbook, 32, 5, 32, 33, 5, 6, "¥"+resultVO.getDevelopProfit()); | |
157 | + createMergedCell(sheet, workbook, 32, 7, 32, 33, 7, 9, ""); | |
158 | +////第十七行 | |
159 | + createMergedCell(sheet, workbook, 34, 0, 34, 35, 0, 4, "包装费用合计金额"); | |
160 | + createMergedCell(sheet, workbook, 34, 5, 34, 35, 5, 6, "¥"+resultVO.getPacketTotalPrice()); | |
161 | + createMergedCell(sheet, workbook, 34, 7, 34, 35, 7, 9, ""); | |
162 | +////第十八行 | |
163 | + createMergedCell(sheet, workbook, 36, 0, 36, 37, 0, 4, "包装费用实际金额"); | |
164 | + createMergedCell(sheet, workbook, 36, 5, 36, 37, 5, 6, "¥"+resultVO.getPacketActualTotalPrice().setScale(2, RoundingMode.HALF_UP)); | |
165 | + createMergedCell(sheet, workbook, 36, 7, 36, 37, 7, 9, ""); | |
166 | +////第十九行 | |
167 | + createMergedCell(sheet, workbook, 38, 0, 38, 39, 0, 4, "订单总数量"); | |
168 | + createMergedCell(sheet, workbook, 38, 5, 38, 39, 5, 6, String.valueOf(resultVO.getOrderCount())); | |
169 | + createMergedCell(sheet, workbook, 38, 7, 38, 39, 7, 9, ""); | |
170 | +////第二十行 | |
171 | + createMergedCell(sheet, workbook, 40, 0, 40, 41, 0, 4, "实际跟单单价=实际跟单费用/件数"); | |
172 | + createMergedCell(sheet, workbook, 40, 5, 40, 41, 5, 6, "¥"+resultVO.getActualRmbPrice()); | |
173 | + createMergedCell(sheet, workbook, 40, 7, 40, 41, 7, 9, ""); | |
174 | +//第二十一行 | |
175 | + createMergedCell(sheet, workbook, 42, 0, 42, 43, 0, 4, "实际跟单单价折算美金"); | |
176 | + createMergedCell(sheet, workbook, 42, 5, 42, 43, 5, 6, "$"+resultVO.getActualPrice()); | |
177 | + createMergedCell(sheet, workbook, 42, 7, 42, 43, 7, 9, ""); | |
178 | +//第二十二行 | |
179 | + createMergedCell(sheet, workbook, 44, 0, 44, 45, 0, 4, "包装费用收益"); | |
180 | + createMergedCell(sheet, workbook, 44, 5, 44, 45, 5, 6, "¥"+resultVO.getPacketProfitPrice()); | |
181 | + createMergedCell(sheet, workbook, 44, 7, 44, 45, 7, 9, ""); | |
182 | +//第二十三行 | |
183 | + createMergedCell(sheet, workbook, 46, 0, 46, 47, 0, 4, "实际汇率"); | |
184 | + createMergedCell(sheet, workbook, 46, 5, 46, 47, 5, 6, "¥"+resultVO.getActualRatio().setScale(2, RoundingMode.HALF_UP)); | |
185 | + createMergedCell(sheet, workbook, 46, 7, 46, 47, 7, 9, ""); | |
186 | +//第二十四行 | |
187 | + createMergedCell(sheet, workbook, 48, 0, 48, 49, 0, 4, "汇率收益"); | |
188 | + createMergedCell(sheet, workbook, 48, 5, 48, 49, 5, 6, "¥"+resultVO.getActualRatioProfitPrice()); | |
189 | + createMergedCell(sheet, workbook, 48, 7, 48, 49, 7, 9, ""); | |
190 | +//第二十五行 | |
191 | + createMergedCell(sheet, workbook, 50, 0, 50, 51, 0, 4, "综合收益"); | |
192 | + createMergedCell(sheet, workbook, 50, 5, 50, 51, 5, 6, "¥"+resultVO.getTotalProfitPrice()); | |
193 | + createMergedCell(sheet, workbook, 50, 7, 50, 51, 7, 9, ""); | |
194 | + response.setHeader("Content-Disposition", "attachment; filename=\"-.xlsx\""); | |
195 | + workbook.write(response.getOutputStream()); | |
196 | + workbook.close(); | |
197 | + //结束 | |
198 | + return ServerResult.success(); | |
199 | + } | |
200 | + | |
201 | + /** | |
202 | + * @param response | |
203 | + * @param queryVO | |
204 | + * @return | |
205 | + */ | |
206 | + public ServerResult innerProfitRatioExport(HttpServletResponse response,InnerProfitRatioQueryVO queryVO) throws IOException { | |
207 | + InnerProfitRatioResultVO resultVO = buildInnerProfitRatioResultVO(queryVO); | |
208 | +// File file = pdfUtils.createInnerProfitResultPdf(resultVO, "inner_profit_ratio.pdf"); | |
209 | +// FileUtil.downloadFile(request, response, file, true); | |
210 | +////开始 | |
211 | +//结束 | |
212 | + Workbook workbook = new XSSFWorkbook(); | |
213 | + Sheet sheet = workbook.createSheet("内部生产净利润分析表"); | |
214 | + Row row = sheet.createRow(0); | |
215 | + Cell cell = row.createCell(0); | |
216 | + cell.setCellValue("内部生产净利润分析表"); | |
217 | + | |
218 | + CellStyle titleStyle = workbook.createCellStyle(); | |
219 | + Font titleFont = workbook.createFont(); | |
220 | + titleFont.setFontHeightInPoints((short) 26); // 字体大小 | |
221 | + titleFont.setBold(true); // 加粗 | |
222 | + titleFont.setFontName("等线"); | |
223 | + titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 | |
224 | + titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 | |
225 | + // 合并单元格(第一行的第一列到第三列) | |
226 | + sheet.addMergedRegion(new CellRangeAddress(0, 3, 0, 10)); | |
227 | + titleStyle.setFont(titleFont); | |
228 | + cell.setCellStyle(titleStyle); | |
229 | + | |
230 | + // 第二行 | |
231 | + createMergedCell(sheet, workbook, 4, 0, 4, 5, 0, 1, "项目号"); | |
232 | + createMergedCell(sheet, workbook, 4, 2, 4, 5, 2, 3, resultVO.getProjectNo()); | |
233 | + createMergedCell(sheet, workbook, 4, 4, 4, 5, 4, 5, "开始时间"); | |
234 | + createMergedCell(sheet, workbook, 4, 6, 4, 5, 6, 7, "结束时间"); | |
235 | + createMergedCell(sheet, workbook, 4, 8,4, 5, 8, 10, "生产持续时间"); | |
236 | +// 第三行 | |
237 | + createMergedCell(sheet, workbook, 6, 0, 6, 7, 0, 1, ""); | |
238 | + createMergedCell(sheet, workbook, 6, 2, 6, 7, 2, 3, "项目开发时间"); | |
239 | + createMergedCell(sheet, workbook, 6, 4, 6, 7, 4, 5, resultVO.getProjectStartTime()); | |
240 | + createMergedCell(sheet, workbook, 6, 6, 6, 7, 6, 7, resultVO.getProjectEndTime()); | |
241 | + createMergedCell(sheet, workbook, 6, 8, 6, 7, 8, 10, String.valueOf(resultVO.getProjectDays())); | |
242 | + | |
243 | +// 第四行 | |
244 | + createMergedCell(sheet, workbook, 8, 0, 8, 9, 0, 1, "客户编码"); | |
245 | + createMergedCell(sheet, workbook, 8, 2, 8, 9, 2, 3, resultVO.getCustomerCode()); | |
246 | + createMergedCell(sheet, workbook, 8, 4, 8, 9, 4, 5, "明细"); | |
247 | + createMergedCell(sheet, workbook, 8, 6, 8, 9, 6, 7, "金额"); | |
248 | + createMergedCell(sheet, workbook, 8, 8, 8, 9, 8, 10, "订单数量"); | |
249 | +//第五行 | |
250 | + createMergedCell(sheet, workbook, 10, 0, 10, 11, 0, 3, "生产科总价合计"); | |
251 | + createMergedCell(sheet, workbook, 10, 4, 10, 11, 4, 5, "¥"+ resultVO.getProductionDepartmentTotalPrice()); | |
252 | + createMergedCell(sheet, workbook, 10, 6, 10, 11, 6, 7, "¥"+ resultVO.getProductionDepartmentTotalPrice()); | |
253 | + createMergedCell(sheet, workbook, 10, 8, 10, 11, 8, 10, String.valueOf(resultVO.getOrderCount())); | |
254 | +//第六行 | |
255 | + createMergedCell(sheet, workbook, 12, 0, 12, 13, 0, 3, "生产科预算金额"); | |
256 | + createMergedCell(sheet, workbook, 12, 4, 12, 13, 4, 5, "¥"+ resultVO.getProductionDepartmentPredictPrice().setScale(2, BigDecimal.ROUND_HALF_UP)); | |
257 | + createMergedCell(sheet, workbook, 12, 6, 12, 13, 6, 7, "预算占比"); | |
258 | + createMergedCell(sheet, workbook, 12, 8, 12, 13, 8, 10, "预算占比与实际占比差"); | |
259 | +//第七行 | |
260 | + createMergedCell(sheet, workbook, 14, 0, 14, 15, 0, 3, "实际发生费用"); | |
261 | + createMergedCell(sheet, workbook, 14, 4, 14, 15, 4, 5, "¥"+ resultVO.getProductionActualPrice().setScale(2, BigDecimal.ROUND_HALF_UP)); | |
262 | + createMergedCell(sheet, workbook, 14, 6, 14, 15, 6, 7, (resultVO.getPredictRatio())+"%"); | |
263 | + createMergedCell(sheet, workbook, 14, 8, 14, 15, 8, 10, (resultVO.getPredictAndActualRatio())+"%"); | |
264 | +//第八行 | |
265 | + createMergedCell(sheet, workbook, 16, 0, 16, 17, 0, 3, "内部生产毛利润"); | |
266 | + createMergedCell(sheet, workbook, 16, 4, 16, 17, 4, 5, "¥"+ resultVO.getGrossProfit()); | |
267 | + createMergedCell(sheet, workbook, 16, 6, 16, 17, 6, 7, ""); | |
268 | + createMergedCell(sheet, workbook, 16, 8, 16, 17, 8, 10, ""); | |
269 | +//第九行 | |
270 | + createMergedCell(sheet, workbook, 18, 0, 18, 19, 0, 3, "内部生产固定成本"); | |
271 | + createMergedCell(sheet, workbook, 18, 4, 18, 19, 4, 5, "¥"+ resultVO.getInnerProduceFixProfit()); | |
272 | + createMergedCell(sheet, workbook, 18, 6, 18, 19, 6, 7, ""); | |
273 | + createMergedCell(sheet, workbook, 18, 8, 18, 19, 8, 10, ""); | |
274 | +//第十行 | |
275 | + createMergedCell(sheet, workbook, 20, 0, 20, 21, 0, 3, "内部生产提成"); | |
276 | + createMergedCell(sheet, workbook, 20, 4, 20, 21, 4, 5, "¥"+ resultVO.getInnerProduceTotalPrice()); | |
277 | + createMergedCell(sheet, workbook, 20, 6, 20, 21, 6, 7, ""); | |
278 | + createMergedCell(sheet, workbook, 20, 8, 20, 21, 8, 10, ""); | |
279 | + //第十一行 | |
280 | + createMergedCell(sheet, workbook, 22, 0, 22, 23, 0, 3, "内部生产净利润"); | |
281 | + createMergedCell(sheet, workbook, 22, 4, 22, 23, 4, 5, "¥"+ resultVO.getInnerProduceTotalProfit()); | |
282 | + createMergedCell(sheet, workbook, 22, 6, 22, 23, 6, 7, ""); | |
283 | + createMergedCell(sheet, workbook, 22, 8, 22, 23, 8, 10, ""); | |
284 | + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8"); | |
285 | + response.setHeader("Content-Disposition", "attachment; filename=\"-.xlsx\""); | |
286 | + workbook.write(response.getOutputStream()); | |
287 | + workbook.close(); | |
288 | + return ServerResult.success(); | |
289 | + } | |
290 | + public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { | |
291 | + // 创建或获取当前行 | |
292 | + Row row = sheet.getRow(rowIndex); | |
293 | + if (row == null) { | |
294 | + row = sheet.createRow(rowIndex); | |
295 | + } | |
296 | + | |
297 | + // 创建第一个单元格并设置值 | |
298 | + Cell cell = row.createCell(colIndex); | |
299 | + cell.setCellValue(value); | |
300 | + | |
301 | + // 创建边框样式 | |
302 | + CellStyle titleStyle = workbook.createCellStyle(); | |
303 | + Font titleFont = workbook.createFont(); | |
304 | + titleFont.setFontHeightInPoints((short) 14); // 字体大小 | |
305 | + titleFont.setBold(true); // 加粗 | |
306 | + titleFont.setFontName("等线"); | |
307 | + titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 | |
308 | + titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 | |
309 | + titleStyle.setFont(titleFont); | |
310 | + | |
311 | + // 设置边框样式 | |
312 | + titleStyle.setBorderTop(BorderStyle.THIN); | |
313 | + titleStyle.setBorderBottom(BorderStyle.THIN); | |
314 | + titleStyle.setBorderLeft(BorderStyle.THIN); | |
315 | + titleStyle.setBorderRight(BorderStyle.THIN); | |
316 | + | |
317 | + // 应用样式到第一个单元格 | |
318 | + cell.setCellStyle(titleStyle); | |
319 | + | |
320 | + // 合并单元格 | |
321 | + sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, startCol, endCol)); | |
322 | + | |
323 | + // 为合并区域的每个单元格设置相同的样式 | |
324 | + for (int rowIndexCurrent = startRow; rowIndexCurrent <= endRow; rowIndexCurrent++) { | |
325 | + for (int colIndexCurrent = startCol; colIndexCurrent <= endCol; colIndexCurrent++) { | |
326 | + Row currentRow = sheet.getRow(rowIndexCurrent); | |
327 | + if (currentRow == null) { | |
328 | + currentRow = sheet.createRow(rowIndexCurrent); | |
329 | + } | |
330 | + Cell currentCell = currentRow.getCell(colIndexCurrent); | |
331 | + if (currentCell == null) { | |
332 | + currentCell = currentRow.createCell(colIndexCurrent); | |
333 | + } | |
334 | + // 只为合并区域内的单元格设置样式 | |
335 | + if (rowIndexCurrent == startRow && colIndexCurrent == colIndex) { | |
336 | + currentCell.setCellStyle(titleStyle); // 为合并的单元格设置样式 | |
337 | + } else { | |
338 | + currentCell.setCellStyle(titleStyle); // 为其他合并的单元格设置样式 | |
339 | + } | |
340 | + } | |
341 | + } | |
342 | + } | |
343 | + | |
344 | + | |
345 | + | |
346 | + /** | |
347 | + * 业务/研发净利润分析 | |
348 | + * | |
349 | + * @param queryVO | |
350 | + * @return | |
351 | + */ | |
352 | + public ServerResult businessProfitRatio(BusinessProfitRatioQueryVO queryVO) { | |
353 | + BusinessProfitRatioResultVO resultVO = buildBusinessProfitRatioResultVO(queryVO); | |
354 | + return ServerResult.success(resultVO); | |
355 | + } | |
356 | + //都为人民币。 | |
357 | + private BusinessProfitRatioResultVO buildBusinessProfitRatioResultVO(BusinessProfitRatioQueryVO queryVO) { | |
358 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(queryVO.getIds()); | |
359 | + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { | |
360 | + throw new BusinessException("订单数量为空"); | |
361 | + } | |
362 | + Set<Long> orderIds = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet()); | |
363 | + List<OrderProfitAnalysisDO> profitAnalysisList = orderProfitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
364 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
365 | + .in(OrderProfitAnalysisDO::getOrderId, orderIds)); | |
366 | + List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisList.stream() | |
367 | + .collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(), (existing, replacement) -> existing)) | |
368 | + .values() | |
369 | + .stream() | |
370 | + .collect(Collectors.toList()); | |
371 | + if(CollectionUtils.isEmpty(profitAnalysisList) ||orderIds.size()!= profitAnalysisDOS.size()){ | |
372 | + throw new BusinessException("勾选订单的利润信息未填写!"); | |
373 | + } | |
374 | +// for(OrderProfitAnalysisDO analysisDO : profitAnalysisList){ | |
375 | +// if(analysisDO.getCustomerPrice()==null){ | |
376 | +// throw new BusinessException("勾选订单的利润信息未填写!"); | |
377 | +// } | |
378 | +// } | |
379 | + int sumCount = orderBaseInfoDOList.stream().mapToInt(OrderBaseInfoDO::getOrderCount).sum(); | |
380 | + Set<String> projectList = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getProjectNo).collect(Collectors.toSet()); | |
381 | + //得到当前汇率。 | |
382 | + BigDecimal exchangeRate = new BigDecimal(systemSettingService.getOne(new LambdaQueryWrapper<SystemSettingDO>() | |
383 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
384 | + .eq(SystemSettingDO::getSettingCode,"exchangeRate") | |
385 | + .last("limit 1")).getSettingValue()); | |
386 | + BigDecimal spainRatioProfitPrice=new BigDecimal(Constant.ZERO); | |
387 | + BigDecimal chinaRatioProfitPrice=new BigDecimal(Constant.ZERO); | |
388 | + BigDecimal customerRmbTotalPrice = new BigDecimal(Constant.ZERO); | |
389 | + BigDecimal productionDepartmentTotalPrice = new BigDecimal(Constant.ZERO); | |
390 | + BigDecimal packetTotalPrice = new BigDecimal(Constant.ZERO); | |
391 | + BigDecimal fixCost = new BigDecimal(Constant.ZERO); | |
392 | + BigDecimal customerTotalPrice = new BigDecimal(Constant.ZERO); | |
393 | + String spainRatio = Constant.ZERO_STRING; | |
394 | + String chainRatio= Constant.ZERO_STRING; | |
395 | + String dailyCost=Constant.ZERO_STRING; | |
396 | + for (OrderProfitAnalysisDO profitAnalysisDO : profitAnalysisDOS) { | |
397 | + customerRmbTotalPrice = customerRmbTotalPrice.add(new BigDecimal(profitAnalysisDO.getCustomerRmbTotalPrice())); | |
398 | + customerTotalPrice=customerTotalPrice.add(new BigDecimal(profitAnalysisDO.getCustomerTotalPrice())); | |
399 | + productionDepartmentTotalPrice = productionDepartmentTotalPrice.add(new BigDecimal(profitAnalysisDO.getProductionDepartmentTotalPrice())); | |
400 | + //这里的包装费用好像为美元。需要采用人民币。 | |
401 | + packetTotalPrice = packetTotalPrice.add(new BigDecimal(profitAnalysisDO.getPacketTotalPrice()).multiply(exchangeRate)); | |
402 | + } | |
403 | + | |
404 | + //根据客户编码得到提成配置。 | |
405 | + SystemSettingDO systemSettingServiceOne = systemSettingService.getOne(new LambdaQueryWrapper<SystemSettingDO>() | |
406 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
407 | + .eq(SystemSettingDO::getSettingType, Constant.THREE) | |
408 | + .eq(SystemSettingDO::getSettingValue, queryVO.getCustomerCode()) | |
409 | + .last("limit 1")); | |
410 | + if(Objects.nonNull(systemSettingServiceOne)){ | |
411 | + //json反序列化。 | |
412 | + List<CostSettingItemVO> costSettingItemVOList = JSONObject.parseObject(systemSettingServiceOne.getRelationValue(), new TypeReference<List<CostSettingItemVO>>() {}); | |
413 | + if( CollectionUtils.isNotEmpty(costSettingItemVOList)){ | |
414 | + for (CostSettingItemVO relation : costSettingItemVOList) { | |
415 | + if ("ratio".equals(relation.getRelationCode())) { | |
416 | + chainRatio = relation.getRelationValue(); | |
417 | + }if ("spainRatio".equals(relation.getRelationCode())) { | |
418 | + spainRatio = relation.getRelationValue(); | |
419 | + }if("fixCost".equals(relation.getRelationCode())){ | |
420 | + dailyCost=relation.getRelationValue(); | |
421 | + } | |
422 | + } | |
423 | + } | |
424 | + } | |
425 | + BigDecimal spainRatioValue = new BigDecimal(spainRatio); | |
426 | + BigDecimal chainRatioValue = new BigDecimal(chainRatio); | |
427 | + //当前系统配置中的提成比例没有配置时,中国和西班牙的金额就会为对应的o。 | |
428 | + spainRatioProfitPrice = spainRatioValue.multiply(customerRmbTotalPrice); | |
429 | + chinaRatioProfitPrice = chainRatioValue.multiply(customerRmbTotalPrice); | |
430 | + BigDecimal dailyCostValue = new BigDecimal(dailyCost); | |
431 | + fixCost = dailyCostValue.multiply(new BigDecimal(getProjectDays(queryVO))); | |
432 | + BigDecimal outTotalPrice = customerRmbTotalPrice.add(productionDepartmentTotalPrice).add(packetTotalPrice) | |
433 | + .add(queryVO.getDevelopTotalPrice()).add(queryVO.getCopyTotalPrice()) | |
434 | + .add(fixCost).add(spainRatioProfitPrice).add(chinaRatioProfitPrice); | |
435 | + BigDecimal developProfit = customerRmbTotalPrice.subtract(outTotalPrice); | |
436 | + BigDecimal packetProfitPrice = packetTotalPrice.subtract(queryVO.getPacketActualTotalPrice()); | |
437 | + BigDecimal actualRatioProfitPrice = queryVO.getActualRatio().subtract(exchangeRate).multiply(customerTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP); | |
438 | + BigDecimal totalProfitPrice = developProfit.add(actualRatioProfitPrice).add(packetProfitPrice); | |
439 | + BusinessProfitRatioResultVO resultVO = new BusinessProfitRatioResultVO(); | |
440 | + BeanUtils.copyProperties(queryVO, resultVO); | |
441 | + //5 | |
442 | + resultVO.setCustomerTotalPrice(customerRmbTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
443 | + //6 | |
444 | + resultVO.setProductionDepartmentTotalPrice(productionDepartmentTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
445 | +// resultVO.setPacketTotalPrice(packetTotalPrice.multiply(new BigDecimal(10 )).doubleValue()); | |
446 | + //7 | |
447 | + resultVO.setPacketTotalPrice(packetTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
448 | + resultVO.setPacketTotalPriceCount(packetTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
449 | + //9 如果没有配置固定成本,就会得到0。 | |
450 | + resultVO.setFixCost(fixCost.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
451 | + //10.1 | |
452 | + resultVO.setSpainRatioProfitPrice(spainRatioProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
453 | + //10.2 | |
454 | + resultVO.setChinaRatioProfitPrice(chinaRatioProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
455 | + //11 | |
456 | + resultVO.setOutTotalPrice(outTotalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
457 | + //13 | |
458 | + resultVO.setDevelopProfit(developProfit.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
459 | + //18 | |
460 | + resultVO.setPacketProfitPrice(packetProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
461 | + //19 | |
462 | + resultVO.setActualRatioProfitPrice(actualRatioProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
463 | + //20 | |
464 | + resultVO.setTotalProfitPrice(totalProfitPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
465 | + // 16 | |
466 | + resultVO.setActualRmbPrice(queryVO.getPacketActualTotalPrice().divide(new BigDecimal(sumCount), 2, BigDecimal.ROUND_HALF_UP)); | |
467 | + resultVO.setActualPrice((resultVO.getActualRmbPrice().divide(exchangeRate,2, BigDecimal.ROUND_HALF_UP))); | |
468 | + resultVO.setOrderCount(sumCount); | |
469 | + //12 | |
470 | + resultVO.setGrossProfit(customerRmbTotalPrice.subtract(productionDepartmentTotalPrice).subtract(packetTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP)); | |
471 | + resultVO.setProjectNo(String.join(",",projectList)); | |
472 | + return resultVO; | |
473 | + } | |
474 | + | |
475 | + /** | |
476 | + * @param queryVO | |
477 | + * @return | |
478 | + */ | |
479 | + private int getProjectDays(BusinessProfitRatioQueryVO queryVO) { | |
480 | + String projectStartTime = queryVO.getProjectStartTime(); | |
481 | + | |
482 | + String projectEndTime = queryVO.getProjectEndTime(); | |
483 | + | |
484 | + return DateUtils.parseDate(projectEndTime, DateUtils.DATE).getDayOfYear() - DateUtils.parseDate(projectStartTime, DateUtils.DATE).getDayOfYear() + 1; | |
485 | + } | |
486 | + | |
487 | + /** | |
488 | + * @param queryVO | |
489 | + * @return | |
490 | + */ | |
491 | + private int getProjectDays(InnerProfitRatioQueryVO queryVO) { | |
492 | + String projectStartTime = queryVO.getProjectStartTime(); | |
493 | + | |
494 | + String projectEndTime = queryVO.getProjectEndTime(); | |
495 | + | |
496 | + return DateUtils.parseDate(projectEndTime, DateUtils.DATE).getDayOfYear() - DateUtils.parseDate(projectStartTime, DateUtils.DATE).getDayOfYear() + 1; | |
497 | + } | |
498 | + | |
499 | + /** | |
500 | + * | |
501 | + * @param queryVO | |
502 | + * @return | |
503 | + */ | |
504 | + private InnerProfitRatioResultVO buildInnerProfitRatioResultVO(InnerProfitRatioQueryVO queryVO) { | |
505 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(queryVO.getIds()); | |
506 | + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { | |
507 | + throw new BusinessException("订单数量为空"); | |
508 | + } | |
509 | + Set<Long> orderIds = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet()); | |
510 | + List<OrderProfitAnalysisDO> profitAnalysisList = orderProfitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
511 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
512 | + .in(OrderProfitAnalysisDO::getOrderId, orderIds)); | |
513 | + //避免,订单重复,有多个orderid重复。 | |
514 | + List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisList.stream() | |
515 | + .collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(), (existing, replacement) -> existing)) | |
516 | + .values() | |
517 | + .stream() | |
518 | + .collect(Collectors.toList()); | |
519 | + if(CollectionUtils.isEmpty(profitAnalysisList) || orderIds.size()!=profitAnalysisDOS.size()){ | |
520 | + throw new BusinessException("勾选订单的利润信息未填写!"); | |
521 | + } | |
522 | + int sumCount = orderBaseInfoDOList.stream().mapToInt(OrderBaseInfoDO::getOrderCount).sum(); | |
523 | + Set<String> projectNoSet = orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getProjectNo).collect(Collectors.toSet()); | |
524 | + BigDecimal customerTotalPrice = new BigDecimal(Constant.ZERO); | |
525 | + BigDecimal productionDepartmentTotalPrice = new BigDecimal(Constant.ZERO); | |
526 | + String dailyCost=Constant.ZERO_STRING; | |
527 | + String price=Constant.ZERO_STRING; | |
528 | + BigDecimal dailyCostValue = new BigDecimal(Constant.ZERO); | |
529 | + BigDecimal priceValue = new BigDecimal(Constant.ZERO); | |
530 | + for (OrderProfitAnalysisDO profitAnalysisDO : profitAnalysisDOS) { | |
531 | + customerTotalPrice = customerTotalPrice.add(new BigDecimal(profitAnalysisDO.getCustomerRmbTotalPrice())); | |
532 | + productionDepartmentTotalPrice = productionDepartmentTotalPrice.add(new BigDecimal(profitAnalysisDO.getProductionDepartmentTotalPrice())); | |
533 | + } | |
534 | + | |
535 | + SystemSettingDO systemSettingServiceOne = systemSettingService.getOne(new LambdaQueryWrapper<SystemSettingDO>() | |
536 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
537 | + .eq(SystemSettingDO::getSettingType, Constant.FOUR) | |
538 | + .eq(SystemSettingDO::getSettingValue, queryVO.getCustomerCode()) | |
539 | + .last("limit 1")); | |
540 | + if(Objects.nonNull(systemSettingServiceOne)){ | |
541 | + //json反序列化。 | |
542 | + List<CostSettingItemVO> costSettingItemVOList = JSONObject.parseObject(systemSettingServiceOne.getRelationValue(), new TypeReference<List<CostSettingItemVO>>() {}); | |
543 | + if( CollectionUtils.isNotEmpty(costSettingItemVOList)){ | |
544 | + for (CostSettingItemVO relation : costSettingItemVOList) { | |
545 | + //这里是系统配置中的得到的,应该是从系统配置中的生产科中得到。 固定成本。 | |
546 | + if("fixCost".equals(relation.getRelationCode())){ | |
547 | + dailyCost=relation.getRelationValue(); | |
548 | + } | |
549 | + //生产提成单价 | |
550 | + if("ratio".equals(relation.getRelationCode())){ | |
551 | + price=relation.getRelationValue(); | |
552 | + } | |
553 | + } | |
554 | + } | |
555 | + } | |
556 | + dailyCostValue = new BigDecimal(dailyCost); | |
557 | + priceValue = new BigDecimal(price); | |
558 | + Integer projectDays = getProjectDays(queryVO); | |
559 | + BigDecimal innerProduceFixProfit = dailyCostValue.multiply(new BigDecimal(projectDays)); | |
560 | + BigDecimal predictRatio=new BigDecimal(Constant.ZERO); | |
561 | + BigDecimal bigDecimal = new BigDecimal("1.05"); | |
562 | + // 10 | |
563 | + BigDecimal innerProduceTotalPrice = new BigDecimal(sumCount).multiply(priceValue); | |
564 | + // 7.1 | |
565 | + if(Objects.nonNull(queryVO.getProductionDepartmentPredictPrice()) ){ | |
566 | + if(queryVO.getProductionDepartmentPredictPrice().compareTo(BigDecimal.ZERO) == 0){ | |
567 | + }else{ | |
568 | + predictRatio = queryVO.getProductionActualPrice() | |
569 | + .divide(queryVO.getProductionDepartmentPredictPrice(),2,BigDecimal.ROUND_HALF_UP); | |
570 | + } | |
571 | + } | |
572 | + //如果大于1.05则就把内部生产提成变为0 | |
573 | + if(predictRatio.compareTo(bigDecimal)>0){ | |
574 | + innerProduceTotalPrice=BigDecimal.ZERO; | |
575 | + } | |
576 | + // 7.2 | |
577 | + BigDecimal predictAndActualRatio = new BigDecimal(Constant.ONE).subtract(predictRatio); | |
578 | + BigDecimal grossProfit = productionDepartmentTotalPrice.subtract(queryVO.getProductionActualPrice()); | |
579 | + BigDecimal innerProduceTotalProfit = productionDepartmentTotalPrice.subtract(queryVO.getProductionActualPrice()).subtract(innerProduceTotalPrice).subtract(innerProduceFixProfit); | |
580 | + | |
581 | + | |
582 | + InnerProfitRatioResultVO resultVO = new InnerProfitRatioResultVO(); | |
583 | + BeanUtils.copyProperties(queryVO, resultVO); | |
584 | + resultVO.setProjectDays(projectDays); | |
585 | + resultVO.setOrderCount(sumCount); | |
586 | + resultVO.setCustomerTotalPrice(customerTotalPrice.setScale(2, RoundingMode.HALF_UP).doubleValue()); | |
587 | + // 5 | |
588 | + resultVO.setProductionDepartmentTotalPrice(productionDepartmentTotalPrice.setScale(2, RoundingMode.HALF_UP)); | |
589 | + // 9 | |
590 | + resultVO.setInnerProduceFixProfit(innerProduceFixProfit.setScale(2, RoundingMode.HALF_UP)); | |
591 | + // 7.1 | |
592 | + resultVO.setPredictRatio(predictRatio.multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | |
593 | + // 将计算结果乘以 100,并四舍五入到整数 | |
594 | + resultVO.setPredictAndActualRatio(predictAndActualRatio.multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); | |
595 | + // 8 | |
596 | + resultVO.setGrossProfit(grossProfit.setScale(2, RoundingMode.HALF_UP)); | |
597 | + // 10 | |
598 | + resultVO.setInnerProduceTotalPrice(innerProduceTotalPrice.setScale(2, RoundingMode.HALF_UP)); | |
599 | + // 11 | |
600 | + resultVO.setInnerProduceTotalProfit(innerProduceTotalProfit.setScale(2, RoundingMode.HALF_UP)); | |
601 | + //项目号 | |
602 | + resultVO.setProjectNo(String.join(", ", projectNoSet)); | |
603 | + return resultVO; | |
604 | + } | |
605 | + | |
606 | + /** | |
607 | + * 内部生产净利润分析表 | |
608 | + * | |
609 | + * @param queryVO | |
610 | + * @return | |
611 | + */ | |
612 | + public ServerResult innerProfitRatio(InnerProfitRatioQueryVO queryVO) { | |
613 | + InnerProfitRatioResultVO resultVO = buildInnerProfitRatioResultVO(queryVO); | |
614 | + return ServerResult.success(resultVO); | |
615 | + } | |
616 | +} | ... | ... |
src/main/java/com/order/erp/service/order/impl/CheckBillMappingServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | |
2 | + | |
3 | +import cn.hutool.core.bean.BeanUtil; | |
4 | +import cn.hutool.core.collection.CollUtil; | |
5 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
6 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
7 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
8 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
9 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
10 | +import com.order.erp.common.constant.Constant; | |
11 | +import com.order.erp.common.constant.ServerResult; | |
12 | +import com.order.erp.common.utils.PageUtils; | |
13 | +import com.order.erp.domain.dto.order.CheckBillMappingDO; | |
14 | +import com.order.erp.domain.vo.order.CheckBillMappingQueryVO; | |
15 | +import com.order.erp.domain.vo.order.CheckBillMappingVO; | |
16 | +import com.order.erp.mapper.order.CheckBillMappingMapper; | |
17 | +import com.order.erp.service.order.CheckBillMappingService; | |
18 | +import lombok.extern.slf4j.Slf4j; | |
19 | +import org.springframework.stereotype.Service; | |
20 | + | |
21 | +import java.util.List; | |
22 | +import java.util.Objects; | |
23 | + | |
24 | +/** | |
25 | + * 生产科对账单应收账单映射表(CheckBillMapping)表服务实现类 | |
26 | + * | |
27 | + * @author makejava | |
28 | + * @since 2024-08-05 16:26:37 | |
29 | + */ | |
30 | +@Slf4j | |
31 | +@Service | |
32 | +public class CheckBillMappingServiceImpl extends ServiceImpl<CheckBillMappingMapper, CheckBillMappingDO> implements CheckBillMappingService { | |
33 | + | |
34 | + | |
35 | + /** | |
36 | + * 通过ID查询单条数据 | |
37 | + * <p> | |
38 | + * checkBillMappingQueryVO 主键 | |
39 | + * | |
40 | + * @return 实例对象 | |
41 | + */ | |
42 | + @Override | |
43 | + public ServerResult queryById(CheckBillMappingQueryVO checkBillMappingQueryVO) { | |
44 | + if (Objects.isNull(checkBillMappingQueryVO.getId())) { | |
45 | + return ServerResult.fail("id 不能为空"); | |
46 | + } | |
47 | + CheckBillMappingDO CheckBillMappingDo = getById(checkBillMappingQueryVO.getId()); | |
48 | + if (Objects.isNull(CheckBillMappingDo)) { | |
49 | + return ServerResult.success(null); | |
50 | + } | |
51 | + return ServerResult.success(BeanUtil.copyProperties(CheckBillMappingDo, CheckBillMappingVO.class)); | |
52 | + } | |
53 | + | |
54 | + /** | |
55 | + * 分页查询 | |
56 | + * | |
57 | + * @param checkBillMappingQueryVO 筛选条件 | |
58 | + * @return 查询结果 | |
59 | + */ | |
60 | + @Override | |
61 | + public ServerResult list(CheckBillMappingQueryVO checkBillMappingQueryVO) { | |
62 | + | |
63 | + LambdaQueryWrapper<CheckBillMappingDO> queryWapper = new LambdaQueryWrapper<CheckBillMappingDO>() | |
64 | + .eq(CheckBillMappingDO::getEnableFlag, Constant.ENABLE_TEN) | |
65 | + .orderByDesc(CheckBillMappingDO::getId); | |
66 | + Page page = new Page<>(checkBillMappingQueryVO.getPage(), checkBillMappingQueryVO.getPageSize()); | |
67 | + IPage<CheckBillMappingDO> iPage = page(page, queryWapper); | |
68 | + checkBillMappingQueryVO.setTotal(Long.valueOf(iPage.getTotal()).intValue()); | |
69 | + return ServerResult.success(PageUtils.getPageReturn(null, checkBillMappingQueryVO)); | |
70 | + } | |
71 | + | |
72 | + /** | |
73 | + * 新增数据 | |
74 | + * | |
75 | + * @param checkBillMappingVO 实例对象 | |
76 | + * @return 实例对象 | |
77 | + */ | |
78 | + @Override | |
79 | + public ServerResult add(CheckBillMappingVO checkBillMappingVO) { | |
80 | + //todo 校验 | |
81 | + if (Objects.nonNull(checkBillMappingVO.getId())) { | |
82 | + checkBillMappingVO.setId(null); | |
83 | + } | |
84 | + CheckBillMappingDO checkBillMappingDo = BeanUtil.copyProperties(checkBillMappingVO, CheckBillMappingDO.class); | |
85 | + | |
86 | + save(checkBillMappingDo); | |
87 | + | |
88 | + return ServerResult.success(); | |
89 | + } | |
90 | + | |
91 | + /** | |
92 | + * 修改数据 | |
93 | + * | |
94 | + * @param checkBillMappingVO 实例对象 | |
95 | + * @return 实例对象 | |
96 | + */ | |
97 | + @Override | |
98 | + public ServerResult edit(CheckBillMappingVO checkBillMappingVO) { | |
99 | + //todo 校验 | |
100 | + if (Objects.isNull(checkBillMappingVO.getId())) { | |
101 | + return ServerResult.fail("id 不能为空"); | |
102 | + } | |
103 | + CheckBillMappingDO checkBillMappingDo = BeanUtil.copyProperties(checkBillMappingVO, CheckBillMappingDO.class); | |
104 | + | |
105 | + updateById(checkBillMappingDo); | |
106 | + | |
107 | + return ServerResult.success(); | |
108 | + } | |
109 | + | |
110 | + /** | |
111 | + * 通过主键删除数据 | |
112 | + * | |
113 | + * @param checkBillMappingQueryVO 筛选条件 | |
114 | + * @return 是否成功 | |
115 | + */ | |
116 | + @Override | |
117 | + public ServerResult deleteById(CheckBillMappingQueryVO checkBillMappingQueryVO) { | |
118 | + List<Long> ids = checkBillMappingQueryVO.getIds(); | |
119 | + if (CollUtil.isEmpty(ids)) { | |
120 | + return ServerResult.fail("ids 参数不能为空"); | |
121 | + } | |
122 | + List<CheckBillMappingDO> checkBillMappingList = listByIds(ids); | |
123 | + if (CollUtil.isEmpty(checkBillMappingList)) { | |
124 | + return ServerResult.success(); | |
125 | + } | |
126 | + //todo 校验是否可以逻辑删除 | |
127 | + LambdaUpdateWrapper<CheckBillMappingDO> updateWrapper = new LambdaUpdateWrapper<CheckBillMappingDO>() | |
128 | + .in(CheckBillMappingDO::getId, ids) | |
129 | + .set(CheckBillMappingDO::getEnableFlag, Constant.UNABLE_TWENTY); | |
130 | + update(updateWrapper); | |
131 | + return ServerResult.success(); | |
132 | + } | |
133 | +} | ... | ... |
src/main/java/com/order/erp/service/order/impl/InvoiceBillMappingServiceImpl.java
0 → 100644
1 | +package com.order.erp.service.order.impl; | |
2 | + | |
3 | +import cn.hutool.core.bean.BeanUtil; | |
4 | +import cn.hutool.core.collection.CollUtil; | |
5 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
6 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
7 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
8 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
9 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
10 | +import com.order.erp.common.constant.Constant; | |
11 | +import com.order.erp.common.constant.ServerResult; | |
12 | +import com.order.erp.common.utils.PageUtils; | |
13 | +import com.order.erp.domain.dto.order.InvoiceBillMappingDO; | |
14 | +import com.order.erp.domain.vo.order.InvoiceBillMappingQueryVO; | |
15 | +import com.order.erp.domain.vo.order.InvoiceBillMappingVO; | |
16 | +import com.order.erp.mapper.order.InvoiceBillMappingMapper; | |
17 | +import com.order.erp.service.order.InvoiceBillMappingService; | |
18 | +import lombok.extern.slf4j.Slf4j; | |
19 | +import org.springframework.stereotype.Service; | |
20 | + | |
21 | +import java.util.List; | |
22 | +import java.util.Objects; | |
23 | + | |
24 | +/** | |
25 | + * 应收款账单关联订单映射表(InvoiceBillMapping)表服务实现类 | |
26 | + * | |
27 | + * @author makejava | |
28 | + * @since 2024-08-05 16:26:36 | |
29 | + */ | |
30 | +@Slf4j | |
31 | +@Service | |
32 | +public class InvoiceBillMappingServiceImpl extends ServiceImpl<InvoiceBillMappingMapper, InvoiceBillMappingDO> implements InvoiceBillMappingService { | |
33 | + | |
34 | + | |
35 | + /** | |
36 | + * 通过ID查询单条数据 | |
37 | + * <p> | |
38 | + * invoiceBillMappingQueryVO 主键 | |
39 | + * | |
40 | + * @return 实例对象 | |
41 | + */ | |
42 | + @Override | |
43 | + public ServerResult queryById(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO) { | |
44 | + if (Objects.isNull(invoiceBillMappingQueryVO.getId())) { | |
45 | + return ServerResult.fail("id 不能为空"); | |
46 | + } | |
47 | + InvoiceBillMappingDO InvoiceBillMappingDo = getById(invoiceBillMappingQueryVO.getId()); | |
48 | + if (Objects.isNull(InvoiceBillMappingDo)) { | |
49 | + return ServerResult.success(null); | |
50 | + } | |
51 | + return ServerResult.success(BeanUtil.copyProperties(InvoiceBillMappingDo, InvoiceBillMappingVO.class)); | |
52 | + } | |
53 | + | |
54 | + /** | |
55 | + * 分页查询 | |
56 | + * | |
57 | + * @param invoiceBillMappingQueryVO 筛选条件 | |
58 | + * @return 查询结果 | |
59 | + */ | |
60 | + @Override | |
61 | + public ServerResult list(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO) { | |
62 | + | |
63 | + LambdaQueryWrapper<InvoiceBillMappingDO> queryWapper = new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
64 | + .eq(InvoiceBillMappingDO::getEnableFlag, Constant.ENABLE_TEN) | |
65 | + .orderByDesc(InvoiceBillMappingDO::getId); | |
66 | + Page page = new Page<>(invoiceBillMappingQueryVO.getPage(), invoiceBillMappingQueryVO.getPageSize()); | |
67 | + IPage<InvoiceBillMappingDO> iPage = page(page, queryWapper); | |
68 | + invoiceBillMappingQueryVO.setTotal(Long.valueOf(iPage.getTotal()).intValue()); | |
69 | + return ServerResult.success(PageUtils.getPageReturn(null, invoiceBillMappingQueryVO)); | |
70 | + } | |
71 | + | |
72 | + /** | |
73 | + * 新增数据 | |
74 | + * | |
75 | + * @param invoiceBillMappingVO 实例对象 | |
76 | + * @return 实例对象 | |
77 | + */ | |
78 | + @Override | |
79 | + public ServerResult add(InvoiceBillMappingVO invoiceBillMappingVO) { | |
80 | + //todo 校验 | |
81 | + if (Objects.nonNull(invoiceBillMappingVO.getId())) { | |
82 | + invoiceBillMappingVO.setId(null); | |
83 | + } | |
84 | + InvoiceBillMappingDO invoiceBillMappingDo = BeanUtil.copyProperties(invoiceBillMappingVO, InvoiceBillMappingDO.class); | |
85 | + | |
86 | + save(invoiceBillMappingDo); | |
87 | + | |
88 | + return ServerResult.success(); | |
89 | + } | |
90 | + | |
91 | + /** | |
92 | + * 修改数据 | |
93 | + * | |
94 | + * @param invoiceBillMappingVO 实例对象 | |
95 | + * @return 实例对象 | |
96 | + */ | |
97 | + @Override | |
98 | + public ServerResult edit(InvoiceBillMappingVO invoiceBillMappingVO) { | |
99 | + //todo 校验 | |
100 | + if (Objects.isNull(invoiceBillMappingVO.getId())) { | |
101 | + return ServerResult.fail("id 不能为空"); | |
102 | + } | |
103 | + InvoiceBillMappingDO invoiceBillMappingDo = BeanUtil.copyProperties(invoiceBillMappingVO, InvoiceBillMappingDO.class); | |
104 | + | |
105 | + updateById(invoiceBillMappingDo); | |
106 | + | |
107 | + return ServerResult.success(); | |
108 | + } | |
109 | + | |
110 | + /** | |
111 | + * 通过主键删除数据 | |
112 | + * | |
113 | + * @param invoiceBillMappingQueryVO 筛选条件 | |
114 | + * @return 是否成功 | |
115 | + */ | |
116 | + @Override | |
117 | + public ServerResult deleteById(InvoiceBillMappingQueryVO invoiceBillMappingQueryVO) { | |
118 | + List<Long> ids = invoiceBillMappingQueryVO.getIds(); | |
119 | + if (CollUtil.isEmpty(ids)) { | |
120 | + return ServerResult.fail("ids 参数不能为空"); | |
121 | + } | |
122 | + List<InvoiceBillMappingDO> invoiceBillMappingList = listByIds(ids); | |
123 | + if (CollUtil.isEmpty(invoiceBillMappingList)) { | |
124 | + return ServerResult.success(); | |
125 | + } | |
126 | + //todo 校验是否可以逻辑删除 | |
127 | + LambdaUpdateWrapper<InvoiceBillMappingDO> updateWrapper = new LambdaUpdateWrapper<InvoiceBillMappingDO>() | |
128 | + .in(InvoiceBillMappingDO::getId, ids) | |
129 | + .set(InvoiceBillMappingDO::getEnableFlag, Constant.UNABLE_TWENTY); | |
130 | + update(updateWrapper); | |
131 | + return ServerResult.success(); | |
132 | + } | |
133 | +} | ... | ... |