Commit 60b81195047f6aef99f4318ef46795f585dd6e5a
1 parent
10fec827
feat(order): 增加申请编辑字段的备注功能
- 在 OrderCostInfolockFieldVO 和 ProjectBaseInfoLockFieldVO 中添加 applyRemark 字段 - 在 OrderCostInfoServiceImpl 和 ProjectBaseInfoServiceImpl 中处理申请备注 - 优化逻辑 ProjectBaseInfoServiceImpl 中的字段锁定
Showing
5 changed files
with
80 additions
and
71 deletions
src/main/java/com/order/erp/controller/OrderCostController.java
... | ... | @@ -53,7 +53,7 @@ public class OrderCostController { |
53 | 53 | |
54 | 54 | @PostMapping("/applyEditFileds") |
55 | 55 | @ApiOperation("申请编辑字段") |
56 | - public ServerResult applyEditFileds(OrderCostInfolockFieldVO vo) throws Exception { | |
56 | + public ServerResult applyEditFileds(@RequestBody OrderCostInfolockFieldVO vo) throws Exception { | |
57 | 57 | return orderCostInfoService.applyEditFileds(vo); |
58 | 58 | } |
59 | 59 | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderCostInfolockFieldVO.java
src/main/java/com/order/erp/domain/vo/order/ProjectBaseInfoLockFieldVO.java
src/main/java/com/order/erp/service/order/impl/OrderCostInfoServiceImpl.java
... | ... | @@ -100,6 +100,7 @@ public class OrderCostInfoServiceImpl extends ServiceImpl<OrderCostInfoMapper, O |
100 | 100 | OrderFieldLockApplyDO build = OrderFieldLockApplyDO.builder() |
101 | 101 | .orderId(vo.getOrderId()) |
102 | 102 | .applyUserId(dataScope.getLoginUserId()) |
103 | + .applyRemark(vo.getApplyRemark()) | |
103 | 104 | .fields(JSONObject.toJSONString(lockField)) |
104 | 105 | .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) |
105 | 106 | .type(vo.getType()) | ... | ... |
src/main/java/com/order/erp/service/order/impl/ProjectBaseInfoServiceImpl.java
... | ... | @@ -56,7 +56,7 @@ import java.util.stream.Collectors; |
56 | 56 | |
57 | 57 | /** |
58 | 58 | * <p> |
59 | - * 服务实现类 | |
59 | + * 服务实现类 | |
60 | 60 | * </p> |
61 | 61 | * |
62 | 62 | * @author author |
... | ... | @@ -87,12 +87,13 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
87 | 87 | ProjectBaseInfoDO projectBaseInfoDO = null; |
88 | 88 | if (projectBaseInfoDOOpt.isPresent()) { |
89 | 89 | projectBaseInfoDO = projectBaseInfoDOOpt.get(); |
90 | - BeanUtil.copyProperties(vo, projectBaseInfoDO,"id"); | |
91 | - }else { | |
90 | + BeanUtil.copyProperties(vo, projectBaseInfoDO, "id"); | |
91 | + } else { | |
92 | 92 | projectBaseInfoDO = BeanUtil.copyProperties(vo, ProjectBaseInfoDO.class); |
93 | 93 | } |
94 | 94 | return ServerResult.success(this.saveOrUpdate(projectBaseInfoDO)); |
95 | 95 | } |
96 | + | |
96 | 97 | @Override |
97 | 98 | public ServerResult applyEditFileds(ProjectBaseInfoLockFieldVO vo) { |
98 | 99 | List<ProjectApplyDO> applyDOS = projectFieldLockApplyService.list(new LambdaQueryWrapper<ProjectApplyDO>() |
... | ... | @@ -103,12 +104,19 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
103 | 104 | if (CollectionUtils.isNotEmpty(applyDOS)) { |
104 | 105 | throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); |
105 | 106 | } |
106 | - String projectNoPrefix = vo.getProjectNoPrefix(); | |
107 | - vo.setProjectNoPrefix(null); | |
107 | + ProjectBaseInfoLockFieldVO projectBaseInfoLockFieldVO = ProjectBaseInfoLockFieldVO.builder() | |
108 | + .developmentCopyRmbTotalPrice(vo.getDevelopmentCopyRmbTotalPrice()) | |
109 | + .projectStartTime(vo.getProjectStartTime()) | |
110 | + .projectEndTime(vo.getProjectEndTime()) | |
111 | + .spainPaidRmbCommission(vo.getSpainPaidRmbCommission()) | |
112 | + .paidRmbCommission(vo.getPaidRmbCommission()) | |
113 | + .actualExchangeRate(vo.getActualExchangeRate()) | |
114 | + .build(); | |
108 | 115 | ProjectApplyDO build = ProjectApplyDO.builder() |
109 | - .projectNoPrefix(projectNoPrefix) | |
116 | + .projectNoPrefix(vo.getProjectNoPrefix()) | |
110 | 117 | .applyUserId(dataScope.getLoginUserId()) |
111 | - .fields(JSONObject.toJSONString(vo)) | |
118 | + .applyRemark(vo.getApplyRemark()) | |
119 | + .fields(JSONObject.toJSONString(projectBaseInfoLockFieldVO)) | |
112 | 120 | .type(ProjectApplyTypeEnum.FIELD_EDIT_APPLY) |
113 | 121 | .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) |
114 | 122 | .build(); |
... | ... | @@ -117,18 +125,16 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
117 | 125 | } |
118 | 126 | |
119 | 127 | |
120 | - | |
121 | - | |
122 | 128 | @Override |
123 | 129 | public ServerResult pageProjectLockFieldApply(QueryProjectLockFieldVO vo) { |
124 | 130 | Page<ProjectApplyDO> page = projectFieldLockApplyService.lambdaQuery() |
125 | 131 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
126 | 132 | .eq(ProjectApplyDO::getType, ProjectApplyTypeEnum.FIELD_EDIT_APPLY.getType()) |
127 | - .eq(ProjectApplyDO::getStatus, StringUtils.isNotBlank(vo.getStatus())? ApplyStatusEnum.WAIT_AUDIT.getStatus():vo.getStatus()) | |
133 | + .eq(ProjectApplyDO::getStatus, StringUtils.isBlank(vo.getStatus()) ? ApplyStatusEnum.WAIT_AUDIT.getStatus() : vo.getStatus()) | |
128 | 134 | .orderByDesc(ProjectApplyDO::getCreateTime) |
129 | 135 | .page(new Page<>(vo.getPage(), vo.getPageSize())); |
130 | 136 | List<ProjectApplyDO> records = page.getRecords(); |
131 | - if(CollectionUtils.isEmpty(records)){ | |
137 | + if (CollectionUtils.isEmpty(records)) { | |
132 | 138 | return buildPageResult(page, Collections.emptyList()); |
133 | 139 | } |
134 | 140 | List<ProjectApplyVO> collect = records.stream().map(e -> { |
... | ... | @@ -142,28 +148,28 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
142 | 148 | public ServerResult audit(AuditVO vo) { |
143 | 149 | ProjectApplyDO applyDO = projectFieldLockApplyService.getById(vo.getId()); |
144 | 150 | applyDO.setAuditUserId(dataScope.getLoginUserId()); |
145 | - | |
146 | - if(ApplyStatusEnum.AUDIT_PASS.getStatus().equals(vo.getStatus())){ | |
147 | - applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | |
148 | - ProjectFieldLockRecord recordDO = projectionFieldLockRecordService.getOne(new LambdaQueryWrapper<ProjectFieldLockRecord>() | |
149 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
150 | - .eq(ProjectFieldLockRecord::getProjectNoPrefix, applyDO.getProjectNoPrefix()) | |
151 | - .eq(ProjectFieldLockRecord::getUserId, applyDO.getApplyUserId()) | |
152 | - .orderByDesc(ProjectFieldLockRecord::getId) | |
153 | - .last("limit 1")); | |
154 | - if (Objects.isNull(recordDO)) { | |
155 | - recordDO = ProjectFieldLockRecord.builder() | |
156 | - .projectNoPrefix(applyDO.getProjectNoPrefix()) | |
157 | - .userId(applyDO.getApplyUserId()) | |
158 | - .build(); | |
159 | - } | |
160 | - recordDO.setFields(applyDO.getFields()); | |
161 | - if (Objects.isNull(recordDO.getId())) { | |
162 | - projectionFieldLockRecordService.save(recordDO); | |
163 | - } else { | |
164 | - projectionFieldLockRecordService.updateById(recordDO); | |
165 | - } | |
166 | - } | |
151 | + applyDO.setAuditRemark(vo.getRefuseRemark()); | |
152 | + if (ApplyStatusEnum.AUDIT_PASS.getStatus().equals(vo.getStatus())) { | |
153 | + applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | |
154 | + ProjectFieldLockRecord recordDO = projectionFieldLockRecordService.getOne(new LambdaQueryWrapper<ProjectFieldLockRecord>() | |
155 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
156 | + .eq(ProjectFieldLockRecord::getProjectNoPrefix, applyDO.getProjectNoPrefix()) | |
157 | + .eq(ProjectFieldLockRecord::getUserId, applyDO.getApplyUserId()) | |
158 | + .orderByDesc(ProjectFieldLockRecord::getId) | |
159 | + .last("limit 1")); | |
160 | + if (Objects.isNull(recordDO)) { | |
161 | + recordDO = ProjectFieldLockRecord.builder() | |
162 | + .projectNoPrefix(applyDO.getProjectNoPrefix()) | |
163 | + .userId(applyDO.getApplyUserId()) | |
164 | + .build(); | |
165 | + } | |
166 | + recordDO.setFields(applyDO.getFields()); | |
167 | + if (Objects.isNull(recordDO.getId())) { | |
168 | + projectionFieldLockRecordService.save(recordDO); | |
169 | + } else { | |
170 | + projectionFieldLockRecordService.updateById(recordDO); | |
171 | + } | |
172 | + } | |
167 | 173 | projectFieldLockApplyService.updateById(applyDO); |
168 | 174 | return ServerResult.success(); |
169 | 175 | } |
... | ... | @@ -215,15 +221,14 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
215 | 221 | .collect(Collectors.toList()); |
216 | 222 | |
217 | 223 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoService.list(orderBaseInfoService.buildQueryByParam(queryVO) |
218 | - .and(CollUtil.isNotEmpty(projectNoPrefix),query -> { | |
224 | + .and(CollUtil.isNotEmpty(projectNoPrefix), query -> { | |
219 | 225 | for (int i = 0; i < projectNoPrefix.size(); i++) { |
220 | 226 | query.likeRight(OrderBaseInfoDO::getProjectNo, projectNoPrefix.get(i)); |
221 | 227 | if (i != projectNoPrefix.size() - 1) { |
222 | 228 | query.or(); |
223 | 229 | } |
224 | 230 | } |
225 | - })) | |
226 | - ; | |
231 | + })); | |
227 | 232 | |
228 | 233 | return orderBaseInfoService.wrapperOrderResultList(true, orderBaseInfoDOS); |
229 | 234 | } |
... | ... | @@ -239,7 +244,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
239 | 244 | } |
240 | 245 | |
241 | 246 | private List<InnerProfitInfoVO> buildInnerProfitInfos(List<OrderInfoResultVO> orderInfoResultVOS) { |
242 | - if(CollUtil.isEmpty(orderInfoResultVOS)){ | |
247 | + if (CollUtil.isEmpty(orderInfoResultVOS)) { | |
243 | 248 | return Collections.emptyList(); |
244 | 249 | } |
245 | 250 | Map<String, List<OrderInfoResultVO>> orderBaseInfoDOSGroupByProjectNoPre = orderInfoResultVOS.stream() |
... | ... | @@ -437,16 +442,16 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
437 | 442 | List<ProjectFieldLockRecord> lockRecords = projectionFieldLockRecordService |
438 | 443 | .lambdaQuery() |
439 | 444 | .func(query -> { |
440 | - Set<String> projectNoPrefixs = list.stream().map(ProjectBaseInfoDO::getProjectNoPrefix).collect(Collectors.toSet()); | |
441 | - if(CollUtil.isNotEmpty(projectNoPrefixs)){ | |
442 | - query.in(ProjectFieldLockRecord::getProjectNoPrefix,projectNoPrefixs); | |
445 | + Set<String> projectNoPrefixs = list.stream().map(ProjectBaseInfoDO::getProjectNoPrefix).collect(Collectors.toSet()); | |
446 | + if (CollUtil.isNotEmpty(projectNoPrefixs)) { | |
447 | + query.in(ProjectFieldLockRecord::getProjectNoPrefix, projectNoPrefixs); | |
443 | 448 | |
444 | - }else { | |
449 | + } else { | |
445 | 450 | query.apply("1!=1"); |
446 | 451 | } |
447 | 452 | }) |
448 | 453 | .list(); |
449 | - Map<String,ProjectBaseInfoLockFieldVO> prjectNo2LockRecordMap = lockRecords.stream() | |
454 | + Map<String, ProjectBaseInfoLockFieldVO> prjectNo2LockRecordMap = lockRecords.stream() | |
450 | 455 | .collect(Collectors.toMap(ProjectFieldLockRecord::getProjectNoPrefix, record -> { |
451 | 456 | try { |
452 | 457 | return objectMapper.readValue(record.getFields(), ProjectBaseInfoLockFieldVO.class); |
... | ... | @@ -462,12 +467,12 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
462 | 467 | .customerCode(details.get(0).getCustomerCode()) |
463 | 468 | .projectNoPrefix(entry.getKey()) |
464 | 469 | .lockFields(Optional.ofNullable(prjectNo2LockRecordMap.get(entry.getKey())).orElse(ProjectBaseInfoLockFieldVO.builder() |
465 | - .actualExchangeRate( Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getActualExchangeRate()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
466 | - .developmentCopyRmbTotalPrice(Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getDevelopmentCopyRmbTotalPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
467 | - .paidRmbCommission(Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getPaidRmbCommission()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
468 | - .projectEndTime(Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getProjectEndTime()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
469 | - .projectStartTime(Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getProjectStartTime()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
470 | - .spainPaidRmbCommission(Objects.isNull(projectBaseInfoDO)|| Objects.isNull(projectBaseInfoDO.getSpainPaidRmbCommission()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
470 | + .actualExchangeRate(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getActualExchangeRate()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
471 | + .developmentCopyRmbTotalPrice(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getDevelopmentCopyRmbTotalPrice()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
472 | + .paidRmbCommission(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getPaidRmbCommission()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
473 | + .projectEndTime(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getProjectEndTime()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
474 | + .projectStartTime(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getProjectStartTime()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
475 | + .spainPaidRmbCommission(Objects.isNull(projectBaseInfoDO) || Objects.isNull(projectBaseInfoDO.getSpainPaidRmbCommission()) ? OrderLockFieldEnum.UN_LOCKED.name() : OrderLockFieldEnum.LOCKED.name()) | |
471 | 476 | .build())) |
472 | 477 | .build(); |
473 | 478 | |
... | ... | @@ -513,7 +518,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
513 | 518 | |
514 | 519 | //包装费用合计¥ |
515 | 520 | businessProfitInfoVO.setPacketRmbTotalPrice(Optional.ofNullable(businessProfitInfoVO.getPacketTotalPrice()) |
516 | - .orElse(0.0) *exchangeRate.doubleValue()); | |
521 | + .orElse(0.0) * exchangeRate.doubleValue()); | |
517 | 522 | //包装费用实际金额 |
518 | 523 | details.stream() |
519 | 524 | .map(OrderInfoResultVO::getOrderCostInfo) |
... | ... | @@ -676,6 +681,7 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
676 | 681 | BusinessProfitInfoVO businessProfitInfoVO = orderInfoResultVOS.get(0); |
677 | 682 | exportBusinessProfitExcel(response, businessProfitInfoVO); |
678 | 683 | } |
684 | + | |
679 | 685 | public void exportBusinessProfitExcel(HttpServletResponse response, BusinessProfitInfoVO businessProfitInfoVO) throws Exception { |
680 | 686 | DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
681 | 687 | XSSFWorkbook workbook = new XSSFWorkbook(); |
... | ... | @@ -718,67 +724,67 @@ public class ProjectBaseInfoServiceImpl extends ServiceImpl<ProjectBaseInfoMappe |
718 | 724 | createMergedRow(sheet, cellStyle, 12, 13, 7, 9, Optional.ofNullable(businessProfitInfoVO.getCustomerTotalPrice()).map(price -> "$" + price).orElse("-")); |
719 | 725 | createMergedRow(sheet, cellStyle, 14, 15, 0, 4, "生产科总价合计"); |
720 | 726 | createMergedRow(sheet, cellStyle, 14, 15, 5, 6, Optional.ofNullable(businessProfitInfoVO.getProductionDepartmentTotalPrice()).map(price -> "¥" + price).orElse("-")); |
721 | - createMergedRow(sheet, cellStyle, 14, 15, 7, 9,""); | |
727 | + createMergedRow(sheet, cellStyle, 14, 15, 7, 9, ""); | |
722 | 728 | createMergedRow(sheet, cellStyle, 16, 17, 0, 4, "包装费用合计"); |
723 | 729 | createMergedRow(sheet, cellStyle, 16, 17, 5, 6, Optional.ofNullable(businessProfitInfoVO.getPacketRmbTotalPrice()).map(price -> "¥" + price).orElse("-")); |
724 | 730 | createMergedRow(sheet, cellStyle, 16, 17, 7, 9, Optional.ofNullable(businessProfitInfoVO.getPacketTotalPrice()).map(price -> "$" + price).orElse("-")); |
725 | 731 | createMergedRow(sheet, cellStyle, 18, 19, 0, 4, "研发复制费合计"); |
726 | 732 | createMergedRow(sheet, cellStyle, 18, 19, 5, 6, Optional.ofNullable(businessProfitInfoVO.getDevelopmentCopyRmbTotalPrice()).map(price -> "¥" + price).orElse("-")); |
727 | - createMergedRow(sheet, cellStyle, 18, 19, 7, 9,""); | |
733 | + createMergedRow(sheet, cellStyle, 18, 19, 7, 9, ""); | |
728 | 734 | createMergedRow(sheet, cellStyle, 20, 21, 0, 4, "固定成本"); |
729 | 735 | createMergedRow(sheet, cellStyle, 20, 21, 5, 6, Optional.ofNullable(businessProfitInfoVO.getFixedCost()).map(price -> "¥" + price).orElse("-")); |
730 | - createMergedRow(sheet, cellStyle, 20, 21, 7, 9,""); | |
736 | + createMergedRow(sheet, cellStyle, 20, 21, 7, 9, ""); | |
731 | 737 | createMergedRow(sheet, cellStyle, 22, 23, 0, 4, "西班牙提成"); |
732 | 738 | createMergedRow(sheet, cellStyle, 22, 23, 5, 6, Optional.ofNullable(businessProfitInfoVO.getSpainRmbCommission()).map(price -> "¥" + price).orElse("-")); |
733 | - createMergedRow(sheet, cellStyle, 22, 23, 7, 9,""); | |
739 | + createMergedRow(sheet, cellStyle, 22, 23, 7, 9, ""); | |
734 | 740 | createMergedRow(sheet, cellStyle, 24, 25, 0, 4, "中国团队提成"); |
735 | 741 | createMergedRow(sheet, cellStyle, 24, 25, 5, 6, Optional.ofNullable(businessProfitInfoVO.getRmbCommission()).map(price -> "¥" + price).orElse("-")); |
736 | - createMergedRow(sheet, cellStyle, 24, 25, 7, 9,""); | |
742 | + createMergedRow(sheet, cellStyle, 24, 25, 7, 9, ""); | |
737 | 743 | createMergedRow(sheet, cellStyle, 26, 27, 0, 4, "支出合计"); |
738 | 744 | createMergedRow(sheet, cellStyle, 26, 27, 5, 6, Optional.ofNullable(businessProfitInfoVO.getRmbTotalExpense()).map(price -> "¥" + price).orElse("-")); |
739 | - createMergedRow(sheet, cellStyle, 26, 27, 7, 9,""); | |
745 | + createMergedRow(sheet, cellStyle, 26, 27, 7, 9, ""); | |
740 | 746 | createMergedRow(sheet, cellStyle, 28, 29, 0, 4, "毛利润"); |
741 | 747 | createMergedRow(sheet, cellStyle, 28, 29, 5, 6, Optional.ofNullable(businessProfitInfoVO.getProfit()).map(price -> "¥" + price).orElse("-")); |
742 | - createMergedRow(sheet, cellStyle, 28, 29, 7, 9,""); | |
748 | + createMergedRow(sheet, cellStyle, 28, 29, 7, 9, ""); | |
743 | 749 | createMergedRow(sheet, cellStyle, 30, 31, 0, 4, "毛利率"); |
744 | 750 | createMergedRow(sheet, cellStyle, 30, 31, 5, 6, Optional.ofNullable(businessProfitInfoVO.getProfitRate()).map(rate -> rate.multiply(new BigDecimal(100)) + "%").orElse("-")); |
745 | - createMergedRow(sheet, cellStyle, 30, 31, 7, 9,""); | |
751 | + createMergedRow(sheet, cellStyle, 30, 31, 7, 9, ""); | |
746 | 752 | createMergedRow(sheet, cellStyle, 32, 33, 0, 4, "研发贸易净利润"); |
747 | 753 | createMergedRow(sheet, cellStyle, 32, 33, 5, 6, Optional.ofNullable(businessProfitInfoVO.getDevelopmentProfit()).map(price -> "¥" + price).orElse("-")); |
748 | - createMergedRow(sheet, cellStyle, 32, 33, 7, 9,""); | |
754 | + createMergedRow(sheet, cellStyle, 32, 33, 7, 9, ""); | |
749 | 755 | createMergedRow(sheet, cellStyle, 34, 35, 0, 4, "研发贸易净利润率"); |
750 | 756 | createMergedRow(sheet, cellStyle, 34, 35, 5, 6, Optional.ofNullable(businessProfitInfoVO.getDevelopmentProfitRate()).map(rate -> rate.multiply(new BigDecimal(100)) + "%").orElse("-")); |
751 | - createMergedRow(sheet, cellStyle, 34, 35, 7, 9,""); | |
757 | + createMergedRow(sheet, cellStyle, 34, 35, 7, 9, ""); | |
752 | 758 | createMergedRow(sheet, cellStyle, 36, 37, 0, 4, "包装费用合计金额"); |
753 | 759 | createMergedRow(sheet, cellStyle, 36, 37, 5, 6, Optional.ofNullable(businessProfitInfoVO.getPacketRmbTotalPrice()).map(price -> "¥" + price).orElse("-")); |
754 | - createMergedRow(sheet, cellStyle, 36, 37, 7, 9,""); | |
760 | + createMergedRow(sheet, cellStyle, 36, 37, 7, 9, ""); | |
755 | 761 | createMergedRow(sheet, cellStyle, 38, 39, 0, 4, "包装费用实际金额"); |
756 | 762 | createMergedRow(sheet, cellStyle, 38, 39, 5, 6, Optional.ofNullable(businessProfitInfoVO.getPacketActualRmbTotalPrice()).map(price -> "¥" + price).orElse("-")); |
757 | - createMergedRow(sheet, cellStyle, 38, 39, 7, 9,""); | |
763 | + createMergedRow(sheet, cellStyle, 38, 39, 7, 9, ""); | |
758 | 764 | createMergedRow(sheet, cellStyle, 40, 41, 0, 4, "订单总数量"); |
759 | 765 | createMergedRow(sheet, cellStyle, 40, 41, 5, 6, Optional.ofNullable(businessProfitInfoVO.getOrderCount()).map(String::valueOf).orElse("-")); |
760 | - createMergedRow(sheet, cellStyle, 40, 41, 7, 9,""); | |
766 | + createMergedRow(sheet, cellStyle, 40, 41, 7, 9, ""); | |
761 | 767 | createMergedRow(sheet, cellStyle, 42, 43, 0, 4, "实际跟单单价=实际跟单费用/件数"); |
762 | 768 | createMergedRow(sheet, cellStyle, 42, 43, 5, 6, Optional.ofNullable(businessProfitInfoVO.getActualOrderRmbPrice()).map(price -> "¥" + price).orElse("-")); |
763 | - createMergedRow(sheet, cellStyle, 42, 43, 7, 9,""); | |
769 | + createMergedRow(sheet, cellStyle, 42, 43, 7, 9, ""); | |
764 | 770 | createMergedRow(sheet, cellStyle, 44, 45, 0, 4, "实际跟单单价折算美金"); |
765 | 771 | createMergedRow(sheet, cellStyle, 44, 45, 5, 6, Optional.ofNullable(businessProfitInfoVO.getActualOrderPrice()).map(price -> "$" + price).orElse("-")); |
766 | - createMergedRow(sheet, cellStyle, 44, 45, 7, 9,""); | |
772 | + createMergedRow(sheet, cellStyle, 44, 45, 7, 9, ""); | |
767 | 773 | createMergedRow(sheet, cellStyle, 46, 47, 0, 4, "包装费用收益"); |
768 | 774 | createMergedRow(sheet, cellStyle, 46, 47, 5, 6, Optional.ofNullable(businessProfitInfoVO.getPacketProfitRmbPrice()).map(price -> "¥" + price).orElse("-")); |
769 | - createMergedRow(sheet, cellStyle, 46, 47, 7, 9,""); | |
775 | + createMergedRow(sheet, cellStyle, 46, 47, 7, 9, ""); | |
770 | 776 | createMergedRow(sheet, cellStyle, 48, 49, 0, 4, "包装费用净利润率"); |
771 | 777 | createMergedRow(sheet, cellStyle, 48, 49, 5, 6, Optional.ofNullable(businessProfitInfoVO.getPacketProfitRate()).map(rate -> rate.multiply(new BigDecimal(100)) + "%").orElse("-")); |
772 | - createMergedRow(sheet, cellStyle, 48, 49, 7, 9,""); | |
778 | + createMergedRow(sheet, cellStyle, 48, 49, 7, 9, ""); | |
773 | 779 | createMergedRow(sheet, cellStyle, 50, 51, 0, 4, "实际汇率"); |
774 | 780 | createMergedRow(sheet, cellStyle, 50, 51, 5, 6, Optional.ofNullable(businessProfitInfoVO.getActualExchangeRate()).map(String::valueOf).orElse("-")); |
775 | - createMergedRow(sheet, cellStyle, 50, 51, 7, 9,""); | |
781 | + createMergedRow(sheet, cellStyle, 50, 51, 7, 9, ""); | |
776 | 782 | createMergedRow(sheet, cellStyle, 52, 53, 0, 4, "汇率收益"); |
777 | 783 | createMergedRow(sheet, cellStyle, 52, 53, 5, 6, Optional.ofNullable(businessProfitInfoVO.getExchangeRateProfit()).map(price -> "¥" + price).orElse("-")); |
778 | - createMergedRow(sheet, cellStyle, 52, 53, 7, 9,""); | |
784 | + createMergedRow(sheet, cellStyle, 52, 53, 7, 9, ""); | |
779 | 785 | createMergedRow(sheet, cellStyle, 54, 55, 0, 4, "综合收益"); |
780 | 786 | createMergedRow(sheet, cellStyle, 54, 55, 5, 6, Optional.ofNullable(businessProfitInfoVO.getComprehensiveProfit()).map(price -> "¥" + price).orElse("-")); |
781 | - createMergedRow(sheet, cellStyle, 54, 55, 7, 9,""); | |
787 | + createMergedRow(sheet, cellStyle, 54, 55, 7, 9, ""); | |
782 | 788 | |
783 | 789 | // 设置响应头 |
784 | 790 | response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); | ... | ... |