src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -84,7 +84,14 @@ public void export(HttpServletResponse response, Long[] ids) { deviceLedgerService.export(response, ids); } /** * */ @GetMapping("/report/forms") @ApiOperation("æ¥è¯¢è®¾å¤å°è´¦å¾è¡¨æ°æ®") public AjaxResult report() { return AjaxResult.success(deviceLedgerService.report()); } @PostMapping("import") @ApiModelProperty("å¯¼å ¥è®¾å¤å°è´¦") public AjaxResult importData(MultipartFile file) throws IOException { src/main/java/com/ruoyi/device/dto/DeviceAssetInfoDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.ruoyi.device.dto; import lombok.Data; import java.math.BigDecimal; /** * 设å¤èµäº§ä¿¡æ¯Dto-èµäº§æ¥è¡¨ */ @Data public class DeviceAssetInfoDto { /** * è®¾å¤æ»æ° */ private Integer totalEquipment; /** * èµäº§åå¼ */ private BigDecimal totalOriginalValue; /** * ç´¯è®¡ææ§ */ private BigDecimal totalDepreciation; /** * åå¼ */ private BigDecimal totalNetValue; } src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.device.dto.DeviceAssetInfoDto; import com.ruoyi.device.dto.DeviceLedgerDto; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.framework.web.domain.AjaxResult; @@ -22,4 +23,5 @@ void export(HttpServletResponse response, Long[] ids); Boolean importData(MultipartFile file) throws IOException; DeviceAssetInfoDto report(); } src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -8,6 +8,7 @@ import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.dto.DeviceAssetInfoDto; import com.ruoyi.device.dto.DeviceLedgerDto; import com.ruoyi.device.execl.DeviceLedgerExeclDto; import com.ruoyi.device.mapper.DeviceLedgerMapper; @@ -24,6 +25,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Arrays; @@ -119,4 +121,14 @@ return true; } @Override public DeviceAssetInfoDto report() { List<DeviceLedger> list = deviceLedgerMapper.selectList(null); DeviceAssetInfoDto deviceAssetInfoDto = new DeviceAssetInfoDto(); deviceAssetInfoDto.setTotalEquipment(list.stream().map(DeviceLedger::getNumber).reduce(BigDecimal.ZERO, BigDecimal::add).intValue()); deviceAssetInfoDto.setTotalOriginalValue(list.stream().map(DeviceLedger::getTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); deviceAssetInfoDto.setTotalNetValue(list.stream().map(DeviceLedger::getUnTaxIncludingPriceTotal).reduce(BigDecimal.ZERO, BigDecimal::add)); deviceAssetInfoDto.setTotalDepreciation(deviceAssetInfoDto.getTotalOriginalValue().subtract(deviceAssetInfoDto.getTotalNetValue())); return deviceAssetInfoDto; } } 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() { @@ -425,25 +441,29 @@ // .ge(SalesLedger::getEntryDate, startDate) // .lt(SalesLedger::getEntryDate, endDate) ); BigDecimal receivableMoney = salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); // BigDecimal receivableMoney = salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal receivableMoney = sumAmount(salesLedgers, SalesLedger::getContractAmount); // åºä» List<PurchaseLedger> procurementRecords = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>() // .ge(PurchaseLedger::getEntryDate, startDate) // .lt(PurchaseLedger::getEntryDate, endDate) ); BigDecimal payableMoney = procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); // BigDecimal payableMoney = procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal payableMoney = sumAmount(procurementRecords, PurchaseLedger::getContractAmount); // 颿¶ List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>() // .ge(ReceiptPayment::getReceiptPaymentDate, startDate) // .lt(ReceiptPayment::getReceiptPaymentDate, endDate) ); BigDecimal advanceMoney = receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); // BigDecimal advanceMoney = receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal advanceMoney = sumAmount(receiptPayments, ReceiptPayment::getReceiptPaymentAmount); // é¢ä» List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new LambdaQueryWrapper<PaymentRegistration>() // .ge(PaymentRegistration::getPaymentDate, startDate) // .lt(PaymentRegistration::getPaymentDate, endDate) ); BigDecimal prepayMoney = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); // BigDecimal prepayMoney = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal prepayMoney = sumAmount(paymentRegistrations, PaymentRegistration::getCurrentPaymentAmount); StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto(); statisticsReceivablePayableDto.setPayableMoney(payableMoney.subtract(prepayMoney)); statisticsReceivablePayableDto.setReceivableMoney(receivableMoney.subtract(advanceMoney)); @@ -452,7 +472,13 @@ return statisticsReceivablePayableDto; } public static <T> BigDecimal sumAmount(List<T> list, java.util.function.Function<T, BigDecimal> amountExtractor) { return list.stream() // æåé颿¶ï¼å°nullæ¿æ¢ä¸ºBigDecimal.ZERO .map(item -> Optional.ofNullable(amountExtractor.apply(item)).orElse(BigDecimal.ZERO)) // ç´¯å ï¼åå§å¼ä¸º0ï¼é¿å 空æµé®é¢ .reduce(BigDecimal.ZERO, BigDecimal::add); } @Autowired private DeviceRepairMapper deviceRepairMapper; @@ -480,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/procurementrecord/pojo/ProcurementExceptionRecord.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,54 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.*; import lombok.Builder; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @TableName("procurement_exception_record") @Data @Builder public class ProcurementExceptionRecord { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * éè´å°è´¦id */ private Integer purchaseLedgerId; /** * å¼å¸¸æè¿° */ private String exceptionReason; /** * å¼å¸¸æ°é */ private BigDecimal exceptionNum; /** * å建æ¶é´ */ private LocalDateTime createTime; /** * ä¿®æ¹è */ private Long updateUser; /** * ä¿®æ¹æ¶é´ */ private LocalDateTime updateTime; /** * ç§æ·ID */ @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.ProductProcessRouteItemService; import com.ruoyi.production.service.ProductWorkOrderService; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; @@ -23,17 +28,30 @@ import java.util.Map; import java.util.stream.Collectors; @RequestMapping("productProcessRoute") @RequestMapping("/productProcessRoute") @RestController @AllArgsConstructor @Api(tags = "ç产工èºè·¯çº¿") public class ProductProcessRouteItemController { private final ProductOrderMapper productOrderMapper; private ProductProcessRouteItemService productProcessRouteItemService; private ProductWorkOrderService productWorkOrderService; private ProductWorkOrderMapper productWorkOrderMapper; private SalesLedgerProductMapper salesLedgerProductMapper; private ProductionProductMainMapper productionProductMainMapper; private ProductionProductInputMapper productionProductInputMapper; private ProductionProductOutputMapper productionProductOutputMapper; private QualityInspectMapper qualityInspectMapper; private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper; @GetMapping("list") @ApiOperation("æ ¹æ®Idæ¥è¯¢å·¥èºé¡¹ç®") @@ -45,6 +63,18 @@ @ApiOperation("æ¹éæ°å¢ä¿®æ¹") @Transactional(rollbackFor = Exception.class) public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) { ProductOrder productOrder = productOrderMapper.selectById(processRouteItemDto.getRouteId()); if (productOrder == null) { return R.fail("æªæ¾å°ID为[" + processRouteItemDto.getRouteId() + "]ç产å订å"); } SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(new LambdaQueryWrapper<SalesLedgerProduct>() .eq(SalesLedgerProduct::getSalesLedgerId, productOrder.getSalesLedgerId())); if (salesLedgerProduct == null) { return R.fail("æªæ¾å°éå®å°è´¦ID为[" + productOrder.getSalesLedgerId() + "]çå°è´¦äº§å"); } List<ProductProcessRouteItem> items = processRouteItemDto.getProcessRouteItem(); if (CollectionUtils.isEmpty(items)) { return R.ok(); @@ -71,7 +101,7 @@ List<Map<String, Object>> maxNoList = productWorkOrderMapper.selectMaps(queryWrapper); String maxWorkOrderNo = null; if (!maxNoList.isEmpty() && maxNoList.get(0).get("maxNo") != null) { if (!maxNoList.isEmpty() && maxNoList.get(0) != null && maxNoList.get(0).get("maxNo") != null) { maxWorkOrderNo = maxNoList.get(0).get("maxNo").toString(); } int startSequence = 1; @@ -92,6 +122,7 @@ workOrder.setProductProcessRouteItemId(item.getId()); workOrder.setProductOrderId(item.getRouteId()); workOrder.setWorkOrderNo(workOrderNoStr); workOrder.setPlanQuantity(salesLedgerProduct.getQuantity()); workOrder.setStatus(1); workOrders.add(workOrder); } @@ -108,22 +139,70 @@ @ApiOperation("å é¤ç产工èºè·¯çº¿") @Transactional(rollbackFor = Exception.class) public R deleteRouteItem(@RequestBody ProductProcessRouteItemDto processRouteItemDto) { if (processRouteItemDto == null || processRouteItemDto.getId() == null) { return R.fail("åæ°é误ï¼IDä¸è½ä¸ºç©º"); return R.fail("å é¤å¤±è´¥ï¼å·¥èºè·¯çº¿é¡¹IDä¸è½ä¸ºç©º"); } Long routeItemId = processRouteItemDto.getId(); try { // å å é¤å ³èçå·¥åæ°æ® LambdaQueryWrapper<ProductWorkOrder> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProductWorkOrder::getProductProcessRouteItemId, processRouteItemDto.getId()); productWorkOrderMapper.delete(wrapper); // æ¥è¯¢å·¥å ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectOne( new LambdaQueryWrapper<ProductWorkOrder>() .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId) .last("LIMIT 1") ); if (productWorkOrder == null) { return R.fail("å é¤å¤±è´¥ï¼æªæ¾å°å ³èçç产工å"); } Long workOrderId = productWorkOrder.getId(); Long productOrderId = productWorkOrder.getProductOrderId(); // æ¥è¯¢ç产主表 List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList( new LambdaQueryWrapper<ProductionProductMain>() .eq(ProductionProductMain::getWorkOrderId, workOrderId) ); if (!productionProductMains.isEmpty()) { // æ¹éå é¤å表 for (ProductionProductMain main : productionProductMains) { Long mainId = main.getId(); // å é¤æå ¥ productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>() .eq(ProductionProductInput::getProductMainId, mainId)); // å é¤äº§åº productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>() .eq(ProductionProductOutput::getProductMainId, mainId)); // å é¤è´¨æ£ qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>() .eq(QualityInspect::getProductMainId, mainId)); } } // å 餿¥å·¥ï¼çäº§ä¸»è¡¨ï¼ productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>() .eq(ProductionProductMain::getWorkOrderId, workOrderId)); // æ¥è¯¢è®¢å + å 餿 ¸ç® ProductOrder productOrder = productOrderMapper.selectById(productOrderId); if (productOrder != null && productOrder.getSalesLedgerId() != null) { salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>() .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId())); } // å é¤å ³èå·¥å productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>() .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId)); // å é¤ä¸»è¡¨æ°æ® productProcessRouteItemService.removeById(processRouteItemDto.getId()); boolean removeFlag = productProcessRouteItemService.removeById(routeItemId); if (!removeFlag) { return R.fail("å é¤å¤±è´¥ï¼å·¥èºè·¯çº¿é¡¹ä¸»è¡¨æ°æ®ä¸åå¨"); } return R.ok(); } catch (Exception e) { throw new RuntimeException("å é¤å¤±è´¥ï¼" + e.getMessage()); return R.fail("å é¤ç产工èºè·¯çº¿å¤±è´¥ï¼" + e.getMessage()); } } } 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 { 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/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -15,6 +15,7 @@ import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ISalesLedgerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -33,6 +34,7 @@ @RestController @RequestMapping("/purchase/ledger") @AllArgsConstructor @Api(tags = "111") public class PurchaseLedgerController extends BaseController { private IPurchaseLedgerService purchaseLedgerService; @@ -92,6 +94,7 @@ /** * æ¥è¯¢éè´æ¨¡æ¿ */ @ApiOperation("/2222") @GetMapping("/getPurchaseTemplateList") public AjaxResult getPurchaseTemplateList() { PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto(); src/main/resources/application-jtwy.yml
@@ -17,7 +17,7 @@ # å¼åç¯å¢é ç½® server: # æå¡å¨çHTTP端å£ï¼é»è®¤ä¸º8080 port: 9090 port: 9001 servlet: # åºç¨ç访é®è·¯å¾ context-path: / 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