src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -7,11 +7,10 @@ import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.home.dto.AnalysisCustomerContractAmountsDto; import com.ruoyi.home.dto.HomeBusinessDto; import com.ruoyi.home.dto.QualityStatisticsDto; import com.ruoyi.home.dto.StatisticsReceivablePayableDto; import com.ruoyi.home.dto.*; import com.ruoyi.home.service.HomeService; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.dto.SalesLedgerWorkDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -91,4 +90,16 @@ Long count = homeService.noticesCount(); return AjaxResult.success(count); } @GetMapping("/progressStatistics") @ApiOperation("åç产订åç宿è¿åº¦ç»è®¡") public AjaxResult progressStatistics(){ ProductionProgressDto productionProgressDto = homeService.productionProgress(); return AjaxResult.success(productionProgressDto); } @GetMapping("/workInProcessTurnover") @ApiOperation("å¨å¶åå¨è½¬æ åµ") public AjaxResult workInProcessTurnover(){ Map<Integer, List<ProductWorkOrderDto>> productWorkOrderDtoMap = homeService.workInProcessTurnover(); return AjaxResult.success(productWorkOrderDtoMap); } } src/main/java/com/ruoyi/home/dto/ProductionProgressDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,25 @@ package com.ruoyi.home.dto; import com.ruoyi.production.dto.ProductOrderDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.List; @Data @ApiModel public class ProductionProgressDto { @ApiModelProperty("æ»è®¢åæ°") private Integer totalOrderCount; @ApiModelProperty("å·²å®æè®¢åæ°") private Integer completedOrderCount; @ApiModelProperty("æªå®æè®¢åæ°") private Integer uncompletedOrderCount; @ApiModelProperty("æ»ä½å®æè¿åº¦") private BigDecimal completedProgressCount; @ApiModelProperty("订å详æ ") private List<ProductOrderDto> completedOrderDetails; } src/main/java/com/ruoyi/home/service/HomeService.java
@@ -1,10 +1,9 @@ package com.ruoyi.home.service; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.home.dto.AnalysisCustomerContractAmountsDto; import com.ruoyi.home.dto.HomeBusinessDto; import com.ruoyi.home.dto.QualityStatisticsDto; import com.ruoyi.home.dto.StatisticsReceivablePayableDto; import com.ruoyi.home.dto.*; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.dto.ProductWorkOrderDto; import java.text.ParseException; import java.util.List; @@ -31,4 +30,7 @@ Map<String, Object> approveAndDeviceTodos(); Long noticesCount(); ProductionProgressDto productionProgress(); Map<Integer, List<ProductWorkOrderDto>> workInProcessTurnover(); } src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -1,6 +1,8 @@ package com.ruoyi.home.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.mapper.ApproveProcessMapper; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.collaborativeApproval.mapper.NoticeMapper; @@ -22,6 +24,14 @@ import com.ruoyi.procurementrecord.pojo.CustomStorage; import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut; import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.dto.ProductWorkOrderDto; import com.ruoyi.production.dto.ProductionProductMainDto; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.mapper.ProductionProductMainMapper; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.purchase.mapper.PaymentRegistrationMapper; @@ -98,6 +108,12 @@ @Autowired private NoticeMapper noticeMapper; @Autowired private ProductOrderMapper productOrderMapper; @Autowired private ProductionProductMainMapper productionProductMainMapper; @Autowired private ProductWorkOrderMapper productWorkOrderMapper; @Override public HomeBusinessDto business() { @@ -490,4 +506,41 @@ .eq(Notice::getStatus, 1) // 1表示åå¸ç¶æ .ge(Notice::getExpirationDate, new Date())); // è¿ææ¶é´å¤§äºçäºå½åæ¥æ } @Override public ProductionProgressDto productionProgress() { ProductionProgressDto productionProgressDto = new ProductionProgressDto(); List<ProductOrder> productOrderList = productOrderMapper.selectList(new LambdaQueryWrapper<ProductOrder>()); List<ProductOrderDto> productOrderDtoList = new ArrayList<>(); productOrderList.forEach(productOrder -> { ProductOrderDto productOrderDto = productOrderMapper.productMainByOrderId(productOrder); if (productOrderDto != null && productOrderDto.getPlanQuantity() != null && productOrderDto.getQuantity() != null) { productOrderDto.setCompletionStatus(BigDecimal.valueOf(productOrderDto.getPlanQuantity()-productOrderDto.getQuantity()).divide(BigDecimal.valueOf(productOrderDto.getPlanQuantity()), 2, RoundingMode.HALF_UP)); } productOrderDtoList.add(productOrderDto); }); productionProgressDto.setCompletedOrderDetails(productOrderDtoList); // 1. æ¥è¯¢ææç产订åï¼å¯æ ¹æ®éæ±æ·»å è¿æ»¤æ¡ä»¶ï¼å¦æé¤å·²å é¤ã已忶ç订åï¼ IPage<ProductOrderDto> productOrderDtoIPage = productOrderMapper.pageProductOrder(new Page<>(1, -1), new ProductOrderDto()); // 2. åå§åæ±æ»æ°æ® int totalCount = productOrderDtoIPage.getRecords().size(); int completedCount = (int) productOrderDtoIPage.getRecords().stream().map(productOrderDto -> productOrderMapper.productMainByOrderId(productOrderDto)).filter(productOrderDto1 -> productOrderDto1.getQuantity() != null && productOrderDto1.getQuantity() == 0).count(); // 6. èµå¼æ±æ»æ°æ® productionProgressDto.setTotalOrderCount(totalCount); productionProgressDto.setCompletedOrderCount(completedCount); productionProgressDto.setUncompletedOrderCount(totalCount - completedCount); productionProgressDto.setCompletedProgressCount(BigDecimal.valueOf(completedCount).divide(BigDecimal.valueOf(totalCount), 2, RoundingMode.HALF_UP)); return productionProgressDto; } @Override public Map<Integer, List<ProductWorkOrderDto>> workInProcessTurnover() { List<ProductWorkOrderDto> productWorkOrderDtoList = productWorkOrderMapper.selectProductWorkOrderDtoList(); //æ ¹æ®ç¶æåºåå·¥åçåä¸ªç¶æ Map<Integer, List<ProductWorkOrderDto>> productWorkOrderDtoMap = productWorkOrderDtoList.stream().collect(Collectors.groupingBy(ProductWorkOrderDto::getStatus)); return productWorkOrderDtoMap; } } src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class ProductOrderDto extends ProductOrder { @@ -21,7 +23,16 @@ @ApiModelProperty(value = "è§æ ¼") private String specificationModel; @ApiModelProperty(value = "è®¡åæ°é") private Integer planQuantity; @ApiModelProperty(value = "æ°é") private Integer Quantity; @ApiModelProperty(value = "å·¥åå·") private String workOrderNo; @ApiModelProperty(value = "æ¯å¦æ¥å·¥") private Integer reportWork; @ApiModelProperty(value = "å·¥åç¶æ") private Integer status; @ApiModelProperty(value = "订åå®æåº¦") private BigDecimal completionStatus; } src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -5,6 +5,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class ProductionProductMainDto extends ProductionProductMain { @@ -25,4 +26,9 @@ @ApiModelProperty(value = "æ¥å·¥id") private Long productMainId; @ApiModelProperty(value = "å®é å¼å§æ¶é´") private LocalDateTime actualStartTime; @ApiModelProperty(value = "å®é ç»ææ¶é´") private LocalDateTime actualEndTime; } src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -12,4 +12,8 @@ public interface ProductOrderMapper extends BaseMapper<ProductOrder> { IPage<ProductOrderDto> pageProductOrder(Page page, @Param("c") ProductOrderDto productOrder); /** * æ ¹æ®è®¢åIDæ¥è¯¢å·¥åæ¥å·¥ */ ProductOrderDto productMainByOrderId(@Param("c") ProductOrder productOrder); } src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -1,5 +1,6 @@ package com.ruoyi.production.mapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -8,6 +9,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @Mapper @@ -23,4 +25,6 @@ * @return */ int rollbackPlanQuantity(@Param("productMainId") Long productMainId); List<ProductWorkOrderDto> selectProductWorkOrderDtoList(); } src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -37,6 +37,18 @@ </if> </where> </select> <select id="productMainByOrderId" resultType="com.ruoyi.production.dto.ProductOrderDto"> select po.*, pwo.work_order_no, pwo.report_work, pwo.status, pwo.quantity, pwo.plan_quantity from product_order po left join product_work_order pwo on po.id = pwo.product_order_id where po.id = #{c.id} </select> </mapper> src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -39,6 +39,11 @@ </if> </where> </select> <select id="selectProductWorkOrderDtoList" resultType="com.ruoyi.production.dto.ProductWorkOrderDto"> select * from product_work_order pwo left join product_order po on po.id = pwo.product_order_id </select> <update id="updatePlanQuantity" parameterType="java.util.Map"> UPDATE product_work_order src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -16,6 +16,8 @@ select ppm.*, pwo.work_order_no as workOrderNo, pwo.status as workOrderStatus, pwo.actual_start_time as actualStartTime, pwo.actual_end_time as actualEndTime, u.nick_name as nickName from production_product_main ppm