Commit 0551ead7b968ba1e79a22212c1e89aad8b300201

Authored by 谢茂盛
1 parent 22a2341b

feat: 问题修复项

1、基础信息审批放给业务员
sql/dml_20240314.sql 0 → 100644
  1 +alter table `order_field_lock_apply` add column `audit_role_codes` varchar(128) DEFAULT 'admin' COMMENT '审批角色code集合,分割';
0 2 \ No newline at end of file
... ...
src/main/java/com/order/erp/common/utils/OrderFieldUtils.java
1 1 package com.order.erp.common.utils;
2 2  
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.order.erp.domain.ApplyStatusEnum;
  5 +import com.order.erp.domain.ApplyTypeEnum;
3 6 import com.order.erp.domain.OrderLockFieldEnum;
  7 +import com.order.erp.domain.RoleEnum;
  8 +import com.order.erp.domain.dto.order.OrderFieldLockApplyDO;
4 9 import com.order.erp.domain.vo.order.*;
  10 +import org.springframework.beans.BeanUtils;
5 11  
  12 +import java.util.ArrayList;
  13 +import java.util.List;
6 14 import java.util.Objects;
7 15  
8 16 /**
... ... @@ -13,6 +21,296 @@ import java.util.Objects;
13 21 */
14 22 public class OrderFieldUtils {
15 23  
  24 + /**
  25 + *
  26 + * @param fieldJson
  27 + * @return
  28 + */
  29 + public static OrderLockFieldVO string2orderField(String fieldJson) {
  30 + return JSONObject.parseObject(fieldJson, OrderLockFieldVO.class);
  31 + }
  32 +
  33 +
  34 + /**
  35 + * @param baseFields
  36 + * @param userId
  37 + * @param orderId
  38 + * @return
  39 + */
  40 + public static OrderFieldLockApplyDO generatorBaseInfoFieldLockApplyDO(OrderBaseFieldVO baseFields, Long userId, Long orderId) {
  41 + OrderLockFieldVO lockFieldVO = new OrderLockFieldVO();
  42 + lockFieldVO.setBaseFields(baseFields);
  43 + OrderFieldLockApplyDO applyDO = OrderFieldLockApplyDO.builder()
  44 + .applyUserId(userId)
  45 + .auditUserId(null)
  46 + .orderId(orderId)
  47 + .type(ApplyTypeEnum.FIELD_EDIT_APPLY.getType())
  48 + .remark(ApplyTypeEnum.FIELD_EDIT_APPLY.getDesc())
  49 + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus())
  50 + .build();
  51 + if (Objects.nonNull(baseFields) && checkOrderBaseField4apply(baseFields)) {
  52 + lockFieldVO.setInspectionStageFields(initInspectionStageField(OrderLockFieldEnum.LOCKED));
  53 + lockFieldVO.setProfitAnalysisFields(initProfitAnalysisField(OrderLockFieldEnum.LOCKED));
  54 + lockFieldVO.setReportFields(initReportField(OrderLockFieldEnum.LOCKED));
  55 + lockFieldVO.setTrackStageFields(initTrackStageField(OrderLockFieldEnum.LOCKED));
  56 + applyDO.setFields(JSONObject.toJSONString(lockFieldVO));
  57 + applyDO.setAuditRoleCodes(RoleEnum.BUSINESS_USER.getCode());
  58 + return applyDO;
  59 + } else {
  60 + return null;
  61 + }
  62 + }
  63 +
  64 + /**
  65 + * @param fieldVO
  66 + * @param userId
  67 + * @return
  68 + */
  69 + public static OrderFieldLockApplyDO generatorOtherInfoFieldLockApplyDO(OrderUnlockFieldApplyVO fieldVO, Long userId) {
  70 + if (checkInspectionStageField4apply(fieldVO.getInspectionStageFields()) &&
  71 + checkProfitAnalysisField4apply(fieldVO.getProfitAnalysisFields()) &&
  72 + checkReportField4apply(fieldVO.getReportFields()) &&
  73 + checkTrackStageField4apply(fieldVO.getTrackStageFields())) {
  74 + OrderLockFieldVO lockFieldVO = new OrderLockFieldVO();
  75 + fieldVO.setBaseFields(initOrderBaseField(OrderLockFieldEnum.LOCKED));
  76 + BeanUtils.copyProperties(fieldVO, lockFieldVO);
  77 + return OrderFieldLockApplyDO.builder()
  78 + .applyUserId(userId)
  79 + .auditUserId(null)
  80 + .fields(JSONObject.toJSONString(lockFieldVO))
  81 + .auditRoleCodes(RoleEnum.ADMIN.getCode())
  82 + .orderId(fieldVO.getOrderId())
  83 + .type(ApplyTypeEnum.FIELD_EDIT_APPLY.getType())
  84 + .remark(ApplyTypeEnum.FIELD_EDIT_APPLY.getDesc())
  85 + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus())
  86 + .build();
  87 + } else {
  88 + return null;
  89 + }
  90 + }
  91 +
  92 + /**
  93 + * @param fieldVO
  94 + * @param userId
  95 + * @return
  96 + */
  97 + public static List<OrderFieldLockApplyDO> initOrderFieldLockApplyDOS(OrderUnlockFieldApplyVO fieldVO, Long userId) {
  98 + List<OrderFieldLockApplyDO> resultList = new ArrayList<>();
  99 + OrderFieldLockApplyDO baseLockApply = generatorBaseInfoFieldLockApplyDO(fieldVO.getBaseFields(), userId, fieldVO.getOrderId());
  100 + if (Objects.nonNull(baseLockApply)) {
  101 + resultList.add(baseLockApply);
  102 + }
  103 + OrderFieldLockApplyDO otherLockApply = generatorOtherInfoFieldLockApplyDO(fieldVO, userId);
  104 + if (Objects.nonNull(otherLockApply)) {
  105 + resultList.add(otherLockApply);
  106 + }
  107 + return resultList;
  108 + }
  109 +
  110 + /**
  111 + * @param inspectionStageField
  112 + * @return
  113 + */
  114 + public static boolean checkInspectionStageField4apply(OrderInspectionStageFieldVO inspectionStageField) {
  115 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getMidCheckApplyTime())) {
  116 + return true;
  117 + }
  118 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getMidCheckComment())) {
  119 + return true;
  120 + }
  121 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getMidCheckResult())) {
  122 + return true;
  123 + }
  124 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getEndCheckApplyTime())) {
  125 + return true;
  126 + }
  127 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getSpecification())) {
  128 + return true;
  129 + }
  130 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getFunctionality())) {
  131 + return true;
  132 + }
  133 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getElectroplate())) {
  134 + return true;
  135 + }
  136 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getValue1())) {
  137 + return true;
  138 + }
  139 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getValue2())) {
  140 + return true;
  141 + }
  142 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getValue3())) {
  143 + return true;
  144 + }
  145 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getBoxPacket())) {
  146 + return true;
  147 + }
  148 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(inspectionStageField.getEndCheckResult())) {
  149 + return true;
  150 + }
  151 + return false;
  152 + }
  153 +
  154 + /**
  155 + * @param stageFieldVO
  156 + * @return
  157 + */
  158 + public static boolean checkTrackStageField4apply(OrderTrackStageFieldVO stageFieldVO) {
  159 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getPpTime())) {
  160 + return true;
  161 + }
  162 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getPpConfirmResult())) {
  163 + return true;
  164 + }
  165 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getEsoSampleSendTime())) {
  166 + return true;
  167 + }
  168 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getShippmentSampleSendTime())) {
  169 + return true;
  170 + }
  171 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getShippmentSampleConfirmResult())) {
  172 + return true;
  173 + }
  174 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getSelfTestPassTime())) {
  175 + return true;
  176 + }
  177 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getAitexTestSendTime())) {
  178 + return true;
  179 + }
  180 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getAitexTestFinishResult())) {
  181 + return true;
  182 + }
  183 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getSgsTestSendTime())) {
  184 + return true;
  185 + }
  186 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getSgsTestFinishResult())) {
  187 + return true;
  188 + }
  189 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getBarcodeStickerArrivalTime())) {
  190 + return true;
  191 + }
  192 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getLatestBkTime())) {
  193 + return true;
  194 + }
  195 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(stageFieldVO.getLatestArrivalTime())) {
  196 + return true;
  197 + }
  198 + return false;
  199 + }
  200 +
  201 + /**
  202 + * @param reportField
  203 + * @return
  204 + */
  205 + public static boolean checkReportField4apply(OrderCompletionReportFieldVO reportField) {
  206 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getIdeaSource())) {
  207 + return true;
  208 + }
  209 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getIdeaSourceRate())) {
  210 + return true;
  211 + }
  212 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getManualPreform1())) {
  213 + return true;
  214 + }
  215 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getManualPreform1Rate())) {
  216 + return true;
  217 + }
  218 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getManualPreform2())) {
  219 + return true;
  220 + }
  221 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(reportField.getManualPreform2Rate())) {
  222 + return true;
  223 + }
  224 + return false;
  225 + }
  226 +
  227 + /**
  228 + * @param profitAnalysisField
  229 + * @return
  230 + */
  231 + public static boolean checkProfitAnalysisField4apply(OrderProfitAnalysisFieldVO profitAnalysisField) {
  232 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(profitAnalysisField.getCustomerRmbPrice())) {
  233 + return true;
  234 + }
  235 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(profitAnalysisField.getCustomerPrice())) {
  236 + return true;
  237 + }
  238 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(profitAnalysisField.getPacketPrice())) {
  239 + return true;
  240 + }
  241 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(profitAnalysisField.getProductionDepartmentPrice())) {
  242 + return true;
  243 + }
  244 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(profitAnalysisField.getProfitType())) {
  245 + return true;
  246 + }
  247 + return false;
  248 + }
  249 +
  250 + public static boolean checkOrderBaseField4apply(OrderBaseFieldVO baseFields) {
  251 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getCustomerCode())) {
  252 + return true;
  253 + }
  254 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getProjectNo())) {
  255 + return true;
  256 + }
  257 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getProductionDepartment())) {
  258 + return true;
  259 + }
  260 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getInnerNo())) {
  261 + return true;
  262 + }
  263 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getCustomerPo())) {
  264 + return true;
  265 + }
  266 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getCustomerStyle())) {
  267 + return true;
  268 + }
  269 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getModeleLo())) {
  270 + return true;
  271 + }
  272 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getCollection())) {
  273 + return true;
  274 + }
  275 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getPoColor())) {
  276 + return true;
  277 + }
  278 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getCnColor())) {
  279 + return true;
  280 + }
  281 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getPicUrl())) {
  282 + return true;
  283 + }
  284 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getProductionComment())) {
  285 + return true;
  286 + }
  287 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getOrderCount())) {
  288 + return true;
  289 + }
  290 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getOrderComposition())) {
  291 + return true;
  292 + }
  293 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getProductStyle())) {
  294 + return true;
  295 + }
  296 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getProductionDepartmentConsignTime())) {
  297 + return true;
  298 + }
  299 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getOrderHodTime())) {
  300 + return true;
  301 + }
  302 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getOutboundType())) {
  303 + return true;
  304 + }
  305 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getPacketType())) {
  306 + return true;
  307 + }
  308 + if (OrderLockFieldEnum.UN_LOCKED.getStatus().equals(baseFields.getBusinessPerson())) {
  309 + return true;
  310 + }
  311 +
  312 + return false;
  313 + }
16 314  
17 315 /**
18 316 * @param lockFieldEnum
... ...
src/main/java/com/order/erp/domain/dto/order/OrderFieldLockApplyDO.java
... ... @@ -36,6 +36,10 @@ public class OrderFieldLockApplyDO extends BaseDO implements Serializable {
36 36 */
37 37 private Long auditUserId;
38 38 /**
  39 + * 审批角色code集合,分割
  40 + */
  41 + private String auditRoleCodes;
  42 + /**
39 43 * 锁定字段 json字符串
40 44 */
41 45 private String fields;
... ...
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
... ... @@ -634,8 +634,11 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;OrderBaseInfoMapper, O
634 634 checkApply(fieldVO, userId);
635 635  
636 636 OrderFieldLockApplyDO applyDO = initOrderFieldLockApplyDO(fieldVO, userId);
  637 + List<OrderFieldLockApplyDO> applyDOList = OrderFieldUtils.initOrderFieldLockApplyDOS(fieldVO, userId);
  638 + if (CollectionUtils.isNotEmpty(applyDOList)) {
  639 + orderFieldLockApplyService.saveBatch(applyDOList);
  640 + }
637 641  
638   - orderFieldLockApplyService.save(applyDO);
639 642 orderOptLogService.save(buildOrderOptLogDo(fieldVO.getOrderId(), userId, OrderOptTypeEnum.ORDER_FIELD_UNLOCK_APPLY.getDesc(), applyDO.getFields()));
640 643 return ServerResult.success();
641 644 }
... ... @@ -704,6 +707,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;OrderBaseInfoMapper, O
704 707 .applyUserId(userId)
705 708 .auditUserId(null)
706 709 .fields(JSONObject.toJSONString(reportFieldVO))
  710 + .auditRoleCodes(RoleEnum.ADMIN.getCode())
707 711 .orderId(reportFieldVO.getOrderId())
708 712 .type(ApplyTypeEnum.ORDER_REPORT_APPLY.getType())
709 713 .remark(ApplyTypeEnum.ORDER_REPORT_APPLY.getDesc())
... ... @@ -738,6 +742,7 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl&lt;OrderBaseInfoMapper, O
738 742 .applyUserId(userId)
739 743 .auditUserId(null)
740 744 .fields(JSONObject.toJSONString(profitAnalysisFieldVO))
  745 + .auditRoleCodes(RoleEnum.ADMIN.getCode())
741 746 .orderId(profitAnalysisFieldVO.getOrderId())
742 747 .type(ApplyTypeEnum.ORDER_PROFIT_APPLY.getType())
743 748 .remark(ApplyTypeEnum.ORDER_PROFIT_APPLY.getDesc())
... ...
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
... ... @@ -14,13 +14,14 @@ import com.order.erp.common.constant.Constant;
14 14 import com.order.erp.common.constant.ServerResult;
15 15 import com.order.erp.common.constant.ServerResultCode;
16 16 import com.order.erp.common.exception.BusinessException;
  17 +import com.order.erp.common.utils.OrderFieldUtils;
17 18 import com.order.erp.config.DataScope;
18 19 import com.order.erp.domain.ApplyStatusEnum;
19 20 import com.order.erp.domain.ApplyTypeEnum;
20 21 import com.order.erp.domain.OrderStatusEnum;
  22 +import com.order.erp.domain.RoleEnum;
21 23 import com.order.erp.domain.dto.BaseDO;
22 24 import com.order.erp.domain.dto.order.*;
23   -import com.order.erp.domain.vo.admin.AdminResultVO;
24 25 import com.order.erp.domain.vo.order.*;
25 26 import com.order.erp.mapper.order.OrderFieldLockApplyMapper;
26 27 import com.order.erp.service.order.*;
... ... @@ -297,10 +298,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
297 298 * @return
298 299 */
299 300 private LambdaQueryWrapper<OrderFieldLockApplyDO> buildQueryByParam(OrderFieldLockApplyQueryVO queryVO) {
300   - AdminResultVO resultVO = dataScope.isAdmin();
301   - if (!resultVO.getIsAdmin()) {
302   - queryVO.setApplyUserId(Objects.nonNull(resultVO.getUserVO()) ? resultVO.getUserVO().getId() : -1);
303   - }
  301 + RoleEnum roleEnum = dataScope.getRole();
304 302 Set<Long> orderIds = new HashSet<>();
305 303 if (CollectionUtils.isNotEmpty(queryVO.getCustomerCode()) || CollectionUtils.isNotEmpty(queryVO.getInnerNo())
306 304 || CollectionUtils.isNotEmpty(queryVO.getProductionDepartment()) || CollectionUtils.isNotEmpty(queryVO.getProjectNo())) {
... ... @@ -319,6 +317,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
319 317 return new LambdaQueryWrapper<OrderFieldLockApplyDO>()
320 318 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
321 319 .eq(Objects.nonNull(queryVO.getApplyUserId()), OrderFieldLockApplyDO::getApplyUserId, queryVO.getApplyUserId())
  320 + .like(Objects.nonNull(roleEnum), OrderFieldLockApplyDO::getAuditRoleCodes, roleEnum.getCode())
322 321 .eq(Objects.nonNull(queryVO.getStatus()), OrderFieldLockApplyDO::getStatus, queryVO.getStatus())
323 322 .eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType())
324 323 .in(CollectionUtils.isNotEmpty(queryVO.getStatusList()), OrderFieldLockApplyDO::getStatus, queryVO.getStatusList())
... ... @@ -407,7 +406,23 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
407 406 .userId(applyDO.getApplyUserId())
408 407 .fields(applyDO.getFields()).build();
409 408 }
410   - recordDO.setFields(applyDO.getFields());
  409 + OrderLockFieldVO applyField = OrderFieldUtils.string2orderField(applyDO.getFields());
  410 + OrderLockFieldVO recordField = StringUtils.isNotBlank(recordDO.getFields()) ? OrderFieldUtils.string2orderField(recordDO.getFields()) : null;
  411 + if (Objects.nonNull(recordDO)) {
  412 + if (applyDO.getAuditRoleCodes().contains(RoleEnum.BUSINESS_USER.getCode())) {
  413 + recordField.setBaseFields(applyField.getBaseFields());
  414 + recordDO.setFields(JSONObject.toJSONString(recordField));
  415 + } else {
  416 + recordField.setTrackStageFields(applyField.getTrackStageFields());
  417 + recordField.setReportFields(applyField.getReportFields());
  418 + recordField.setProfitAnalysisFields(applyField.getProfitAnalysisFields());
  419 + recordField.setInspectionStageFields(applyField.getInspectionStageFields());
  420 + recordDO.setFields(JSONObject.toJSONString(recordField));
  421 + }
  422 + }else {
  423 + recordDO.setFields(applyDO.getFields());
  424 + }
  425 +
411 426  
412 427 if (Objects.isNull(recordDO.getId())) {
413 428 fieldLockRecordService.save(recordDO);
... ...