From f2c7576cbd050824ec78233483e06fc375382bfb Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 02 四月 2026 17:04:03 +0800
Subject: [PATCH] yys 1.客户档案导入-维护人,维护时间默认当前 2.销售报价审核非必填,产品选择方式也要改 3.销售产品增加物料号字段 4.产品维护增加录入时间,修改时间 6.发货审核不需要了 7.BI的生产核算分析不要了,增加生产订单当前工序 3.库存导入模板规格改成图纸编号,产品名称可以为空,加个库位 4.库存管理外购改为标准件 5.bom产品唯一 6.产品根据bom计算子项数量(只统计二级)
---
src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java | 2
src/main/java/com/ruoyi/basic/pojo/Customer.java | 4
src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java | 53 +++++++++++++
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 7 +
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java | 12 +++
src/main/java/com/ruoyi/production/service/ProductBomService.java | 2
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 6 +
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 6 +
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 9 +-
src/main/java/com/ruoyi/production/service/ProductStructureService.java | 2
src/main/resources/mapper/basic/ProductModelMapper.xml | 4
src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java | 2
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | 3
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java | 7 +
src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java | 18 ++++
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java | 35 +++++---
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java | 12 ++
src/main/java/com/ruoyi/production/controller/ProductBomController.java | 2
src/main/java/com/ruoyi/basic/pojo/ProductModel.java | 12 ++
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 20 ++--
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 3
21 files changed, 173 insertions(+), 48 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java b/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
index 91758cf..5b5a38e 100644
--- a/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
+++ b/src/main/java/com/ruoyi/basic/dto/ProductAndModelDto.java
@@ -1,11 +1,14 @@
package com.ruoyi.basic.dto;
+import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.time.LocalDateTime;
import java.util.List;
/**
@@ -21,8 +24,12 @@
private String routeName;
+ @ApiModelProperty(value = "瀛愰」鏁伴噺")
+ @Excel(name = "瀛愰」鏁伴噺")
+ private Long subItemCount;
+
/**
- * 瑙勬牸id
+ * 鍥剧焊缂栧彿id
*/
private Long id;
@@ -58,4 +65,13 @@
@ApiModelProperty(value = "1=鑷埗,2=澶栬喘,3=濮斿")
private Integer productType;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8",shape = JsonFormat.Shape.STRING)
+ private LocalDateTime updateTime;
+
}
diff --git a/src/main/java/com/ruoyi/basic/pojo/Customer.java b/src/main/java/com/ruoyi/basic/pojo/Customer.java
index 511e691..7cb7abe 100644
--- a/src/main/java/com/ruoyi/basic/pojo/Customer.java
+++ b/src/main/java/com/ruoyi/basic/pojo/Customer.java
@@ -69,14 +69,14 @@
/**
* 缁存姢浜�
*/
- @Excel(name = "缁存姢浜�")
+// @Excel(name = "缁存姢浜�")
private String maintainer;
/**
* 缁存姢鏃堕棿
*/
@JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "缁存姢鏃堕棿" , width = 30, dateFormat = "yyyy-MM-dd")
+// @Excel(name = "缁存姢鏃堕棿" , width = 30, dateFormat = "yyyy-MM-dd")
private Date maintenanceTime;
@TableField(fill = FieldFill.INSERT)
diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
index 6ba6f08..1ccd863 100644
--- a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -77,9 +77,15 @@
@Excel(name = "瑙勬牸鍨嬪彿")
private String drawingNumber;
- @TableField(exist = false)
- private LocalDateTime createTime;
-
@ApiModelProperty(value = "浜у搧绫诲瀷(1-鐗╂枡,2-浜у搧)")
private Integer productType;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
}
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index f24a2d2..eac159c 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -10,6 +10,7 @@
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.service.ICustomerService;
+import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -160,12 +161,17 @@
@Override
public AjaxResult importData(MultipartFile file) {
+ String nickName = SecurityUtils.getLoginUser().getNickName();
try {
ExcelUtil<Customer> util = new ExcelUtil<Customer>(Customer.class);
List<Customer> userList = util.importExcel(file.getInputStream());
if(CollectionUtils.isEmpty(userList)){
return AjaxResult.warn("妯℃澘閿欒鎴栧鍏ユ暟鎹负绌�");
}
+ for (Customer customer : userList) {
+ customer.setMaintenanceTime(DateUtils.getNowDate());
+ customer.setMaintainer(nickName);
+ }
this.saveOrUpdateBatch(userList);
return AjaxResult.success(true);
}catch (Exception e){
diff --git a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
index ddf9ae9..afee689 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -16,9 +16,11 @@
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.service.impl.ProductBomServiceImpl;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
@@ -29,14 +31,19 @@
import java.util.stream.Collectors;
@Service
-@AllArgsConstructor
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
+ @Autowired
private ProductMapper productMapper;
+ @Autowired
private ProductModelMapper productModelMapper;
- private final CommonFileServiceImpl commonFileService;
+ @Autowired
+ private CommonFileServiceImpl commonFileService;
+
+ @Autowired
+ private ProductBomServiceImpl productBomService;
@Override
public List<ProductTreeDto> selectProductList(ProductDto productDto) {
@@ -75,6 +82,7 @@
public AjaxResult listPage(Page page, ProductAndModelDto productDto) {
IPage<ProductAndModelDto> productAndModelDtoIPage = productModelMapper.listPage(page, productDto);
productAndModelDtoIPage.getRecords().forEach(item -> {
+ item.setSubItemCount(productBomService.countChild(item.getId()));
item.setSalesLedgerFiles(commonFileService.getFileListByBusinessId(item.getId(), FileNameType.PRODUCT_MODEL.getValue()));
});
return AjaxResult.success(productAndModelDtoIPage);
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 76e948d..4760a34 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -40,6 +40,7 @@
import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
import com.ruoyi.production.pojo.ProductProcess;
import com.ruoyi.production.pojo.ProductWorkOrder;
+import com.ruoyi.production.service.impl.ProductOrderServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
@@ -114,6 +115,9 @@
@Autowired
private ProductOrderMapper productOrderMapper;
+
+ @Autowired
+ private ProductOrderServiceImpl productOrderService;
@Autowired
private ProductWorkOrderMapper productWorkOrderMapper;
@@ -553,7 +557,7 @@
ProductOrderDto orderDto = new ProductOrderDto();
orderDto.setStartTime(LocalDateTime.now().minusMonths(1));
orderDto.setEndTime(LocalDateTime.now());
- List<ProductOrderDto> productOrderDtos = productOrderMapper.pageProductOrder(new Page<>(1, -1), orderDto)
+ List<ProductOrderDto> productOrderDtos = productOrderService.pageProductOrder(new Page<>(1, -1), orderDto)
.getRecords();
productionProgressDto.setCompletedOrderDetails(productOrderDtos);
long totalCount = productOrderDtos.size();
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
index 25071a0..76ca8ce 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -72,4 +72,11 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
+ @ApiModelProperty("浜у搧鍨嬪彿id")
+ private Long productModelId;
+
+ @ApiModelProperty("鏄惁杩斾慨 1-鏄� 2-鍚�")
+ private Integer isReturn;
+
+
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductBomController.java b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
index 43662d0..3081fca 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductBomController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -73,7 +73,7 @@
@Log(title = "淇敼", businessType = BusinessType.UPDATE)
@PutMapping("/update")
public AjaxResult update(@RequestBody ProductBom productBom) {
- return AjaxResult.success(productBomService.updateById(productBom));
+ return AjaxResult.success(productBomService.updateBom(productBom));
}
@ApiOperation("鍒犻櫎BOM")
diff --git a/src/main/java/com/ruoyi/production/service/ProductBomService.java b/src/main/java/com/ruoyi/production/service/ProductBomService.java
index d4746c6..0231856 100644
--- a/src/main/java/com/ruoyi/production/service/ProductBomService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductBomService.java
@@ -27,4 +27,6 @@
void uploadBom(MultipartFile file,HttpServletResponse response);
void exportBom(HttpServletResponse response, Integer bomId);
+
+ String updateBom(ProductBom productBom);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductStructureService.java b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
index 2fa2056..d06e754 100644
--- a/src/main/java/com/ruoyi/production/service/ProductStructureService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductStructureService.java
@@ -15,4 +15,6 @@
List<ProductStructureDto> listBybomId(Integer bomId);
List<ProductStructureDto> listBybomIdIsParent(Integer bomId);
+
+ Long countBybomId(Integer bomId);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
index 91dbec8..b334365 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductBomServiceImpl.java
@@ -62,14 +62,42 @@
@Autowired
private ProductProcessService productProcessService;
+
@Override
public IPage<ProductBomDto> listPage(Page page, ProductBomDto productBomDto) {
return productBomMapper.listPage(page, productBomDto);
}
+ /**
+ * 浜у搧鏍规嵁bom璁$畻瀛愰」鏁伴噺锛堝彧缁熻浜岀骇锛�
+ */
+ public Long countChild(Long productModelId) {
+ ProductBom productBom = productBomMapper.selectOne(new LambdaQueryWrapper<ProductBom>()
+ .eq(ProductBom::getProductModelId, productModelId));
+ if(productBom != null){
+ return productStructureService.countBybomId(productBom.getId());
+ }
+ return 0L;
+ }
+
+ /**
+ * 鍒ゆ柇浜у搧鏄惁瀛樺湪bom false涓嶅瓨鍦� true瀛樺湪
+ * @param productBom
+ * @return
+ */
+ public boolean checkBom(ProductBom productBom) {
+ ProductBom productBom1 = productBomMapper.selectOne(new LambdaQueryWrapper<ProductBom>()
+ .eq(ProductBom::getProductModelId, productBom.getProductModelId()));
+ return productBom1 == null ? false : true;
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult add(ProductBom productBom) {
+ boolean b = checkBom(productBom);
+ if (b) {
+ return AjaxResult.error("浜у搧妯″瀷宸插瓨鍦˙OM");
+ }
boolean save = productBomMapper.insert(productBom) > 0;
if (save) {
String no = "BM." + String.format("%05d", productBom.getId());
@@ -197,9 +225,18 @@
errorList.add(error);
continue;
}
+
ProductBom bom = new ProductBom();
bom.setProductModelId(rootModel.getId());
bom.setVersion("1.0");
+ boolean b = checkBom(bom);
+ if(b){
+ BomImportErrorDto error = new BomImportErrorDto();
+ BeanUtils.copyProperties(first, error);
+ error.setErrorMsg("浜у搧銆�"+ first.getParentSpec() + "銆態OM宸插瓨鍦�");
+ errorList.add(error);
+ continue;
+ }
productBomMapper.insert(bom);
bom.setBomNo("BM." + String.format("%05d", bom.getId()));
productBomMapper.updateById(bom);
@@ -282,6 +319,22 @@
util.exportExcel(response, exportList, "BOM缁撴瀯瀵煎嚭");
}
+ @Override
+ public String updateBom(ProductBom productBom) {
+ ProductBom productBom1 = productBomMapper.selectById(productBom.getId());
+ if(productBom.getProductModelId().equals(productBom1.getProductModelId())){
+ productBomMapper.updateById(productBom);
+ }else{
+ boolean b = checkBom(productBom);
+ if(b){
+ throw new ServiceException("浜у搧BOM宸插瓨鍦�");
+ }else{
+ productBomMapper.updateById(productBom);
+ }
+ }
+ return "淇敼鎴愬姛";
+ }
+
private void populateMap(List<ProductStructureDto> nodes, Map<Long, ProductStructureDto> map) {
if (nodes == null || nodes.isEmpty()) {
return;
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
index 703bbe4..5bb0fc6 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -161,4 +161,16 @@
return productStructureMapper.listBybomId(bomId,true);
}
+ @Override
+ public Long countBybomId(Integer bomId) {
+ ProductStructure productStructure = productStructureMapper.selectOne(new LambdaQueryWrapper<ProductStructure>()
+ .eq(ProductStructure::getBomId, bomId)
+ .isNull(ProductStructure::getParentId));
+ if(productStructure != null){
+ return productStructureMapper.selectCount(new LambdaQueryWrapper<ProductStructure>()
+ .eq(ProductStructure::getParentId, productStructure.getId()));
+ }
+ return 0L;
+ }
+
}
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index 29dafda..7dc6004 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -85,20 +85,20 @@
@Transactional(rollbackFor = Exception.class)
@Log(title = "鍙戣揣淇℃伅绠$悊", businessType = BusinessType.INSERT)
public AjaxResult add(@RequestBody ShippingInfoDto req) throws Exception {
- LoginUser loginUser = SecurityUtils.getLoginUser();
+// LoginUser loginUser = SecurityUtils.getLoginUser();
String sh = OrderUtils.countTodayByCreateTime(shippingInfoMapper, "SH");
// 鍙戣揣瀹℃壒
- ApproveProcessVO approveProcessVO = new ApproveProcessVO();
- approveProcessVO.setApproveType(7);
- approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
- approveProcessVO.setApproveReason(req.getType() + ":" +sh);
- approveProcessVO.setApproveUserIds(req.getApproveUserIds());
- approveProcessVO.setApproveUser(loginUser.getUserId());
- approveProcessVO.setApproveTime(LocalDate.now().toString());
- approveProcessService.addApprove(approveProcessVO);
+// ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+// approveProcessVO.setApproveType(7);
+// approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
+// approveProcessVO.setApproveReason(req.getType() + ":" +sh);
+// approveProcessVO.setApproveUserIds(req.getApproveUserIds());
+// approveProcessVO.setApproveUser(loginUser.getUserId());
+// approveProcessVO.setApproveTime(LocalDate.now().toString());
+// approveProcessService.addApprove(approveProcessVO);
// 娣诲姞鍙戣揣娑堟伅
req.setShippingNo(sh);
- req.setStatus("寰呭鏍�");
+ req.setStatus("寰呭彂璐�");
boolean save = shippingInfoService.save(req);
return save ? AjaxResult.success() : AjaxResult.error();
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 6bb8e1d..7515c2a 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -54,9 +54,9 @@
private String productCategory;
/**
- * 瑙勬牸鍨嬪彿
+ * 鍥剧焊缂栧彿
*/
- @Excel(name = "瑙勬牸鍨嬪彿")
+ @Excel(name = "鍥剧焊缂栧彿")
private String specificationModel;
/**
@@ -248,4 +248,7 @@
@ApiModelProperty(value = "閫�璐ф暟閲�")
@TableField(exist = false)
private BigDecimal returnNum;
+
+ @ApiModelProperty(value = "鐗╂枡鍙�")
+ private String material;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java b/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java
index f57293d..e9f3dce 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesQuotation.java
@@ -40,7 +40,7 @@
private String paymentMethod;
@ApiModelProperty(value = "浜よ揣鍛ㄦ湡澶╂暟")
private String deliveryPeriod;
- @ApiModelProperty(value = "鐘舵��")
+ @ApiModelProperty(value = "鐘舵�� 寰呭鎵� 瀹℃牳涓� 鎷掔粷 閫氳繃")
private String status;
@ApiModelProperty(value = "鎶ヤ环鎬婚噾棰�")
@Excel(name = "鎶ヤ环閲戦")
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index bf46405..f7d9382 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -95,11 +95,7 @@
private ShippingInfoServiceImpl shippingInfoService;
private ReturnSaleProductMapper returnSaleProductMapper;
private ReturnManagementMapper returnManagementMapper;
-
-
private StockUtils stockUtils;
-
-
@Autowired
private ProductStructureMapper productStructureMapper;
@@ -124,6 +120,7 @@
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
if(!CollectionUtils.isEmpty(salesLedgerProducts)){
salesLedgerProducts.forEach(item -> {
+
// 鍙戣揣淇℃伅
ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
.eq(ShippingInfo::getSalesLedgerProductId, item.getId())
@@ -549,7 +546,9 @@
int count = 0;
StringBuilder stringBuffer = new StringBuilder();
for (ProductStructureDto productStructureDto : productStructureDtos) {
- StockInventory stockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, productStructureDto.getProductModelId()));
+ StockInventory stockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>()
+ .lambda()
+ .eq(StockInventory::getProductModelId, productStructureDto.getProductModelId()));
//鎵�闇�鏁伴噺
BigDecimal multiply = salesLedgerProduct.getQuantity().multiply(productStructureDto.getUnitQuantity());
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
index 8e18058..d4ba1f2 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.framework.security.LoginUser;
@@ -60,12 +61,13 @@
@Override
public boolean add(SalesQuotationDto salesQuotationDto) {
+ boolean isApprove = StringUtils.isNotEmpty(salesQuotationDto.getApproveUserIds()) ? true : false;
LoginUser loginUser = SecurityUtils.getLoginUser();
SalesQuotation salesQuotation = new SalesQuotation();
BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
String quotationNo = OrderUtils.countTodayByCreateTime(salesQuotationMapper, "QT");
salesQuotation.setQuotationNo(quotationNo);
- salesQuotation.setStatus("寰呭鎵�");
+ salesQuotation.setStatus(isApprove ? "寰呭鎵�" : "閫氳繃");
salesQuotationMapper.insert(salesQuotation);
if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
return true;
@@ -77,20 +79,23 @@
return salesQuotationProduct;
}).collect(Collectors.toList());
salesQuotationProductService.saveBatch(products);
- // 鎶ヤ环瀹℃壒
- ApproveProcessVO approveProcessVO = new ApproveProcessVO();
- approveProcessVO.setApproveType(6);
- approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
- approveProcessVO.setApproveReason(quotationNo);
- approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds());
- approveProcessVO.setApproveUser(loginUser.getUserId());
- approveProcessVO.setApproveTime(LocalDate.now().toString());
- approveProcessVO.setPrice(salesQuotationDto.getTotalAmount());
- try {
- approveProcessService.addApprove(approveProcessVO);
- }catch (Exception e){
- log.error("SalesQuotationServiceImpl error:{}", e);
- throw new RuntimeException("瀹℃壒澶辫触");
+ // 瀹℃牳浜轰笉涓虹┖
+ if(isApprove){
+ // 鎶ヤ环瀹℃壒
+ ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+ approveProcessVO.setApproveType(6);
+ approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
+ approveProcessVO.setApproveReason(quotationNo);
+ approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds());
+ approveProcessVO.setApproveUser(loginUser.getUserId());
+ approveProcessVO.setApproveTime(LocalDate.now().toString());
+ approveProcessVO.setPrice(salesQuotationDto.getTotalAmount());
+ try {
+ approveProcessService.addApprove(approveProcessVO);
+ }catch (Exception e){
+ log.error("SalesQuotationServiceImpl error:{}", e);
+ throw new RuntimeException("瀹℃壒澶辫触");
+ }
}
return true;
}
diff --git a/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java b/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
index 196bb86..806f02c 100644
--- a/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
+++ b/src/main/java/com/ruoyi/stock/execl/StockInventoryExportData.java
@@ -13,7 +13,7 @@
@Excel(name = "浜у搧鍚嶇О")
private String productName;
- @Excel(name = "瑙勬牸")
+ @Excel(name = "鍥剧焊缂栧彿")
private String model;
@Excel(name = "鍗曚綅")
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index 462326b..fcec502 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -147,8 +147,7 @@
list.forEach(dto -> {
boolean matched = false;
for (SalesLedgerProduct item : salesLedgerProducts) {
- if (item.getProductCategory().equals(dto.getProductName()) &&
- item.getSpecificationModel().equals(dto.getModel())) {
+ if (item.getSpecificationModel().equals(dto.getModel())) {
StockInventoryDto stockInventoryDto = new StockInventoryDto();
stockInventoryDto.setRecordId(0L);
stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode());
diff --git a/src/main/resources/mapper/basic/ProductModelMapper.xml b/src/main/resources/mapper/basic/ProductModelMapper.xml
index 89954e5..47d5cd9 100644
--- a/src/main/resources/mapper/basic/ProductModelMapper.xml
+++ b/src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -115,7 +115,9 @@
pm.drawing_number as drawingNumber,
pm.product_type as productType,
pr.id as routeId,
- pr.process_route_name as routeName
+ pr.process_route_name as routeName,
+ pm.create_time as createTime,
+ pm.update_time as updateTime
from product_model pm
left join product p on p.id = pm.product_id
left join process_route pr on pr.id = pm.route_id
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index 2c50787..0389580 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -8,7 +8,7 @@
SELECT
T1.*,
CASE
- WHEN t2.qualitity > T1.quantity THEN 1
+ WHEN sum(t2.qualitity) > T1.quantity THEN 1
ELSE 0
END as has_sufficient_stock
FROM
@@ -23,6 +23,7 @@
AND T1.type = #{salesLedgerProduct.type}
</if>
</where>
+ group by T1.id
ORDER BY T1.register_date DESC
</select>
<select id="selectSalesLedgerProductByMainId" resultType="com.ruoyi.sales.pojo.SalesLedgerProduct">
--
Gitblit v1.9.3