src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -36,6 +36,31 @@ @Autowired private HomeService homeService; /********************************************************基础类*****************************************************/ @GetMapping("/todos") @Log(title = "待办事项", businessType = BusinessType.OTHER) @ApiOperation("待办事项") public AjaxResult todos(ApproveProcess req) throws ParseException { List<ApproveProcess> approveProcessList = homeService.todos(); return AjaxResult.success(approveProcessList); } @GetMapping("/approveAndDeviceTodos") @ApiOperation("审批协同,设备报修待办事项") public AjaxResult approveAndDeviceTodos(){ Map<String, Object> map = homeService.approveAndDeviceTodos(); return AjaxResult.success(map); } @GetMapping("/noticesCount") @ApiOperation("未过期的公告数量") public AjaxResult noticesCount(){ Long count = homeService.noticesCount(); return AjaxResult.success(count); } /********************************************************营销采购类**************************************************/ @GetMapping("/business") @Log(title = "销售-采购-库存数据", businessType = BusinessType.OTHER) @ApiOperation("销售-采购-库存数据") @@ -53,43 +78,8 @@ return AjaxResult.success(analysisCustomerContractAmounts); } @GetMapping("/qualityStatistics") @Log(title = "质量分析", businessType = BusinessType.OTHER) @ApiOperation("质量分析") public AjaxResult qualityStatistics(QualityStatisticsDto req) { QualityStatisticsDto qualityStatisticsDto = homeService.qualityStatistics(); return AjaxResult.success(qualityStatisticsDto); } @GetMapping("/todos") @Log(title = "待办事项", businessType = BusinessType.OTHER) @ApiOperation("待办事项") public AjaxResult todos(ApproveProcess req) throws ParseException { List<ApproveProcess> approveProcessList = homeService.todos(); return AjaxResult.success(approveProcessList); } @GetMapping("/statisticsReceivablePayable") @Log(title = "应收应付统计", businessType = BusinessType.OTHER) @ApiOperation("应收应付统计") public AjaxResult statisticsReceivablePayable(StatisticsReceivablePayableDto req, @RequestParam(value = "type", defaultValue = "1") Integer type ) { StatisticsReceivablePayableDto statisticsReceivablePayable = homeService.statisticsReceivablePayable(type); return AjaxResult.success(statisticsReceivablePayable); } @GetMapping("/approveAndDeviceTodos") @ApiOperation("审批协同,设备报修待办事项") public AjaxResult approveAndDeviceTodos(){ Map<String, Object> map = homeService.approveAndDeviceTodos(); return AjaxResult.success(map); } @GetMapping("/noticesCount") @ApiOperation("未过期的公告数量") public AjaxResult noticesCount(){ Long count = homeService.noticesCount(); return AjaxResult.success(count); } /********************************************************生产类*****************************************************/ @GetMapping("/progressStatistics") @ApiOperation("各生产订单的完成进度统计") public AjaxResult progressStatistics(){ @@ -102,4 +92,38 @@ ProductionTurnoverDto productionTurnoverDto = homeService.workInProcessTurnover(); return AjaxResult.success(productionTurnoverDto); } /********************************************************质量类*****************************************************/ @GetMapping("/qualityStatistics") @Log(title = "质量分析", businessType = BusinessType.OTHER) @ApiOperation("质量分析") public AjaxResult qualityStatistics(QualityStatisticsDto req) { QualityStatisticsDto qualityStatisticsDto = homeService.qualityStatistics(); return AjaxResult.success(qualityStatisticsDto); } /********************************************************财务类*****************************************************/ @GetMapping("/statisticsReceivablePayable") @Log(title = "应收应付统计", businessType = BusinessType.OTHER) @ApiOperation("应收应付统计") public AjaxResult statisticsReceivablePayable(StatisticsReceivablePayableDto req, @RequestParam(value = "type", defaultValue = "1") Integer type ) { StatisticsReceivablePayableDto statisticsReceivablePayable = homeService.statisticsReceivablePayable(type); return AjaxResult.success(statisticsReceivablePayable); } /********************************************************仓储类*****************************************************/ } src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -27,6 +27,10 @@ @Excel(name = "报工数量") private BigDecimal quantity; @ApiModelProperty(value = "报废数量") @Excel(name = "报废数量") private BigDecimal scrapQty; //产品名称 @Excel(name = "产品名称") private String productName; src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
@@ -20,7 +20,8 @@ @ApiModelProperty(value = "产品id") private Long productModelId; @ApiModelProperty(value = "数量") //合格数量=报工数量-报废数量 @ApiModelProperty(value = "报工数量") private BigDecimal quantity; @ApiModelProperty(value = "创建时间") @@ -29,4 +30,7 @@ @ApiModelProperty(value = "租户ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; @ApiModelProperty(value = "报废数量") private BigDecimal scrapQty; } src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -189,7 +189,12 @@ productionProductOutput.setProductMainId(productionProductMain.getId()); productionProductOutput.setProductModelId(productProcessRouteItem.getProductModelId()); productionProductOutput.setQuantity(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO); productionProductOutput.setScrapQty(dto.getScrapQty() != null ? dto.getScrapQty() : BigDecimal.ZERO); productionProductOutputMapper.insert(productionProductOutput); //合格数量=报工数量-报废数量 BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()); //只有合格数量>0才能增加相应数据 if (productQty.compareTo(BigDecimal.ZERO)>0) { /*新增质检*/ //对应的过程检或者出厂检 List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId())); @@ -206,7 +211,7 @@ qualityInspect.setProductName(product.getProductName()); qualityInspect.setModel(productModel.getModel()); qualityInspect.setUnit(productModel.getUnit()); qualityInspect.setQuantity(dto.getQuantity()); qualityInspect.setQuantity(productQty); qualityInspect.setProcess(productProcess.getName()); qualityInspect.setInspectState(0); qualityInspect.setInspectType(inspectType); @@ -229,7 +234,7 @@ } /*更新工单和生产订单*/ ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId()); productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().add(dto.getQuantity())); productWorkOrder.setCompleteQuantity(productQty.add(dto.getQuantity())); if (ObjectUtils.isNull(productWorkOrder.getActualStartTime())){ productWorkOrder.setActualStartTime(LocalDate.now());//实际开始时间 } @@ -244,7 +249,7 @@ } if (productProcessRouteItem.getDragSort()==productProcessRouteItems.size()){ //如果是最后一道工序报工之后生产订单完成数量+ productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(dto.getQuantity())); productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().add(productQty)); if (productOrder.getCompleteQuantity().compareTo(productOrder.getQuantity()) == 0){ productOrder.setEndTime(LocalDateTime.now());//结束时间 } @@ -258,13 +263,15 @@ .salesLedgerProductId(productOrder.getProductModelId()) .schedulingUserId(user.getUserId()) .schedulingUserName(user.getNickName()) .finishedNum(dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO) .finishedNum(productQty) .workHours(productProcess.getSalaryQuota()) .process(productProcess.getName()) .schedulingDate(LocalDate.now()) .tenantId(dto.getTenantId()) .build(); salesLedgerProductionAccountingMapper.insert(salesLedgerProductionAccounting); } //如果报废数量>0,需要进入报废的库存 return true; } src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -16,7 +16,7 @@ import java.util.List; @RestController @Api(tags = "采购入库") @Api(tags = "入库") @RequestMapping("/stockInRecord") public class StockInRecordController { @Autowired src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -20,6 +20,7 @@ p.product_name as productName, pm.model as productModelName, ppo.quantity, ppo.scrap_qty, pm.unit, sl.sales_contract_no salesContractNo from