diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteController.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteController.java index 7c6f5c0d..c30843e4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteController.java @@ -1,7 +1,9 @@ package com.ruoyi.purchase.controller; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; import com.alibaba.fastjson.JSON; import com.ruoyi.ck.utils.Result; @@ -10,7 +12,10 @@ import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.process.general.service.IProcessService; import com.ruoyi.purchase.domain.PurchaseQuoteChild; +import com.ruoyi.purchase.domain.PurchaseQuoteHistory; import com.ruoyi.purchase.domain.Vo.PurchaseQuoteVo; +import com.ruoyi.purchase.service.IPurchaseQuoteHistoryService; +import com.ruoyi.system.domain.SysCustomerQuoteHistory; import com.ruoyi.system.domain.SysSalesOrderChild; import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysUserService; @@ -51,6 +56,10 @@ public class PurchaseQuoteController extends BaseController @Autowired private IPurchaseQuoteService purchaseQuoteService; + + @Autowired + private IPurchaseQuoteHistoryService purchaseQuoteHistoryService; + @Autowired private ISysRoleService roleService; @@ -310,4 +319,59 @@ public class PurchaseQuoteController extends BaseController purchaseQuoteService.restorePurchaseQuoteById(id); return AjaxResult.success(); } + + + + + + /** + * 打开采购报价历史弹窗 + * */ + @GetMapping("/recentQuotationHistory") + public String history(@RequestParam("materialCode") String materialCode , + @RequestParam("supplierQuoteCode") String supplierQuoteCode, + ModelMap mmap) + { + + mmap.put("materialCode", materialCode); + mmap.put("supplierQuoteCode", supplierQuoteCode); + return prefix + "/recentQuotationHistory"; + } + + /** + * 查询客户报价历史列表 + * */ + @PostMapping("/recentQuotationHistoryList") + @ResponseBody + public TableDataInfo recentQuotationHistoryList(PurchaseQuoteHistory purchaseQuoteHistory) + { + startPage(); + List list = purchaseQuoteHistoryService.selectPurchaseQuoteHistoryList(purchaseQuoteHistory); + return getDataTable(list); + } + + + + + + /** + * 查询最新报价历史数据 + * */ + @GetMapping("/queryLatestRecentQuotation") + @ResponseBody + public AjaxResult recentQuotationHistoryData(@RequestParam("materialNo") String materialNo, @RequestParam("supplierQuoteCode") String supplierQuoteCode) + { + PurchaseQuoteHistory purchaseQuoteHistory = new PurchaseQuoteHistory(); + purchaseQuoteHistory.setMaterialCode(materialNo); + purchaseQuoteHistory.setSupplierCode(supplierQuoteCode); + List purchaseQuoteHistories = purchaseQuoteHistoryService.selectPurchaseQuoteHistoryList(purchaseQuoteHistory); + List filterPurchaseQuoteHistories = purchaseQuoteHistories.stream().filter(item -> "1".equals(item.getIsLatest())).collect(Collectors.toList()); + if (filterPurchaseQuoteHistories.size() == 0) + { + PurchaseQuoteHistory temp = new PurchaseQuoteHistory(); + temp.setMaterialRmb(BigDecimal.ZERO); + return AjaxResult.success(temp); + } + return AjaxResult.success(filterPurchaseQuoteHistories.get(0)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteHistoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteHistoryController.java index b53fa846..9ed1a4c4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteHistoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/controller/PurchaseQuoteHistoryController.java @@ -1,15 +1,13 @@ package com.ruoyi.purchase.controller; import java.util.List; + +import com.ruoyi.system.domain.SysCustomerQuoteHistory; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.purchase.domain.PurchaseQuoteHistory; @@ -26,10 +24,10 @@ import com.ruoyi.common.core.page.TableDataInfo; * @date 2024-08-28 */ @Controller -@RequestMapping("/purchaseQuoteHistory/purchaseQuoteHistory") +@RequestMapping("/purchase/purchaseQuoteHistory") public class PurchaseQuoteHistoryController extends BaseController { - private String prefix = "purchaseQuoteHistory/purchaseQuoteHistory"; + private String prefix = "purchase/purchaseQuoteHistory"; @Autowired private IPurchaseQuoteHistoryService purchaseQuoteHistoryService; @@ -147,5 +145,4 @@ public class PurchaseQuoteHistoryController extends BaseController return toAjax(purchaseQuoteHistoryService.restorePurchaseQuoteHistoryById(id)); } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseQuoteHistory.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseQuoteHistory.java index 8f9ed37a..61c94da5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseQuoteHistory.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/domain/PurchaseQuoteHistory.java @@ -72,12 +72,12 @@ public class PurchaseQuoteHistory extends BaseEntity @Excel(name = "物料的对外报价") private Long materialSole; - /** 物料的不含税单价(RMB) */ - @Excel(name = "物料的不含税单价(RMB)") - private BigDecimal materialRmb; - /** 物料的含税单价(RMB) */ @Excel(name = "物料的含税单价(RMB)") + private BigDecimal materialRmb; + + /** 物料的不含税单价(RMB) */ + @Excel(name = "物料的不含税单价(RMB)") private BigDecimal materialNormb; /** 供应商编号 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java index f0711d4d..dcb4f0b6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseQuoteServiceImpl.java @@ -397,9 +397,7 @@ public class PurchaseQuoteServiceImpl implements IPurchaseQuoteService SysUser user = ShiroUtils.getSysUser(); purchaseQuote.setApplyUser(user.getLoginName()); purchaseQuote.setApplyTime(DateUtils.getNowDate()); - if(purchaseQuote.getPurchaseQuoteId()==null){ - insertPurchaseQuote(purchaseQuote); - } + insertPurchaseQuote(purchaseQuote); // 启动流程 String applyTitle = user.getUserName()+"发起了客户信息提交审批-"+DateUtils.dateTimeNow(); String instanceType = "submit"; diff --git a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml index 70be7175..749ccf16 100644 --- a/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/purchase/PurchaseQuoteHistoryMapper.xml @@ -30,12 +30,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - select purchase_quote_child_id, purchase_quote_code, material_id, material_code, material_name, material_type, processMethod, brand, photoUrl, describe, tax_rate, usd_rate, material_num, material_sole, material_rmb, material_noRmb, supplier_code, supplier_name, create_by, create_time, update_by, update_time, remark, use_status, audit_status, is_latest,del_flag from purchase_quote_history + select purchase_quote_child_id, purchase_quote_code, material_id, material_code, material_name, material_sole, material_rmb, material_noRmb, supplier_code, supplier_name, create_by, create_time, update_by, update_time, remark, use_status, audit_status, is_latest,del_flag from purchase_quote_history +
+
+
@@ -159,6 +161,16 @@ } }, {title: '最新报价',field: 'materialSole',align: 'center',}, + + { title: '最新报价历史',align: 'center', + + formatter: function (value, row, index) { + var actions = []; + actions.push('最新报价历史 '); + return actions.join(''); + } + }, + {title: '物料的数量', field: 'materialNum',align: 'center',editable: true,visible: false}, {title: '物料的不含税单价(RMB)',field: 'materialNoRmb',align: 'center', editable:{ @@ -234,48 +246,91 @@ }); getPurchaseQuoteCode(); }); - function doSubmit(index, layero,uniqueId){ + + + + + function doSubmit(index, layero, uniqueId) { var iframeWin = window[layero.find('iframe')[0]['name']]; - var rowData = iframeWin.$('#bootstrap-select-table').bootstrapTable('getSelections'); - var rows = $("#bootstrap-sub-table-1").bootstrapTable('getData').length; - for(var j=0;i { + // 检查是否已经存在相同的料号 + if (materialCodesSet.has(rowData.materialNo) || newMaterialCodesSet.has(rowData.materialNo)) { + $.modal.alertError("不能选择已添加过的相同料号 " + rowData.materialNo); + return Promise.reject("Duplicate material number: " + rowData.materialNo); + } + + // 标记即将插入的物料号 + newMaterialCodesSet.add(rowData.materialNo); + + return queryRecentQuotation(rowData.materialNo) + .then(function(quotationData) { + return { + materialId:rowData.id, + materialCode: rowData.materialNo, + materialName: rowData.materialName, + materialType: rowData.materialType, + describe: rowData.describe, + brand: rowData.brand, + unit: rowData.unit, + processMethod: rowData.processMethod, + materialSole: quotationData.data.materialRmb || '', + photoUrl: rowData.photoUrl, + materialNum: 1, + materialRmb: "", + materialNoRmb: "", + materialNoRmbSum: "", + materialRmbSum: "", + remark: "" + }; + }); + }); + + // 使用 Promise.all 来等待所有请求完成,并将结果直接存入 newRows + Promise.all(promises) + .then(function(newRows) { + // 批量插入新行 + newRows.forEach(function(row) { + $("#bootstrap-sub-table-purchaseQuoteChild").bootstrapTable('insertRow', { index: 1, row: row }); + }); + + layer.close(index); }) - } - layer.close(index); + .catch(function(error) { + console.error('Some requests failed:', error); + layer.close(index); + }); } + + + + function insertRow() { + + if ($("#selectSupplierQuoteCode").val() == null || $("#selectSupplierQuoteCode").val() == '') { + $.modal.alertWarning("请先选择供应商ID"); + return; + } + + + var url = ctx + "erp/material/select"; var options = { title: '选择料号', @@ -378,6 +433,41 @@ values: materialCode }) } + + + //最新报价历史 + function recentQuotationHistory(materialCode){ + var supplierQuoteCode = $("#selectSupplierQuoteCode").val(); + var queryParams = new URLSearchParams(); + queryParams.append("materialCode", materialCode); + queryParams.append("supplierQuoteCode", encodeURIComponent(supplierQuoteCode)); + var url = ctx +'purchase/purchaseQuote/recentQuotationHistory?'+queryParams.toString(); + + $.modal.open("最新报价历史", url); + } + + + + // 查找最新的报价数据 + function queryRecentQuotation(materialNo) { + return new Promise((resolve, reject) => { + // 使用AJAX请求从服务器获取最近的报价信息 + $.ajax({ + url: prefix + '/queryLatestRecentQuotation', + type: 'GET', + data: { materialNo: materialNo, supplierQuoteCode: $("#selectSupplierQuoteCode").val() }, + success: function (data) { + resolve(data); // 成功时解析数据 + }, + error: function (jqXHR, textStatus, errorThrown) { + reject(new Error('查找最新报价数据失败')); // 失败时抛出错误 + } + }); + }); + } + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/recentQuotationHistory.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/recentQuotationHistory.html new file mode 100644 index 00000000..bd685361 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuote/recentQuotationHistory.html @@ -0,0 +1,74 @@ + + + + + + +
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuoteHistory/add.html b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuoteHistory/add.html index c2b16bd3..210e5c65 100644 --- a/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuoteHistory/add.html +++ b/ruoyi-admin/src/main/resources/templates/purchase/purchaseQuoteHistory/add.html @@ -147,7 +147,7 @@