diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProWorkorderController.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProWorkorderController.java index 7941ae5..eb2a787 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProWorkorderController.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/ProWorkorderController.java @@ -306,4 +306,14 @@ public class ProWorkorderController extends BaseController return AjaxResult.success(); } + /** + * 首页生产工单查询 + * @param proWorkorder + * @return + */ + @GetMapping("/getHomeList") + public AjaxResult getHomeList(ProWorkorder proWorkorder) { + return proWorkorderService.getHomeList(proWorkorder); + } + } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProRouteHomeVO.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProRouteHomeVO.java new file mode 100644 index 0000000..ced08a4 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProRouteHomeVO.java @@ -0,0 +1,26 @@ +package com.ktg.mes.pro.controller.vo; + +import com.ktg.mes.pro.domain.ProRouteProcess; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ProRouteHomeVO extends ProRouteProcess { + + /** + * 完成数量 + */ + private BigDecimal completeNumber; + + /** + * 未完成数量 + */ + private BigDecimal incompleteNumber; + + /** + * 总数 + */ + private BigDecimal total; + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProWorkorderHomeVO.java b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProWorkorderHomeVO.java new file mode 100644 index 0000000..27b7509 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/controller/vo/ProWorkorderHomeVO.java @@ -0,0 +1,13 @@ +package com.ktg.mes.pro.controller.vo; + +import com.ktg.mes.pro.domain.ProWorkorder; +import lombok.Data; + +import java.util.List; + +@Data +public class ProWorkorderHomeVO extends ProWorkorder { + + private List routeHomg; + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java index 17dcbe7..8fa374d 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProFeedbackMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.pro.mapper; import java.util.List; import com.ktg.mes.pro.domain.ProFeedback; +import org.apache.ibatis.annotations.Param; /** * 生产报工记录Mapper接口 @@ -58,4 +59,6 @@ public interface ProFeedbackMapper * @return 结果 */ public int deleteProFeedbackByRecordIds(Long[] recordIds); + + List selectByWorkorderIds(@Param("workorderIds") List workorderIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProcessMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProcessMapper.java index c86d759..bbede75 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProcessMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProcessMapper.java @@ -92,4 +92,6 @@ public interface ProRouteProcessMapper void updateBatch(@Param("list") List list); List selectByProcessIds(@Param("entity") Long[] processIds); + + List selectByRouteIds(@Param("routeIds") List routeIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductMapper.java b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductMapper.java index c1cdcf6..7a82211 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductMapper.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/mapper/ProRouteProductMapper.java @@ -2,6 +2,7 @@ package com.ktg.mes.pro.mapper; import java.util.List; import com.ktg.mes.pro.domain.ProRouteProduct; +import org.apache.ibatis.annotations.Param; /** * 产品制程Mapper接口 @@ -67,4 +68,11 @@ public interface ProRouteProductMapper * @return */ public int deleteByRouteId(Long routeId); + + /** + * 根据 productIds 查询相关数据 + * @param productIds + * @return + */ + List selectByProductIds(@Param("productIds") List productIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java index 5ea7b9a..d197a22 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProFeedbackService.java @@ -58,4 +58,11 @@ public interface IProFeedbackService * @return 结果 */ public int deleteProFeedbackByRecordId(Long recordId); + + /** + * 根据 workorderIds 查询 + * @param workorderIds + * @return + */ + List selectByWorkorderIds(List workorderIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProcessService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProcessService.java index c36dca7..9806622 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProcessService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProcessService.java @@ -114,4 +114,6 @@ public interface IProRouteProcessService List selectByProcessIds(Long[] processIds); AjaxResult editProRouteProcess(ProRouteProcess proRouteProcess); + + List selectByRouteIds(List routeIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductService.java index 11d3ca4..e3915f4 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProRouteProductService.java @@ -72,4 +72,11 @@ public interface IProRouteProductService * @return */ public int deleteByRouteId(Long routeId); + + /** + * 根据 productIds 查询相关数据 + * @param productIds + * @return + */ + List selectByProductIds(List productIds); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProWorkorderService.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProWorkorderService.java index 6c7d3fa..edc270d 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProWorkorderService.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/IProWorkorderService.java @@ -1,5 +1,6 @@ package com.ktg.mes.pro.service; +import com.ktg.common.core.domain.AjaxResult; import com.ktg.mes.pro.domain.ProWorkorder; import java.util.List; @@ -72,5 +73,10 @@ public interface IProWorkorderService public int deleteProWorkorderByWorkorderId(Long workorderId); - + /** + * 首页生产工单查询 + * @param proWorkorder + * @return + */ + AjaxResult getHomeList(ProWorkorder proWorkorder); } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java index bb817e9..7fe741d 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProFeedbackServiceImpl.java @@ -93,4 +93,9 @@ public class ProFeedbackServiceImpl implements IProFeedbackService { return proFeedbackMapper.deleteProFeedbackByRecordId(recordId); } + + @Override + public List selectByWorkorderIds(List workorderIds) { + return proFeedbackMapper.selectByWorkorderIds(workorderIds); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProcessServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProcessServiceImpl.java index 7624a02..2ce6236 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProcessServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProcessServiceImpl.java @@ -264,4 +264,9 @@ public class ProRouteProcessServiceImpl implements IProRouteProcessService } return AjaxResult.success(status); } + + @Override + public List selectByRouteIds(List routeIds) { + return proRouteProcessMapper.selectByRouteIds(routeIds); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductServiceImpl.java index c09453e..f1d98e9 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProRouteProductServiceImpl.java @@ -111,4 +111,9 @@ public class ProRouteProductServiceImpl implements IProRouteProductService public int deleteByRouteId(Long routeId) { return proRouteProductMapper.deleteByRouteId(routeId); } + + @Override + public List selectByProductIds(List productIds) { + return proRouteProductMapper.selectByProductIds(productIds); + } } diff --git a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProWorkorderServiceImpl.java b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProWorkorderServiceImpl.java index 9e9a9d3..4029776 100644 --- a/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProWorkorderServiceImpl.java +++ b/ktg-mes/src/main/java/com/ktg/mes/pro/service/impl/ProWorkorderServiceImpl.java @@ -1,15 +1,31 @@ package com.ktg.mes.pro.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; import com.ktg.common.constant.UserConstants; +import com.ktg.common.core.domain.AjaxResult; import com.ktg.common.utils.DateUtils; import com.ktg.common.utils.StringUtils; +import com.ktg.mes.pro.controller.vo.ProRouteHomeVO; +import com.ktg.mes.pro.controller.vo.ProWorkorderHomeVO; +import com.ktg.mes.pro.domain.ProFeedback; +import com.ktg.mes.pro.domain.ProRouteProcess; +import com.ktg.mes.pro.domain.ProRouteProduct; import com.ktg.mes.pro.domain.ProWorkorder; import com.ktg.mes.pro.mapper.ProWorkorderMapper; +import com.ktg.mes.pro.service.IProFeedbackService; +import com.ktg.mes.pro.service.IProRouteProcessService; +import com.ktg.mes.pro.service.IProRouteProductService; import com.ktg.mes.pro.service.IProWorkorderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 生产工单Service业务层处理 @@ -23,6 +39,15 @@ public class ProWorkorderServiceImpl implements IProWorkorderService @Autowired private ProWorkorderMapper proWorkorderMapper; + @Autowired + private IProRouteProductService proRouteProductService; + + @Autowired + private IProRouteProcessService proRouteProcessService; + + @Autowired + private IProFeedbackService proFeedbackService; + /** * 查询生产工单 * @@ -126,4 +151,73 @@ public class ProWorkorderServiceImpl implements IProWorkorderService { return proWorkorderMapper.deleteProWorkorderByWorkorderId(workorderId); } + + @Override + public AjaxResult getHomeList(ProWorkorder proWorkorder) { + // 获取所有工单 + List workorders = proWorkorderMapper.selectProWorkorderList(proWorkorder); + // 获取所有的工单ID + List workorderIds = workorders.stream().map(ProWorkorder::getWorkorderId).collect(Collectors.toList()); + List feedbacks = proFeedbackService.selectByWorkorderIds(workorderIds); + // 处理报工数据 + feedbacks.stream().forEach(item -> { + if (ObjectUtil.isEmpty(item.getQuantityFeedback())) { + item.setQuantityFeedback(BigDecimal.ZERO); + } + }); + // 获取所有工单所需的工序 + List productIds = workorders.stream().map(ProWorkorder::getProductId).distinct().collect(Collectors.toList()); + + // 根据所有产品ID查询所有工序数据 + List products = proRouteProductService.selectByProductIds(productIds); + List routeIds = products.stream().map(ProRouteProduct::getRouteId).collect(Collectors.toList()); + List routeList = proRouteProcessService.selectByRouteIds(routeIds); + + List routeHomeList = new ArrayList<>(); + routeList.forEach(item -> { + ProRouteHomeVO proWorkorderHomeVO = new ProRouteHomeVO(); + BeanUtil.copyProperties(item, proWorkorderHomeVO); + routeHomeList.add(proWorkorderHomeVO); + }); + + // 构建工序流程数据 + Map> routeMap = new HashMap<>(); + products.forEach(item -> { + routeMap.putIfAbsent(item.getItemId(), routeHomeList.stream().filter(val -> val.getRouteId().equals(item.getRouteId())).collect(Collectors.toList())); + }); + + // 遍历构造 + List proWorkorders = new ArrayList<>(); + workorders.stream().forEach(item -> { + ProWorkorderHomeVO proWorkorderHomeVO = new ProWorkorderHomeVO(); + BeanUtil.copyProperties(item, proWorkorderHomeVO); + proWorkorders.add(proWorkorderHomeVO); + Long productId = item.getProductId(); + List processes = routeMap.get(productId); + if (processes != null && processes.size() > 0) { + processes.forEach(val -> { + val.setTotal(item.getQuantity()); + List collect = feedbacks.stream().filter(entity -> + (entity.getWorkorderId().equals(item.getWorkorderId()) + && entity.getRouteId().equals(val.getRouteId()) + && entity.getProcessId().equals(val.getProcessId()))) + .collect(Collectors.toList()); + if (collect != null && collect.size() > 0) { + BigDecimal reduce = collect.stream().map(ProFeedback::getQuantityFeedback).reduce(BigDecimal.ZERO, BigDecimal::add); + val.setCompleteNumber(reduce); + val.setIncompleteNumber(val.getTotal().subtract(val.getCompleteNumber())); + } + }); + proWorkorderHomeVO.setRouteHomg(processes); + } + }); + + // 构建工单树结构数据 + Map> map = proWorkorders.stream().collect(Collectors.groupingBy(ProWorkorderHomeVO::getParentId)); + proWorkorders.stream().forEach(item -> { + item.setChildren(map.get(item.getWorkorderId())); + }); + List collect = proWorkorders.stream().filter(item -> 0L == item.getParentId()).collect(Collectors.toList()); + return AjaxResult.success(collect); + } } diff --git a/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml index 3abd340..cbaa7ff 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProFeedbackMapper.xml @@ -98,7 +98,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where f.record_id = #{recordId} - + + insert into pro_feedback diff --git a/ktg-mes/src/main/resources/mapper/pro/ProRouteProcessMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProRouteProcessMapper.xml index b9feb17..b086ff5 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProRouteProcessMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProRouteProcessMapper.xml @@ -114,13 +114,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select * from pro_route_process where process_id in #{item} + insert into pro_route_process diff --git a/ktg-mes/src/main/resources/mapper/pro/ProRouteProductMapper.xml b/ktg-mes/src/main/resources/mapper/pro/ProRouteProductMapper.xml index 16283b1..726da75 100644 --- a/ktg-mes/src/main/resources/mapper/pro/ProRouteProductMapper.xml +++ b/ktg-mes/src/main/resources/mapper/pro/ProRouteProductMapper.xml @@ -55,6 +55,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where item_id = #{itemId} limit 1 + insert into pro_route_product