diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/InsertPlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/InsertPlateRespVO.java index 65ce07c68..608aa2abb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/InsertPlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plate/vo/InsertPlateRespVO.java @@ -7,7 +7,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.List; +import java.util.Map; @Data @Builder @@ -21,7 +21,8 @@ public class InsertPlateRespVO { @Schema(description = "新增的小板编号") - private List plateNo; + // 小板ID,小板编号 + private Map plateNo; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java index 075bfd701..22ba4ed74 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java @@ -18,6 +18,7 @@ import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -191,12 +192,18 @@ public interface GoodsMapper extends BaseMapperX { List selectPlateGoodIds(@Param("orderIds") List orderIds, @Param("organId") Long organId); - default List selectOrderGoodsList(List orderIds, List goodsIds, Long organId) { + default List selectOrderGoodsList(List orderIds, + List goodsIds, + String material, + BigDecimal thickness, + Long organId) { return selectList(new LambdaQueryWrapperX() .eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getDeleted, false) .inIfPresent(GoodsDO::getOrderId,orderIds) - .inIfPresent(GoodsDO::getGoodsId,goodsIds)); + .inIfPresent(GoodsDO::getGoodsId,goodsIds) + .eqIfPresent(GoodsDO::getMaterial,material) + .eqIfPresent(GoodsDO::getThickness,thickness)); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java index 43b692a7b..8559686aa 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/planitem/PlanItemMapper.java @@ -78,4 +78,12 @@ public interface PlanItemMapper extends BaseMapperX { Long selectIsCuttingPlate(@Param("planId") Long planId,@Param("organId") Long organId); + + default List selectPlanOrderGoodsList(Long planId, List orderIds,Long organId) { + return selectList( new LambdaQueryWrapperX() + .eq(PlanItemDO::getOrganId, organId) + .eq(PlanItemDO::getPlanId,planId) + .inIfPresent(PlanItemDO::getOrderId,orderIds) + .select(PlanItemDO::getGoodsId)); + } } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index 554bfe78e..17b07a232 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -1657,7 +1657,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); - planMapper.updateById(planDO); + planMapper.updatePlanStatus(planDO.getId(),planDO.getStatus(),getUserOrganId()); + orderMapper.updateBatch(orderDOS); return; @@ -1717,7 +1718,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } - planMapper.updateById(planDO); + planMapper.updatePlanStatus(planDO.getId(),planDO.getStatus(),getUserOrganId()); + List plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId()); List orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 587021512..f0b2a66af 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -352,12 +352,8 @@ public class PlanServiceImpl implements PlanService { if (!plateDOS.isEmpty()) { List plateIdList = plateDOS.stream().map(PlateDO::getId).toList(); - List goodsIds = plateDOS.stream().map(PlateDO::getGoodsId).toList(); - plateMapper.deleteBatchIds(plateIdList); - goodsMapper.deleteBatchIds(goodsIds); - orderItemMapper.delete(new LambdaQueryWrapperX() .eq(OrderItemDO::getOrganId, getUserOrganId()) .inIfPresent(OrderItemDO::getOrderId, orderIds) @@ -1318,7 +1314,7 @@ public class PlanServiceImpl implements PlanService { planDOS.forEach(f->{ - if(f.getType().equals(PlanStatusEnum.OPENED.getStatus())){ + if(f.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ f.setStatus(PlanStatusEnum.OPENING.getStatus()); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java index 5051f7454..4523d1f6f 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plate/PlateServiceImpl.java @@ -536,68 +536,38 @@ public class PlateServiceImpl implements PlateService { List orderPlateModelDOS = new ArrayList<>(); - List goodsIds = new ArrayList<>(reqVO.stream().map(OptimizationSavePlateReqVO::getGoodsId).distinct().toList()); + Map plateIdAndNo = new HashMap<>(); + + Long planId = Optional.ofNullable(reqVO.get(0).getPlanId()).orElseThrow(()-> exception(ORDER_PLAN_PLATE_ERROR)); + + PlanDO planDO = planMapper.selectById(planId); + AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR); List orderIds = reqVO.stream().map(OptimizationSavePlateReqVO::getOrderId).distinct().toList(); - List goodsDOList = goodsMapper.selectOrderGoodsList(orderIds, goodsIds, getUserOrganId()); + List planItemDOList = planItemMapper.selectPlanOrderGoodsList(planId, orderIds, getUserOrganId()); - goodsIds.removeAll(goodsDOList.stream().map(GoodsDO::getGoodsId).distinct().toList()); + List goodsId = planItemDOList.stream().map(PlanItemDO::getGoodsId).distinct().toList(); - if(CollUtil.isNotEmpty(goodsIds)){ - - List goodsDOS = new ArrayList<>(); - - List plateGoodDOS = plateGoodMapper.selectGoodsByGoodsId(goodsIds, getUserOrganId()); - - for (PlateGoodDO plateGoodDO : plateGoodDOS) { - - GoodsDO goodsDO = GoodsDO.builder() - .id(null) - .orderId(reqVO.stream().filter(f -> f.getGoodsId().equals(plateGoodDO.getGoodsId())).map(OptimizationSavePlateReqVO::getOrderId).toList().get(0)) - .rawGoodsId("0") - .goodsId(plateGoodDO.getGoodsId()) - .goodsName(plateGoodDO.getGoodsName()) - .material(plateGoodDO.getMaterial()) - .texture(plateGoodDO.getTexture()) - .color(plateGoodDO.getColor()) - .width(BigDecimal.valueOf(plateGoodDO.getWidth())) - .height(BigDecimal.valueOf(plateGoodDO.getHeight())) - .thickness(BigDecimal.valueOf(plateGoodDO.getThickness())) - .remark(plateGoodDO.getRemark()) - .brand(plateGoodDO.getBrand()) - .build(); - - goodsDOS.add(goodsDO); - } - - goodsMapper.insertBatch(goodsDOS); - - goodsDOList.addAll(goodsDOS); - } + List goodsDOS = goodsMapper.selectBatchIds(goodsId); reqVO.forEach(f->{ - List plateNoList = new ArrayList<>(); - Long orderId = f.getOrderId(); - GoodsDO goodsDO = goodsDOList.stream().filter(g -> g.getGoodsId().equals(f.getGoodsId())).toList().get(0); + GoodsDO goodsDO = goodsDOS.stream().filter(g -> g.getOrderId().equals(f.getOrderId())).toList().get(0); orderBodyNumVOS.add(OrderBodyNumVO.builder() .bodyId(f.getBodyId()) .plateNum(f.getMultiple()) .build()); - // 生成板编号 long obtainingTime = SnowflakeIdWorker3rd.obtainingTime(); String plateNo = (obtainingTime) + Long.toString(idWorker.nextId()).substring(2); - plateNoList.add(plateNo); - String remake1 = f.getRemake1() == null ? "" : f.getRemake1() + ";"; String remake2 = f.getRemake2() == null ? "" : f.getRemake2(); @@ -605,6 +575,7 @@ public class PlateServiceImpl implements PlateService { // 小板ID Long plateId = (Long) identifierGenerator.nextId(null); + plateIdAndNo.put(plateId.toString(),plateNo); plateDOS.add(PlateDO.builder() .id(plateId) @@ -658,7 +629,7 @@ public class PlateServiceImpl implements PlateService { insertPlateRespVOS.add(InsertPlateRespVO.builder() .blockKey(f.getBlockKey()) - .plateNo(plateNoList) + .plateNo(plateIdAndNo) .build()); }); diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 07c70c952..f985bdfe9 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -306,7 +306,7 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_PLAN_DATE_ERROR = new ErrorCode(1_002_041_004, "排单信息不存在,请重新进入或切换排单"); public static final ErrorCode ORDER_PLAN_OPTIMIZE_ERROR = new ErrorCode(1_002_041_005, "当前排单对应的优化数据为空,请重新进行优化"); public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_006, "生产单对应的板材造型数据为空,请重新导入生产单"); - public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_002_041_007, "当前排单对应的板材数据有异常,请查看板材信息或联系客服"); + public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_002_041_007, "当前排单对应的板材数据有异常,请查看板材信息"); public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_002_041_008, "当前排单对应的生产单数据为空,请删掉排单并重新创建排单"); public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请重新导入生产单并排单"); public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服"); @@ -338,6 +338,7 @@ public class ErrorCodeConstants { public static final ErrorCode THIS_PLAN_SCHEME_DATA_ERROR = new ErrorCode(1_002_041_047, "当前方案组的优化信息有误,请重新选择方案组或重新导入排单再进行优化"); public static final ErrorCode PLAN_SORT_DATA_ERROR = new ErrorCode(1_002_041_048, "已无可进行排序的数据,无法进行排序"); public static final ErrorCode THIS_PLATE_IS_OPTIMIZE = new ErrorCode(1_002_041_049, "小板:{},已开料,无法删除,请重新选择小板再删除"); + public static final ErrorCode PLAN_INSERT_PLATE_ERROR = new ErrorCode(1_002_041_050, "当前排单无法新增自增小板,请删除排单重新创建"); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/tokenconfig/TokenConfigController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/tokenconfig/TokenConfigController.java index bd652b6f1..43d18c016 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/tokenconfig/TokenConfigController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/tokenconfig/TokenConfigController.java @@ -118,10 +118,10 @@ public class TokenConfigController { @Operation(summary = "导出配置信息") // @PreAuthorize("@ss.hasAnyPermissions('system:token:export')") @OperateLog(type = EXPORT) - public void exportPlateExcel(@Valid TokenConfigPageReqVO pageReqVO, + public void exportTokenConfigExcel(@Valid TokenConfigPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = tokenConfigService.getTokenConfigPage(pageReqVO).getList(); + List list = tokenConfigService.exportTokenConfigExcel(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "token配置信息表.xls", "数据", TokenConfigRespVO.class, BeanUtils.toBean(list, TokenConfigRespVO.class)); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java index 3a334da10..dfdfafdec 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/oauth2/OAuth2TokenServiceImpl.java @@ -12,13 +12,17 @@ import com.cf.imes.module.system.controller.admin.oauth2.vo.token.OAuth2AccessTo import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2AccessTokenDO; import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2ClientDO; import com.cf.imes.module.system.dal.dataobject.oauth2.OAuth2RefreshTokenDO; +import com.cf.imes.module.system.dal.dataobject.organ.OrganizationDO; import com.cf.imes.module.system.dal.dataobject.user.AdminUserDO; import com.cf.imes.module.system.dal.mysql.oauth2.OAuth2AccessTokenMapper; import com.cf.imes.module.system.dal.mysql.oauth2.OAuth2RefreshTokenMapper; +import com.cf.imes.module.system.dal.mysql.organ.OrganMapper; import com.cf.imes.module.system.dal.redis.oauth2.OAuth2AccessTokenRedisDAO; import com.cf.imes.module.system.service.organ.OrganService; +import com.cf.imes.module.system.service.tokenconfig.TokenConfigService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.Cursor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -60,6 +64,20 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { @Resource private OrganService organService; + + @Resource + private TokenConfigService tokenConfigService; + + @Resource + private OrganMapper organMapper; + + private static final String FIELD_IMES = "imes-"; + + @Value("${chenfeng.organ.use-data-code:imes_prod}") + private String useDataCode; + + + @Override @Transactional public OAuth2AccessTokenDO createAccessToken(Long userId, Integer userType, String clientId, List scopes,Boolean large, Integer dbNo, Integer tableNo, String dataCode, Long organId, String nickname) { @@ -109,19 +127,46 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { return null; } + + @Override public OAuth2AccessTokenDO getAccessToken(String accessToken) { - // 因数据库不在存入缓存数据,所以直接从缓存中获取 - // 数据库移除令牌存入,所以直接从缓存中获取 - OAuth2AccessTokenDO accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken); + OAuth2AccessTokenDO accessTokenDO = new OAuth2AccessTokenDO(); - if(accessTokenDO != null){ - // 校验组织的有效性 - organService.validOrgan(accessTokenDO.getOrganId()); - // 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟) - oauth2AccessTokenRedisDAO.expire(accessToken, 1, TimeUnit.DAYS); + String substring = accessToken.substring(0, 5); + + // 外部应用 token 校验 + if(FIELD_IMES.equals(substring)){ + + Long organId = tokenConfigService.checkTokenConfig(accessToken); + + OrganizationDO organizationDO = organMapper.selectById(organId); + + + accessTokenDO.setOrganId(organId); + accessTokenDO.setUserId(organizationDO.getContactUserId()); + accessTokenDO.setUserType(2); + accessTokenDO.setClientId("default"); + accessTokenDO.setExpiresTime(organizationDO.getExpireTime()); + accessTokenDO.setDataCode(useDataCode); + accessTokenDO.setNickname(organizationDO.getName()); + accessTokenDO.setIsSupAdmin(true); + + }else { + + // 因数据库不在存入缓存数据,所以直接从缓存中获取 + // 数据库移除令牌存入,所以直接从缓存中获取 + accessTokenDO = oauth2AccessTokenRedisDAO.get(accessToken); + + if (accessTokenDO != null) { + // 校验组织的有效性 + organService.validOrgan(accessTokenDO.getOrganId()); + // 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟) + oauth2AccessTokenRedisDAO.expire(accessToken, 1, TimeUnit.DAYS); + } } + return accessTokenDO; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigService.java index dd8eb3c57..e1b0c3a87 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigService.java @@ -30,4 +30,6 @@ public interface TokenConfigService { Long checkTokenConfig(String token); String tokenConfigCopy(Long id); + + PageResult exportTokenConfigExcel(TokenConfigPageReqVO pageReqVO); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigServiceImpl.java index 46071e64f..b8f652a7b 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/tokenconfig/TokenConfigServiceImpl.java @@ -208,11 +208,6 @@ public class TokenConfigServiceImpl implements TokenConfigService{ @Override public Long checkTokenConfig(String token) { - String substring = token.substring(0, 5); - if(!FIELD_IMES.equals(substring)){ - throw exception(TOKEN_DATA_ERROR); - } - TokenConfigDO tokenConfigDO = tokenConfigMapper.selectByToken(token.substring(5)); if(tokenConfigDO == null){ @@ -253,7 +248,26 @@ public class TokenConfigServiceImpl implements TokenConfigService{ + @Override + public PageResult exportTokenConfigExcel(TokenConfigPageReqVO pageReqVO) { + PageResult pageResult = tokenConfigMapper.selectConfigPage(pageReqVO,null); + if(CollUtil.isEmpty(pageResult.getList())) { + return new PageResult<>(); + } + + OrganizationDO organizationDO = organService.validOrgan(getUserOrganId()); + + PageResult result = BeanUtils.toBean(pageResult, TokenConfigRespVO.class); + + result.getList().forEach(f->{ + f.setOrganName(organizationDO.getName()); + f.setAppToken(FIELD_IMES+f.getAppToken()); + }); + + return result; + + } private TokenConfigDO validateTokenConfigExists(Long id) { diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml b/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml index 1a14aaa17..8cb879068 100644 --- a/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml +++ b/cf-module-system/cf-module-system-biz/src/main/resources/application.yaml @@ -201,6 +201,7 @@ chenfeng: - system_data_source_field - system_machine_brand - system_machine_limit + - system_config_token use-data-code: imes_prod #动态数据源标识,后期添加的数据源需要修改此值 sms-code: # 短信验证码相关的配置项