| doc/宁夏-中盛建材.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/production/pojo/ProductOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/enums/DataSourceTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -82,3 +82,15 @@ `update_user` int NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COMMENT = 'è½æºç±»å-è½èæè¡¨æç»_éä»¶'; alter table product_order drop column sales_ledger_id, drop column sale_ledger_product_id, drop column product_model_id; alter table production_plan add assigned_quantity DECIMAL(10, 4) default 0 not null COMMENT 'ä¸åæ°é'; alter table product_order add plan_complete_time datetime(0) NULL DEFAULT NULL COMMENT '计å宿æ¶é´', add combine_production_plan_ids varchar(500) default '' not null; src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -11,6 +11,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Data @TableName("product_order") @@ -20,24 +21,6 @@ @TableId(value = "id", type = IdType.AUTO) private Long id; /** * éå®å°è´¦id */ @ApiModelProperty(value = "éå®å°è´¦id") private Long salesLedgerId; /** * éå®å°è´¦äº§åid(sales_ledger_product) */ @ApiModelProperty(value = "éå®å°è´¦äº§åid") private Long saleLedgerProductId; /** * 产åè§æ ¼id */ @ApiModelProperty(value = "产åè§æ ¼id") private Long productModelId; /** * 模ççå·¥èºè·¯çº¿id @@ -51,6 +34,20 @@ @ApiModelProperty(value = "ç产订åå·") @Excel(name = "ç产订åå·") private String npsNo; /** * åå¹¶ç产计åids */ @ApiModelProperty(value = "åå¹¶ç产计åids") private String combineProductionPlanIds; /** * 计å宿æ¶é´ */ @ApiModelProperty(value = "计å宿æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime planCompleteTime; /** * ç§æ·id @@ -73,7 +70,6 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** * éæ±æ°é @@ -100,7 +96,4 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; } src/main/java/com/ruoyi/productionPlan/controller/ProductionPlanController.java
@@ -6,13 +6,13 @@ import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.productionPlan.dto.ProductionPlanDto; import com.ruoyi.productionPlan.service.ProductionPlanService; import com.ruoyi.staff.dto.StaffLeaveDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; /** * <br> @@ -43,4 +43,10 @@ productionPlanService.loadProdData(); return AjaxResult.success(); } @PostMapping("/combine") @Log(title = "åå¹¶ç产计å", businessType = BusinessType.INSERT) public AjaxResult combine(@RequestBody ProductionPlanDto productionPlanDto) { return AjaxResult.success(productionPlanService.combine(productionPlanDto)); } } src/main/java/com/ruoyi/productionPlan/dto/ProductionPlanDto.java
@@ -1,6 +1,26 @@ package com.ruoyi.productionPlan.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.productionPlan.pojo.ProductionPlan; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Data public class ProductionPlanDto extends ProductionPlan { @ApiModelProperty(value = "ç产计åidéå") private List<Long> ids; @ApiModelProperty(value = "ä¸åæ°é") private BigDecimal totalAssignedQuantity; @ApiModelProperty(value = "计å宿æ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime planCompleteTime; } src/main/java/com/ruoyi/productionPlan/enums/DataSourceTypeEnum.java
@@ -14,8 +14,8 @@ @Getter public enum DataSourceTypeEnum { SALES_ORDER(1, "éå®è®¢å"), PRODUCTION_FORECAST(2, "çäº§é¢æµ"); SALES_ORDER(1, "忥"), PRODUCTION_FORECAST(2, "æ°å¢"); private final Integer code; private final String desc; src/main/java/com/ruoyi/productionPlan/pojo/ProductionPlan.java
@@ -178,9 +178,9 @@ private Integer dataSyncType; /** * æ°æ®æ¥æºç±»åï¼1=éå®è®¢å 2=éå®é¢æµ * æ°æ®æ¥æºç±»åï¼1=忥 2=æ°å¢ */ @ApiModelProperty("æ°æ®æ¥æºç±»åï¼1=éå®è®¢å 2=éå®é¢æµ") @ApiModelProperty("æ°æ®æ¥æºç±»åï¼1=忥 2=æ°å¢") private Integer dataSourceType; /** @@ -202,4 +202,7 @@ */ @ApiModelProperty("totalCount") private Integer totalCount; @ApiModelProperty(value = "ä¸åæ°é") private BigDecimal assignedQuantity; } src/main/java/com/ruoyi/productionPlan/service/ProductionPlanService.java
@@ -6,6 +6,8 @@ import com.ruoyi.productionPlan.dto.ProductionPlanDto; import com.ruoyi.productionPlan.pojo.ProductionPlan; import java.util.List; /** * <br> * éå®çäº§éæ±æ¥å£ @@ -27,4 +29,9 @@ * 宿¶åæ¥ */ void syncProdDataJob(); /** * åå¹¶ç产计å */ boolean combine(ProductionPlanDto productionPlanDto); } src/main/java/com/ruoyi/productionPlan/service/impl/ProductionPlanServiceImpl.java
@@ -7,9 +7,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.pojo.Product; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.framework.config.AliDingConfig; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.service.ProductOrderService; import com.ruoyi.productionPlan.dto.ProductionPlanDto; import com.ruoyi.productionPlan.mapper.ProductionPlanMapper; import com.ruoyi.productionPlan.pojo.ProductionPlan; @@ -19,6 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.time.Instant; import java.time.LocalDateTime; @@ -50,6 +54,9 @@ @Autowired private ProductionPlanMapper productionPlanMapper; @Autowired private ProductOrderService productOrderService; /** * 忥éï¼ç¡®ä¿æå¨å宿¶ä»»å¡ä¸åæ¶æ§è¡ */ @@ -77,6 +84,52 @@ } /** * åå¹¶ç产计å */ @Override public boolean combine(ProductionPlanDto productionPlanDto) { if (productionPlanDto.getIds() == null || productionPlanDto.getIds().isEmpty()) { return false; } // æ¥è¯¢ä¸»ç产计å List<ProductionPlan> plans = productionPlanMapper.selectBatchIds(productionPlanDto.getIds()); // æ ¡éªæ¯å¦åå¨ä¸åç产ååç§° String firstProductName = plans.get(0).getProductName(); if (plans.stream().anyMatch(p -> !p.getProductName().equals(firstProductName))) { log.warn("å并失败ï¼åå¨ä¸åç产ååç§°"); return false; } // æ ¡éªæ¯å¦åå¨ä¸åç产åè§æ ¼ String firstProductSpec = plans.get(0).getProductSpec(); if (plans.stream().anyMatch(p -> !p.getProductSpec().equals(firstProductSpec))) { log.warn("å并失败ï¼åå¨ä¸åç产åè§æ ¼"); return false; } // å å æ¹æ° BigDecimal totalVolume = plans.stream() .map(ProductionPlan::getVolume) .filter(v -> v != null) .reduce(BigDecimal.ZERO, BigDecimal::add); // å建ç产订å ProductOrder productOrder = new ProductOrder(); // åå¹¶ç产计åids String combineIds = StringUtils.join(productionPlanDto.getIds(), ","); productOrder.setCombineProductionPlanIds(combineIds); // ä¸åæ°é productOrder.setQuantity(productionPlanDto.getTotalAssignedQuantity()); productOrder.setPlanCompleteTime(productionPlanDto.getPlanCompleteTime()); productOrderService.addProductOrder(productOrder); return true; } /** * åæ¥æ°æ® */ @Transactional(rollbackFor = Exception.class) src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -267,9 +267,9 @@ */ public void addProductionData(SalesLedgerProduct salesLedgerProduct) { ProductOrder productOrder = new ProductOrder(); productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); productOrder.setProductModelId(salesLedgerProduct.getProductModelId()); productOrder.setSaleLedgerProductId(salesLedgerProduct.getId()); // productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); // productOrder.setProductModelId(salesLedgerProduct.getProductModelId()); // productOrder.setSaleLedgerProductId(salesLedgerProduct.getId()); String string = productOrderServiceImpl.generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); productOrder.setNpsNo(string); productOrder.setQuantity(salesLedgerProduct.getQuantity());//éæ±æ°é @@ -340,7 +340,7 @@ //æ¹éæ¥è¯¢productOrder List<ProductOrder> productOrders = productOrderMapper.selectList( new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getSaleLedgerProductId, productIds) // .in(ProductOrder::getSaleLedgerProductId, productIds) ); if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) { List<Long> orderIds = productOrders.stream() @@ -421,8 +421,8 @@ .in(ProductProcessRoute::getProductOrderId, orderIds)); // æ¹éå é¤productOrder productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() .in(ProductOrder::getSaleLedgerProductId, productIds)); // productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>() // .in(ProductOrder::getSaleLedgerProductId, productIds)); } }