作者 Win10-2023FDZSZ\Administrator

询价、投标

@@ -13,6 +13,11 @@ import cn.hutool.core.collection.CollectionUtil; @@ -13,6 +13,11 @@ import cn.hutool.core.collection.CollectionUtil;
13 import cn.hutool.core.util.StrUtil; 13 import cn.hutool.core.util.StrUtil;
14 import org.jeecg.modules.erp.trade.entity.*; 14 import org.jeecg.modules.erp.trade.entity.*;
15 import org.jeecg.modules.erp.trade.service.*; 15 import org.jeecg.modules.erp.trade.service.*;
  16 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  17 +import org.jeecg.modules.erp.trade.entity.TblTradeInventoryIn;
  18 +import org.jeecg.modules.erp.trade.entity.TblTradeTenderInfo;
  19 +import org.jeecg.modules.erp.trade.service.ITblTradeInventoryInService;
  20 +import org.jeecg.modules.erp.trade.service.ITblTradeTenderInfoService;
16 import org.jeecgframework.poi.excel.ExcelImportUtil; 21 import org.jeecgframework.poi.excel.ExcelImportUtil;
17 import org.jeecgframework.poi.excel.def.NormalExcelConstants; 22 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
18 import org.jeecgframework.poi.excel.entity.ExportParams; 23 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -86,6 +91,8 @@ public class TblTradeBidSubController { @@ -86,6 +91,8 @@ public class TblTradeBidSubController {
86 List<TblTradeTenderInfo> tenderInfoList = tblTradeTenderInfoService.list(null); 91 List<TblTradeTenderInfo> tenderInfoList = tblTradeTenderInfoService.list(null);
87 tblTradeBidSubList.forEach(e->{ 92 tblTradeBidSubList.forEach(e->{
88 e.setTenderInfo(tenderInfoList.stream().filter(i->StrUtil.equals(i.getId(),e.getTradeId())).findFirst().get()); 93 e.setTenderInfo(tenderInfoList.stream().filter(i->StrUtil.equals(i.getId(),e.getTradeId())).findFirst().get());
  94 +
  95 + // TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
89 96
90 }); 97 });
91 page.setRecords(tblTradeBidSubList); 98 page.setRecords(tblTradeBidSubList);
@@ -448,4 +455,45 @@ public class TblTradeBidSubController { @@ -448,4 +455,45 @@ public class TblTradeBidSubController {
448 return Result.OK("文件导入失败!"); 455 return Result.OK("文件导入失败!");
449 } 456 }
450 457
  458 +
  459 + /**
  460 + * 采购主管审批询价
  461 + *
  462 + * @param tblTradeBidSubPage
  463 + * @return
  464 + */
  465 + @AutoLog(value = "采购主管审批询价")
  466 + @ApiOperation(value="采购主管审批询价", notes="采购主管审批询价")
  467 + @RequestMapping(value = "/inquiryApproval", method = {RequestMethod.PUT,RequestMethod.POST})
  468 + public Result<String> inquiryApproval(@RequestBody TblTradeBidSubPage tblTradeBidSubPage) {
  469 + TblTradeBidSub tblTradeBidSub = new TblTradeBidSub();
  470 + BeanUtils.copyProperties(tblTradeBidSubPage, tblTradeBidSub);
  471 +
  472 + TblTradeBidSub tblTradeBidSubEntity = tblTradeBidSubService.getById(tblTradeBidSub.getId());
  473 + if(tblTradeBidSubEntity==null) {
  474 + return Result.error("未找到对应数据");
  475 + }
  476 + tblTradeBidSubService.inquiryApproval(tblTradeBidSub, tblTradeBidSubPage.getTblTradeInquiryInfoList());
  477 + return Result.OK("审批成功!");
  478 + }
  479 +
  480 + /**
  481 + * 采购主管获取审批数据
  482 + *
  483 + * @param tblTradeBidSub
  484 + * @return
  485 + */
  486 + @RequestMapping("getBidSubData")
  487 + public Result<TblTradeBidSub> getBidSubData(@RequestBody TblTradeBidSub tblTradeBidSub){
  488 +
  489 + TblTradeBidSub data = tblTradeBidSubService.getOne(Wrappers.lambdaQuery(TblTradeBidSub.class)
  490 + .eq(TblTradeBidSub::getTradeId, tblTradeBidSub.getTradeId()));
  491 +
  492 + // TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
  493 +
  494 + TblTradeTenderInfo tenderInfo = tblTradeTenderInfoService.getById(tblTradeBidSub.getTradeId());
  495 + data.setTenderInfo(tenderInfo);
  496 +
  497 + return Result.OK(data);
  498 + }
451 } 499 }
1 package org.jeecg.modules.erp.trade.controller; 1 package org.jeecg.modules.erp.trade.controller;
2 2
  3 +import cn.hutool.core.date.DateUtil;
3 import com.alibaba.excel.ExcelReader; 4 import com.alibaba.excel.ExcelReader;
  5 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
4 import org.apache.poi.ss.usermodel.Sheet; 7 import org.apache.poi.ss.usermodel.Sheet;
5 import org.apache.poi.ss.usermodel.Workbook; 8 import org.apache.poi.ss.usermodel.Workbook;
6 import org.apache.poi.ss.usermodel.WorkbookFactory; 9 import org.apache.poi.ss.usermodel.WorkbookFactory;
@@ -11,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
11 import lombok.extern.slf4j.Slf4j; 14 import lombok.extern.slf4j.Slf4j;
12 import org.jeecg.common.system.base.controller.JeecgController; 15 import org.jeecg.common.system.base.controller.JeecgController;
13 import org.jeecg.common.api.vo.Result; 16 import org.jeecg.common.api.vo.Result;
  17 +import org.jeecg.modules.erp.trade.entity.TblTradePriceInquiry;
  18 +import org.jeecg.modules.erp.trade.mapper.TblTradePriceInquiryMapper;
14 import org.jeecg.modules.erp.trade.vo.TblTradeBidSubPage; 19 import org.jeecg.modules.erp.trade.vo.TblTradeBidSubPage;
15 import org.jeecgframework.poi.util.ExcelUtil; 20 import org.jeecgframework.poi.util.ExcelUtil;
16 import org.springframework.beans.BeanUtils; 21 import org.springframework.beans.BeanUtils;
@@ -66,6 +71,10 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender @@ -66,6 +71,10 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
66 private ITblTradeBidSubService tblTradeBidSubService; 71 private ITblTradeBidSubService tblTradeBidSubService;
67 72
68 73
  74 + @Autowired
  75 + private TblTradePriceInquiryMapper tblTradePriceInquiryMapper;
  76 +
  77 +
69 /*---------------------------------主表处理-begin-------------------------------------*/ 78 /*---------------------------------主表处理-begin-------------------------------------*/
70 79
71 /** 80 /**
@@ -185,6 +194,8 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender @@ -185,6 +194,8 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
185 page.setYxdj(yxdj); 194 page.setYxdj(yxdj);
186 page.setXjjhwcsj(xjwcrq); 195 page.setXjjhwcsj(xjwcrq);
187 page.setBdlx(bdlx); 196 page.setBdlx(bdlx);
  197 + // 状态默认询价中
  198 + page.setStatus("1");
188 } 199 }
189 tblTradeTenderInfoService.saveUploadData(list); 200 tblTradeTenderInfoService.saveUploadData(list);
190 return Result.OK("文件导入成功!数据行数:" + list.size()); 201 return Result.OK("文件导入成功!数据行数:" + list.size());
@@ -202,6 +213,40 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender @@ -202,6 +213,40 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
202 return Result.OK("文件导入失败!"); 213 return Result.OK("文件导入失败!");
203 // return super.importExcel(request, response, TblTradeTenderInfo.class); 214 // return super.importExcel(request, response, TblTradeTenderInfo.class);
204 } 215 }
  216 +
  217 + /**
  218 + * 询价提交审批
  219 + * @param tblTradeTenderInfo
  220 + * @return
  221 + */
  222 + @ApiOperation(value="询价提交审批", notes="询价提交审批")
  223 + @PostMapping(value = "/submit")
  224 + public Result<String> submit(@RequestBody TblTradeTenderInfo tblTradeTenderInfo) {
  225 + // 1、修改状态为审批中,状态:1-询价中,2-询价审批中,3-询价审批通过
  226 + tblTradeTenderInfo.setStatus("2");
  227 + tblTradeTenderInfoService.updateById(tblTradeTenderInfo);
  228 +
  229 + // 2、判断此标书的询价是否全部提交,如果全部提交完成,修改询价状态和询价完成时间
  230 + long count = tblTradeTenderInfoService.count(Wrappers.lambdaQuery(TblTradeTenderInfo.class)
  231 + .eq(TblTradeTenderInfo::getStatus, "1"));
  232 + if (count == 0){
  233 + // 状态为询价中的数据没有了,表明全部已提交或审批完成
  234 + LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
  235 + .set(TblTradePriceInquiry::getSjwcrq, DateUtil.today())
  236 + .set(TblTradePriceInquiry::getXdzt, "完成")
  237 + .eq(TblTradePriceInquiry::getXjbswjh, tblTradeTenderInfo.getXjbswjh());
  238 + tblTradePriceInquiryMapper.update(null,updateWrapper);
  239 + }
  240 +
  241 + // 3、更新责任人
  242 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
  243 + System.out.println(loginUser);
  244 + LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
  245 + .set(TblTradePriceInquiry::getZrr, loginUser.getRealname())
  246 + .eq(TblTradePriceInquiry::getXjbswjh, tblTradeTenderInfo.getXjbswjh());
  247 + tblTradePriceInquiryMapper.update(null,updateWrapper);
  248 + return Result.OK("提交成功!");
  249 + }
205 /*---------------------------------主表处理-end-------------------------------------*/ 250 /*---------------------------------主表处理-end-------------------------------------*/
206 251
207 252
@@ -107,10 +107,18 @@ public class TblTradeBidSub implements Serializable { @@ -107,10 +107,18 @@ public class TblTradeBidSub implements Serializable {
107 @Excel(name = "单价差异", width = 15) 107 @Excel(name = "单价差异", width = 15)
108 @ApiModelProperty(value = "单价差异") 108 @ApiModelProperty(value = "单价差异")
109 private java.lang.String djchay; 109 private java.lang.String djchay;
110 - /**数量*/  
111 - @Excel(name = "数量", width = 15)  
112 - @ApiModelProperty(value = "数量") 110 + /**税率(%)*/
  111 + @Excel(name = "税率(%)", width = 15)
  112 + @ApiModelProperty(value = "税率(%)")
113 private java.lang.String sl; 113 private java.lang.String sl;
  114 + /**响应品牌*/
  115 + @Excel(name = "响应品牌", width = 15)
  116 + @ApiModelProperty(value = "响应品牌")
  117 + private java.lang.String xypp;
  118 + /**响应单价*/
  119 + @Excel(name = "响应单价(不含税)", width = 15)
  120 + @ApiModelProperty(value = "响应单价(不含税)")
  121 + private java.lang.String xydj;
114 /**时间*/ 122 /**时间*/
115 @Excel(name = "时间", width = 15) 123 @Excel(name = "时间", width = 15)
116 @ApiModelProperty(value = "时间") 124 @ApiModelProperty(value = "时间")
@@ -262,7 +270,14 @@ public class TblTradeBidSub implements Serializable { @@ -262,7 +270,14 @@ public class TblTradeBidSub implements Serializable {
262 270
263 @TableField(exist = false) 271 @TableField(exist = false)
264 private String xqdw; 272 private String xqdw;
  273 +
  274 + /** 最近中标单价*/
  275 + @TableField(exist = false)
  276 + private String zjzbdj;
265 277
  278 + /** 最后一次中标时间*/
  279 + @TableField(exist = false)
  280 + private String zhzbsj;
266 281
267 282
268 283
@@ -52,5 +52,11 @@ public interface ITblTradeBidSubService extends IService<TblTradeBidSub> { @@ -52,5 +52,11 @@ public interface ITblTradeBidSubService extends IService<TblTradeBidSub> {
52 * @return List<TblTradeBidSub> 52 * @return List<TblTradeBidSub>
53 */ 53 */
54 public List<TblTradeBidSub> selectByMainId(String mainId); 54 public List<TblTradeBidSub> selectByMainId(String mainId);
55 - 55 +
  56 + /**
  57 + * 采购主管审批询价
  58 + * @param tblTradeBidSub
  59 + * @param tblTradeInquiryInfoList
  60 + */
  61 + void inquiryApproval(TblTradeBidSub tblTradeBidSub, List<TblTradeInquiryInfo> tblTradeInquiryInfoList);
56 } 62 }
1 package org.jeecg.modules.erp.trade.service.impl; 1 package org.jeecg.modules.erp.trade.service.impl;
2 2
  3 +import cn.hutool.core.util.StrUtil;
  4 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
3 import org.jeecg.modules.erp.trade.entity.TblTradeBidSub; 6 import org.jeecg.modules.erp.trade.entity.TblTradeBidSub;
4 import org.jeecg.modules.erp.trade.entity.TblTradeInquiryInfo; 7 import org.jeecg.modules.erp.trade.entity.TblTradeInquiryInfo;
  8 +import org.jeecg.modules.erp.trade.entity.TblTradePriceInquiry;
  9 +import org.jeecg.modules.erp.trade.entity.TblTradeTenderInfo;
5 import org.jeecg.modules.erp.trade.mapper.TblTradeInquiryInfoMapper; 10 import org.jeecg.modules.erp.trade.mapper.TblTradeInquiryInfoMapper;
6 import org.jeecg.modules.erp.trade.mapper.TblTradeBidSubMapper; 11 import org.jeecg.modules.erp.trade.mapper.TblTradeBidSubMapper;
  12 +import org.jeecg.modules.erp.trade.mapper.TblTradePriceInquiryMapper;
  13 +import org.jeecg.modules.erp.trade.mapper.TblTradeTenderInfoMapper;
7 import org.jeecg.modules.erp.trade.service.ITblTradeBidSubService; 14 import org.jeecg.modules.erp.trade.service.ITblTradeBidSubService;
8 import org.springframework.stereotype.Service; 15 import org.springframework.stereotype.Service;
9 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 16 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,6 +33,10 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper, @@ -26,6 +33,10 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
26 private TblTradeBidSubMapper tblTradeBidSubMapper; 33 private TblTradeBidSubMapper tblTradeBidSubMapper;
27 @Autowired 34 @Autowired
28 private TblTradeInquiryInfoMapper tblTradeInquiryInfoMapper; 35 private TblTradeInquiryInfoMapper tblTradeInquiryInfoMapper;
  36 + @Autowired
  37 + private TblTradeTenderInfoMapper tblTradeTenderInfoMapper;
  38 + @Autowired
  39 + private TblTradePriceInquiryMapper tblTradePriceInquiryMapper;
29 40
30 @Override 41 @Override
31 @Transactional(rollbackFor = Exception.class) 42 @Transactional(rollbackFor = Exception.class)
@@ -45,8 +56,47 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper, @@ -45,8 +56,47 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
45 public void updateMain(TblTradeBidSub tblTradeBidSub,List<TblTradeInquiryInfo> tblTradeInquiryInfoList) { 56 public void updateMain(TblTradeBidSub tblTradeBidSub,List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
46 tblTradeBidSubMapper.updateById(tblTradeBidSub); 57 tblTradeBidSubMapper.updateById(tblTradeBidSub);
47 58
  59 +
  60 + }
  61 +
  62 + @Override
  63 + public void inquiryApproval(TblTradeBidSub tblTradeBidSub, List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
  64 + // 更新投标参考价,
  65 + LambdaUpdateWrapper<TblTradeBidSub> updateWrapper = Wrappers.lambdaUpdate(TblTradeBidSub.class)
  66 + .set(TblTradeBidSub::getTbjg, tblTradeBidSub.getTbjg())
  67 + .eq(TblTradeBidSub::getId, tblTradeBidSub.getId());
  68 + tblTradeBidSubMapper.update(null,updateWrapper);
  69 +
  70 + // 默认通过
  71 + String status = "3";
  72 + // 更新询价评价,根据是否重新询价修改状态
  73 + if(tblTradeInquiryInfoList!=null && tblTradeInquiryInfoList.size()>0) {
  74 + for(TblTradeInquiryInfo entity:tblTradeInquiryInfoList) {
  75 + tblTradeInquiryInfoMapper.updateById(entity);
  76 + if (StrUtil.equals(entity.getSfxycxxj(),"Y")){
  77 + // 需要重新询价状态改为询价中
  78 + status = "1";
  79 + }
  80 + }
  81 + }
  82 +
  83 + // 更新招标表的状态,状态:1-询价中,2-询价审批中,3-询价审批通过
  84 + LambdaUpdateWrapper<TblTradeTenderInfo> updateWrapper1 = Wrappers.lambdaUpdate(TblTradeTenderInfo.class)
  85 + .set(TblTradeTenderInfo::getStatus, status)
  86 + .eq(TblTradeTenderInfo::getId, tblTradeBidSub.getTradeId());
  87 + tblTradeTenderInfoMapper.update(null,updateWrapper1);
  88 +
  89 + // 如果审批不通过,则要把询价表的实际完成日期清除,询询单状态改为未完成
  90 + if(StrUtil.equals(status,"1")){
  91 + LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper2 = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
  92 + .set(TblTradePriceInquiry::getSjwcrq, "")
  93 + .set(TblTradePriceInquiry::getXdzt, "未完成")
  94 + .eq(TblTradePriceInquiry::getXjbswjh, tblTradeBidSub.getXjbswjh());
  95 + tblTradePriceInquiryMapper.update(null,updateWrapper2);
  96 + }
48 } 97 }
49 98
  99 +
50 @Override 100 @Override
51 @Transactional(rollbackFor = Exception.class) 101 @Transactional(rollbackFor = Exception.class)
52 public void delMain(String id) { 102 public void delMain(String id) {
@@ -67,5 +117,7 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper, @@ -67,5 +117,7 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
67 public List<TblTradeBidSub> selectByMainId(String mainId) { 117 public List<TblTradeBidSub> selectByMainId(String mainId) {
68 return tblTradeBidSubMapper.selectByMainId(mainId); 118 return tblTradeBidSubMapper.selectByMainId(mainId);
69 } 119 }
70 - 120 +
  121 +
  122 +
71 } 123 }
@@ -94,10 +94,18 @@ public class TblTradeBidSubPage { @@ -94,10 +94,18 @@ public class TblTradeBidSubPage {
94 @Excel(name = "单价差异", width = 15) 94 @Excel(name = "单价差异", width = 15)
95 @ApiModelProperty(value = "单价差异") 95 @ApiModelProperty(value = "单价差异")
96 private java.lang.String djchay; 96 private java.lang.String djchay;
97 - /**数量*/  
98 - @Excel(name = "数量", width = 15)  
99 - @ApiModelProperty(value = "数量")  
100 - private java.lang.String sl; 97 + /**税率(%)*/
  98 + @Excel(name = "税率(%)", width = 15)
  99 + @ApiModelProperty(value = "税率(%)")
  100 + private java.lang.String sl;
  101 + /**响应品牌*/
  102 + @Excel(name = "响应品牌", width = 15)
  103 + @ApiModelProperty(value = "响应品牌")
  104 + private java.lang.String xypp;
  105 + /**响应单价*/
  106 + @Excel(name = "响应单价(不含税)", width = 15)
  107 + @ApiModelProperty(value = "响应单价(不含税)")
  108 + private java.lang.String xydj;
101 /**时间*/ 109 /**时间*/
102 @Excel(name = "时间", width = 15) 110 @Excel(name = "时间", width = 15)
103 @ApiModelProperty(value = "时间") 111 @ApiModelProperty(value = "时间")