doc/create_table_process_route_item.sql
@@ -2,11 +2,57 @@ drop table if exists process_route_item; create table process_route_item ( id bigint auto_increment primary key, route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', product_model_id bigint not null default 0 comment '产åid', process_id bigint not null default 0 comment 'å·¥åºid', tenant_id bigint not null comment 'ç§æ·id', create_time datetime null comment 'å½å ¥æ¶é´', update_time datetime null comment 'æ´æ°æ¶é´' id bigint auto_increment primary key, route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', product_model_id bigint not null default 0 comment '产åid', process_id bigint not null default 0 comment 'å·¥åºid', tenant_id bigint not null comment 'ç§æ·id', create_time datetime null comment 'å½å ¥æ¶é´', update_time datetime null comment 'æ´æ°æ¶é´' ); # ç产工èºè·¯çº¿é¡¹ç® drop table if exists product_process_route_item; create table product_process_route_item ( id bigint auto_increment primary key, route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', product_model_id bigint not null default 0 comment 'éå®å°è´¦äº§åid', process_id bigint not null default 0 comment 'å·¥åºid', tenant_id bigint not null comment 'ç§æ·id', create_time datetime null comment 'å½å ¥æ¶é´', update_time datetime null comment 'æ´æ°æ¶é´' ); # ç产订å drop table if exists product_order; create table product_order ( id bigint auto_increment primary key, sales_ledger_id bigint not null default 0 comment 'éå®å°è´¦id', product_model_id bigint not null default 0 comment 'éå®å°è´¦äº§åid', route_id bigint not null default 0 comment 'å·¥èºè·¯çº¿id', nps_no varchar(255) not null default '' comment 'ç产订åå·', status int not null default 0 comment 'ç¶æ 0 å¾ ç¡®è®¤ 1 已确认', tenant_id bigint not null comment 'ç§æ·id', create_time datetime null comment 'å½å ¥æ¶é´', update_time datetime null comment 'æ´æ°æ¶é´' ); alter table quality_inspect add purchase_ledger_id int null comment 'éè´è®¢åid'; # ç产工å drop table if exists product_work_order; create table product_work_order ( id bigint auto_increment primary key, product_process_route_item_id bigint not null default 0 comment 'å·¥èºè·¯çº¿é¡¹ç®id', create_time datetime null comment 'å½å ¥æ¶é´', update_time datetime null comment 'æ´æ°æ¶é´', work_order_no varchar(255) not null default '' comment 'å·¥åç¼å·', status int not null default 0 comment 'ç¶æ 1 å¾ ç¡®è®¤ 2 å¾ ç产 3çäº§ä¸ 4å·²ç产 ', tenant_id bigint not null comment 'ç§æ·id' ); alter table product_process add salary_quota numeric(16,3) null comment 'å·¥èµå®é¢'; src/main/java/com/ruoyi/production/controller/ProductOrderController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.production.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.service.ProductOrderService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("productOrder") @RestController public class ProductOrderController { @Autowired private ProductOrderService productOrderService; @ApiOperation("å页æ¥è¯¢") @GetMapping("page") public R page(ProductOrderDto productOrder, Page page) { return R.ok(productOrderService.pageProductOrder(page, productOrder)); } } src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.ruoyi.production.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.framework.web.domain.R; import com.ruoyi.production.dto.ProcessRouteItemDto; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.service.ProductProcessRouteItemService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RequestMapping("productProcessRoute") @RestController @Api(tags = "ç产工èºè·¯çº¿") public class ProductProcessRouteItemController { @Autowired private ProductProcessRouteItemService productProcessRouteItemService; @GetMapping("list") @ApiOperation("æ ¹æ®Idæ¥è¯¢å·¥èºé¡¹ç®") public R list(Long orderId) { return R.ok(productProcessRouteItemService.listItem(orderId)); } @PostMapping () @ApiOperation("æ°å¢ä¿®æ¹") public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) { productProcessRouteItemService.remove(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getRouteId, processRouteItemDto.getRouteId())); return R.ok(productProcessRouteItemService.saveBatch(processRouteItemDto.getProcessRouteItem())); } } src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.production.dto; import com.ruoyi.production.pojo.ProductOrder; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ProductOrderDto extends ProductOrder { @ApiModelProperty(value = "éå®ååå·") private String salesContractNo; @ApiModelProperty(value = "项ç®å") private String projectName; @ApiModelProperty(value = "客æ·å") private String customerName; @ApiModelProperty(value = "产ååç§°") private String productCategory; @ApiModelProperty(value = "è§æ ¼") private String specificationModel; } src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.production.dto; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductProcessRouteItem; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class ProductProcessRouteItemDto extends ProductProcessRouteItem { @ApiModelProperty(value = "å·¥åºåç§°") private String processName; @ApiModelProperty(value = "产ååç§°") private String productCategory; @ApiModelProperty(value = "åä½") private String unit; private Long productId; private List<ProductProcessRouteItem> processRouteItem; private String specificationModel; } src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.production.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.production.dto.ProductOrderDto; import com.ruoyi.production.pojo.ProductOrder; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @Mapper public interface ProductOrderMapper extends BaseMapper<ProductOrder> { IPage<ProductOrderDto> pageProductOrder(Page page, @Param("c") ProductOrderDto productOrder); } src/main/java/com/ruoyi/production/mapper/ProductProcessRouteItemMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ package com.ruoyi.production.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.pojo.ProductProcessRouteItem; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface ProductProcessRouteItemMapper extends BaseMapper<ProductProcessRouteItem> { List<ProductProcessRouteItemDto> listItem(@Param("orderId") Long orderId); } src/main/java/com/ruoyi/production/pojo/ProductOrder.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.ruoyi.production.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data @TableName("product_order") public class ProductOrder implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Long id; /** * éå®å°è´¦id */ @ApiModelProperty(value = "éå®å°è´¦id") private Long salesLedgerId; /** * éå®å°è´¦äº§åid */ @ApiModelProperty(value = "éå®å°è´¦äº§åid") private Long productModelId; /** * å·¥èºè·¯çº¿id */ @ApiModelProperty(value = "å·¥èºè·¯çº¿id") private Long routeId; /** * ç产订åå· */ @ApiModelProperty(value = "ç产订åå·") private String npsNo; /** * ç§æ·id */ @ApiModelProperty(value = "ç§æ·id") @TableField(fill = FieldFill.INSERT) private Long tenantId; //å建æ¶é´ @ApiModelProperty(value = "å建æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; //ä¿®æ¹æ¶é´ @ApiModelProperty(value = "ä¿®æ¹æ¶é´") @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; } src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -30,6 +30,12 @@ */ private String remark; /** * å·¥èµå®é¢ */ private BigDecimal salaryQuota; /** * å建æ¶é´ */ src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.ruoyi.production.pojo; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("product_process_route_item") public class ProductProcessRouteItem { @TableId(type = IdType.AUTO) private Long id; @ApiModelProperty(value = "å·¥èºè·¯çº¿id") private Long routeId; @ApiModelProperty(value = "å·¥åºid") private Long processId; @ApiModelProperty(value ="产åid") private Long productModelId; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "å建æ¶é´") private LocalDateTime createTime; @ApiModelProperty(value = "æ´æ°æ¶é´") @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; } src/main/java/com/ruoyi/production/service/ProductOrderService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ package com.ruoyi.production.service; 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.production.dto.ProductOrderDto; import com.ruoyi.production.pojo.ProductOrder; public interface ProductOrderService extends IService<ProductOrder> { IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder); } src/main/java/com/ruoyi/production/service/ProductProcessRouteItemService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,11 @@ package com.ruoyi.production.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.pojo.ProductProcessRouteItem; import java.util.List; public interface ProductProcessRouteItemService extends IService<ProductProcessRouteItem> { List<ProductProcessRouteItemDto> listItem(Long orderId); } src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.production.service.impl; 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.production.dto.ProductOrderDto; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.service.ProductOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService { @Autowired private ProductOrderMapper productOrderMapper; @Override public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) { return productOrderMapper.pageProductOrder(page, productOrder); } } src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.dto.ProductProcessRouteItemDto; import com.ruoyi.production.mapper.ProductProcessRouteItemMapper; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.service.ProductProcessRouteItemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; @Service public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService { @Autowired private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Override public List<ProductProcessRouteItemDto> listItem(Long orderId) { return productProcessRouteItemMapper.listItem(orderId); } } src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -36,6 +36,12 @@ import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.purchase.service.IPurchaseLedgerService; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.mapper.QualityInspectParamMapper; import com.ruoyi.quality.mapper.QualityTestStandardMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.QualityTestStandard; import com.ruoyi.sales.mapper.*; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.InvoiceRegistrationProduct; @@ -101,6 +107,9 @@ private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; private final StringRedisTemplate redisTemplate; private final QualityInspectMapper qualityInspectMapper; private final QualityTestStandardMapper qualityTestStandardMapper; private final QualityInspectParamMapper qualityInspectParamMapper; @Value("${file.upload-dir}") private String uploadDir; @@ -128,7 +137,7 @@ PurchaseLedger purchaseLedger = new PurchaseLedger(); BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger); LoginUser loginUser = SecurityUtils.getLoginUser(); if(ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) { purchaseLedger.setTenantId(loginUser.getTenantId()); } purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : ""); @@ -161,15 +170,15 @@ List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(purchaseLedger.getPurchaseContractNumber()); if (!CollectionUtils.isEmpty(accountExpenseDBs)) { accountExpenseDBs.forEach(accountExpenseDB -> { accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate()); accountExpenseDB.setExpenseType("0"); accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName()); accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount()); accountExpenseDB.setExpenseDescribed("éè´ååï¼" + purchaseLedgerDB.getPurchaseContractNumber()); accountExpenseDB.setExpenseMethod("0"); accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber()); accountExpenseService.updateById(accountExpenseDB); }); accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate()); accountExpenseDB.setExpenseType("0"); accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName()); accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount()); accountExpenseDB.setExpenseDescribed("éè´ååï¼" + purchaseLedgerDB.getPurchaseContractNumber()); accountExpenseDB.setExpenseMethod("0"); accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber()); accountExpenseService.updateById(accountExpenseDB); }); } } @@ -178,6 +187,31 @@ List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData(); if (productList != null && !productList.isEmpty()) { handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType()); } //æ°å¢åæææ£éª for (SalesLedgerProduct saleProduct : productList) { QualityInspect qualityInspect = new QualityInspect(); qualityInspect.setInspectType(0); qualityInspect.setSupplier(purchaseLedger.getSupplierName()); qualityInspect.setPurchaseLedgerId(purchaseLedger.getId()); qualityInspect.setProductId(saleProduct.getProductId()); qualityInspect.setProductName(saleProduct.getProductCategory()); qualityInspect.setModel(saleProduct.getSpecificationModel()); qualityInspect.setUnit(saleProduct.getUnit()); qualityInspect.setQuantity(saleProduct.getQuantity()); qualityInspectMapper.insert(qualityInspect); QualityTestStandard qualityTestStandard = new QualityTestStandard(); qualityTestStandard.setProductId(saleProduct.getProductId()); List<QualityTestStandard> qualityTestStandards = qualityTestStandardMapper.qualityTestStandardList(qualityTestStandard); for (QualityTestStandard qualityTestStandardDB : qualityTestStandards) { QualityInspectParam qualityInspectParam = new QualityInspectParam(); qualityInspectParam.setInspectId(qualityInspect.getId()); qualityInspectParam.setParameterItem(qualityTestStandardDB.getParameterItem()); qualityInspectParam.setUnit(qualityTestStandardDB.getUnit()); qualityInspectParam.setStandardValue(qualityTestStandardDB.getStandardValue()); qualityInspectParam.setControlValue(qualityTestStandardDB.getControlValue()); qualityInspectParamMapper.insert(qualityInspectParam); } } // 5. è¿ç§»ä¸´æ¶æä»¶å°æ£å¼ç®å½ @@ -349,7 +383,7 @@ @Override public int deletePurchaseLedgerByIds(Long[] ids) { if (ids == null || ids.length == 0) { throw new BaseException("请éä¸è³å°ä¸æ¡æ°æ®"); throw new BaseException("请éä¸è³å°ä¸æ¡æ°æ®"); } // æ¹éå é¤å ³èçéè´å°è´¦äº§å LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); @@ -358,16 +392,29 @@ salesLedgerProductMapper.delete(queryWrapper); // æ¹éå é¤å ³èçéè´å°è´¦çæ¥ç¥¨ç»è®° LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getPurchaseLedgerId,ids); ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getPurchaseLedgerId, ids); ticketRegistrationMapper.delete(ticketRegistrationLambdaQueryWrapper); // æ¹éå é¤å ³èçéè´å°è´¦çæ¥ç¥¨ç»è®°è®°å½ LambdaQueryWrapper<ProductRecord> productRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId,ids); productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId, ids); productRecordMapper.delete(productRecordLambdaQueryWrapper); // æ¹éå é¤ä»æ¬¾ç»è®° LambdaQueryWrapper<PaymentRegistration> paymentRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); paymentRegistrationLambdaQueryWrapper.in(PaymentRegistration::getPurchaseLedgerId,ids); paymentRegistrationLambdaQueryWrapper.in(PaymentRegistration::getPurchaseLedgerId, ids); paymentRegistrationMapper.delete(paymentRegistrationLambdaQueryWrapper); //æ¹éå 餿£éªæ å LambdaQueryWrapper<QualityInspect> materialInspectLambdaQueryWrapper = new LambdaQueryWrapper<>(); materialInspectLambdaQueryWrapper.in(QualityInspect::getPurchaseLedgerId, ids); List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(materialInspectLambdaQueryWrapper); List<Long> inspectIds = qualityInspects.stream() .map(QualityInspect::getId) .collect(Collectors.toList()); LambdaQueryWrapper<QualityInspectParam> qualityStandardLambdaQueryWrapper = new LambdaQueryWrapper<>(); qualityStandardLambdaQueryWrapper.in(QualityInspectParam::getInspectId, inspectIds); qualityInspectParamMapper.delete(qualityStandardLambdaQueryWrapper); //æ¹éå é¤åæææ£éªæ°æ® qualityInspectMapper.delete(materialInspectLambdaQueryWrapper); // æ¹éå é¤éè´å°è´¦ return purchaseLedgerMapper.deleteBatchIds(Arrays.asList(ids)); } @@ -494,8 +541,8 @@ @Override public List<InvoiceRegistrationProduct> getProductBySalesNo(Long id) { List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>() .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel, InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity) .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel, InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity) .eq(InvoiceRegistrationProduct::getSalesLedgerId, id)); if (invoiceRegistrationProducts.isEmpty()) { return new ArrayList<>(); src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -138,5 +138,7 @@ */ private Integer inspectState; private Long purchaseLedgerId; } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -4,6 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProcessRouteMapper; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductProcessRouteItemMapper; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.sales.dto.InvoiceRegistrationProductDto; @@ -42,8 +50,14 @@ private PurchaseLedgerMapper purchaseLedgerMapper; private ProductOrderMapper productOrderMapper; private ProcessRouteItemMapper processRouteItemMapper; private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Autowired private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper; @Autowired private ProcessRouteMapper processRouteMapper; @Override public SalesLedgerProduct selectSalesLedgerProductById(Long id) { @@ -56,18 +70,18 @@ queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId()) .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType()); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(queryWrapper); if(!CollectionUtils.isEmpty(salesLedgerProducts)){ if (!CollectionUtils.isEmpty(salesLedgerProducts)) { InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto(); invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue()); List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto); // ç»è®¡å¼ç¥¨ç»è®°äº§åçå·²å¼ç¥¨æ°/å·²å¼ç¥¨éé¢ if(!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)){ if (!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)) { for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) { BigDecimal invoiceNum = BigDecimal.ZERO; BigDecimal invoiceAmount = BigDecimal.ZERO; for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) { if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){ invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); if (ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()) { invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount()); } } @@ -101,6 +115,14 @@ // 2. æ§è¡å é¤æä½ int result = salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids)); //å é¤å¯¹åºçç产订å for (Long id : ids) { ProductOrder productOrder = productOrderMapper.selectOne(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id)); if (productOrder != null) { productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().eq(ProductProcessRouteItem::getRouteId, productOrder.getId())); productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id)); } } // 3. 对æ¯ä¸ªä¸»è¡¨IDè¿è¡é颿´æ° for (Long salesLedgerId : mainIds) { @@ -130,6 +152,27 @@ Long salesLedgerId = salesLedgerProduct.getSalesLedgerId(); if (salesLedgerProduct.getId() == null) { result = salesLedgerProductMapper.insert(salesLedgerProduct); ProductOrder productOrder = new ProductOrder(); productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId()); productOrder.setProductModelId(salesLedgerProduct.getId()); productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId())); productOrderMapper.insert(productOrder); ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())); if (processRoute != null) { List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId())); for (ProcessRouteItem processRouteItem : processRouteItems) { ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem(); productProcessRouteItem.setProductModelId(productOrder.getProductModelId()); productProcessRouteItem.setProcessId(processRouteItem.getProcessId()); productProcessRouteItem.setRouteId(productOrder.getId()); productProcessRouteItemMapper.insert(productProcessRouteItem); } productOrder.setRouteId(processRoute.getId()); productOrderMapper.updateById(productOrder); } } else { salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); result = salesLedgerProductMapper.updateById(salesLedgerProduct); src/main/resources/mapper/production/ProductOrderMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.production.mapper.ProductOrderMapper"> <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductOrder"> <id property="id" column="id"/> <result property="productModelId" column="product_model_id"/> <result property="tenantId" column="tenant_id"/> <result property="salesLedgerId" column="sales_ledger_id"/> <result property="routeId" column="route_id"/> <result property="npsNo" column="nps_no"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> </resultMap> <select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto"> select po.*,sl.sales_contract_no,sl.project_name,sl.customer_name,slp.product_category,slp.specification_model from product_order po left join sales_ledger sl on po.sales_ledger_id = sl.id left join sales_ledger_product slp on po.product_model_id = slp.id left join process_route pr on po.route_id = pr.id <where> <if test="c.npsNo != null and c.npsNo != ''"> and po.nps_no = #{c.npsNo} </if> <if test="c.salesContractNo != null and c.salesContractNo != ''"> and sl.sales_contract_no = #{c.salesContractNo} </if> <if test="c.projectName != null and c.projectName != ''"> and sl.project_name = #{c.projectName} </if> <if test="c.customerName != null and c.customerName != ''"> and sl.customer_name = #{c.customerName} </if> <if test="c.productCategory != null and c.productCategory != ''"> and slp.product_category = #{c.productCategory} </if> <if test="c.specificationModel != null and c.specificationModel != ''"> and slp.specification_model = #{c.specificationModel} </if> </where> </select> </mapper> src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.production.mapper.ProductProcessRouteItemMapper"> <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductProcessRouteItem"> <id property="id" column="id"/> <result property="productModelId" column="product_model_id"/> <result property="tenantId" column="tenant_id"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> </resultMap> <select id="listItem" resultType="com.ruoyi.production.dto.ProductProcessRouteItemDto"> select ppri.*, pp.name as process_name, slp.specification_model, slp.unit, slp.product_category from product_process_route_item ppri left join sales_ledger_product slp on ppri.product_model_id = slp.id left join product_process pp on pp.id = ppri.process_id where ppri.route_id = #{orderId} order by ppri.id </select> </mapper>