From 63f8c800d694d1c915650d5a65174eb494099136 Mon Sep 17 00:00:00 2001 From: yangsb Date: Mon, 15 Apr 2024 11:52:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E5=8F=B0=E6=8E=88=E6=9D=83=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 2 +- .../admin/plan/OptimizePlanController.java | 8 +- .../controller/admin/plan/bo/OrderSource.java | 7 +- .../optimizeplan/OptimizePlanService.java | 7 + .../optimizeplan/OptimizePlanServiceImpl.java | 137 +++++++++++++++++- .../admin/machine/MachineAuthController.java | 50 +++---- .../MachineTemplateAuthController.java | 68 +++++++++ .../admin/machine/vo/MachineAuthResp.java | 29 ++++ .../admin/machine/vo/OrganMachinePage.java | 16 ++ .../admin/machine/vo/OrganMachineResp.java | 33 +++++ .../admin/machine/vo/OrganMachineVO.java | 27 ++++ .../admin/notice/vo/NoticeSaveReqVO.java | 2 +- .../dal/mysql/machine/MachineMapper.java | 19 ++- .../service/machine/MachineService.java | 8 + .../service/machine/MachineServiceImpl.java | 48 +++++- .../machine/MachineTemplateServiceImpl.java | 6 +- .../mapper/process/MachineMapper.xml | 77 ++++++++++ 17 files changed, 503 insertions(+), 41 deletions(-) create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineTemplateAuthController.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineAuthResp.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachinePage.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineResp.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineVO.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/MachineMapper.xml diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 355d9c1b9..219ad5f2a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -19,7 +19,7 @@ public interface ErrorCodeConstants { ErrorCode GOODS_NOT_EXISTS = new ErrorCode(1_001_108_000, "生产单商品不存在"); // ========== 生产单 TODO 补充编号 ========== - ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_001_109_000, "存在生产单不存在"); + ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_001_109_000, "生产单不存在"); // ========== 生产单 TODO 补充编号 ========== ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_001_110_000, "模块不存在"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java index ca15b526e..1af72516a 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/OptimizePlanController.java @@ -93,8 +93,12 @@ public class OptimizePlanController { @GetMapping("/getOrderSource") @Operation(summary = "获取生产单源数据 - mock") @PreAuthorize("@ss.hasPermission('executor:optimize-plate:create')") - public CommonResult getOrderSource(@RequestParam(required = false) Long orderId, @RequestParam(required = false) Long plateId) { - return CommonResult.success(RandomUtils.randomPojo(OrderSource.class)); + public CommonResult getOrderSource(@Schema(description = "生产单id") @RequestParam(required = false) Long orderId, + @Schema(description = "排单id") @RequestParam(required = false) Long planId, + @Schema(description = "机台Id") @RequestParam("machineId") Long machineId + ) { + return CommonResult.success(optimizePlanService.getOrderSource(orderId, planId, machineId)); + //return CommonResult.success(RandomUtils.randomPojo(OrderSource.class)); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java index 816e99ccf..2e5dfd206 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java @@ -4,6 +4,7 @@ import com.cf.imes.module.executor.controller.admin.plan.vo.OptimizeParamRespVO; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; +import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; import com.cf.imes.module.system.api.machine.dto.MachineDTO; @@ -28,7 +29,7 @@ public class OrderSource { private MachineDTO machineDTO; @Schema(description = "排单数据") - private OptimizeParamRespVO planDO; + private PlanDO planDO; @Schema(description = "生产单列表") private List orders; @@ -39,8 +40,8 @@ public class OrderSource { @Schema(description = "小板列表") private List plates; - @Schema(description = "小板详情列表") - private List plateDetails; + @Schema(description = "小板造型列表") + private List plateModels; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java index 48c7fdb75..c59df6c67 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanService.java @@ -1,5 +1,6 @@ package com.cf.imes.module.executor.service.optimizeplan; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import java.util.List; @@ -19,4 +20,10 @@ public interface OptimizePlanService { OptimizeParamRespVO getOptimizePlanParam(Long planId); Map getLabelDataSourceValue(GetSourceDataReq req); + + OrderSource getOrderSource(Long orderId, Long planId, Long machineId); + + OrderSource getOrderSourceByOrderId(Long orderId); + + OrderSource getOrderSourceByPlanId(Long planId); } 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 5aac5d760..6eeebee1d 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 @@ -2,14 +2,28 @@ package com.cf.imes.module.executor.service.optimizeplan; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.FieldValue; +import co.elastic.clients.elasticsearch._types.query_dsl.Query; +import co.elastic.clients.elasticsearch._types.query_dsl.TermQuery; +import co.elastic.clients.elasticsearch._types.query_dsl.TermsQuery; +import co.elastic.clients.elasticsearch.core.SearchRequest; +import co.elastic.clients.elasticsearch.core.SearchResponse; +import co.elastic.clients.elasticsearch.core.search.Hit; +import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.util.json.JsonUtils; +import com.cf.imes.framework.es.core.dal.ESDocument; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.cf.imes.framework.organ.core.db.OrganBaseDO; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; import com.cf.imes.module.executor.controller.admin.plan.dto.Material; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plate.vo.PlateDetailVO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; +import com.cf.imes.module.executor.dal.dataobject.ordermodel.OrderModelDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.planitem.PlanItemDO; import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; @@ -18,6 +32,7 @@ import com.cf.imes.module.executor.dal.dataobject.remainplaten.PointDTO; import com.cf.imes.module.executor.dal.dataobject.remainplaten.RemainPlateDO; import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper; import com.cf.imes.module.executor.dal.mysql.order.OrderMapper; +import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.remainplaten.RemainPlateMapper; @@ -26,26 +41,29 @@ import com.cf.imes.module.executor.util.RectangleChecker; import com.cf.imes.module.infra.api.file.FileApi; import com.cf.imes.module.infra.api.file.dto.FileCreateReqDTO; import com.cf.imes.module.system.api.dataSource.DataSourceApi; +import com.cf.imes.module.system.api.machine.MachineApi; +import com.github.yulichang.interfaces.MPJBaseJoin; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; +import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR; import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.UNKNOWN; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_NOT_EXISTS; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_EXISTS; /** * @author there */ @Service +@Slf4j public class OptimizePlanServiceImpl implements OptimizePlanService { @Resource @@ -69,6 +87,14 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { @Resource private OrderMapper orderMapper; + @Resource + private ElasticsearchClient elasticsearchClient; + + public static final String ORDER_PLATE_MODEL = "imes_order_plate_model"; + + @Resource + private MachineApi machineApi; + @Override public List getPlateListByPlanId(Long planId) { return planMapper.selectPlateListByPlanId(planId); @@ -247,5 +273,108 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { return orderMapper.selectDynamicSqlString(sql); } + @Override + public OrderSource getOrderSource(Long orderId, Long planId, Long machineId) { + OrderSource orderSource; + if(!Objects.isNull(orderId)) { + orderSource = getOrderSourceByOrderId(orderId); + orderSource.setMachineDTO(machineApi.getMachineDetail(machineId).getCheckedData()); + return orderSource; + } + if(!Objects.isNull(planId)) { + orderSource = getOrderSourceByPlanId(planId); + orderSource.setMachineDTO(machineApi.getMachineDetail(machineId).getCheckedData()); + return orderSource; + } + throw exception(154112,"生产单id或排单id不能空"); + + } + + @Override + public OrderSource getOrderSourceByOrderId(Long orderId) { + OrderDO orderDO = orderMapper.selectById(orderId); + if(Objects.isNull(orderDO)) { + throw exception(ORDER_NOT_EXISTS); + } + OrderSource orderSource = new OrderSource(); + + List goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX() + .eq(GoodsDO::getOrderId, orderId) + ); + List plateDOS = plateMapper.selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrderId, orderId) + ); + List orderModelDOS = buildRespByOrderId(orderId, ORDER_PLATE_MODEL); + orderSource.setOrders(Collections.singletonList(orderDO)); + orderSource.setPlates(plateDOS); + orderSource.setGoods(goodsDOS); + orderSource.setPlateModels(orderModelDOS); + return orderSource; + } + + @Resource + private OrderItemMapper orderItemMapper; + + @Override + public OrderSource getOrderSourceByPlanId(Long planId) { + PlanDO planDO = planMapper.selectById(planId); + if(Objects.isNull(planDO)) { + throw exception(PLAN_NOT_EXISTS); + } + MPJBaseJoin wrapper = new MPJLambdaWrapperX() + .select(OrderItemDO::getOrderId) + .rightJoin(PlanItemDO.class, PlanItemDO::getItemId, OrderItemDO::getId) + .isNotNull(OrderItemDO::getId); + Set orderIds = orderItemMapper.selectJoinList(OrderDO.class, wrapper).stream().map(OrganBaseDO::getOrganId).collect(Collectors.toSet()); + List orderDOS = orderMapper.selectBatchIds(orderIds); + List goodsDOS = goodsMapper.selectList(new LambdaQueryWrapperX().in(GoodsDO::getOrderId, orderIds)); + List plateDOS = plateMapper.selectList(new LambdaQueryWrapperX().in(PlateDO::getOrderId, orderIds)); + List orderModelDOS = buildRespByOrderIds(orderIds, ORDER_PLATE_MODEL); + return OrderSource.builder() + .orders(orderDOS) + .planDO(planDO) + .goods(goodsDOS) + .plates(plateDOS) + .plateModels(orderModelDOS) + .build(); + } + + private List buildRespByOrderIds(Collection orderIds, String index) { + List fieldValues = orderIds.stream().map(FieldValue::of).toList(); + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.query(q -> q.terms(b -> b.field("orderId").terms(e->e.value(fieldValues)))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OrderModelDO.class); + List> hits = search.hits().hits(); + if (CollectionUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } + + private List buildRespByOrderId(Long orderId, String index) { + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.query(q -> q.term(b -> b.field("orderId").value(orderId))); + try { + SearchResponse search = elasticsearchClient.search(builder.build(), OrderModelDO.class); + List> hits = search.hits().hits(); + if (CollectionUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).collect(Collectors.toList()); + } + return new ArrayList<>(); + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(INTERNAL_SERVER_ERROR); + } + } + + + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java index 0b4242bf2..7ff27a4ea 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineAuthController.java @@ -2,10 +2,10 @@ package com.cf.imes.module.system.controller.admin.machine; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageResult; -import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.system.controller.admin.machine.vo.*; +import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; import com.cf.imes.module.system.dal.dataobject.machinetemplate.MachineTemplateDO; -import com.cf.imes.module.system.service.machine.MachineTemplateService; +import com.cf.imes.module.system.service.machine.MachineService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,48 +22,48 @@ import static com.cf.imes.framework.common.pojo.CommonResult.success; * @author Beal */ @RestController -@Tag(name = "机台模板授权") -@RequestMapping("/system/machine-template-auth") +@Tag(name = "机台授权") +@RequestMapping("/system/machine-auth") public class MachineAuthController { - + @Resource - private MachineTemplateService machineTemplateService; + private MachineService machineService; - @PostMapping("organ-auth-template") - @Operation(summary = "组织模板授权") + @PostMapping("organ-auth") + @Operation(summary = "组织机台授权") @PreAuthorize("@ss.hasPermission('machine-template::query')") public CommonResult auth(@RequestBody MachineOrgAuthReq vo) { - return success(machineTemplateService.auth(vo)); + return success(machineService.auth(vo)); } - @GetMapping("organ-template-page") - @Operation(summary = "组织模板授权分页列表") + @GetMapping("organ-page") + @Operation(summary = "组织机台授权分页列表") @PreAuthorize("@ss.hasPermission('machine-template::query')") - public CommonResult> organTemplatePage(OrganTemplatePage page) { - return success(machineTemplateService.organTemplatePage(page)); + public CommonResult> organTemplatePage(OrganMachinePage page) { + return success(machineService.organMachinePage(page)); } - @GetMapping("organ-template-by-organId") - @Operation(summary = "根据组织id查询组织模板授权") + @GetMapping("organ-by-organId") + @Operation(summary = "根据组织id查询组织机台授权") @PreAuthorize("@ss.hasPermission('machine-template::query')") @Parameter(name = "organId", description = "组织id", required = true, example = "1") - public CommonResult organTemplateByOrganId(@RequestParam Long organId ) { - return success(machineTemplateService.organTemplateByOrganId(organId)); + public CommonResult organTemplateByOrganId(@RequestParam Long organId ) { + return success(machineService.organMachineByOrganId(organId)); } - @GetMapping("page-template-machine-auth") - @Operation(summary = "授权机台模板分页") + @GetMapping("page-machine-auth") + @Operation(summary = "授权机台分页") @PreAuthorize("@ss.hasPermission('machine-template::query')") - public CommonResult> pageTemplateAuth(MachinePageReqVO pageParam) { - PageResult page = machineTemplateService.page(pageParam); - List list = page.getList().stream().map(e->TemplateAutoResp.builder() + public CommonResult> pageTemplateAuth(MachinePageReqVO pageParam) { + PageResult page = machineService.page(pageParam); + List list = page.getList().stream().map(e->MachineAuthResp.builder() .id(e.getId()) .machineType(e.getMachineType()) - .templateName(e.getName()) - .isDefault(e.getIsDefault()) + .machineName(e.getName()) .build() ).collect(Collectors.toList()); - return success(new PageResult(list, page.getTotal())); + return success(new PageResult(list, page.getTotal())); } + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineTemplateAuthController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineTemplateAuthController.java new file mode 100644 index 000000000..09ba622d3 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/MachineTemplateAuthController.java @@ -0,0 +1,68 @@ +package com.cf.imes.module.system.controller.admin.machine; + +import com.cf.imes.framework.common.pojo.CommonResult; +import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.module.system.controller.admin.machine.vo.*; +import com.cf.imes.module.system.dal.dataobject.machinetemplate.MachineTemplateDO; +import com.cf.imes.module.system.service.machine.MachineTemplateService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +import static com.cf.imes.framework.common.pojo.CommonResult.success; + +/** + * @author Beal + */ +@RestController +@Tag(name = "机台模板授权") +@RequestMapping("/system/machine-template-auth") +public class MachineTemplateAuthController { + + @Resource + private MachineTemplateService machineTemplateService; + + @PostMapping("organ-auth-template") + @Operation(summary = "组织模板授权") + @PreAuthorize("@ss.hasPermission('machine-template::query')") + public CommonResult auth(@RequestBody MachineOrgAuthReq vo) { + return success(machineTemplateService.auth(vo)); + } + + @GetMapping("organ-template-page") + @Operation(summary = "组织模板授权分页列表") + @PreAuthorize("@ss.hasPermission('machine-template::query')") + public CommonResult> organTemplatePage(OrganTemplatePage page) { + return success(machineTemplateService.organTemplatePage(page)); + } + + @GetMapping("organ-template-by-organId") + @Operation(summary = "根据组织id查询组织模板授权") + @PreAuthorize("@ss.hasPermission('machine-template::query')") + @Parameter(name = "organId", description = "组织id", required = true, example = "1") + public CommonResult organTemplateByOrganId(@RequestParam Long organId ) { + return success(machineTemplateService.organTemplateByOrganId(organId)); + } + + @GetMapping("page-template-machine-auth") + @Operation(summary = "授权机台模板分页") + @PreAuthorize("@ss.hasPermission('machine-template::query')") + public CommonResult> pageTemplateAuth(MachinePageReqVO pageParam) { + PageResult page = machineTemplateService.page(pageParam); + List list = page.getList().stream().map(e->TemplateAutoResp.builder() + .id(e.getId()) + .machineType(e.getMachineType()) + .templateName(e.getName()) + .isDefault(e.getIsDefault()) + .build() + ).collect(Collectors.toList()); + + return success(new PageResult(list, page.getTotal())); + } +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineAuthResp.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineAuthResp.java new file mode 100644 index 000000000..3ba5dbb44 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/MachineAuthResp.java @@ -0,0 +1,29 @@ +package com.cf.imes.module.system.controller.admin.machine.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author Beal + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MachineAuthResp { + @Schema(description = "机台id") + private Long id; + @Schema(description = "机台名称") + private String machineName; + @Schema(description = "机台类别") + private Integer machineType; + @Schema(description ="加工模式 开料机加工模式 默认true,显示开料机工作模式(是否排钻/造型,sc)配置") + private Boolean showPriorFacing = false; + @Schema(description = "双工位") + private Boolean showDualWorkstation = false; + @Schema(description = "自动贴标") + private Boolean showAutoNotePrinter = false; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachinePage.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachinePage.java new file mode 100644 index 000000000..a376a6778 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachinePage.java @@ -0,0 +1,16 @@ +package com.cf.imes.module.system.controller.admin.machine.vo; + +import com.cf.imes.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author Beal + */ +@Data +public class OrganMachinePage extends PageParam { + @Schema(description = "组织id") + private Long organId; + @Schema(description = "机台名称") + private String machineName; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineResp.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineResp.java new file mode 100644 index 000000000..8bbba4f59 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineResp.java @@ -0,0 +1,33 @@ +package com.cf.imes.module.system.controller.admin.machine.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; + +/** + * @author Beal + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class OrganMachineResp { + @Schema(description = "组织id") + private Long organId; + @Schema(description = "组织名称") + private String organName; + @Schema(description = "更新时间") + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + private Date updateTime; + @Schema(description = "机台模板列表") + private List authMachineList; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineVO.java new file mode 100644 index 000000000..09ef11ba9 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/machine/vo/OrganMachineVO.java @@ -0,0 +1,27 @@ +package com.cf.imes.module.system.controller.admin.machine.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author Beal + */ +@Data +public class OrganMachineVO { + @Schema(description = "机台id") + private Long machineId; + @Schema(description = "机台名称") + private String machineName; + @Schema(description = "机台类型") + private Integer machineType; + @Schema(description ="加工模式 开料机加工模式 默认true,显示开料机工作模式(是否排钻/造型,sc)配置") + private Boolean showPriorFacing; + @Schema(description = "双工位") + private Boolean showDualWorkstation; + @Schema(description = "自动贴标") + private Boolean showAutoNotePrinter; + + @JsonIgnore + private Long organId; +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/vo/NoticeSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/vo/NoticeSaveReqVO.java index 7e2c500b7..47cc6c34a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/vo/NoticeSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/notice/vo/NoticeSaveReqVO.java @@ -12,7 +12,7 @@ import javax.validation.constraints.Size; public class NoticeSaveReqVO { @Schema(description = "岗位公告编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @NotNull(message = "岗位公告编号不能为空") + //@NotNull(message = "岗位公告编号不能为空") private Long id; @Schema(description = "公告标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "小博主") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machine/MachineMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machine/MachineMapper.java index 962298704..891d0c3fe 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machine/MachineMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/machine/MachineMapper.java @@ -1,12 +1,16 @@ package com.cf.imes.module.system.dal.mysql.machine; import java.util.*; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; -import com.cf.imes.module.system.controller.admin.machine.vo.MachinePageReqVO; +import com.cf.imes.module.system.controller.admin.machine.vo.*; import com.cf.imes.module.system.dal.dataobject.machine.MachineDO; +import com.cf.imes.module.system.dal.dataobject.machinetemplate.MachineTemplateDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 机台 Mapper @@ -24,4 +28,17 @@ public interface MachineMapper extends BaseMapperX { .orderByDesc(MachineDO::getCreateTime)); } + Page selectOrganMachinePage(@Param("page") Page respPage, @Param("vo") OrganMachinePage page); + + List selectOrganMachineList(Map map); + + OrganMachineResp selectOrganMachine(Long organId); + + default PageResult selectPage(MachinePageReqVO pageParam, Collection ids) { + return selectPage(pageParam, new LambdaQueryWrapperX() + .eqIfPresent(MachineDO::getMachineType, pageParam.getMachineType()) + .likeIfPresent(MachineDO::getName, pageParam.getName()) + .betweenIfPresent(MachineDO::getCreateTime, pageParam.getCreateTime()) + .orderByDesc(MachineDO::getCreateTime)); + }; } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java index cc2afab47..e4d967be9 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineService.java @@ -72,4 +72,12 @@ public interface MachineService { List list(Collection ids); Map> getMachineTree(Long organId); + + Boolean auth(MachineOrgAuthReq vo); + + PageResult organMachinePage(OrganMachinePage page); + + OrganMachineResp organMachineByOrganId(Long organId); + + PageResult page(MachinePageReqVO pageParam); } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java index d640ceb36..0a2fe5344 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineServiceImpl.java @@ -10,6 +10,7 @@ import co.elastic.clients.elasticsearch.core.DeleteByQueryRequest; import co.elastic.clients.elasticsearch.core.SearchRequest; import co.elastic.clients.elasticsearch.core.SearchResponse; import co.elastic.clients.elasticsearch.core.search.Hit; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cf.imes.framework.es.core.dal.ESDocument; import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -25,13 +26,13 @@ import com.cf.imes.module.system.dal.dataobject.machinetemplate.MachineTemplateL import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; import com.cf.imes.module.system.dal.mysql.machine.MachineLimitMapper; import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateLimitMapper; -import com.cf.imes.module.system.dal.mysql.machinetemplate.MachineTemplateMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -251,6 +252,51 @@ public class MachineServiceImpl implements MachineService { return map; } + @Override + public Boolean auth(MachineOrgAuthReq vo) { + machineLimitMapper.delete(new LambdaQueryWrapperX().eq(MachineLimitDO::getOrganId, vo.getOrganId())); + + List machineAuthList = vo.getMachineAuthList(); + + if(CollectionUtil.isNotEmpty(machineAuthList)) { + List organMachineDOS = new ArrayList<>(); + LocalDateTime now = LocalDateTime.now(); + for (MachineAuth machineAuth : machineAuthList) { + organMachineDOS.add( + MachineLimitDO.builder() + .createTime(now) + .organId(vo.getOrganId()) + .machineId(machineAuth.getMachineId()) + .showDualWorkstation(machineAuth.getShowDualWorkstation()) + .showAutoNotePrinter(machineAuth.getShowAutoNotePrinter()) + .showPriorFacing(machineAuth.getShowPriorFacing()) + .build() + ); + + } + machineLimitMapper.insertBatch(organMachineDOS); + } + + return Boolean.TRUE; + } + + @Override + public PageResult organMachinePage(OrganMachinePage page) { + Page respPage = new Page<>(page.getPageNo(), page.getPageSize()); + Page pageRes = machineMapper.selectOrganMachinePage(respPage, page); + return new PageResult<>(pageRes.getRecords(), pageRes.getTotal()); + } + + @Override + public OrganMachineResp organMachineByOrganId(Long organId) { + return machineMapper.selectOrganMachine(organId); + } + + @Override + public PageResult page(MachinePageReqVO pageParam) { + return machineMapper.selectPage(pageParam, new ArrayList<>()); + } + private void validateExists(Long id) { if (machineMapper.selectById(id) == null) { throw exception(MACHINE_NOT_EXISTS); diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java index f95b9e93c..779a551e2 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/machine/MachineTemplateServiceImpl.java @@ -65,7 +65,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { private MachineTemplateMapper machineTemplateMapper; @Resource - private MachineTemplateLimitMapper organMachineMapper; + private MachineTemplateLimitMapper machineTemplateLimitMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -323,7 +323,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { @Override @Transactional(rollbackFor = Exception.class) public Boolean auth(MachineOrgAuthReq vo) { - organMachineMapper.delete(new LambdaQueryWrapperX().eq(MachineTemplateLimitDO::getOrganId, vo.getOrganId())); + machineTemplateLimitMapper.delete(new LambdaQueryWrapperX().eq(MachineTemplateLimitDO::getOrganId, vo.getOrganId())); List machineAuthList = vo.getMachineAuthList(); @@ -343,7 +343,7 @@ public class MachineTemplateServiceImpl implements MachineTemplateService { ); } - organMachineMapper.insertBatch(organMachineDOS); + machineTemplateLimitMapper.insertBatch(organMachineDOS); } return Boolean.TRUE; diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/MachineMapper.xml b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/MachineMapper.xml new file mode 100644 index 000000000..36fa312d4 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/MachineMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file