作者 Win10-2023FDZSZ\Administrator

询价、投标

... ... @@ -13,6 +13,11 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import org.jeecg.modules.erp.trade.entity.*;
import org.jeecg.modules.erp.trade.service.*;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.jeecg.modules.erp.trade.entity.TblTradeInventoryIn;
import org.jeecg.modules.erp.trade.entity.TblTradeTenderInfo;
import org.jeecg.modules.erp.trade.service.ITblTradeInventoryInService;
import org.jeecg.modules.erp.trade.service.ITblTradeTenderInfoService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
... ... @@ -87,6 +92,8 @@ public class TblTradeBidSubController {
tblTradeBidSubList.forEach(e->{
e.setTenderInfo(tenderInfoList.stream().filter(i->StrUtil.equals(i.getId(),e.getTradeId())).findFirst().get());
// TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
});
page.setRecords(tblTradeBidSubList);
page.setTotal(tblTradeBidSubList.size());
... ... @@ -448,4 +455,45 @@ public class TblTradeBidSubController {
return Result.OK("文件导入失败!");
}
/**
* 采购主管审批询价
*
* @param tblTradeBidSubPage
* @return
*/
@AutoLog(value = "采购主管审批询价")
@ApiOperation(value="采购主管审批询价", notes="采购主管审批询价")
@RequestMapping(value = "/inquiryApproval", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> inquiryApproval(@RequestBody TblTradeBidSubPage tblTradeBidSubPage) {
TblTradeBidSub tblTradeBidSub = new TblTradeBidSub();
BeanUtils.copyProperties(tblTradeBidSubPage, tblTradeBidSub);
TblTradeBidSub tblTradeBidSubEntity = tblTradeBidSubService.getById(tblTradeBidSub.getId());
if(tblTradeBidSubEntity==null) {
return Result.error("未找到对应数据");
}
tblTradeBidSubService.inquiryApproval(tblTradeBidSub, tblTradeBidSubPage.getTblTradeInquiryInfoList());
return Result.OK("审批成功!");
}
/**
* 采购主管获取审批数据
*
* @param tblTradeBidSub
* @return
*/
@RequestMapping("getBidSubData")
public Result<TblTradeBidSub> getBidSubData(@RequestBody TblTradeBidSub tblTradeBidSub){
TblTradeBidSub data = tblTradeBidSubService.getOne(Wrappers.lambdaQuery(TblTradeBidSub.class)
.eq(TblTradeBidSub::getTradeId, tblTradeBidSub.getTradeId()));
// TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
TblTradeTenderInfo tenderInfo = tblTradeTenderInfoService.getById(tblTradeBidSub.getTradeId());
data.setTenderInfo(tenderInfo);
return Result.OK(data);
}
}
... ...
package org.jeecg.modules.erp.trade.controller;
import cn.hutool.core.date.DateUtil;
import com.alibaba.excel.ExcelReader;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
... ... @@ -11,6 +14,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.erp.trade.entity.TblTradePriceInquiry;
import org.jeecg.modules.erp.trade.mapper.TblTradePriceInquiryMapper;
import org.jeecg.modules.erp.trade.vo.TblTradeBidSubPage;
import org.jeecgframework.poi.util.ExcelUtil;
import org.springframework.beans.BeanUtils;
... ... @@ -66,6 +71,10 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
private ITblTradeBidSubService tblTradeBidSubService;
@Autowired
private TblTradePriceInquiryMapper tblTradePriceInquiryMapper;
/*---------------------------------主表处理-begin-------------------------------------*/
/**
... ... @@ -185,6 +194,8 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
page.setYxdj(yxdj);
page.setXjjhwcsj(xjwcrq);
page.setBdlx(bdlx);
// 状态默认询价中
page.setStatus("1");
}
tblTradeTenderInfoService.saveUploadData(list);
return Result.OK("文件导入成功!数据行数:" + list.size());
... ... @@ -202,6 +213,40 @@ public class TblTradeTenderInfoController extends JeecgController<TblTradeTender
return Result.OK("文件导入失败!");
// return super.importExcel(request, response, TblTradeTenderInfo.class);
}
/**
* 询价提交审批
* @param tblTradeTenderInfo
* @return
*/
@ApiOperation(value="询价提交审批", notes="询价提交审批")
@PostMapping(value = "/submit")
public Result<String> submit(@RequestBody TblTradeTenderInfo tblTradeTenderInfo) {
// 1、修改状态为审批中,状态:1-询价中,2-询价审批中,3-询价审批通过
tblTradeTenderInfo.setStatus("2");
tblTradeTenderInfoService.updateById(tblTradeTenderInfo);
// 2、判断此标书的询价是否全部提交,如果全部提交完成,修改询价状态和询价完成时间
long count = tblTradeTenderInfoService.count(Wrappers.lambdaQuery(TblTradeTenderInfo.class)
.eq(TblTradeTenderInfo::getStatus, "1"));
if (count == 0){
// 状态为询价中的数据没有了,表明全部已提交或审批完成
LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
.set(TblTradePriceInquiry::getSjwcrq, DateUtil.today())
.set(TblTradePriceInquiry::getXdzt, "完成")
.eq(TblTradePriceInquiry::getXjbswjh, tblTradeTenderInfo.getXjbswjh());
tblTradePriceInquiryMapper.update(null,updateWrapper);
}
// 3、更新责任人
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
System.out.println(loginUser);
LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
.set(TblTradePriceInquiry::getZrr, loginUser.getRealname())
.eq(TblTradePriceInquiry::getXjbswjh, tblTradeTenderInfo.getXjbswjh());
tblTradePriceInquiryMapper.update(null,updateWrapper);
return Result.OK("提交成功!");
}
/*---------------------------------主表处理-end-------------------------------------*/
... ...
... ... @@ -107,10 +107,18 @@ public class TblTradeBidSub implements Serializable {
@Excel(name = "单价差异", width = 15)
@ApiModelProperty(value = "单价差异")
private java.lang.String djchay;
/**数量*/
@Excel(name = "数量", width = 15)
@ApiModelProperty(value = "数量")
/**税率(%)*/
@Excel(name = "税率(%)", width = 15)
@ApiModelProperty(value = "税率(%)")
private java.lang.String sl;
/**响应品牌*/
@Excel(name = "响应品牌", width = 15)
@ApiModelProperty(value = "响应品牌")
private java.lang.String xypp;
/**响应单价*/
@Excel(name = "响应单价(不含税)", width = 15)
@ApiModelProperty(value = "响应单价(不含税)")
private java.lang.String xydj;
/**时间*/
@Excel(name = "时间", width = 15)
@ApiModelProperty(value = "时间")
... ... @@ -263,6 +271,13 @@ public class TblTradeBidSub implements Serializable {
@TableField(exist = false)
private String xqdw;
/** 最近中标单价*/
@TableField(exist = false)
private String zjzbdj;
/** 最后一次中标时间*/
@TableField(exist = false)
private String zhzbsj;
... ...
... ... @@ -53,4 +53,10 @@ public interface ITblTradeBidSubService extends IService<TblTradeBidSub> {
*/
public List<TblTradeBidSub> selectByMainId(String mainId);
/**
* 采购主管审批询价
* @param tblTradeBidSub
* @param tblTradeInquiryInfoList
*/
void inquiryApproval(TblTradeBidSub tblTradeBidSub, List<TblTradeInquiryInfo> tblTradeInquiryInfoList);
}
... ...
package org.jeecg.modules.erp.trade.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.jeecg.modules.erp.trade.entity.TblTradeBidSub;
import org.jeecg.modules.erp.trade.entity.TblTradeInquiryInfo;
import org.jeecg.modules.erp.trade.entity.TblTradePriceInquiry;
import org.jeecg.modules.erp.trade.entity.TblTradeTenderInfo;
import org.jeecg.modules.erp.trade.mapper.TblTradeInquiryInfoMapper;
import org.jeecg.modules.erp.trade.mapper.TblTradeBidSubMapper;
import org.jeecg.modules.erp.trade.mapper.TblTradePriceInquiryMapper;
import org.jeecg.modules.erp.trade.mapper.TblTradeTenderInfoMapper;
import org.jeecg.modules.erp.trade.service.ITblTradeBidSubService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
... ... @@ -26,6 +33,10 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
private TblTradeBidSubMapper tblTradeBidSubMapper;
@Autowired
private TblTradeInquiryInfoMapper tblTradeInquiryInfoMapper;
@Autowired
private TblTradeTenderInfoMapper tblTradeTenderInfoMapper;
@Autowired
private TblTradePriceInquiryMapper tblTradePriceInquiryMapper;
@Override
@Transactional(rollbackFor = Exception.class)
... ... @@ -45,7 +56,46 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
public void updateMain(TblTradeBidSub tblTradeBidSub,List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
tblTradeBidSubMapper.updateById(tblTradeBidSub);
}
@Override
public void inquiryApproval(TblTradeBidSub tblTradeBidSub, List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
// 更新投标参考价,
LambdaUpdateWrapper<TblTradeBidSub> updateWrapper = Wrappers.lambdaUpdate(TblTradeBidSub.class)
.set(TblTradeBidSub::getTbjg, tblTradeBidSub.getTbjg())
.eq(TblTradeBidSub::getId, tblTradeBidSub.getId());
tblTradeBidSubMapper.update(null,updateWrapper);
// 默认通过
String status = "3";
// 更新询价评价,根据是否重新询价修改状态
if(tblTradeInquiryInfoList!=null && tblTradeInquiryInfoList.size()>0) {
for(TblTradeInquiryInfo entity:tblTradeInquiryInfoList) {
tblTradeInquiryInfoMapper.updateById(entity);
if (StrUtil.equals(entity.getSfxycxxj(),"Y")){
// 需要重新询价状态改为询价中
status = "1";
}
}
}
// 更新招标表的状态,状态:1-询价中,2-询价审批中,3-询价审批通过
LambdaUpdateWrapper<TblTradeTenderInfo> updateWrapper1 = Wrappers.lambdaUpdate(TblTradeTenderInfo.class)
.set(TblTradeTenderInfo::getStatus, status)
.eq(TblTradeTenderInfo::getId, tblTradeBidSub.getTradeId());
tblTradeTenderInfoMapper.update(null,updateWrapper1);
// 如果审批不通过,则要把询价表的实际完成日期清除,询询单状态改为未完成
if(StrUtil.equals(status,"1")){
LambdaUpdateWrapper<TblTradePriceInquiry> updateWrapper2 = Wrappers.lambdaUpdate(TblTradePriceInquiry.class)
.set(TblTradePriceInquiry::getSjwcrq, "")
.set(TblTradePriceInquiry::getXdzt, "未完成")
.eq(TblTradePriceInquiry::getXjbswjh, tblTradeBidSub.getXjbswjh());
tblTradePriceInquiryMapper.update(null,updateWrapper2);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
... ... @@ -68,4 +118,6 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
return tblTradeBidSubMapper.selectByMainId(mainId);
}
}
... ...
... ... @@ -94,10 +94,18 @@ public class TblTradeBidSubPage {
@Excel(name = "单价差异", width = 15)
@ApiModelProperty(value = "单价差异")
private java.lang.String djchay;
/**数量*/
@Excel(name = "数量", width = 15)
@ApiModelProperty(value = "数量")
/**税率(%)*/
@Excel(name = "税率(%)", width = 15)
@ApiModelProperty(value = "税率(%)")
private java.lang.String sl;
/**响应品牌*/
@Excel(name = "响应品牌", width = 15)
@ApiModelProperty(value = "响应品牌")
private java.lang.String xypp;
/**响应单价*/
@Excel(name = "响应单价(不含税)", width = 15)
@ApiModelProperty(value = "响应单价(不含税)")
private java.lang.String xydj;
/**时间*/
@Excel(name = "时间", width = 15)
@ApiModelProperty(value = "时间")
... ...