Przeglądaj źródła

fix:刀具申请逻辑

wang.sq@aliyun.com 2 tygodni temu
rodzic
commit
4d4705c63e

+ 88 - 353
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/centralToolMagazine/service/impl/ToolManagementServiceImpl.java

@@ -1,29 +1,24 @@
 package com.github.zuihou.business.centralToolMagazine.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.zuihou.authority.dao.common.DictionaryMapper;
 import com.github.zuihou.authority.service.auth.UserService;
 import com.github.zuihou.base.R;
 import com.github.zuihou.base.service.SuperCacheServiceImpl;
+import com.github.zuihou.business.centralToolMagazine.dao.ToolManagementMapper;
 import com.github.zuihou.business.centralToolMagazine.dto.ToolCheckDTO;
+import com.github.zuihou.business.centralToolMagazine.dto.ToolManagementSaveDTO;
 import com.github.zuihou.business.centralToolMagazine.dto.ToolManagementUpdateDTO;
 import com.github.zuihou.business.centralToolMagazine.entity.ToolManagement;
-import com.github.zuihou.business.centralToolMagazine.entity.ToolTask;
 import com.github.zuihou.business.centralToolMagazine.service.ToolManagementService;
-import com.github.zuihou.business.centralToolMagazine.dao.ToolManagementMapper;
-import com.github.zuihou.business.centralToolMagazine.dto.ToolManagementSaveDTO;
 import com.github.zuihou.business.cuttercategories.entity.CutterCategories;
-import com.github.zuihou.business.edgeLibrary.dto.ShelvesUpdateDTO;
 import com.github.zuihou.business.operationManagementCenter.dao.PlanProductMapper;
 import com.github.zuihou.business.operationManagementCenter.dao.ToolTaskMapper;
 import com.github.zuihou.business.operationManagementCenter.entity.Order;
-import com.github.zuihou.business.operationManagementCenter.entity.Plan;
 import com.github.zuihou.business.operationManagementCenter.entity.PlanProduct;
 import com.github.zuihou.business.operationManagementCenter.service.OrderService;
-import com.github.zuihou.business.operationManagementCenter.service.PlanService;
 import com.github.zuihou.business.productionReadyCenter.dao.BBomMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BomProcedureMapper;
 import com.github.zuihou.business.productionReadyCenter.dao.BomVersionInfoMapper;
@@ -37,14 +32,10 @@ import com.github.zuihou.database.mybatis.auth.DataScope;
 import com.github.zuihou.database.mybatis.conditions.Wraps;
 import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
 import com.github.zuihou.injection.annonation.InjectionResult;
-
 import com.github.zuihou.utils.BeanPlusUtil;
-import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -88,6 +79,10 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
     @Autowired
     private CuttingToolMapper cuttingToolMapper;
 
+
+    @Autowired
+    private CuttingToolApplyService cuttingToolApplyService;
+
     @Autowired
     private OrderService orderService;
     @Autowired
@@ -177,18 +172,18 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
     }
 
     @Override
-    public List<ToolManagement> shelvesTreeList(){
+    public List<ToolManagement> shelvesTreeList() {
         //[{id=xx,name=xx,children=[{id=xx,name=xx}]}]
         List<ToolManagement> returnList = new ArrayList<ToolManagement>();
-        LbqWrapper<ToolManagement> queryWrapper  = Wraps.<ToolManagement>lbQ();
-        queryWrapper.eq(ToolManagement::getStatus,1).orderByAsc(ToolManagement::getWeight).orderByAsc(ToolManagement::getCreateTime);
+        LbqWrapper<ToolManagement> queryWrapper = Wraps.<ToolManagement>lbQ();
+        queryWrapper.eq(ToolManagement::getStatus, 1).orderByAsc(ToolManagement::getWeight).orderByAsc(ToolManagement::getCreateTime);
 
-        IPage<ToolManagement> shelves = baseMapper.shelvesTreeList(new Page<ToolManagement>(1L,50), queryWrapper, new DataScope());
+        IPage<ToolManagement> shelves = baseMapper.shelvesTreeList(new Page<ToolManagement>(1L, 50), queryWrapper, new DataScope());
         //Map shelvesIPage = baseMapper.shelvesTreeList(, new DataScope());
-        List<ToolManagement> list = (shelves!=null)? (List<ToolManagement>)shelves.getRecords() : Lists.newArrayList();
-        for(ToolManagement map:list){
+        List<ToolManagement> list = (shelves != null) ? (List<ToolManagement>) shelves.getRecords() : Lists.newArrayList();
+        for (ToolManagement map : list) {
             //一级
-            if(0 == (map.getParentId()==null?0:map.getParentId().longValue())) {
+            if (0 == (map.getParentId() == null ? 0 : map.getParentId().longValue())) {
                 //二级
                 //map.put("children", findChildren(map,list));
                 //map.setChildren(findChildren(map,list));
@@ -206,9 +201,8 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
                 .collect(Collectors.toList());
 
 
-
         List<PlanProduct> planProductList = planProductMapper.selectList(Wraps.<PlanProduct>lbQ().in(PlanProduct::getPlanId, planIds));
-        if(planProductList.isEmpty()){
+        if (planProductList.isEmpty()) {
             return null;
         }
 
@@ -218,263 +212,18 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
         List<Long> bomIds = planProductList.stream().map(p -> p.getBomId()).collect(Collectors.toList());
         List<BBom> bBomsList = bBomMapper.selectList(Wraps.<BBom>lbQ().in(BBom::getId, bomIds));
 
-        List<ToolCheckDTO> returnList=new ArrayList<>();
+        List<ToolCheckDTO> returnList = new ArrayList<>();
         // 检查工量具
-        List<ToolCheckDTO> MeasuringToolsList = checkMeasuringToolsApply(planProductList,  orderList, bBomsList);
+        List<ToolCheckDTO> MeasuringToolsList = checkMeasuringToolsApply(planProductList, orderList, bBomsList);
         returnList.addAll(MeasuringToolsList);
         // 检查刀具
-        List<ToolCheckDTO> cutterApplylist = checkCutterApply(planProductList,  orderList, bBomsList);
+        List<ToolCheckDTO> cutterApplylist = checkCutterApply(planProductList, orderList, bBomsList);
         returnList.addAll(cutterApplylist);
         // 检查需要放入机床的刀
-        List<ToolCheckDTO> cutterIntoDeviceList = cutterIntoDevice(planProductList,  orderList, bBomsList);
+        List<ToolCheckDTO> cutterIntoDeviceList = cutterIntoDevice(planProductList, orderList, bBomsList);
 
         returnList.addAll(cutterIntoDeviceList);
 
-
-/*
-        planIds.stream().forEach(item ->{
-            PlanProduct planProduct = planProductMapper.selectOne(Wraps.<PlanProduct>lbQ().eq(PlanProduct::getPlanId, item));
-
-            Order order = orderService.list(Wraps.<Order>lbQ().eq(Order::getId, planProduct.getOrderId())).get(0);
-
-            Long bomId=planProduct.getBomId();
-            BBom bBom = bBomMapper.selectOne(Wraps.<BBom>lbQ().eq(BBom::getId, bomId));
-            BomVersionInfo bomVersionInfo = bomVersionInfoMapper.selectOne(Wraps.<BomVersionInfo>lbQ()
-                    .eq(BomVersionInfo::getAuditStatus,"2")
-                    .eq(BomVersionInfo::getUseStatus,"1")
-                    .eq(BomVersionInfo::getBomId,bomId));
-            if(Objects.isNull(bomVersionInfo)){
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
-                toolCheckDTO.setId(item);
-                toolCheckDTO.setOrderId(order.getId());
-                toolCheckDTO.setOrderNo(order.getOrderNo());
-                toolCheckDTO.setOrderName(order.getOrderName());
-                toolCheckDTO.setIsNoCutter(0);
-                toolCheckDTO.setName(bBom.getName());
-                toolCheckDTO.setHasCuttingToolsFlag("否");
-                toolCheckDTO.setIsTask("否");
-                toolCheckDTO.setIsFree(false);
-                toolCheckDTO.setMsg("无有效工艺版本");
-                returnList.add(toolCheckDTO);
-                return;
-            }
-            List<BomProcedure> bomProcedures = bomProcedureMapper.selectList(Wraps.<BomProcedure>lbQ()
-                    .eq(BomProcedure::getBomId, bomId).eq(BomProcedure::getType,"设备序"));
-
-            //产品所需所有的类别集合
-//            List<String> toolId=new ArrayList<>();
-
-            // 产品所需要的刀具列表
-            List<CutterCategories> needToolList = new ArrayList<>();
-
-            //所有可执行设备资源
-            List<BomProcedureProductionresource> resourceList=new ArrayList<>();
-
-            for (BomProcedure vo : bomProcedures) {
-                BomProcedureVersion bomProcedureVersion=new BomProcedureVersion();
-                bomProcedureVersion.setId(vo.getId());
-
-                //查出工序下的所有资源
-                List<BomProcedureProductionresource> resourcelist = bomProcedureProductionresourceService.getResourcelist(bomProcedureVersion);
-                resourceList.addAll(resourcelist);
-
-                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId,vo.getId()).last("limit 1"));
-                //List<BBomProcedureTool> toolList = bomProcedureToolService.list(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId,vo.getId()));
-                */
-/*List<String> toolIdList = toolList.stream()
-                        .map(BBomProcedureTool::getCuttingToolCategory)
-                        .collect(Collectors.toList()); *//*
-
-                if (null != bomProcedureTool){
-                    needToolList = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().eq(CutterCategories::getPartsNo, bBom.getPartsNo()).eq(CutterCategories::getProcedureNo, bBom.getNo()));
-                }
-            }
-
-            if(needToolList.isEmpty()|| needToolList.size()<=0){
-                log.info("刀具校验:未配置工艺刀具");
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
-                toolCheckDTO.setId(item);
-                toolCheckDTO.setOrderId(order.getId());
-                toolCheckDTO.setOrderNo(order.getOrderNo());
-                toolCheckDTO.setOrderName(order.getOrderName());
-                toolCheckDTO.setIsNoCutter(0);
-                toolCheckDTO.setName(bBom.getName());
-                toolCheckDTO.setHasCuttingToolsFlag("否");
-                toolCheckDTO.setIsTask("否");
-                toolCheckDTO.setIsFree(false);
-                toolCheckDTO.setMsg("未配置工艺刀具");
-                returnList.add(toolCheckDTO);
-                return;
-            }
-            //List<Long> resourceId = resourceList.stream().map(BomProcedureProductionresource::getResourceId).collect(Collectors.toList());
-
-            List<CutterCategories> finalNeedToolList = needToolList;
-
-
-            // 工量具判断,是否下发呼叫
-            resourceList.stream().forEach(vo->{
-                //机床现有刀具集合
-                Productionresource productionresource = productionresourceBizService.getById(vo.getResourceId());
-                //判断是否机床
-                if(StringUtils.isEmpty(productionresource.getModeSpecification())){
-                    return;
-                }
-                List<MeasuringToolsPo> measuringToolsPos = measuringToolsService.listBytoolCategoriesParts(bBom.getPartsNo());
-                if(measuringToolsPos!=null && measuringToolsPos.size()>0){
-                    List<MeasuringToolsPo>  measuringToolsPoList= new ArrayList<>();
-
-                    for (MeasuringToolsPo measuringToolsPo : measuringToolsPos) {
-                        if(!"1".equalsIgnoreCase(measuringToolsPo.getLocationName())){
-                            MeasuringToolsPo toolsPo = MeasuringToolsPo.builder().build();
-                            BeanUtils.copyProperties(measuringToolsPo, toolsPo);
-                            measuringToolsPoList.add(toolsPo);
-                        }
-                    }
-
-                    List<String>  toolCodes= measuringToolsPoList.stream().map(MeasuringToolsPo::getToolCode).collect(Collectors.toList());
-
-                    ToolCheckDTO toolCheckDTO =new ToolCheckDTO();
-                    toolCheckDTO.setId(item);
-                    toolCheckDTO.setOrderId(order.getId());
-                    toolCheckDTO.setOrderNo(order.getOrderNo());
-                    toolCheckDTO.setOrderName(order.getOrderName());
-                    toolCheckDTO.setIsNoCutter(2);
-                    toolCheckDTO.setIsTask(measuringToolsPoList.size()>0?"是":"否");
-                    toolCheckDTO.setNumber(measuringToolsPoList.size());
-                    toolCheckDTO.setId(vo.getResourceId());
-                    toolCheckDTO.setDeviceName(vo.getName());
-                    toolCheckDTO.setName(bBom.getName());
-                    toolCheckDTO.setList(toolCodes);
-                    toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(toolCodes) ? "是" : "否" );
-                    toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(toolCodes) ?
-                            "缺少:"+measuringToolsPoList.stream().map(obj->obj.getToolName()).collect(Collectors.joining(",")):"校验成功" );
-                    toolCheckDTO.setPlanId(item);
-                    returnList.add(toolCheckDTO);
-                }
-
-            });
-
-
-            // 刀具不在产线,需要发送刀具需求
-            resourceList.stream().forEach(vo->{
-                List<CutterCategories> needCutterCategories = new ArrayList<>();
-                // 需求的刀具数据
-                Map<String, List<CutterCategories>> collect = finalNeedToolList.stream().collect(groupingBy(CutterCategories::getCutterT));
-                //机床现有刀具集合
-                Productionresource productionresource = productionresourceBizService.getById(vo.getResourceId());
-                //判断是否机床
-                if(StringUtils.isEmpty(productionresource.getModeSpecification())){
-                    return;
-                }
-
-                List<String> realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj->obj.getCuttingToolId()).collect(Collectors.toList());
-                // 查询刀架有的刀
-                List<CuttingTool> cutterInStorgeInfo = cuttingToolService.getCutterInStorgeInfo();
-                if(cutterInStorgeInfo!=null && !cutterInStorgeInfo.isEmpty()){
-                    List<String> collect1 = cutterInStorgeInfo.stream().map(CuttingTool::getCuttingToolNo).map(Object::toString).collect(Collectors.toList());
-                    realToolId.addAll(collect1);
-                }
-                // 比对是否有缺失的数据
-                collect.forEach((s, cutterCategories) -> {
-                    if(!realToolId.contains(s)){
-                        needCutterCategories.add(cutterCategories.get(0));
-                    }
-                });
-
-                if(needCutterCategories.isEmpty()){
-                    return;
-                }
-                List<String> cutterTs = needCutterCategories.stream().map(CutterCategories::getCutterT).collect(Collectors.toList());
-
-                ToolCheckDTO toolCheckDTO =new ToolCheckDTO();
-                toolCheckDTO.setId(item);
-                toolCheckDTO.setOrderId(order.getId());
-                toolCheckDTO.setOrderNo(order.getOrderNo());
-                toolCheckDTO.setOrderName(order.getOrderName());
-                toolCheckDTO.setIsNoCutter(1);
-                toolCheckDTO.setIsTask(needCutterCategories.size()>0?"是":"否");
-                toolCheckDTO.setNumber(needCutterCategories.size());
-                toolCheckDTO.setId(vo.getResourceId());
-                toolCheckDTO.setDeviceName(vo.getName());
-                toolCheckDTO.setName(bBom.getName());
-                toolCheckDTO.setList(cutterTs);
-                toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(cutterTs) ? "是" : "否" );
-                toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(cutterTs) ?
-                        "缺少:"+needCutterCategories.stream().map(obj->obj.getCutterName()).collect(Collectors.joining(",")):"校验成功" );
-                toolCheckDTO.setPlanId(item);
-                returnList.add(toolCheckDTO);
-            });
-
-
-            // 刀具在产线,但没有在机床
-            resourceList.stream().forEach(vo->{
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
-
-                //机床现有刀具集合
-                //List<Long> realToolId = toolManagementMapper.getToolManagementToolId(vo.getResourceId());
-                //Integer freeCount = toolManagementMapper.getFreeStorge(vo.getResourceId());
-                Productionresource productionresource = productionresourceBizService.getById(vo.getResourceId());
-                List<String> realToolId = null;
-                Integer freeCount = 0;
-                //判断是否机床
-                if(StringUtils.isNotEmpty(productionresource.getModeSpecification())){
-                    realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj->obj.getCuttingToolId()).collect(Collectors.toList());
-                    freeCount = DEVICE_CUTTER_POSITION - realToolId.size();
-                }else{
-                    realToolId = Lists.newArrayList();
-                }
-
-                //Integer freeCount=0;
-                //if(!realToolId.containsAll(toolId)){
-                //需要的类别
-                //List<String> toolCategory = cuttingToolMapper.getToolCategory(toolId);
-
-                //机床现有的类别
-                //List<String> realToolCategory = cuttingToolMapper.getToolCategory(realToolId);
-
-                //比较 刀具类别  是否存在
-                if(freeCount > 0){
-                    List<String> finalRealToolId = realToolId;
-                    List<CutterCategories> lackTools = finalNeedToolList.stream()
-                            .filter(tool -> !finalRealToolId.contains(tool.getCutterT())).distinct()
-                            .collect(Collectors.toList());
-                    //List<String> dicName = dictionaryMapper.getDicName(toolId);
-                    */
-/*List<Long> differenceTool = toolId.stream()
-                            .filter(id -> !realToolId.contains(id))
-                            .collect(Collectors.toList());
-                    List<CuttingTool> cuttingTools = cuttingToolMapper.selectList(Wraps.<CuttingTool>lbQ().in(CuttingTool::getId, differenceTool));*//*
-
-                    List<Long> needCutters = lackTools.stream().map(CutterCategories::getId).collect(Collectors.toList());
-                    List<String> differenceCategory = lackTools.stream().map(CutterCategories::getCutterT).collect(Collectors.toList());
-
-                    //true 机床刀库空闲个数大于缺刀个数
-                    Boolean isFree=freeCount > lackTools.size();
-                    //ToolTask findToolTask = toolTaskMapper.selectOne(Wraps.<ToolTask>lbQ().eq(ToolTask::getPlanId, item));
-
-                    toolCheckDTO.setId(item);
-                    toolCheckDTO.setOrderId(order.getId());
-                    toolCheckDTO.setOrderNo(order.getOrderNo());
-                    toolCheckDTO.setOrderName(order.getOrderName());
-                    toolCheckDTO.setIsNoCutter(0);
-                    toolCheckDTO.setIsTask(lackTools.size()>0?"是":"否");
-                    toolCheckDTO.setId(vo.getResourceId());
-                    toolCheckDTO.setDeviceName(vo.getName());
-                    toolCheckDTO.setName(bBom.getName());
-                    toolCheckDTO.setList(differenceCategory);
-                    toolCheckDTO.setListData(needCutters);
-                    toolCheckDTO.setIsFree(isFree);
-                    toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(differenceCategory) ? "是" : "否" );
-                    toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(differenceCategory) ?
-                            "缺少:"+lackTools.stream().map(obj->obj.getCutterName()).collect(Collectors.joining(","))+(isFree ? ",机床刀库空闲个数大于缺刀个数":"") +(" 缺刀总数:"+ differenceCategory.size() +"个"):"校验成功" );
-                    toolCheckDTO.setPlanId(item);
-                    returnList.add(toolCheckDTO);
-                }
-
-            });
-        });
-*/
-
         return R.success(returnList);
     }
 
@@ -484,70 +233,60 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
 
     /**
      * 工量具刀具申请
+     *
      * @param planProducts
      * @param ordersList
      * @param bBomsList
      * @return
      */
-    private List<ToolCheckDTO> checkMeasuringToolsApply(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList){
-        List<ToolCheckDTO> returnList=new ArrayList<>();
+    private List<ToolCheckDTO> checkMeasuringToolsApply(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList) {
+        List<ToolCheckDTO> returnList = new ArrayList<>();
 
         Map<Long, Order> orderMap = ordersList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
         Map<Long, BBom> bBomsMap = bBomsList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
 
-        List<MeasuringToolsPo> measuringToolsList = measuringToolsService.list(Wraps.<MeasuringToolsPo>lbQ().eq(MeasuringToolsPo::getLocationName, "1"));
+        List<MeasuringToolsPo> measuringToolsList = measuringToolsService.list();
 
         for (PlanProduct planProduct : planProducts) {
             Order order = orderMap.get(planProduct.getOrderId());
             BBom bBom = bBomsMap.get(planProduct.getBomId());
 
             List<BomProcedure> bomProcedures = bomProcedureMapper.selectList(Wraps.<BomProcedure>lbQ()
-                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType,"设备序"));
+                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType, "设备序"));
 
             // 产品所需要的刀具列表
-            List<MeasuringToolsCategoriesPo> needToolList = new ArrayList<>();
-            //所有可执行设备资源
-            List<BomProcedureProductionresource> resourceList=new ArrayList<>();
-            for (BomProcedure vo : bomProcedures) {
-                BomProcedureVersion bomProcedureVersion=new BomProcedureVersion();
-                bomProcedureVersion.setId(vo.getId());
-
-                //查出工序下的所有资源
-                List<BomProcedureProductionresource> resourcelist = bomProcedureProductionresourceService.getResourcelist(bomProcedureVersion);
-                resourceList.addAll(resourcelist);
-
-                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId,vo.getId()).last("limit 1"));
-                if (null != bomProcedureTool){
-                    needToolList = measuringToolsCategoriesService.list(new LbqWrapper<MeasuringToolsCategoriesPo>().eq(MeasuringToolsCategoriesPo::getPartsNo, bBom.getPartsNo()).eq(MeasuringToolsCategoriesPo::getProcedureNo, bBom.getNo()));
-                }
-            }
+            List<MeasuringToolsCategoriesPo> needToolList = measuringToolsCategoriesService.list(new LbqWrapper<MeasuringToolsCategoriesPo>().eq(MeasuringToolsCategoriesPo::getPartsNo, bBom.getPartsNo()).eq(MeasuringToolsCategoriesPo::getProcedureNo, bBom.getNo()));
 
             // 工量具判断,是否下发呼叫
+            List<MeasuringToolsPo> lackTools = new ArrayList<>();
             List<String> collect = measuringToolsList.stream().map(measuringToolsPo -> measuringToolsPo.getToolCode()).collect(Collectors.toList());
-            List<MeasuringToolsCategoriesPo> lackTools = needToolList.stream()
-                    .filter(tool -> !collect.contains(tool.getToolCode())).distinct()
-                    .collect(Collectors.toList());
-
-            if(lackTools.isEmpty()){
+            for (MeasuringToolsPo toolsPo : measuringToolsList) {
+                if (collect.contains(toolsPo.getToolCode()) && !"1".equals(toolsPo.getLocationName())) {
+                    lackTools.add(toolsPo);
+                }
+            }
+            if (lackTools.isEmpty()) {
                 log.info("量具已在线上");
                 continue;
             }
 
-            List<String>  toolCodes= lackTools.stream().map(MeasuringToolsCategoriesPo::getToolCode).collect(Collectors.toList());
+            List<String> toolCodes = lackTools.stream().map(MeasuringToolsPo::getToolCode).collect(Collectors.toList());
 
-            ToolCheckDTO toolCheckDTO =new ToolCheckDTO();
+            ToolCheckDTO toolCheckDTO = new ToolCheckDTO();
             toolCheckDTO.setId(planProduct.getId());
             toolCheckDTO.setOrderId(order.getId());
             toolCheckDTO.setOrderNo(order.getOrderNo());
             toolCheckDTO.setOrderName(order.getOrderName());
+            toolCheckDTO.setProcessingQuantity(1);
             toolCheckDTO.setApplyType(1);
-            toolCheckDTO.setIsTask(lackTools.size()>0?"是":"否");
+            toolCheckDTO.setIsTask(lackTools.size() > 0 ? "是" : "否");
             toolCheckDTO.setNumber(lackTools.size());
             toolCheckDTO.setName(bBom.getName());
             toolCheckDTO.setList(toolCodes);
-            toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(toolCodes) ? "是" : "否" );
+            toolCheckDTO.setDatas(lackTools);
+            toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(toolCodes) ? "是" : "否");
             toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(toolCodes) ?
-                    "缺少:"+lackTools.stream().map(obj->obj.getToolName()).collect(Collectors.joining(",")):"校验成功" );
+                    "缺少:" + lackTools.stream().map(obj -> obj.getToolName()).collect(Collectors.joining(";")) : "校验成功");
             toolCheckDTO.setPlanId(planProduct.getId());
             returnList.add(toolCheckDTO);
 
@@ -555,61 +294,47 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
         return returnList;
     }
 
+
     /**
      * 刀具需求申请
+     *
      * @param planProducts
      * @param ordersList
      * @param bBomsList
      * @return
      */
-    private List<ToolCheckDTO> checkCutterApply(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList){
-        List<ToolCheckDTO> returnList=new ArrayList<>();
+    private List<ToolCheckDTO> checkCutterApply(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList) {
+        List<ToolCheckDTO> returnList = new ArrayList<>();
 
         Map<Long, Order> orderMap = ordersList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
         Map<Long, BBom> bBomsMap = bBomsList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
 
+
         for (PlanProduct planProduct : planProducts) {
             Order order = orderMap.get(planProduct.getOrderId());
             BBom bBom = bBomsMap.get(planProduct.getBomId());
 
             List<BomProcedure> bomProcedures = bomProcedureMapper.selectList(Wraps.<BomProcedure>lbQ()
-                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType,"设备序"));
+                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType, "设备序"));
 
             // 产品所需要的刀具列表
             List<CutterCategories> needToolList = new ArrayList<>();
             //所有可执行设备资源
-            List<BomProcedureProductionresource> resourceList=new ArrayList<>();
+            List<BomProcedureProductionresource> resourceList = new ArrayList<>();
             for (BomProcedure vo : bomProcedures) {
-                BomProcedureVersion bomProcedureVersion=new BomProcedureVersion();
+                BomProcedureVersion bomProcedureVersion = new BomProcedureVersion();
                 bomProcedureVersion.setId(vo.getId());
 
                 //查出工序下的所有资源
                 List<BomProcedureProductionresource> resourcelist = bomProcedureProductionresourceService.getResourcelist(bomProcedureVersion);
                 resourceList.addAll(resourcelist);
 
-                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId,vo.getId()).last("limit 1"));
-                if (null != bomProcedureTool){
+                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId, vo.getId()).last("limit 1"));
+                if (null != bomProcedureTool) {
                     needToolList = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().eq(CutterCategories::getPartsNo, bBom.getPartsNo()).eq(CutterCategories::getProcedureNo, bBom.getNo()));
                 }
             }
 
-            if(needToolList.isEmpty()|| needToolList.size()<=0){
-                log.info("================刀具校验:未配置工艺刀具==============");
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
-                toolCheckDTO.setId(planProduct.getId());
-                toolCheckDTO.setOrderId(order.getId());
-                toolCheckDTO.setOrderNo(order.getOrderNo());
-                toolCheckDTO.setOrderName(order.getOrderName());
-                toolCheckDTO.setApplyType(2);
-                toolCheckDTO.setName(bBom.getName());
-                toolCheckDTO.setHasCuttingToolsFlag("否");
-                toolCheckDTO.setIsTask("否");
-                toolCheckDTO.setIsFree(false);
-                toolCheckDTO.setMsg("未配置工艺刀具");
-                returnList.add(toolCheckDTO);
-                continue;
-            }
-
             // 刀具不在产线,需要发送刀具需求
             for (BomProcedureProductionresource vo : resourceList) {
                 List<CutterCategories> needCutterCategories = new ArrayList<>();
@@ -618,44 +343,47 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
                 //机床现有刀具集合
                 Productionresource productionresource = productionresourceBizService.getById(vo.getResourceId());
                 //判断是否机床
-                if(StringUtils.isEmpty(productionresource.getModeSpecification())){
+                if (StringUtils.isEmpty(productionresource.getModeSpecification())) {
                     continue;
                 }
 
-                List<String> realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj->obj.getCuttingToolId()).collect(Collectors.toList());
+                List<String> realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj -> obj.getCuttingToolId()).collect(Collectors.toList());
                 // 查询刀架有的刀
                 List<CuttingTool> cutterInStorgeInfo = cuttingToolService.getCutterInStorgeInfo();
-                if(cutterInStorgeInfo!=null && !cutterInStorgeInfo.isEmpty()){
+                if (cutterInStorgeInfo != null && !cutterInStorgeInfo.isEmpty()) {
                     List<String> collect1 = cutterInStorgeInfo.stream().map(CuttingTool::getCuttingToolNo).map(Object::toString).collect(Collectors.toList());
                     realToolId.addAll(collect1);
                 }
                 // 比对是否有缺失的数据
                 collect.forEach((s, cutterCategories) -> {
-                    if(!realToolId.contains(s)){
+                    if (!realToolId.contains(s)) {
                         needCutterCategories.add(cutterCategories.get(0));
                     }
                 });
 
-                if(needCutterCategories.isEmpty()){
+                if (needCutterCategories.isEmpty()) {
                     continue;
                 }
                 List<String> cutterTs = needCutterCategories.stream().map(CutterCategories::getCutterT).collect(Collectors.toList());
 
-                ToolCheckDTO toolCheckDTO =new ToolCheckDTO();
+                List<CuttingTool> needCutterlist = cuttingToolService.list(Wraps.<CuttingTool>lbQ().in(CuttingTool::getCuttingToolNo, cutterTs));
+
+                ToolCheckDTO toolCheckDTO = new ToolCheckDTO();
                 toolCheckDTO.setId(planProduct.getId());
                 toolCheckDTO.setOrderId(order.getId());
                 toolCheckDTO.setOrderNo(order.getOrderNo());
                 toolCheckDTO.setOrderName(order.getOrderName());
+                toolCheckDTO.setProcessingQuantity(order.getProductNum());
                 toolCheckDTO.setApplyType(2);
-                toolCheckDTO.setIsTask(needCutterCategories.size()>0?"是":"否");
                 toolCheckDTO.setNumber(needCutterCategories.size());
                 toolCheckDTO.setId(vo.getResourceId());
                 toolCheckDTO.setDeviceName(vo.getName());
                 toolCheckDTO.setName(bBom.getName());
                 toolCheckDTO.setList(cutterTs);
-                toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(cutterTs) ? "是" : "否" );
+                toolCheckDTO.setDatas(needCutterlist);
+                toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(cutterTs) ? "是" : "否");
                 toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(cutterTs) ?
-                        "缺少:"+needCutterCategories.stream().map(obj->obj.getCutterName()).collect(Collectors.joining(",")):"校验成功" );
+                        "缺少:" + needCutterCategories.stream().map(obj -> obj.getCutterName()).collect(Collectors.joining(";")) : "校验成功");
                 toolCheckDTO.setPlanId(planProduct.getPlanId());
                 returnList.add(toolCheckDTO);
             }
@@ -663,8 +391,14 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
         return returnList;
     }
 
-    private List<ToolCheckDTO> cutterIntoDevice(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList){
-        List<ToolCheckDTO> returnList=new ArrayList<>();
+    private List<ToolCheckDTO> cutterIntoDevice(List<PlanProduct> planProducts, List<Order> ordersList, List<BBom> bBomsList) {
+        List<ToolCheckDTO> returnList = new ArrayList<>();
+        List<Long> planIds = planProducts.stream().map(planProduct -> planProduct.getPlanId()).collect(Collectors.toList());
+        List<CuttingToolApply> cuttApplyList = cuttingToolApplyService.list(Wraps.<CuttingToolApply>lbQ().in(CuttingToolApply::getPlanId, planIds));
+        Map<String, List<CuttingToolApply>> cuttApplyMap = new HashMap<>();
+        if (!cuttApplyList.isEmpty()) {
+            cuttApplyMap = cuttApplyList.stream().collect(groupingBy(CuttingToolApply::getPlanId));
+        }
 
         Map<Long, Order> orderMap = ordersList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
         Map<Long, BBom> bBomsMap = bBomsList.stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
@@ -674,29 +408,29 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
             BBom bBom = bBomsMap.get(planProduct.getBomId());
 
             List<BomProcedure> bomProcedures = bomProcedureMapper.selectList(Wraps.<BomProcedure>lbQ()
-                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType,"设备序"));
+                    .eq(BomProcedure::getBomId, planProduct.getBomId()).eq(BomProcedure::getType, "设备序"));
 
             // 产品所需要的刀具列表
             List<CutterCategories> needToolList = new ArrayList<>();
             //所有可执行设备资源
-            List<BomProcedureProductionresource> resourceList=new ArrayList<>();
+            List<BomProcedureProductionresource> resourceList = new ArrayList<>();
             for (BomProcedure vo : bomProcedures) {
-                BomProcedureVersion bomProcedureVersion=new BomProcedureVersion();
+                BomProcedureVersion bomProcedureVersion = new BomProcedureVersion();
                 bomProcedureVersion.setId(vo.getId());
 
                 //查出工序下的所有资源
                 List<BomProcedureProductionresource> resourcelist = bomProcedureProductionresourceService.getResourcelist(bomProcedureVersion);
                 resourceList.addAll(resourcelist);
 
-                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId,vo.getId()).last("limit 1"));
-                if (null != bomProcedureTool){
+                BBomProcedureTool bomProcedureTool = bomProcedureToolService.getOne(Wraps.<BBomProcedureTool>lbQ().eq(BBomProcedureTool::getProcedureId, vo.getId()).last("limit 1"));
+                if (null != bomProcedureTool) {
                     needToolList = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().eq(CutterCategories::getPartsNo, bBom.getPartsNo()).eq(CutterCategories::getProcedureNo, bBom.getNo()));
                 }
             }
 
-            if(needToolList.isEmpty()|| needToolList.size()<=0){
+            if (needToolList.isEmpty() || needToolList.size() <= 0) {
                 log.info("================刀具校验:未配置工艺刀具==============");
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
+                ToolCheckDTO toolCheckDTO = new ToolCheckDTO();
                 toolCheckDTO.setId(planProduct.getId());
                 toolCheckDTO.setOrderId(order.getId());
                 toolCheckDTO.setOrderNo(order.getOrderNo());
@@ -713,21 +447,21 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
 
             // 刀具在产线,但没有在机床
             for (BomProcedureProductionresource vo : resourceList) {
-                ToolCheckDTO toolCheckDTO=new ToolCheckDTO();
+                ToolCheckDTO toolCheckDTO = new ToolCheckDTO();
 
                 Productionresource productionresource = productionresourceBizService.getById(vo.getResourceId());
                 List<String> realToolId = null;
                 Integer freeCount = 0;
                 //判断是否机床
-                if(StringUtils.isNotEmpty(productionresource.getModeSpecification())){
-                    realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj->obj.getCuttingToolId()).collect(Collectors.toList());
+                if (StringUtils.isNotEmpty(productionresource.getModeSpecification())) {
+                    realToolId = machineCuttingToolService.list(new LbqWrapper<MachineCuttingTool>().eq(MachineCuttingTool::getMachineId, vo.getResourceId())).stream().map(obj -> obj.getCuttingToolId()).collect(Collectors.toList());
                     freeCount = DEVICE_CUTTER_POSITION - realToolId.size();
-                }else{
+                } else {
                     realToolId = Lists.newArrayList();
                 }
 
                 // 判断可用刀架位是否满足可放刀
-                if(freeCount > 0){
+                if (freeCount > 0) {
                     List<String> finalRealToolId = realToolId;
                     List<CutterCategories> lackTools = needToolList.stream()
                             .filter(tool -> !finalRealToolId.contains(tool.getCutterT())).distinct()
@@ -737,7 +471,7 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
                     List<String> differenceCategory = lackTools.stream().map(CutterCategories::getCutterT).collect(Collectors.toList());
 
                     //true 机床刀库空闲个数大于缺刀个数
-                    Boolean isFree=freeCount > lackTools.size();
+                    Boolean isFree = freeCount > lackTools.size();
                     //ToolTask findToolTask = toolTaskMapper.selectOne(Wraps.<ToolTask>lbQ().eq(ToolTask::getPlanId, item));
 
                     toolCheckDTO.setId(planProduct.getId());
@@ -745,16 +479,17 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
                     toolCheckDTO.setOrderNo(order.getOrderNo());
                     toolCheckDTO.setOrderName(order.getOrderName());
                     toolCheckDTO.setApplyType(3);
-                    toolCheckDTO.setIsTask(lackTools.size()>0?"是":"否");
+                    toolCheckDTO.setIsTask(cuttApplyMap.containsKey(planProduct.getId()) ? "是" : "否");
+                    toolCheckDTO.setNumber(lackTools.size());
                     toolCheckDTO.setId(vo.getResourceId());
                     toolCheckDTO.setDeviceName(vo.getName());
                     toolCheckDTO.setName(bBom.getName());
                     toolCheckDTO.setList(differenceCategory);
                     toolCheckDTO.setListData(needCutters);
                     toolCheckDTO.setIsFree(isFree);
-                    toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(differenceCategory) ? "是" : "否" );
+                    toolCheckDTO.setHasCuttingToolsFlag(CollectionUtil.isEmpty(differenceCategory) ? "是" : "否");
                     toolCheckDTO.setMsg(CollectionUtil.isNotEmpty(differenceCategory) ?
-                            "缺少:"+lackTools.stream().map(obj->obj.getCutterName()).collect(Collectors.joining(","))+(isFree ? ",机床刀库空闲个数大于缺刀个数":"") +(" 缺刀总数:"+ differenceCategory.size() +"个"):"校验成功" );
+                            "缺少:" + lackTools.stream().map(obj -> obj.getCutterName()).collect(Collectors.joining(";")) + (isFree ? ",机床刀库空闲个数大于缺刀个数" : "") + (" 缺刀总数:" + differenceCategory.size() + "个") : "校验成功");
                     toolCheckDTO.setPlanId(planProduct.getId());
 
                     returnList.add(toolCheckDTO);
@@ -765,10 +500,10 @@ public class ToolManagementServiceImpl extends SuperCacheServiceImpl<ToolManagem
     }
 
 
-    public static List<ToolManagement> findChildren(ToolManagement map,List<ToolManagement> list) {
+    public static List<ToolManagement> findChildren(ToolManagement map, List<ToolManagement> list) {
         List<ToolManagement> chList = new ArrayList<>();
-        for(ToolManagement chMap:list) {
-            if(map.getId().longValue() == chMap.getParentId().longValue()){
+        for (ToolManagement chMap : list) {
+            if (map.getId().longValue() == chMap.getParentId().longValue()) {
                 chList.add(chMap);
             }
         }

+ 0 - 21
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/operationManagementCenter/service/impl/ToolTaskServiceImpl.java

@@ -108,27 +108,6 @@ public class ToolTaskServiceImpl extends SuperCacheServiceImpl<ToolTaskMapper, T
         List<CuttingToolApply> dataList = Lists.newArrayList();
 
         list.stream().forEach(vo->{
-            /*
-            ToolTask findToolTask = toolTaskMapper.selectOne(Wraps.<ToolTask>lbQ().eq(ToolTask::getPlanId, vo.getPlanId()));
-            //如果任务已生产 或者 planId是空
-            if(!Objects.isNull(findToolTask) || Objects.isNull(vo.getPlanId())){
-                return;
-            }
-            ApplyChangeToolDetailDto applyChangeToolDetailDto=new ApplyChangeToolDetailDto();
-            applyChangeToolDetailDto.setResourceId(vo.getId());
-            applyChangeToolDetailDto.setPlanId(vo.getPlanId());
-            //缺刀集合
-            applyChangeToolDetailDto.setCentralToolTypeList(vo.getList());
-            applyChangeToolDetailDtoList.add(applyChangeToolDetailDto);
-
-
-            int count = cuttingToolApplyService.count(new LbqWrapper<CuttingToolApply>().eq(CuttingToolApply::getPlanId, vo.getPlanId()));
-            if(count>0){
-                msgUtil.createWarnLog("订单校验申请已经存在,请勿重复提交","DataException");
-                return;
-            }
-             */
-
             Plan plan = planService.getById(vo.getPlanId().toString());
 
             List<CutterCategories> list1 = cutterCategoriesService.list(new LbqWrapper<CutterCategories>().in(CutterCategories::getId, vo.getListData()));

+ 6 - 2
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/MesController.java

@@ -277,8 +277,12 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
                     continue;
                 }
                 CuttingTool cuttingTool = cutterAllMap.get(Long.parseLong(cutterT));
-                String factoryMaterialCode = cuttingTool.getFactoryMaterialCode();
-                String[] splitFactoryMaterialCode = factoryMaterialCode.split(";");
+
+                if(Objects.isNull(cuttingTool.getFactoryMaterialCode())){
+                    throw new BizException("刀具"+ cuttingTool.getCuttingToolNo()+";缺少厂内编码,请进入刀具基础数据进行维护");
+                }
+
+                String[] splitFactoryMaterialCode = cuttingTool.getFactoryMaterialCode().split(";");
 
                 for (int i = 0; i < splitFactoryMaterialCode.length; i++) {
                     JSONObject jsonObject = new JSONObject();

+ 2 - 0
imcs-admin-boot/imcs-business-entity/src/main/java/com/github/zuihou/business/centralToolMagazine/dto/ToolCheckDTO.java

@@ -13,12 +13,14 @@ public class ToolCheckDTO {
     private Long orderId;
     private String orderNo;
     private String orderName;
+    private Integer processingQuantity;
     private Long deviceId;
     private Long planId;
     private String deviceName;
     private String name;
     //需要的刀具类别集合
     private List<String> list;
+    private List datas;
     private List<Long> listData;
     private String hasCuttingToolsFlag;
     private String isTask;