作者 Win10-2023FDZSZ\Administrator

询价、投标时部分字段的动态取值、投标增加审批功能

... ... @@ -2,6 +2,7 @@ package org.jeecg.modules.erp.trade.controller;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.util.*;
import java.util.stream.Collectors;
... ... @@ -10,8 +11,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.jeecg.modules.erp.trade.entity.*;
import org.jeecg.modules.erp.trade.mapper.TblTradeBidMaterialDetailsMapper;
import org.jeecg.modules.erp.trade.service.*;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.jeecg.modules.erp.trade.entity.TblTradeInventoryIn;
... ... @@ -65,6 +69,10 @@ public class TblTradeBidSubController {
private ITblTradeInventoryInService tblTradeInventoryInService;
@Autowired
private ITblTradePurchaseInfoService tblTradePurchaseInfoService;
@Autowired
private ITblTradeInventoryService tblTradeInventoryService;
@Autowired
private TblTradeBidMaterialDetailsMapper tblTradeBidMaterialDetailsMapper;
/**
* 分页列表查询
... ... @@ -89,12 +97,34 @@ public class TblTradeBidSubController {
IPage <TblTradeBidSub> page = new Page<>();
List<TblTradeBidSub> tblTradeBidSubList = tblTradeBidSubService.list(queryWrapper);
List<TblTradeTenderInfo> tenderInfoList = tblTradeTenderInfoService.list(null);
List<TblTradeInventory> inventoryList = tblTradeInventoryService.list(null);
List<TblTradeBidMaterialDetails> lastBidDataList = tblTradeBidMaterialDetailsMapper.getLastBidData();
tblTradeBidSubList.forEach(e->{
e.setTenderInfo(tenderInfoList.stream().filter(i->StrUtil.equals(i.getId(),e.getTradeId())).findFirst().get());
// 库存数据、在途库存
TblTradeInventory tblTradeInventory = inventoryList.stream()
.filter(i -> StrUtil.equals(i.getMaterialCode(), e.getWlbm())).findFirst().orElse(null);
e.setKcsj(Opt.ofNullable(tblTradeInventory)
.map(TblTradeInventory::getActualInventory).orElse(0).toString());
e.setZtkf(Opt.ofNullable(tblTradeInventory)
.map(TblTradeInventory::getQuantityInTransit).orElse(0).toString());
// 最近中标单价、最后一次中标时间
TblTradeBidMaterialDetails bidMaterialDetails = lastBidDataList.stream()
.filter(i -> StrUtil.equals(i.getMaterialCode(), e.getWlbm())).findFirst().orElse(null);
BigDecimal zjzbdj = Opt.ofNullable(bidMaterialDetails).map(TblTradeBidMaterialDetails::getWinningBidPrice)
.orElse(null);
if (ObjectUtil.isNotNull(zjzbdj)){
e.setZjzbdj(zjzbdj.toPlainString());
}
e.setZhzbsj(Opt.ofNullable(bidMaterialDetails).map(TblTradeBidMaterialDetails::getBidDate)
.orElse(""));
// TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
});
page.setRecords(tblTradeBidSubList);
page.setTotal(tblTradeBidSubList.size());
... ... @@ -484,12 +514,33 @@ public class TblTradeBidSubController {
* @return
*/
@RequestMapping("getBidSubData")
public Result<TblTradeBidSub> getBidSubData(@RequestBody TblTradeBidSub tblTradeBidSub){
public Result<TblTradeBidSub> getBidSubData(@RequestBody TblTradeBidSub tblTradeBidSub) {
TblTradeBidSub data = tblTradeBidSubService.getOne(Wrappers.lambdaQuery(TblTradeBidSub.class)
.eq(TblTradeBidSub::getTradeId, tblTradeBidSub.getTradeId()));
// TODO 获取库存数据、在途库存、最近中标单价、最后一次中标时间
// 获取库存数据、在途库存、最近中标单价、最后一次中标时间
List<TblTradeInventory> inventoryList = tblTradeInventoryService.list(null);
List<TblTradeBidMaterialDetails> lastBidDataList = tblTradeBidMaterialDetailsMapper.getLastBidData();
// 库存数据、在途库存
TblTradeInventory tblTradeInventory = inventoryList.stream()
.filter(e -> StrUtil.equals(e.getMaterialCode(), data.getWlbm())).findFirst().orElse(null);
data.setKcsj(Opt.ofNullable(tblTradeInventory)
.map(TblTradeInventory::getActualInventory).orElse(0).toString());
data.setZtkf(Opt.ofNullable(tblTradeInventory)
.map(TblTradeInventory::getQuantityInTransit).orElse(0).toString());
// 最近中标单价、最后一次中标时间
TblTradeBidMaterialDetails bidMaterialDetails = lastBidDataList.stream()
.filter(e -> StrUtil.equals(e.getMaterialCode(), data.getWlbm())).findFirst().orElse(null);
BigDecimal zjzbdj = Opt.ofNullable(bidMaterialDetails).map(TblTradeBidMaterialDetails::getWinningBidPrice)
.orElse(null);
if (ObjectUtil.isNotNull(zjzbdj)){
data.setZjzbdj(zjzbdj.toPlainString());
}
data.setZhzbsj(Opt.ofNullable(bidMaterialDetails).map(TblTradeBidMaterialDetails::getBidDate)
.orElse(""));
TblTradeTenderInfo tenderInfo = tblTradeTenderInfoService.getById(tblTradeBidSub.getTradeId());
data.setTenderInfo(tenderInfo);
... ... @@ -499,6 +550,31 @@ public class TblTradeBidSubController {
/**
* 投标主管审批
*
* @param tblTradeBidSubPage
* @return
*/
@AutoLog(value = "投标主管审批")
@ApiOperation(value="投标主管审批", notes="投标主管审批")
@RequestMapping(value = "/bidApproval", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> bidApproval(@RequestBody TblTradeBidSubPage tblTradeBidSubPage) {
TblTradeBidSub tblTradeBidSub = new TblTradeBidSub();
BeanUtils.copyProperties(tblTradeBidSubPage, tblTradeBidSub);
TblTradeBidSub tblTradeBidSubEntity = tblTradeBidSubService.getById(tblTradeBidSub.getId());
if(tblTradeBidSubEntity==null) {
return Result.error("未找到对应数据");
}
// 投标审核状态:0-询价中、1-询价完成、2-投标待审核、3-投标审核完成
tblTradeBidSub.setStatus("3");
tblTradeBidSubService.updateById(tblTradeBidSub);
return Result.OK("审批成功!");
}
/**
* 获取本次投标信息
*/
@RequestMapping("getBidInfo")
... ...
... ... @@ -256,7 +256,10 @@ public class TblTradeBidSub implements Serializable {
@Excel(name = "需求单位", width = 15)
@ApiModelProperty(value = "需求单位")
private java.lang.String zbxqdw;
/**投标状态*/
@Excel(name = "投标状态", width = 15)
@ApiModelProperty(value = "投标状态")
private java.lang.String status;
@TableField(exist = false)
... ...
... ... @@ -20,4 +20,9 @@ public interface TblTradeBidMaterialDetailsMapper extends BaseMapper<TblTradeBid
IPage<Map<String, Object>> pageList(Page<TblTradeBidMaterialDetails> page, @Param("param")TblTradeBidMaterialDetails tradeBidMaterialDetails);
Map<String, Object> getHistoryBidInfo(@Param("materialCode")String materialCode);
/**
* 获取最近一次中标情况
* @return
*/
List<TblTradeBidMaterialDetails> getLastBidData();
}
... ...
... ... @@ -23,6 +23,7 @@
ORDER BY
bid_num;
</select>
<select id="getHistoryBidInfo" resultType="java.util.Map">
SELECT
bid_date AS lastBidDate,
... ... @@ -35,4 +36,12 @@
ORDER BY bid_date DESC
LIMIT 1;
</select>
<select id="getLastBidData" resultType="org.jeecg.modules.erp.trade.entity.TblTradeBidMaterialDetails">
select * from tbl_trade_bid_material_details a
join
(SELECT material_code,max(bid_date) as bid_date FROM `tbl_trade_bid_material_details`
GROUP BY material_code) b
on b.material_code=a.material_code and b.bid_date=a.bid_date
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -54,11 +54,13 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMain(TblTradeBidSub tblTradeBidSub,List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
// 投标审核状态:0-询价中、1-询价完成、2-投标待审核、3-投标审核完成
tblTradeBidSub.setStatus("2");
tblTradeBidSubMapper.updateById(tblTradeBidSub);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void inquiryApproval(TblTradeBidSub tblTradeBidSub, List<TblTradeInquiryInfo> tblTradeInquiryInfoList) {
// 更新投标参考价,
... ... @@ -94,6 +96,13 @@ public class TblTradeBidSubServiceImpl extends ServiceImpl<TblTradeBidSubMapper,
.eq(TblTradePriceInquiry::getXjbswjh, tblTradeBidSub.getXjbswjh());
tblTradePriceInquiryMapper.update(null,updateWrapper2);
}
// 审批通过,更新投标表的状态,投标审核状态:0-询价中、1-询价完成、2-投标待审核、3-投标审核完成
if (StrUtil.equals(status,"3")){
tblTradeBidSubMapper.update(null,Wrappers.lambdaUpdate(TblTradeBidSub.class)
.set(TblTradeBidSub::getStatus, "1")
.eq(TblTradeBidSub::getId, tblTradeBidSub.getId()));
}
}
... ...
... ... @@ -106,6 +106,8 @@ public class TblTradeTenderInfoServiceImpl extends ServiceImpl<TblTradeTenderInf
bidSub.setXjbswjh(e.getXjbswjh());
bidSub.setWlbm(e.getCode());
bidSub.setMiaoshu(e.getMiaoshu());
// 投标审核状态:0-询价中、1-询价完成、2-投标待审核、3-投标审核完成
bidSub.setStatus("0");
bidSubList.add(bidSub);
// 排除掉库里已有的物料
TblTradeMeterial tradeMeterial = meterialList.stream().filter(i -> StrUtil.equals(i.getMeterialCode(), e.getCode()))
... ...
... ... @@ -33,7 +33,7 @@
<ojdbc6.version>11.2.0.3</ojdbc6.version>
<sqljdbc4.version>4.0</sqljdbc4.version>
<mysql-connector-java.version>8.0.27</mysql-connector-java.version>
<hutool.version>5.3.8</hutool.version>
<hutool.version>5.8.26</hutool.version>
<redisson.version>3.16.1</redisson.version>
<commons-beanutils.version>1.9.4</commons-beanutils.version>
<guava.version>29.0-jre</guava.version>
... ...