Commit 60b81195047f6aef99f4318ef46795f585dd6e5a

Authored by 曾国涛
1 parent 10fec827

feat(order): 增加申请编辑字段的备注功能

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