diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/rpc/LoginUserRequestInterceptor.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/rpc/LoginUserRequestInterceptor.java index c77b94564..1973d1380 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/rpc/LoginUserRequestInterceptor.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/rpc/LoginUserRequestInterceptor.java @@ -19,6 +19,9 @@ import java.nio.charset.StandardCharsets; @Slf4j public class LoginUserRequestInterceptor implements RequestInterceptor { + //数据源编码 + private static final String DATA_SOURCE_CODE = "data-code"; + @Override @SneakyThrows public void apply(RequestTemplate requestTemplate) { @@ -28,6 +31,7 @@ public class LoginUserRequestInterceptor implements RequestInterceptor { String userStr = JsonUtils.toJsonString(user); userStr = URLEncoder.encode(userStr, StandardCharsets.UTF_8.name()); // 编码,避免中文乱码 requestTemplate.header(SecurityFrameworkUtils.LOGIN_USER_HEADER, userStr); + requestTemplate.header(DATA_SOURCE_CODE, user.getDataCode()); } catch (Exception ex) { log.error("[apply][序列化 LoginUser({}) 发生异常]", user, ex); throw ex; diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java index 13b1613cb..4de2f7e98 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkService.java @@ -24,11 +24,11 @@ public interface SecurityFrameworkService { boolean hasAnyPermissions(String... permissions); /** - * 清空本地缓存 + * 清空本地权限缓存 * * @param */ - void invalidateAll(); + void invalidateAllPermissionsCache(); /** * 判断是否有角色 diff --git a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java index ec0885c00..2e2486de9 100644 --- a/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-security/src/main/java/com/cf/imes/framework/security/core/service/SecurityFrameworkServiceImpl.java @@ -66,7 +66,7 @@ public class SecurityFrameworkServiceImpl implements SecurityFrameworkService { } @Override - public void invalidateAll() { + public void invalidateAllPermissionsCache() { hasAnyPermissionsCache.invalidateAll(); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApi.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApi.java index 717186ce6..81a2da878 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApi.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApi.java @@ -15,8 +15,8 @@ public interface OrderProcessApi { String PREFIX = ApiConstants.PREFIX + "/order-process"; - @GetMapping(PREFIX +"/get") + @GetMapping(PREFIX +"/apiGet") @Operation(summary = "获得生产单中的加工组信息表") - @Parameter(name = "id", description = "加工组id", required = true, example = "1024") - CommonResult getOrderProcessByProcessGroupId(@RequestParam("id") Long id); + @Parameter(name = "processGroupId", description = "加工组id", required = true, example = "1024") + CommonResult getOrderProcessByProcessGroupId(@RequestParam("processGroupId") Long id); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ApiConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ApiConstants.java index 2e3bb83ec..016aba79a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ApiConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ApiConstants.java @@ -16,7 +16,7 @@ public class ApiConstants { */ public static final String NAME = "executor-server"; - public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/executor"; + public static final String PREFIX = "/admin-api/executor"; public static final String VERSION = "1.0.0"; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/build/assembly.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/build/assembly.xml index 6569531ff..0e9563e49 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/build/assembly.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/build/assembly.xml @@ -17,6 +17,12 @@ + + + ${basedir}/src/main/resources/type + execFile + + ${basedir}/target/lib diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApiImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApiImpl.java index 9c7bba307..a4e13183e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApiImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/orderProcess/OrderProcessApiImpl.java @@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; + import static com.cf.imes.framework.common.pojo.CommonResult.success; @RestController // 提供 RESTful API 接口,给 Feign 调用 @@ -20,9 +22,8 @@ public class OrderProcessApiImpl implements OrderProcessApi{ @Override public CommonResult getOrderProcessByProcessGroupId(Long id) { - System.out.println(" Long id " + id); - OrderProcessDO plateDO = orderProcessService.getOrderProcessByProcessGroupId(id); - if (plateDO == null) { + List plateDOS = orderProcessService.getOrderProcessByProcessGroupId(id); + if (plateDOS == null) { return success(false); } return success(true); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index 7a41e5b66..4b46dcae8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -24,6 +24,7 @@ import io.swagger.v3.oas.annotations.Operation; import javax.validation.*; import javax.servlet.http.*; +import java.io.File; import java.util.*; import com.cf.imes.framework.common.pojo.PageResult; @@ -251,12 +252,12 @@ public class OrderController { System.err.println(excelReadUtil.isErr()); // 判断是否读取有误 if (excelReadUtil.isErr() == -1) { // 文件为空 - ExcelWriterUtil.writeErr(response, "生产单内容为空",orderService.getSavePath()+ "\\"+ "错误文件.xlsx"); + ExcelWriterUtil.writeErr(response, "生产单内容为空", orderService.getSavePath() + File.separator + "错误文件.xlsx"); return; }else if (excelReadUtil.isErr() > 0) { // 返回文件 System.out.println("(Map) " + (Map) map.get("order")+ " , (List)" +(List) map.get("plate")); - ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"),orderService.getSavePath()+ "\\"+ "生产单Excel导入错误导出模板.xlsx"); + ExcelWriterUtil.write(response, (Map) map.get("order"), (List) map.get("plate"), orderService.getSavePath() + File.separator + "生产单Excel导入错误导出模板.xlsx"); return; } else { // 获取数据 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index edf76140c..5e53effbf 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -29,6 +29,7 @@ public interface OrderMapper extends BaseMapperX { default PageResult selectPage(OrderPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(OrderDO::getParentNo, reqVO.getParentNo()) + .likeIfPresent(OrderDO::getId, String.valueOf(reqVO.getId()) != null ? "" : String.valueOf(reqVO.getId())) .betweenIfPresent(OrderDO::getDeliveryDate, reqVO.getDeliveryDate()) .betweenIfPresent(OrderDO::getOrderDate, reqVO.getOrderDate()) .eqIfPresent(OrderDO::getId, reqVO.getId()) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java index e2277bc91..964afb347 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java @@ -25,7 +25,7 @@ public interface OrderBodyMapper extends BaseMapperX { int updatePlateNumById(@Param("orderId") Long orderId, @Param("plateNum") Double plateNum); - int deleteAllByOrderId(@Param("orderId") Long orderId, @Param("bodyId") Long bodyId); + int deleteAllByOrderId(@Param("orderId") Long orderId, @Param("bodyId") Long bodyId); // item表数据未作筛选 List selectModuleByOrderId(@Param("orderId") Long orderId, @Param("organId") Long organId, diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java index c0003315e..9366adad5 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderParts/OrderPartsMapper.java @@ -84,8 +84,10 @@ public interface OrderPartsMapper extends BaseMapperX { return update(wrapper); } - void updateDeletedById(@Param("bodyId") Long bodyId, @Param("deleted") Integer deleted, @Param("organId") Long organId); + void updateDeletedById(@Param("bodyId") List bodyIds, @Param("deleted") Integer deleted, @Param("organId") Long organId); List selectPartList( @Param("orderIds") List orderIds,@Param("organId") Long organId); + List selectPartsIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId); + } \ 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/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index f26444359..664c588ee 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -106,7 +106,7 @@ public interface PlateMapper extends BaseMapperX { return update(wrapper); } - void updateDeletedById(@Param("bodyId") Long bodyId, @Param("deleted") Integer deleted, @Param("organId") Long organId); + void updateDeletedById(@Param("bodyIds") List bodyId, @Param("deleted") Integer deleted, @Param("organId") Long organId); int countPlateByOrderId(@Param("orderId") Long orderId, @Param("organId") Long organId, @Param("deleted") Integer deleted); @@ -114,5 +114,7 @@ public interface PlateMapper extends BaseMapperX { BigDecimal selectPlateSize( @Param("orderId") Long orderId); + List selectPlateIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId); + List selectPlateListByPlanId(@Param("planId") Long planId, @Param("organId") Long organId); } \ 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/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 6bf2d33b4..21ccbea78 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -322,8 +322,12 @@ public class OrderServiceImpl implements OrderService { // orderBodyMapper.deleteAllByOrderId(orderId, bodyId); orderBodyMapper.updateDeletedById(bodyId, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); orderGroupMapper.updateDeletedById(bodyId, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); - plateMapper.updateDeletedById(bodyId, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); - orderPartsMapper.updateDeletedById(bodyId, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + + // 先查再改 + List plateDOList = plateMapper.selectPlateIdListByBodyId(bodyId, SecurityFrameworkUtils.getLoginUser().getOrganId()); + plateMapper.updateDeletedById(plateDOList, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); + List partsList = orderPartsMapper.selectPartsIdListByBodyId(bodyId, SecurityFrameworkUtils.getLoginUser().getOrganId()); + orderPartsMapper.updateDeletedById(partsList, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); }); } } @@ -562,7 +566,7 @@ public class OrderServiceImpl implements OrderService { // 新增字典查询 dictDataApi.addDictData("upload_file_type", label, value); // 保存文件 - File saveFile = new File(getSavePath() + "\\" + fileName); + File saveFile = new File(getSavePath() + File.separator + fileName); file.transferTo(saveFile); return value; } catch (IOException e) { @@ -575,7 +579,7 @@ public class OrderServiceImpl implements OrderService { // 根据type获取文件名称 try { // path是指想要下载的文件的路径 - File file = new File(getSavePath() + "\\" + value); + File file = new File(getSavePath() + File.separator + value); // 获取文件名 String filename = file.getName(); // 获取文件后缀名 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java index 87a47e707..9ff9fdaeb 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessService.java @@ -4,6 +4,8 @@ import javax.validation.*; import com.cf.imes.module.executor.controller.admin.process.vo.*; import com.cf.imes.module.executor.dal.dataobject.process.OrderProcessDO; +import java.util.List; + /** * 生产单工序 Service 接口 * @@ -47,6 +49,6 @@ public interface OrderProcessService { * @param processGroupId 工序组Id * @return 生产单工序 */ - OrderProcessDO getOrderProcessByProcessGroupId(Long processGroupId); + List getOrderProcessByProcessGroupId(Long processGroupId); } \ 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/process/OrderProcessServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java index 295488e36..e404b7dd8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/process/OrderProcessServiceImpl.java @@ -1,5 +1,6 @@ package com.cf.imes.module.executor.service.process; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; @@ -197,8 +198,10 @@ public class OrderProcessServiceImpl implements OrderProcessService { } @Override - public OrderProcessDO getOrderProcessByProcessGroupId(Long processGroupId) { - return orderProcessMapper.selectOne("group_id", processGroupId,"organ_id",getUserOrganId()); + public List getOrderProcessByProcessGroupId(Long processGroupId) { + return orderProcessMapper.selectList(new LambdaUpdateWrapper() + .eq(OrderProcessDO::getGroupId, processGroupId) + .eq(OrderProcessDO::getOrganId, getUserOrganId())); } } \ 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/util/ExcelWriterUtil.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java index e10e047f0..e31638ebc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/ExcelWriterUtil.java @@ -4,7 +4,6 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.write.metadata.WriteSheet; -import com.alibaba.excel.write.metadata.WriteTable; import com.alibaba.excel.write.metadata.fill.FillConfig; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; @@ -13,10 +12,10 @@ import org.springframework.util.ResourceUtils; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; -import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.List; @@ -143,7 +142,7 @@ public class ExcelWriterUtil { String filePathErr, String type) throws IOException { //输入流 - InputStream inputStream = ResourceUtils.getURL(filePathErr+ "\\" + type).openStream(); + InputStream inputStream = ResourceUtils.getURL(filePathErr+ File.separator + type).openStream(); ServletOutputStream outputStream = response.getOutputStream(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java index c682d7712..13d57c962 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java @@ -78,7 +78,7 @@ public class ApiTypeRealize { List order = new ArrayList<>(); order.add(orderDO); // 商品信息数据 信息以全 - Map> goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, dataBlocks); + Map> goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, dataBlocks); // System.out.println(" goodsInfoChange " + goodsInfoChange); List goodsDO = (List) goodsInfoChange.get("goodsDOS").values().stream() .collect(Collectors.toList()); @@ -87,36 +87,38 @@ public class ApiTypeRealize { .collect(Collectors.toList()); map.put("rawGoodsDO", rawGoodsDO); // 柜体信息 少异形数量、板材数量 - Map bodyInfoChange = bodyInfoChange(dataBody, orderId); + Map bodyInfoChange = bodyInfoChange(dataBody, orderId); // System.out.println(" bodyInfoChange " + bodyInfoChange); // 加工组 少异形数量、板材数量 - Map> group = - + Map> group = groupInfoChange(dataModule, orderId, bodyInfoChange); - Map orderGroupDO = (Map) group.get("orderGroup"); + Map orderGroupDO = (Map) group.get("orderGroup"); map.put("groupDO", orderGroupDO.values().stream().collect(Collectors.toList())); - Map> groupLists = (Map>) group.get("lists"); + Map> groupLists = (Map>) group.get("lists"); // 加工组中包含的板件、配件id // 配件 - Map> partsDO = partsInfoChange(dataParts, orderId, - (Map) goodsInfoChange.get("goodsDOS"), bodyInfoChange); - Map partsRemark = (Map) partsDO.get("remarks"); // 配件备注 + Map> partsDO = partsInfoChange(dataParts, orderId, + (Map) goodsInfoChange.get("goodsDOS"), bodyInfoChange); + + Map partsRemark = (Map) partsDO.get("remarks"); // 配件备注 map.put("partsRemark", partsRemark.values().stream().collect(Collectors.toList())); - Map orderPartsDO = (Map) partsDO.get("partsInfos"); + + Map orderPartsDO = (Map) partsDO.get("partsInfos"); map.put("partsDO", orderPartsDO.values().stream().collect(Collectors.toList())); - Map partsItems = (Map) partsDO.get("partsItems"); + + Map partsItems = (Map) partsDO.get("partsItems"); List itemsList = new ArrayList<>(); - partsItems = orderPartsChange(bodyInfoChange, orderGroupDO, groupLists, partsItems);// item补充 + partsItems = orderPartsChange(orderGroupDO, groupLists, partsItems);// item补充 itemsList.addAll(partsItems.values()); // 板材 写库 - Map> platesDO = platesInfoChange(dataPlates, plates, orderId, - (Map) goodsInfoChange.get("goodsDOS"), bodyInfoChange, dataBlocks); - Map orderPlatesDO = (Map) platesDO.get("platesInfos"); + Map> platesDO = platesInfoChange(dataPlates, plates, orderId, + (Map) goodsInfoChange.get("goodsDOS"), bodyInfoChange, dataBlocks); + Map orderPlatesDO = (Map) platesDO.get("platesInfos"); map.put("platesDO", orderPlatesDO.values().stream().collect(Collectors.toList())); map.put("plateDetail", platesDO.get("plateDetail").values().stream().collect(Collectors.toList())); - Map platesItems = (Map) platesDO.get("platesItems"); - Map bodyItemsPlates = (Map) platesDO.get("bodyInfos"); - platesItems = orderPartsChange(bodyInfoChange, orderGroupDO, groupLists, platesItems);// item补充 + Map platesItems = (Map) platesDO.get("platesItems"); + Map bodyItemsPlates = (Map) platesDO.get("bodyInfos"); + platesItems = orderPartsChange(orderGroupDO, groupLists, platesItems);// item补充 itemsList.addAll(platesItems.values()); // System.out.println("生产单数据 " + orderDO+ " 商品信息1 " + goodsDO + " 商品信息2 " // + rawGoodsDO + " 板材信息 " + new ArrayList<>(orderPlatesDO.values()) @@ -133,22 +135,38 @@ public class ApiTypeRealize { /** - * @param bodyInfoChange: BoxId body + * bodyInfoChange: BoxId body 暂时未用 * @param orderGroupDO: ModuleID group * @param groupLists: ModuleID 板材、配件id - * @param partsItems: ItemID item + * @param items: ItemID item * @return Map * @author Administrator * @date 2024/5/8 */ - public Map orderPartsChange(Map bodyInfoChange, Map orderGroupDO, - Map> groupLists, Map partsItems) { + public Map orderPartsChange(Map orderGroupDO, + Map> groupLists, Map items) { groupLists.forEach((k, v) -> { v.forEach(v1 -> { - if (partsItems.get(v1) != null) { - partsItems.get(v1).setGroupId(orderGroupDO.get(k).getId()); - if (partsItems.get(v1).getPlateId() != null) + if (items.get(v1) != null) { + if (items.get(v1).getGroupId() != null){ // 已存在值 + OrderItemDO item = OrderItemDO.builder() + .id((Long) identifierGenerator.nextId(null)) + .orderId(items.get(v1).getOrderId()) + .type(items.get(v1).getType()) + .roomId(items.get(v1).getRoomId()) + .bodyId(items.get(v1).getBodyId()) + .planId(items.get(v1).getPlanId()) + .packageId(items.get(v1).getPackageId()) + .groupId(items.get(v1).getGroupId()) + .partsId(items.get(v1).getPartsId()) + .plateId(items.get(v1).getPlateId()) + .num(items.get(v1).getNum()) + .build(); + items.put(orderGroupDO.get(k).getId(), item); //再复查 + } + items.get(v1).setGroupId(orderGroupDO.get(k).getId()); + if (items.get(v1).getPlateId() != null) groupNum++; } }); @@ -156,16 +174,17 @@ public class ApiTypeRealize { groupNum = 0; }); - return partsItems; + System.out.println(" item " + items); + return items; } /** * 加工组 信息转换 */ - private Map> groupInfoChange(JSONObject dataModule, Long orderId, Map bodyInfoChange) { - Map> map = new HashMap<>(); - Map orderGroupDOs = new HashMap<>();// 加工组id 和 加工组信息 - Map> groupLists = new HashMap<>();// 加工组id 和 详细信息 + private Map> groupInfoChange(JSONObject dataModule, Long orderId, Map bodyInfoChange) { + Map> map = new HashMap<>(); + Map orderGroupDOs = new HashMap<>();// 加工组id 和 加工组信息 + Map> groupLists = new HashMap<>();// 加工组id 和 详细信息 if (dataModule.getJSONArray("value") != null && @@ -177,8 +196,8 @@ public class ApiTypeRealize { OrderGroupDO bodyInfo = OrderGroupDO.builder() .id((Long) identifierGenerator.nextId(null)) .orderId(orderId) - .bodyId(bodyInfoChange.get(group.getInteger("BoxID")).getId())//group.getLong("BoxID") - .groupTypeId(Long.valueOf(group.getInteger("ModuleTypeID"))) + .bodyId(bodyInfoChange.get(group.getLong("BoxID")).getId())//group.getLong("BoxID") + .groupTypeId(Long.valueOf(group.getLong("ModuleTypeID"))) .groupTypeName("无") .name(group.getString("ModuleTypeName")) .width(group.getDouble("Width")) @@ -190,8 +209,8 @@ public class ApiTypeRealize { .filename("无") .remark("无") .build(); - groupLists.put(group.getInteger("ModuleID"), jsonArrayToList(group.getJSONArray("ItemIDList"))); - orderGroupDOs.put(group.getInteger("ModuleID"), bodyInfo); + groupLists.put(group.getLong("ModuleID"), jsonArrayToList(group.getJSONArray("ItemIDList"))); + orderGroupDOs.put(group.getLong("ModuleID"), bodyInfo); } } @@ -249,13 +268,13 @@ public class ApiTypeRealize { /** * 板材数据转换成 Map */ - public Map getBlocksDataByGoodsID(JSONObject dataBlocks) { - Map map = new HashMap<>(); + public Map getBlocksDataByGoodsID(JSONObject dataBlocks) { + Map map = new HashMap<>(); JSONArray ordersArray = dataBlocks.getJSONArray("List"); if (ordersArray != null && !ordersArray.isEmpty()) { for (int i = 0; i < ordersArray.size(); i++) { JSONObject block = ordersArray.getJSONObject(i); - map.put(block.getInteger("GoodsID"), block); + map.put(block.getLong("GoodsID"), block); } } return map; @@ -271,10 +290,10 @@ public class ApiTypeRealize { * @author Administrator * @date 2024/4/30 */ - public Map> rawGoodsInfoChange(JSONObject dataRawGoods, Long orderId , JSONObject dataBlocks) { - Map> map = new HashMap<>(); - Map rawGoodsDOS = new HashMap<>(); - Map goodsDOS = new HashMap<>(); + public Map> rawGoodsInfoChange(JSONObject dataRawGoods, Long orderId , JSONObject dataBlocks) { + Map> map = new HashMap<>(); + Map rawGoodsDOS = new HashMap<>(); + Map goodsDOS = new HashMap<>(); if (dataRawGoods.getJSONArray("List") != null && !dataRawGoods.getJSONArray("List").isEmpty()) { @@ -295,7 +314,7 @@ public class ApiTypeRealize { .brand(goods.getString("Brand")) .spec(goods.getString("Spec")) .build(); - rawGoodsDOS.put(goods.getInteger("GoodsID"), rawGoodsDO); + rawGoodsDOS.put(goods.getLong("GoodsID"), rawGoodsDO); GoodsDO goodsDO = GoodsDO.builder() .id((Long) identifierGenerator.nextId(null)) @@ -313,7 +332,7 @@ public class ApiTypeRealize { .brand(goods.getString("Brand")) .spec(goods.getString("Spec")) .build(); - goodsDOS.put(goods.getInteger("GoodsID"), goodsDO); + goodsDOS.put(goods.getLong("GoodsID"), goodsDO); } } @@ -331,8 +350,8 @@ public class ApiTypeRealize { * @author Administrator * @date 2024/4/30 */ - private Map bodyInfoChange(JSONObject dataBody, Long orderId) { - Map bodyInfos = new HashMap<>(); + private Map bodyInfoChange(JSONObject dataBody, Long orderId) { + Map bodyInfos = new HashMap<>(); if (dataBody.getJSONArray("List") != null && !dataBody.getJSONArray("List").isEmpty()) { @@ -354,7 +373,7 @@ public class ApiTypeRealize { .filename("无") .remark("无") .build(); - bodyInfos.put(body.getInteger("BoxID"), bodyInfo); + bodyInfos.put(body.getLong("BoxID"), bodyInfo); } } @@ -366,10 +385,10 @@ public class ApiTypeRealize { /** * JSONArray转List */ - public List jsonArrayToList(JSONArray jsonArray) { - List list = new ArrayList<>(); + public List jsonArrayToList(JSONArray jsonArray) { + List list = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { - list.add(jsonArray.getInteger(i)); + list.add(jsonArray.getLong(i)); } return list; } @@ -384,11 +403,11 @@ public class ApiTypeRealize { * @author Administrator * @date 2024/4/30 */ - public Map> partsInfoChange(JSONObject value, Long orderId, Map goodsDOMap, Map bodyInfos) { - Map> map = new HashMap<>(); - Map partsInfos = new HashMap<>(); - Map partsItem = new HashMap<>(); - Map remarks =new HashMap<>(); + public Map> partsInfoChange(JSONObject value, Long orderId, Map goodsDOMap, Map bodyInfos) { + Map> map = new HashMap<>(); + Map partsInfos = new HashMap<>(); + Map partsItem = new HashMap<>(); + Map remarks =new HashMap<>(); if (value != null && !value.isEmpty()) { JSONArray partsLists = value.getJSONArray("List"); @@ -398,11 +417,11 @@ public class ApiTypeRealize { OrderPartsDO partsInfo = OrderPartsDO.builder() .id(partsId) .orderId(orderId) - .goodsId(String.valueOf(goodsDOMap.get(parts.getInteger("GoodsID")) != null - ? goodsDOMap.get(parts.getInteger("GoodsID")).getId() : parts.getInteger("GoodsID"))) + .goodsId(String.valueOf(goodsDOMap.get(parts.getLong("GoodsID")) != null + ? goodsDOMap.get(parts.getLong("GoodsID")).getId() : parts.getLong("GoodsID"))) .name(parts.getString("Name")) - .material(String.valueOf(goodsDOMap.get(parts.getInteger("GoodsID")) != null - ? goodsDOMap.get(parts.getInteger("GoodsID")).getMaterial() : "")) + .material(String.valueOf(goodsDOMap.get(parts.getLong("GoodsID")) != null + ? goodsDOMap.get(parts.getLong("GoodsID")).getMaterial() : "")) .type(parts.getString("ObjectType")) .model(parts.getString("Model")) .spec(parts.getString("Spec")) @@ -413,23 +432,23 @@ public class ApiTypeRealize { .isComposite(parts.getBoolean("IsComposite")) .remark(parts.getString("Remark")) .build(); - remarks.put(parts.getInteger("DataID"),partsRemarkChange(parts, orderId, partsId)); - partsInfos.put(parts.getInteger("DataID"), partsInfo); + remarks.put(parts.getLong("ItemID"),partsRemarkChange(parts, orderId, partsId)); + partsInfos.put(parts.getLong("ItemID"), partsInfo); // item 明细 OrderItemDO item = OrderItemDO.builder() .id((Long) identifierGenerator.nextId(null)) .orderId(orderId) .type(OrderItemTypeEnum.PARTS_ITEM.getStatus()) - .roomId(bodyInfos.get(parts.getInteger("BoxID")).getRoomId()) - .bodyId(bodyInfos.get(parts.getInteger("BoxID")).getId()) + .roomId(bodyInfos.get(parts.getLong("BoxID")).getRoomId()) + .bodyId(bodyInfos.get(parts.getLong("BoxID")).getId()) .planId(0L) .packageId(0L) .groupId(0L) .partsId(partsId) .num(parts.getDouble("Num")) .build(); - partsItem.put(parts.getInteger("DataID"), item); + partsItem.put(parts.getLong("ItemID"), item); } } @@ -457,18 +476,18 @@ public class ApiTypeRealize { /** * 板材信息转换 写表 Integer指板材的ItemID板id 加一个板材自定义编号 */ - private Map> platesInfoChange(JSONObject value, JSONObject dataPlates, Long orderId, - Map goodsDOMap, Map bodyInfos, + private Map> platesInfoChange(JSONObject value, JSONObject dataPlates, Long orderId, + Map goodsDOMap, Map bodyInfos, JSONObject dataBlocks) { // 板材 写ES - Map plateDetail = platesDetailChange(value); + Map plateDetail = platesDetailChange(value); // 板材数据 - Map plateMap = getBlocksData(dataBlocks); + Map plateMap = getBlocksData(dataBlocks); - Map> map = new HashMap<>(); - Map platesInfos = new HashMap<>(); - Map platesItem = new HashMap<>(); + Map> map = new HashMap<>(); + Map platesInfos = new HashMap<>(); + Map platesItem = new HashMap<>(); if (dataPlates != null && !dataPlates.isEmpty()) { JSONArray plateLists = dataPlates.getJSONArray("List"); @@ -490,12 +509,12 @@ public class ApiTypeRealize { .plateNo((obtainingTime)+ Long.toString(plateNo).substring(2)) .type(type) - .goodsId(goodsDOMap.get(plate.getInteger("GoodsID")) != null - ? goodsDOMap.get(plate.getInteger("GoodsID")).getId() : plate.getInteger("GoodsID")) + .goodsId(goodsDOMap.get(plate.getLong("GoodsID")) != null + ? goodsDOMap.get(plate.getLong("GoodsID")).getId() : plate.getLong("GoodsID")) // .width(BigDecimal.valueOf(plate.getDouble("CutWidth"))) // .height(BigDecimal.valueOf(plate.getDouble("CutWidth"))) -// .thickness(goodsDOMap.get(plate.getInteger("GoodsID")) != null -// ? goodsDOMap.get(plate.getInteger("GoodsID")).getThickness() : BigDecimal.valueOf(0L)) +// .thickness(goodsDOMap.get(plate.getLong("GoodsID")) != null +// ? goodsDOMap.get(plate.getLong("GoodsID")).getThickness() : BigDecimal.valueOf(0L)) .splitHeight(BigDecimal.valueOf(plate.getDouble("SpliteHeight"))) .splitThickness(BigDecimal.valueOf(plate.getDouble("SpliteThickness"))) .splitWidth(BigDecimal.valueOf(plate.getDouble("SpliteWidth"))) @@ -503,10 +522,10 @@ public class ApiTypeRealize { .sealRight(BigDecimal.valueOf(plate.getDouble("SealedRight"))) .sealUp(BigDecimal.valueOf(plate.getDouble("SealedUp"))) .sealDown(BigDecimal.valueOf(plate.getDouble("SealedDown"))) - .area(plateDetail.get(plate.getInteger("BlockNo")).getSealAcreage()) - .texture(plateDetail.get(plate.getInteger("BlockNo")).getTexture()) + .area(plateDetail.get(plate.getLong("BlockNo")).getSealAcreage()) + .texture(plateDetail.get(plate.getLong("BlockNo")).getTexture()) - .holeFace(plateDetail.get(plate.getInteger("BlockNo")).getTypographicFace()) // 孔面类型 + .holeFace(plateDetail.get(plate.getLong("BlockNo")).getTypographicFace()) // 孔面类型 .holeArrange(0) // 排孔类型 值无实际含义,默认初始化值 .unregularPointCount(0)// 异形孔个数 值无实际含义,默认初始化值 @@ -515,10 +534,10 @@ public class ApiTypeRealize { .sideHoleCount(plate.getInteger("SideHoleCount")) .frontModelCount(plate.getInteger("FrontModelCount")) .backModelCount(plate.getInteger("BackModelCount")) - .isDoor(plateDetail.get(plate.getInteger("BlockNo")).getOpenDoorType() == 0) + .isDoor(plateDetail.get(plate.getLong("BlockNo")).getOpenDoorType() == 0) .openDoorType(plate.getInteger("OpenDoorType")) - .offsetX(plateDetail.get(plate.getInteger("BlockNo")).getOffsetX()) - .offsetY(plateDetail.get(plate.getInteger("BlockNo")).getOffsetY()) + .offsetX(plateDetail.get(plate.getLong("BlockNo")).getOffsetX()) + .offsetY(plateDetail.get(plate.getLong("BlockNo")).getOffsetY()) .isArcAcross(false) .moduleTypeId(0L) .isSculpt(plate.getBoolean("IsModel")) @@ -532,8 +551,8 @@ public class ApiTypeRealize { .id((Long) identifierGenerator.nextId(null)) .orderId(orderId) .type(OrderItemTypeEnum.PLATE_ITEM.getStatus()) - .roomId(bodyInfos.get(plate.getInteger("BoxID")).getRoomId()) - .bodyId(bodyInfos.get(plate.getInteger("BoxID")).getId()) + .roomId(bodyInfos.get(plate.getLong("BoxID")).getRoomId()) + .bodyId(bodyInfos.get(plate.getLong("BoxID")).getId()) .planId(0L) .packageId(0L) .groupId(0L) @@ -542,29 +561,29 @@ public class ApiTypeRealize { .num(1.0) .build(); - if (plateDetail.get(plate.getInteger("BlockNo")) != null) { - plateDetail.get(plate.getInteger("BlockNo")).setPlateId(plateId) + if (plateDetail.get(plate.getLong("BlockNo")) != null) { + plateDetail.get(plate.getLong("BlockNo")).setPlateId(plateId) .setExtraRemark(plate.getString("ExtraRemark")) .setSpecialRemarkDei(plate.getString("SpecialRemark")) .setExtraHandleRemark(plate.getString("ExtraHandleRemark")) .setDrillsRemark(plate.getString("DrillsRemark")) .setInfoRemark(plate.getString("InfoRemark")) .setRemarkJsonDei(plate.getString("RemarkJson")); - plateInfo.setRemark(plateDetail.get(plate.getInteger("BlockNo")).getRemark() != null ? - plateDetail.get(plate.getInteger("BlockNo")).getRemark().toString() : ""); + plateInfo.setRemark(plateDetail.get(plate.getLong("BlockNo")).getRemark() != null ? + plateDetail.get(plate.getLong("BlockNo")).getRemark().toString() : ""); } - if (plateMap.get(plate.getInteger("BlockNo")) != null) { - JSONObject jsonObject = plateMap.get(plate.getInteger("BlockNo")); + if (plateMap.get(plate.getLong("BlockNo")) != null) { + JSONObject jsonObject = plateMap.get(plate.getLong("BlockNo")); plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble("Height"))) .setWidth(BigDecimal.valueOf(jsonObject.getDouble("Width"))) .setThickness(BigDecimal.valueOf(jsonObject.getDouble("Thickness"))) .setArea(BigDecimal.valueOf(jsonObject.getDouble("Area"))); - plateDetail.get(plate.getInteger("BlockNo")) + plateDetail.get(plate.getLong("BlockNo")) .setRemarkJson(jsonObject.getString("RemarkJson")) .setSpecialRemark(jsonObject.getString("SpecialRemark")); } - platesInfos.put(plate.getInteger("ItemID"), plateInfo); - platesItem.put(plate.getInteger("ItemID"), itemPlate); + platesInfos.put(plate.getLong("ItemID"), plateInfo); + platesItem.put(plate.getLong("ItemID"), itemPlate); } } @@ -597,13 +616,13 @@ public class ApiTypeRealize { /** * 板材数据转换成 Map */ - public Map getBlocksData(JSONObject dataBlocks) { - Map map = new HashMap<>(); + public Map getBlocksData(JSONObject dataBlocks) { + Map map = new HashMap<>(); JSONArray ordersArray = dataBlocks.getJSONArray("List"); if (ordersArray != null && !ordersArray.isEmpty()) { for (int i = 0; i < ordersArray.size(); i++) { JSONObject block = ordersArray.getJSONObject(i); - map.put(block.getInteger("BlockNo"), block); + map.put(block.getLong("BlockNo"), block); } } return map; @@ -612,8 +631,8 @@ public class ApiTypeRealize { /** * 板材设计数据转换成PlateDetail Integer指BlockID板id */ - public Map platesDetailChange(JSONObject dataPlates) { - Map plateDetails = new HashMap<>(); + public Map platesDetailChange(JSONObject dataPlates) { + Map plateDetails = new HashMap<>(); // 获取 Orders 字段对应的数组 JSONArray ordersArray = dataPlates.getJSONArray("Orders"); // System.err.println(dataPlates); @@ -674,7 +693,7 @@ public class ApiTypeRealize { .setRemark(remarkToMap(block)) .setSideRemark(edgeRemarkToMap(block.getJSONObject("ExtraRemark").getJSONObject("extra"))); } - plateDetails.put(block.getInteger("BlockNo"), plateDetail); + plateDetails.put(block.getLong("BlockNo"), plateDetail); } } } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml index b8fa3cfaa..519a24149 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderItem/OrderItemMapper.xml @@ -4,9 +4,9 @@ - SELECT distinct i.order_id, i.room_id, i.body_id, i.parts_id, p.`name` as part_name, i.num as plate_num + SELECT DISTINCT i.order_id, i.room_id, i.body_id, i.parts_id, p.`name` as part_name, i.num as plate_num FROM `order_item` i RIGHT JOIN `order_parts` p ON i.parts_id = p.id WHERE i.order_id = #{orderId} AND i.organ_id = #{organId} AND p.deleted = #{deleted} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml index 92d0861bd..df942bc75 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/orderParts/OrderPartsMapper.xml @@ -16,8 +16,7 @@ - SELECT distinct + SELECT DISTINCT a.name, a.brand, a.model, @@ -69,10 +68,7 @@ UPDATE order_parts SET deleted = #{deleted} - WHERE id IN ( - SELECT parts_id FROM order_item - WHERE body_id = #{bodyId} AND organ_id = #{organId} - ) + WHERE id IN #{bodyIds} AND organ_id = #{organId} @@ -103,8 +99,10 @@ - - + diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index 7667cfffc..69defb63e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -50,7 +50,7 @@ SELECT count(*) FROM order_plate @@ -306,4 +303,8 @@ + \ No newline at end of file diff --git a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DictTypeConstants.java b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DictTypeConstants.java index 005e62b4d..918c0375e 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DictTypeConstants.java +++ b/cf-module-prod-manage/cf-module-prod-manage-api/src/main/java/com/cf/imes/module/manage/enums/DictTypeConstants.java @@ -8,4 +8,6 @@ package com.cf.imes.module.manage.enums; public interface DictTypeConstants { String SYNTHESIS_TYPE = "synthesisType";//加工组类型 + + String PLATE_TEXTURE = "product_manger_texture_type";// 板件纹路 } diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java index 16b11963d..de2db15e1 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/service/plate/PlateServiceImpl.java @@ -1,7 +1,6 @@ package com.cf.imes.module.manage.service.plate; import cn.hutool.core.collection.CollUtil; -import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.organ.core.context.OrganContextHolder; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganRespVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganRespVO.java index 8f1ed2ed6..8bb9d0283 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganRespVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/organ/vo/organ/OrganRespVO.java @@ -23,6 +23,12 @@ public class OrganRespVO { @ExcelProperty("组织名") private String name; + @Schema(description = "组织代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "chenfeng") + private String code; + + @Schema(description = "地址", requiredMode = Schema.RequiredMode.REQUIRED) + private String address; + @Schema(description = "联系人", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") @ExcelProperty("联系人") private String contactName; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java index b546ebc45..a9fdfb661 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/listener/SystemPermissionRefreshRedisListener.java @@ -25,6 +25,6 @@ public class SystemPermissionRefreshRedisListener extends AbstractRedisSimpleMes @Override public void onMessage(Message message, byte[] bytes) { - securityFrameworkService.invalidateAll(); + securityFrameworkService.invalidateAllPermissionsCache(); } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java index cd0f10c8e..01a5fb71d 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/redis/oauth2/OAuth2AccessTokenRedisDAO.java @@ -52,6 +52,17 @@ public class OAuth2AccessTokenRedisDAO { stringRedisTemplate.delete(redisKeys); } + /** + * 设置过期时间 + * + * @param accessToken 访问令牌 + * @param timeout 过期时间 + * @param unit 时间单位 + */ + public void expire(String accessToken, long timeout, final TimeUnit unit) { + stringRedisTemplate.expire(formatKey(accessToken), timeout, unit); + } + private static String formatKey(String accessToken) { return String.format(RedisKeyConstants.OAUTH2_ACCESS_TOKEN, accessToken); } 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 254144e90..eadc6b03f 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 @@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; +import java.util.concurrent.TimeUnit; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.cf.imes.framework.common.util.collection.CollectionUtils.convertSet; @@ -111,7 +112,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { if(accessTokenDO != null){ // 有令牌的校验,代表有接口访问,延长令牌的过期时间(30分钟) - oauth2AccessTokenRedisDAO.set(accessTokenDO.setExpiresTime(LocalDateTime.now().plusSeconds(1800))); + oauth2AccessTokenRedisDAO.expire(accessToken, 1800, TimeUnit.SECONDS); } return accessTokenDO; } @@ -124,7 +125,7 @@ public class OAuth2TokenServiceImpl implements OAuth2TokenService { } // if (DateUtils.isExpired(accessTokenDO.getExpiresTime())) { // throw exception0(GlobalErrorCodeConstants.UNAUTHORIZED.getCode(), "访问令牌已过期"); -// } + return accessTokenDO; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java index e1cb70387..2b8a97ddf 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/PermissionServiceImpl.java @@ -3,6 +3,7 @@ package com.cf.imes.module.system.service.permission; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.common.exception.ServiceException; @@ -189,18 +190,22 @@ public class PermissionServiceImpl implements PermissionService { roleMenuMapper.deleteListByRoleIdAndMenuIds(roleId, deleteMenuIds); } + Long currentOrganId = SecurityFrameworkUtils.getUserOrganId(); // 角色菜单权限发生修改,通知刷新本地缓存 if (CollectionUtil.isNotEmpty(createMenuIds) || CollectionUtil.isNotEmpty(deleteMenuIds)) { CompletableFuture.runAsync(() -> { - // 获取新增和删除菜单id的并集 - Collection delKeys = CollUtil.union(createMenuIds, deleteMenuIds); - delKeys.forEach(menuId -> { - // 移除redis中的缓存 - redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)); - }); + // 当前操作人和所操作的目标菜单机构不同时,清空MENU_ROLE_ID_LIST:目标机构id:菜单id的缓存 + if (ObjectUtil.notEqual(organId, currentOrganId)) { + // 获取新增和删除菜单id的并集 + Collection delMenuIds = CollUtil.union(createMenuIds, deleteMenuIds); + // 构建批量删除的key集合 + Set delKeys = delMenuIds.stream().map(menuId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.MENU_ROLE_ID_LIST).append(":%s:%s")), organId, menuId)).collect(Collectors.toSet()); + Long batchDelNum = redisTemplate.delete(delKeys); + log.info("[assignRoleMenu] 批量删除redis[MENU_ROLE_ID_LIST]数量:{}", batchDelNum); + } redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); + log.error("[assignRoleMenu] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); return null; }); } @@ -326,18 +331,22 @@ public class PermissionServiceImpl implements PermissionService { userRoleMapper.deleteListByRoleIdAndUserIds(roleId, deleteRoleUserIds); } + Long currentOrganId = SecurityFrameworkUtils.getUserOrganId(); // 角色菜单权限发生修改,通知刷新本地缓存 if (CollectionUtil.isNotEmpty(createRoleUserIds) || CollectionUtil.isNotEmpty(deleteRoleUserIds)) { CompletableFuture.runAsync(() -> { - // 获取新增和删除用户id的并集 - Collection delKeys = CollUtil.union(createRoleUserIds, deleteRoleUserIds); - delKeys.forEach(userId -> { - // 移除redis中的缓存 - redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, userId)); - }); + // 当前操作人和所操作的目标菜单机构不同时,清空USER_ROLE_ID_LIST:目标机构id:用户id的缓存 + if (ObjectUtil.notEqual(finalOrganId, currentOrganId)) { + // 获取新增和删除用户id的并集 + Collection delRoleUserIds = CollUtil.union(createRoleUserIds, deleteRoleUserIds); + // 构建批量删除的key集合 + Set delKeys = delRoleUserIds.stream().map(userId -> String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), finalOrganId, userId)).collect(Collectors.toSet()); + Long batchDelNum = redisTemplate.delete(delKeys); + log.info("[batchAssignRoleUsers] 批量删除redis[USER_ROLE_ID_LIST]数量:{}", batchDelNum); + } redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); + log.error("[batchAssignRoleUsers] redis message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); return null; }); } @@ -419,7 +428,7 @@ public class PermissionServiceImpl implements PermissionService { redisTemplate.delete(String.format(String.valueOf(new StringBuffer(RedisKeyConstants.USER_ROLE_ID_LIST).append(":%s:%s")), organId, userId)); redisTemplate.convertAndSend(RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, ""); }).exceptionally(e -> { - log.error("redis 清空user_role_ids或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e.getMessage()); + log.error("[assignUserRole] redis 清空USER_ROLE_ID_LIST或message发送失败, topic:{}, 异常:{}", RedisRefreshChannelTopicConstants.PERMISSION_REFRESH, e); return null; }); } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/process/ProcessGroupServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/process/ProcessGroupServiceImpl.java index 9f825cdf2..a37552384 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/process/ProcessGroupServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/process/ProcessGroupServiceImpl.java @@ -123,7 +123,7 @@ public class ProcessGroupServiceImpl implements ProcessGroupService { // 判断是否在生产中使用这个加工组 private void checkProcessGroupUsed(Long id) { - if (orderProcessApi.getOrderProcessByProcessGroupId(id) != null){ + if (orderProcessApi.getOrderProcessByProcessGroupId(id).getData()){ throw exception(PROCESS_GROUP_USED); } }