|
|
@@ -4,19 +4,20 @@ import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.google.common.collect.Sets;
|
|
|
import com.sckw.contract.dao.KwcContractTradeMapper;
|
|
|
import com.sckw.contract.model.dto.req.QueryListReqDto;
|
|
|
import com.sckw.contract.model.dto.res.QueryListResDto;
|
|
|
-import com.sckw.contract.model.entity.KwcContractTrade;
|
|
|
-import com.sckw.contract.model.entity.KwcContractTradeGoods;
|
|
|
-import com.sckw.contract.model.entity.KwcContractTradeUnit;
|
|
|
+import com.sckw.contract.model.entity.*;
|
|
|
import com.sckw.contract.model.report.TradeListExport;
|
|
|
import com.sckw.contract.model.vo.req.*;
|
|
|
import com.sckw.contract.model.vo.res.*;
|
|
|
-import com.sckw.contract.repository.KwcContractTradeGoodsRepository;
|
|
|
+import com.sckw.contract.repository.*;
|
|
|
import com.sckw.contract.service.CommonBusinessService;
|
|
|
import com.sckw.contract.service.KwcContractTradeGoodsService;
|
|
|
import com.sckw.contract.service.KwcContractTradeTrackService;
|
|
|
@@ -26,10 +27,7 @@ import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
import com.sckw.core.exception.BusinessException;
|
|
|
import com.sckw.core.exception.SystemException;
|
|
|
import com.sckw.core.model.constant.Global;
|
|
|
-import com.sckw.core.model.enums.ContractStatusEnum;
|
|
|
-import com.sckw.core.model.enums.ContractTrackEnum;
|
|
|
-import com.sckw.core.model.enums.CooperateTypeEnum;
|
|
|
-import com.sckw.core.model.enums.EntTypeEnum;
|
|
|
+import com.sckw.core.model.enums.*;
|
|
|
import com.sckw.core.model.page.PageHelperUtil;
|
|
|
import com.sckw.core.model.page.PageResult;
|
|
|
import com.sckw.core.utils.*;
|
|
|
@@ -39,27 +37,30 @@ import com.sckw.core.web.response.result.PageDataResult;
|
|
|
import com.sckw.excel.utils.ExcelUtil;
|
|
|
import com.sckw.order.api.dubbo.TradeOrderInfoService;
|
|
|
import com.sckw.order.api.model.ContractSignCompletedParam;
|
|
|
+import com.sckw.order.api.model.OrderDetailVo;
|
|
|
import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
import com.sckw.stream.enums.MessageEnum;
|
|
|
import com.sckw.stream.model.UserInfo;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.RemoteUserService;
|
|
|
-import com.sckw.system.api.model.dto.res.EntCacheResDto;
|
|
|
-import com.sckw.system.api.model.dto.res.KwsUserResDto;
|
|
|
-import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
|
-import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
+import com.sckw.system.api.model.dto.res.*;
|
|
|
+import com.sckw.transport.api.dubbo.TransportRemoteService;
|
|
|
+import com.sckw.transport.api.model.vo.RWaybillSubOrderVo;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import jakarta.validation.Valid;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -91,6 +92,11 @@ public class KwcContractTradeService {
|
|
|
private CommonBusinessService commonBusinessService;
|
|
|
|
|
|
private final KwcContractTradeGoodsRepository kwcContractTradeGoodsRepository;
|
|
|
+ private final KwcContractTradeRepository kwcContractTradeRepository;
|
|
|
+ private final KwcContractTradeUnitRepository kwcContractTradeUnitRepository;
|
|
|
+ private final KwcContractTradeOrderRepository kwcContractTradeOrderRepository;
|
|
|
+ private final KwcContractLogisticsUnitRepository kwcContractLogisticsUnitRepository;
|
|
|
+ private final KwcContractLogisticsGoodsRepository kwcContractLogisticsGoodsRepository;
|
|
|
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private RemoteSystemService remoteSystemService;
|
|
|
@@ -103,6 +109,8 @@ public class KwcContractTradeService {
|
|
|
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private TradeOrderInfoService tradeOrderInfoService;
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
|
|
|
+ private TransportRemoteService transportRemoteService;
|
|
|
|
|
|
/**销售合同*/
|
|
|
@Value(value = "${jumpUrl.saleSendContract}")
|
|
|
@@ -175,7 +183,17 @@ public class KwcContractTradeService {
|
|
|
return PageHelperUtil.getPageResult(new PageInfo<>());
|
|
|
}
|
|
|
|
|
|
- List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
|
|
|
+ //获取贸易合同id
|
|
|
+ Set<Long> tradeContractIds =
|
|
|
+ queryListResDtos.stream().map(QueryListResDto::getId).collect(Collectors.toSet());
|
|
|
+ //查询贸易合同关联商品
|
|
|
+ List<KwcContractTradeGoods> tradeContractGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
|
|
|
+ Map<Long, List<KwcContractTradeGoods>> contractIdGoodsIdKeyAndGoodsMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeContractGoods)){
|
|
|
+ contractIdGoodsIdKeyAndGoodsMap =
|
|
|
+ tradeContractGoods.stream().collect(Collectors.groupingBy(KwcContractTradeGoods::getContractId));
|
|
|
+ }
|
|
|
+ List<QueryListResVo> list = getQueryListResVos(queryListResDtos, contractIdGoodsIdKeyAndGoodsMap);
|
|
|
return PageHelperUtil.getPageResult(new PageInfo<>(list), queryListResDtos, reqVo.getPageSize());
|
|
|
}
|
|
|
|
|
|
@@ -187,7 +205,7 @@ public class KwcContractTradeService {
|
|
|
* @author: czh
|
|
|
* @date: 2023/7/18
|
|
|
*/
|
|
|
- private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos) {
|
|
|
+ private List<QueryListResVo> getQueryListResVos(List<QueryListResDto> queryListResDtos,Map<Long, List<KwcContractTradeGoods>> contractIdGoodsIdKeyAndGoodsMap ) {
|
|
|
Map<Long, UserCacheResDto> longUserCacheResDtoMap = new HashMap<>(8);
|
|
|
List<Long> initiateByList = queryListResDtos.stream().map(QueryListResDto::getInitiateBy).toList();
|
|
|
if (CollectionUtils.isNotEmpty(initiateByList)) {
|
|
|
@@ -220,10 +238,22 @@ public class KwcContractTradeService {
|
|
|
queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(), queryListResDto.getSigningWay()));
|
|
|
queryListResVo.setSigningWay(String.valueOf(queryListResDto.getSigningWay()));
|
|
|
queryListResVo.setUnloadWay(String.valueOf(queryListResDto.getUnloadWay()));
|
|
|
- queryListResVo.setUnloadWayName(DictEnum.getLabel(String.valueOf(queryListResDto.getUnloadWay())));
|
|
|
+ queryListResVo.setUnloadWayName(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
+ String.valueOf(queryListResDto.getUnloadWay())));
|
|
|
queryListResVo.setAmount(queryListResDto.getAmount());
|
|
|
queryListResVo.setPerformedAmount(queryListResDto.getPerformedAmount());
|
|
|
-
|
|
|
+ BigDecimal performedAmountMoney = BigDecimal.ZERO;
|
|
|
+ if(MapUtils.isNotEmpty(contractIdGoodsIdKeyAndGoodsMap)) {
|
|
|
+ List<KwcContractTradeGoods> contractTradeGoods = contractIdGoodsIdKeyAndGoodsMap.get(queryListResDto.getId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractTradeGoods)){
|
|
|
+ for (KwcContractTradeGoods goods : contractTradeGoods) {
|
|
|
+ BigDecimal performedAmount = goods.getPerformedAmount() != null ? goods.getPerformedAmount() : BigDecimal.ZERO;
|
|
|
+ BigDecimal price = goods.getPrice() != null ? goods.getPrice() : BigDecimal.ZERO;
|
|
|
+ performedAmountMoney = performedAmountMoney.add(performedAmount.multiply(price));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ queryListResVo.setPerformedAmountMoney( performedAmountMoney);
|
|
|
if(Objects.nonNull(queryListResVo.getEndTime())) {
|
|
|
queryListResVo.setEndTime(DateUtils.getStartOfDay(queryListResVo.getEndTime()));
|
|
|
}
|
|
|
@@ -250,14 +280,14 @@ public class KwcContractTradeService {
|
|
|
KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPid());
|
|
|
long contactId = new IdWorker(1L).nextId();
|
|
|
kwcContractTrade.setId(contactId);
|
|
|
- kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
- kwcContractTrade.setSigningUrl(changeFile(reqVo.getContractFile()));
|
|
|
+ kwcContractTrade.setStatus(ContractStatusEnum.WAIT_APPROVE.getCode());
|
|
|
+ // kwcContractTrade.setSigningUrl(changeFile(reqVo.getContractFile()));
|
|
|
if (kwcContractTradeMapper.insert(kwcContractTrade) <= 0) {
|
|
|
throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
|
|
|
}
|
|
|
|
|
|
//保存交易合同商品信息
|
|
|
- kwcContractTradeGoodsService.saveContractTradeGoods(contactId, goodsInfoList);
|
|
|
+ kwcContractTradeGoodsService.saveContractTradeGoods(contactId, goodsInfoList,baseInfo.getStartTime(),baseInfo.getEndTime());
|
|
|
|
|
|
//存单位信息
|
|
|
kwcContractTradeUnitService.saveContractTradeUnit(contactId, baseInfo);
|
|
|
@@ -720,7 +750,8 @@ public class KwcContractTradeService {
|
|
|
throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
|
|
|
}
|
|
|
}
|
|
|
- kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo());
|
|
|
+ kwcContractTradeGoodsService.saveContractTradeGoods(kwcContractTrade.getId(), reqVo.getGoodsInfo(),
|
|
|
+ baseInfo.getStartTime(), baseInfo.getEndTime());
|
|
|
|
|
|
//保存单位信息-先把以前的删除
|
|
|
List<KwcContractTradeUnit> kwcContractTradeUnits = kwcContractTradeUnitService.queryByContractId(contractId);
|
|
|
@@ -857,7 +888,7 @@ public class KwcContractTradeService {
|
|
|
throw new SystemException(HttpStatus.SUCCESS_CODE, "暂无数据,请确认!");
|
|
|
}
|
|
|
|
|
|
- List<QueryListResVo> list = getQueryListResVos(queryListResDtos);
|
|
|
+ List<QueryListResVo> list = getQueryListResVos(queryListResDtos,null);
|
|
|
List<TradeListExport> dataList = BeanUtils.copyToList(list, TradeListExport.class);
|
|
|
ExcelUtil.downData(response, TradeListExport.class, dataList);
|
|
|
}
|
|
|
@@ -878,7 +909,7 @@ public class KwcContractTradeService {
|
|
|
if (CollectionUtils.isEmpty(queryListResDtos)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
- return getQueryListResVos(queryListResDtos);
|
|
|
+ return getQueryListResVos(queryListResDtos,null);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1093,31 +1124,98 @@ public class KwcContractTradeService {
|
|
|
//校验标的信息是否有重复
|
|
|
checkParams(req);
|
|
|
//保存补充合同
|
|
|
- saveTradeContract(req);
|
|
|
+ long contactId = new IdWorker(1L).nextId();
|
|
|
+ saveTradeContract(req, contactId);
|
|
|
|
|
|
//获取商品id
|
|
|
List<Long> goodsIds = req.getGoodsInfo()
|
|
|
.stream()
|
|
|
.map(SupplyContractTradeReq.TradeGoodsInfo::getGoodsId)
|
|
|
.collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ //根据父id查询补充合同id
|
|
|
+ List<KwcContractTrade> kwcContractTrades = kwcContractTradeRepository.queryByPid(req.getPid());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(kwcContractTrades)){
|
|
|
+ throw new BusinessException("没有补充合同");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取合同id
|
|
|
+ Set<Long> contractIds = kwcContractTrades.stream()
|
|
|
+ .map(KwcContractTrade::getId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ contractIds.add(req.getPid());
|
|
|
+ //查询标的信息
|
|
|
//根据商品id查询标的信息和主合同
|
|
|
List<KwcContractTradeGoods> kwcContractTradeGoods =
|
|
|
- kwcContractTradeGoodsRepository.queryByConTractIdGoodsIds(req.getPid(),goodsIds);
|
|
|
+ kwcContractTradeGoodsRepository.queryByConTractIdsGoodsIds(contractIds,goodsIds);
|
|
|
+ //商品id映射商品信息(排除主合同查看是否存在补充合同的商品信息)
|
|
|
+ Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap = kwcContractTradeGoods.stream()
|
|
|
+ .filter(x -> !Objects.equals(x.getContractId(), req.getPid()))
|
|
|
+ .collect(Collectors.toMap(KwcContractTradeGoods::getGoodsId, Function.identity(), (x, y) -> x));
|
|
|
+ //过滤主合同查看的标信息 , 合同id商品id组成唯一key映射商品信息
|
|
|
+ Map<String, KwcContractTradeGoods> contractTradeKeyAndGoodsMap =
|
|
|
+ kwcContractTradeGoods.stream().filter(x -> Objects.equals(x.getContractId(), req.getPid()))
|
|
|
+ .peek(x -> x.setContractIdGoodsIdKey(x.getContractId() + "-" + x.getGoodsId()))
|
|
|
+ .collect(Collectors.toMap(KwcContractTradeGoods::getContractIdGoodsIdKey, Function.identity(), (x, y) -> x));
|
|
|
+
|
|
|
//商品id映射交易商品信息
|
|
|
- Map<Long, KwcContractTradeGoods> goodsIdAndCtgMap = kwcContractTradeGoods.stream()
|
|
|
- .collect(Collectors.toMap(KwcContractTradeGoods::getGoodsId, Function.identity(), (a, b) -> a));
|
|
|
- List<KwcContractTradeGoods> tradeGoodsList = Lists.newArrayList();
|
|
|
- req.getGoodsInfo().forEach(x->{
|
|
|
- KwcContractTradeGoods tradeGoods = goodsIdAndCtgMap.getOrDefault(x.getGoodsId(),new KwcContractTradeGoods());
|
|
|
- // cxdf todo 补充合同的逻辑
|
|
|
-// if (tradeGoods){
|
|
|
-//
|
|
|
-// }
|
|
|
+ List<KwcContractTradeGoods> saveOrUpdateTradeGoods = Lists.newArrayList();
|
|
|
+ req.getGoodsInfo().forEach(g -> {
|
|
|
+ KwcContractTradeGoods tradeGoods = goodsIdAndGoodsMap.get(g.getGoodsId());
|
|
|
+ if (Objects.isNull(tradeGoods)){
|
|
|
+ //作为新增对象
|
|
|
+ buildTradeGoods(req, g, contractTradeKeyAndGoodsMap, saveOrUpdateTradeGoods,contactId);
|
|
|
+
|
|
|
+ }else {
|
|
|
+ //如果不为空判断时间是否重叠 存在则报错
|
|
|
+ if (g.getEffectiveStartTime().after(tradeGoods.getStartTime()) && g.getEffectiveStartTime().before(tradeGoods.getEndTime())
|
|
|
+ || (g.getEffectiveEntTime().after(tradeGoods.getStartTime()) && g.getEffectiveEntTime().before(tradeGoods.getEndTime()))){
|
|
|
+ throw new BusinessException("商品:"+g.getGoodsName() +"时间重叠,只有先结束之前的补充合同,才能进行创建;");
|
|
|
+ }
|
|
|
+ buildTradeGoods(req, g, contractTradeKeyAndGoodsMap, saveOrUpdateTradeGoods,contactId);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
+ kwcContractTradeGoodsRepository.saveOrUpdateBatch(saveOrUpdateTradeGoods);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void buildTradeGoods(SupplyContractTradeReq req, SupplyContractTradeReq.TradeGoodsInfo g,
|
|
|
+ Map<String, KwcContractTradeGoods> contractTradeKeyAndGoodsMap,
|
|
|
+ List<KwcContractTradeGoods> saveTradeGoods,long contactId) {
|
|
|
+ Long userId = LoginUserHolder.getUserId();
|
|
|
+ Date date = new Date();
|
|
|
+ KwcContractTradeGoods saveSupplyTradeGoods = new KwcContractTradeGoods();
|
|
|
+ saveSupplyTradeGoods.setContractId(contactId);
|
|
|
+ saveSupplyTradeGoods.setGoodsId(g.getGoodsId());
|
|
|
+ saveSupplyTradeGoods.setSkuId(0L);
|
|
|
+ saveSupplyTradeGoods.setAmount(g.getAmount());
|
|
|
+ saveSupplyTradeGoods.setUnit(g.getUnit());
|
|
|
+ saveSupplyTradeGoods.setPrice(g.getPrice());
|
|
|
+ saveSupplyTradeGoods.setPerformedAmount(new BigDecimal("0"));
|
|
|
+ saveSupplyTradeGoods.setStatus(Global.NO);
|
|
|
+ saveSupplyTradeGoods.setCreateBy(userId);
|
|
|
+ saveSupplyTradeGoods.setCreateTime(date);
|
|
|
+ saveSupplyTradeGoods.setUpdateBy(userId);
|
|
|
+ saveSupplyTradeGoods.setUpdateTime(date);
|
|
|
+ saveSupplyTradeGoods.setDelFlag(Global.NO);
|
|
|
+ saveSupplyTradeGoods.setStartTime(g.getEffectiveStartTime());
|
|
|
+ saveSupplyTradeGoods.setEndTime(g.getEffectiveEntTime());
|
|
|
+ //修改主合同商品数量
|
|
|
+
|
|
|
+ KwcContractTradeGoods tradeGoodsData =
|
|
|
+ contractTradeKeyAndGoodsMap.get(req.getPid() + "-" + g.getGoodsId());
|
|
|
+ if (Objects.nonNull(tradeGoodsData)){
|
|
|
+ KwcContractTradeGoods mainTradeGoods = new KwcContractTradeGoods();
|
|
|
+ mainTradeGoods.setId(tradeGoodsData.getId());
|
|
|
+ mainTradeGoods.setPrice(g.getPrice());
|
|
|
+ mainTradeGoods.setAmount(g.getAmount());
|
|
|
+ saveTradeGoods.add(mainTradeGoods);
|
|
|
+ }
|
|
|
+ saveTradeGoods.add(saveSupplyTradeGoods);
|
|
|
}
|
|
|
|
|
|
- private void saveTradeContract(SupplyContractTradeReq req) {
|
|
|
+ private void saveTradeContract(SupplyContractTradeReq req,long contactId) {
|
|
|
SupplyContractTradeReq.TradeBaseInfo baseInfo = req.getBaseInfo();
|
|
|
List<SupplyContractTradeReq.TradeGoodsInfo> goodsInfo = req.getGoodsInfo();
|
|
|
Date date = new Date();
|
|
|
@@ -1157,7 +1255,6 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
kwcContractTrade.setAmount(amountTotal);
|
|
|
|
|
|
- long contactId = new IdWorker(1L).nextId();
|
|
|
kwcContractTrade.setId(contactId);
|
|
|
kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
kwcContractTrade.setSigningUrl(changeFile(req.getContractFile()));
|
|
|
@@ -1206,4 +1303,392 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+ public Boolean updateStatus(@Valid ApprovalReq req) {
|
|
|
+ log.info("修改合同状态,请求参数 :{}", JSON.toJSONString(req));
|
|
|
+ //查询本地商品合同信息
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeRepository.queryByContractId(Long.valueOf(req.getContractId()));
|
|
|
+ if (Objects.isNull(kwcContractTrade)) {
|
|
|
+ throw new BusinessException("合同不存在");
|
|
|
+ }
|
|
|
+ //创建修改对象
|
|
|
+ KwcContractTrade updateKwcContractTrade = new KwcContractTrade();
|
|
|
+ updateKwcContractTrade.setId(kwcContractTrade.getId());
|
|
|
+ updateKwcContractTrade.setRemark(req.getRemark());
|
|
|
+ //审核 审核后变成待签约
|
|
|
+ if (Objects.equals(req.getStatus(), ContractStatusEnum.SUBMIT.getCode()) && Objects.equals(kwcContractTrade.getStatus(), ContractStatusEnum.WAIT_APPROVE.getCode())) {
|
|
|
+ updateKwcContractTrade.setStatus(ContractStatusEnum.SUBMIT.getCode());
|
|
|
+ }
|
|
|
+ //审核拒绝 (状态由待审核变成已作废)
|
|
|
+ if (Objects.equals(req.getStatus(), ContractStatusEnum.CANNEL.getCode())
|
|
|
+ && Arrays.asList(ContractStatusEnum.WAIT_APPROVE.getCode(), ContractStatusEnum.SUBMIT.getCode()).contains(kwcContractTrade.getStatus())) {
|
|
|
+ updateKwcContractTrade.setStatus(ContractStatusEnum.CANNEL.getCode());
|
|
|
+ }
|
|
|
+ //签约 (状态由带签约变成签约)
|
|
|
+ if (Objects.equals(req.getStatus(), ContractStatusEnum.SIGNED.getCode()) && Objects.equals(kwcContractTrade.getStatus(), ContractStatusEnum.SUBMIT.getCode())) {
|
|
|
+ updateKwcContractTrade.setStatus(ContractStatusEnum.SIGNED.getCode());
|
|
|
+ }
|
|
|
+ //手动完结 (如果不传状态就表示手动完结) 如果当前状态是待签约或者待签约 那么变为作废
|
|
|
+ if (Objects.equals(req.getStatus(),ContractStatusEnum.CANNEL.getCode()) && Arrays.asList(ContractStatusEnum.WAIT_APPROVE.getCode(),
|
|
|
+ ContractStatusEnum.SUBMIT.getCode()).contains(kwcContractTrade.getStatus())){
|
|
|
+ updateKwcContractTrade.setStatus(ContractStatusEnum.CANNEL.getCode());
|
|
|
+ }
|
|
|
+ //手动完结 如果当前的状态是已经签约,订单变成已完结
|
|
|
+ if (Objects.equals(req.getStatus(),ContractStatusEnum.CANNEL.getCode()) && Objects.equals(kwcContractTrade.getStatus(),
|
|
|
+ ContractStatusEnum.SIGNED.getCode())){
|
|
|
+ updateKwcContractTrade.setStatus(ContractStatusEnum.COMPLETE.getCode());
|
|
|
+ }
|
|
|
+ return kwcContractTradeRepository.updateByContractId(updateKwcContractTrade);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public ContractDetailResp queryContractDetail(@Valid ContractDetailReq req) {
|
|
|
+ log.info("查询合同详情,请求参数 :{}", JSON.toJSONString(req));
|
|
|
+ //查询本地商品合同信息
|
|
|
+ KwcContractTrade kwcContractTrade = kwcContractTradeRepository.queryByContractId(Long.valueOf(req.getContractId()));
|
|
|
+ if (Objects.isNull(kwcContractTrade)) {
|
|
|
+ return new ContractDetailResp();
|
|
|
+ }
|
|
|
+ //根据订单号查询交易企业信息
|
|
|
+ List<KwcContractTradeUnit> tradeUnits = kwcContractTradeUnitRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeUnits)){
|
|
|
+ return new ContractDetailResp();
|
|
|
+ }
|
|
|
+ //安装合同id和单位类型组合成key映射公司对象
|
|
|
+ Map<String, KwcContractTradeUnit> ctTypeKeyAndUnitMap = tradeUnits.stream()
|
|
|
+ .peek(t -> t.setContractIdUniTypeKey(t.getContractId() + "-" + t.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwcContractTradeUnit::getContractIdUniTypeKey, Function.identity(),
|
|
|
+ (v1, v2) -> v1));
|
|
|
+
|
|
|
+ //查询商品合同
|
|
|
+ List<KwcContractTradeGoods> tradeGoods = kwcContractTradeGoodsRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
+ List<Long> goodsIds = Lists.newArrayList();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeGoods)){
|
|
|
+ //获取商品id
|
|
|
+ goodsIds = tradeGoods.stream()
|
|
|
+ .map(KwcContractTradeGoods::getGoodsId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ }
|
|
|
+ //查询商品 商品id映射商品
|
|
|
+ Map<Long, KwpGoods> goodsIdAndGoodsMap = Maps.newHashMap();
|
|
|
+ if (CollectionUtils.isNotEmpty(goodsIds)){
|
|
|
+ goodsIdAndGoodsMap = goodsInfoService.getGoodsByIds(goodsIds);
|
|
|
+
|
|
|
+ }
|
|
|
+ //查询贸易订单
|
|
|
+ KwcContractTradeOrder kwcContractTradeOrder =
|
|
|
+ kwcContractTradeOrderRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
+
|
|
|
+ //根据贸易订单号查询贸易订单信息
|
|
|
+ OrderDetailVo orderDetailVo = tradeOrderInfoService.queryByTradeOrderId(kwcContractTrade.getId());
|
|
|
+ //查询运单信息
|
|
|
+ List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(Set.of(kwcContractTrade.getId()));
|
|
|
+ Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
|
|
|
+ tradeOrderIdAndSubOrderVoMap =
|
|
|
+ rWaybillSubOrderVos.stream().collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询物流合同
|
|
|
+ List<KwcContractLogisticsUnit> kwcContractLogisticsUnits = kwcContractLogisticsUnitRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
+ //合同id和单位类型组合成key映射物流对象
|
|
|
+ Map<String, KwcContractLogisticsUnit> contractIdUnitTypeKeyAndUnitMap = kwcContractLogisticsUnits.stream()
|
|
|
+ .peek(x -> x.setContractIdUnitTypeKey(x.getContractId() + "-" + x.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwcContractLogisticsUnit::getContractIdUnitTypeKey, Function.identity(), (x, y) -> x));
|
|
|
+
|
|
|
+ //查询物流商品
|
|
|
+ List<KwcContractLogisticsGoods> kwcContractLogisticsGoods = kwcContractLogisticsGoodsRepository.queryByContractId(kwcContractTrade.getId());
|
|
|
+ //合同id和商品id组成唯一key映射物流信息
|
|
|
+ Map<String, KwcContractLogisticsGoods> contractIdGoodsIdKeyAndGoodsMap = kwcContractLogisticsGoods.stream()
|
|
|
+ .peek(x -> x.setContractIdGoodsIdKey(x.getContractId() + "-" + x.getGoodsId()))
|
|
|
+ .collect(Collectors.toMap(KwcContractLogisticsGoods::getContractIdGoodsIdKey, Function.identity(), (x, y) -> x));
|
|
|
+
|
|
|
+ ContractDetailResp contractDetailResp = new ContractDetailResp();
|
|
|
+ contractDetailResp.setId(kwcContractTrade.getId());
|
|
|
+ contractDetailResp.setPid(kwcContractTrade.getContractPid());
|
|
|
+ //获取基本信息
|
|
|
+ ContractDetailResp.TradeBaseInfo baseInfo = getBaseInfo(ctTypeKeyAndUnitMap, kwcContractTrade);
|
|
|
+ contractDetailResp.setBaseInfo(baseInfo);
|
|
|
+ //文件合同
|
|
|
+ contractDetailResp.setContractFile(kwcContractTrade.getSignedUrl());
|
|
|
+
|
|
|
+ //标地信息
|
|
|
+ if (CollectionUtils.isNotEmpty(tradeGoods)){
|
|
|
+ Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
|
|
|
+ List<ContractDetailResp.TradeGoodsInfo> tradeGoodsInfos = tradeGoods.stream()
|
|
|
+ .map(t -> getTradeGoodsInfo(t, finalGoodsIdAndGoodsMap))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ contractDetailResp.setGoodsInfo(tradeGoodsInfos);
|
|
|
+ }
|
|
|
+// //获取关联贸易订单
|
|
|
+// ContractDetailResp.AssociatedOrder associatedOrder = getAssociateOrder(kwcContractTradeOrder,orderDetailVo,
|
|
|
+// ctTypeKeyAndUnitMap,
|
|
|
+// kwcContractTrade, contractIdUnitTypeKeyAndUnitMap, goodsIdAndGoodsMap,
|
|
|
+// contractIdGoodsIdKeyAndGoodsMap,tradeOrderIdAndSubOrderVoMap);
|
|
|
+// contractDetailResp.setAssociatedOrder(associatedOrder);
|
|
|
+
|
|
|
+ contractDetailResp.setRemark(kwcContractTrade.getRemark());
|
|
|
+
|
|
|
+ return contractDetailResp;
|
|
|
+ }
|
|
|
+
|
|
|
+// private static ContractDetailResp.AssociatedOrder getAssociateOrder(KwcContractTradeOrder kwcContractTradeOrder,OrderDetailVo orderDetailVo, Map<String,
|
|
|
+// KwcContractTradeUnit> ctTypeKeyAndUnitMap, KwcContractTrade kwcContractTrade, Map<String, KwcContractLogisticsUnit> contractIdUnitTypeKeyAndUnitMap,
|
|
|
+// Map<Long, KwpGoods> goodsIdAndGoodsMap, Map<String, KwcContractLogisticsGoods> contractIdGoodsIdKeyAndGoodsMap
|
|
|
+// ,Map<Long, RWaybillSubOrderVo> tradeOrderIdAndSubOrderVoMap) {
|
|
|
+// ContractDetailResp.AssociatedOrder associatedOrder = new ContractDetailResp.AssociatedOrder();
|
|
|
+// if (Objects.nonNull(kwcContractTradeOrder)){
|
|
|
+// associatedOrder.setOrderId(kwcContractTradeOrder.getOrderId());
|
|
|
+// associatedOrder.setOrderStatus(kwcContractTradeOrder.getStatus());
|
|
|
+// associatedOrder.setOrderCode(kwcContractTradeOrder.getOrderNo());
|
|
|
+// KwcContractTradeUnit purchaseUnit =
|
|
|
+// ctTypeKeyAndUnitMap.getOrDefault(kwcContractTrade.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode(), new KwcContractTradeUnit());
|
|
|
+//
|
|
|
+//
|
|
|
+// KwcContractTradeUnit provideUnit =
|
|
|
+// ctTypeKeyAndUnitMap.getOrDefault(kwcContractTrade.getId() + "-" + CooperateTypeEnum.SUPPLIER.getCode(), new KwcContractTradeUnit());
|
|
|
+//
|
|
|
+// associatedOrder.setPurchaseEntId(purchaseUnit.getEntId());
|
|
|
+// associatedOrder.setPurchaseEntName(purchaseUnit.getFirmName());
|
|
|
+// associatedOrder.setProvideEntId(provideUnit.getEntId());
|
|
|
+// associatedOrder.setProvideEntName(provideUnit.getFirmName());
|
|
|
+//
|
|
|
+// KwcContractLogisticsUnit logisticsUnit =
|
|
|
+// contractIdUnitTypeKeyAndUnitMap.get(kwcContractTrade.getId() + "-" + CooperateTypeEnum.CONSIGN.getCode());
|
|
|
+// if (Objects.nonNull(logisticsUnit)){
|
|
|
+// associatedOrder.setTransportEntId(logisticsUnit.getEntId());
|
|
|
+// associatedOrder.setTransportEntName(logisticsUnit.getFirmName());
|
|
|
+// }
|
|
|
+// KwcContractLogisticsUnit logisticsCarrigeUnit =
|
|
|
+// contractIdUnitTypeKeyAndUnitMap.get(kwcContractTrade.getId() + "-" + CooperateTypeEnum.CARRIAGE.getCode());
|
|
|
+// if (Objects.nonNull(logisticsCarrigeUnit)){
|
|
|
+// associatedOrder.setTransportEntId(logisticsCarrigeUnit.getEntId());
|
|
|
+// associatedOrder.setTransportEntName(logisticsCarrigeUnit.getFirmName());
|
|
|
+// }
|
|
|
+// OrderDetailVo.GoodsInfo goodsInfo = orderDetailVo.getGoodsInfo();
|
|
|
+// if (Objects.nonNull(goodsInfo)){
|
|
|
+// associatedOrder.setGoodsId(goodsInfo.getGoodsId());
|
|
|
+// KwpGoods goods = goodsIdAndGoodsMap.getOrDefault(goodsInfo.getGoodsId(), new KwpGoods());
|
|
|
+// associatedOrder.setGoodsName(goods.getName());
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// associatedOrder.setBillingWay(orderDetailVo.getChargeType());
|
|
|
+// associatedOrder.setBillingWayDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
+// String.valueOf(orderDetailVo.getChargeType())));
|
|
|
+// associatedOrder.setAmount(Objects.nonNull(orderDetailVo.getAmount()) ?
|
|
|
+// orderDetailVo.getAmount().toPlainString() : null);
|
|
|
+// RWaybillSubOrderVo rWaybillSubOrderVo = tradeOrderIdAndSubOrderVoMap.get(kwcContractTrade.getId());
|
|
|
+// List<RWaybillSubOrderVo.BillSubOrder> subOrders = rWaybillSubOrderVo.getSubOrders();
|
|
|
+//
|
|
|
+// if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
|
|
|
+// String loadAmount = subOrders.stream()
|
|
|
+// .map(RWaybillSubOrderVo.BillSubOrder::getLoadAmount)
|
|
|
+// .filter(Objects::nonNull)
|
|
|
+// .reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
|
|
+// associatedOrder.setLoadAmount(loadAmount);
|
|
|
+// String unloadAmount = subOrders.stream()
|
|
|
+// .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
|
|
|
+// .filter(Objects::nonNull)
|
|
|
+// .reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
|
|
+// associatedOrder.setUnloadAmount(unloadAmount);
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// List<OrderDetailVo.AddressInfo> addressInfos = orderDetailVo.getAddressInfo();
|
|
|
+// Map<String, OrderDetailVo.AddressInfo> tradeOrderIdAndUnitTypeKeyAndUnitMap = Maps.newHashMap() ;
|
|
|
+// if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(addressInfos)){
|
|
|
+// tradeOrderIdAndUnitTypeKeyAndUnitMap =
|
|
|
+// addressInfos.stream().peek(x -> x.setTradeOrderIdTypeKey(x.getTOrderId() + "-" + x.getAddressType()))
|
|
|
+// .collect(Collectors.toMap(OrderDetailVo.AddressInfo::getTradeOrderIdTypeKey, Function.identity(), (x, y) -> x));
|
|
|
+// }
|
|
|
+//
|
|
|
+// associatedOrder.setTransportPrice(Objects.nonNull(orderDetailVo.getPrice()) ?
|
|
|
+// orderDetailVo.getPrice().setScale(2, RoundingMode.HALF_UP).toPlainString() : null);
|
|
|
+// OrderDetailVo.AddressInfo loadAdd = tradeOrderIdAndUnitTypeKeyAndUnitMap.getOrDefault(kwcContractTradeOrder.getContractId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new OrderDetailVo.AddressInfo());
|
|
|
+// associatedOrder.setLoadAddress(loadAdd.getDetailAddress());
|
|
|
+// OrderDetailVo.AddressInfo unloadAdd = tradeOrderIdAndUnitTypeKeyAndUnitMap.getOrDefault(kwcContractTradeOrder.getContractId() + "-" + AddressTypeEnum.SHIPMENT.getCode(), new OrderDetailVo.AddressInfo());
|
|
|
+// associatedOrder.setUnloadAddress(unloadAdd.getDetailAddress());
|
|
|
+// }
|
|
|
+// return associatedOrder;
|
|
|
+// }
|
|
|
+
|
|
|
+ private static ContractDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractTradeGoods t, Map<Long,
|
|
|
+ KwpGoods> finalGoodsIdAndGoodsMap) {
|
|
|
+ ContractDetailResp.TradeGoodsInfo tradeGoodsInfo = new ContractDetailResp.TradeGoodsInfo();
|
|
|
+ tradeGoodsInfo.setGoodsId(t.getGoodsId());
|
|
|
+ KwpGoods goods = finalGoodsIdAndGoodsMap.getOrDefault(t.getGoodsId(), new KwpGoods());
|
|
|
+ tradeGoodsInfo.setGoodsName(goods.getName());
|
|
|
+ tradeGoodsInfo.setAmount(t.getAmount());
|
|
|
+ tradeGoodsInfo.setPrice(t.getPrice());
|
|
|
+ tradeGoodsInfo.setUnit(t.getUnit());
|
|
|
+ tradeGoodsInfo.setEffectiveStartTime(t.getStartTime());
|
|
|
+ tradeGoodsInfo.setEffectiveEntTime(t.getEndTime());
|
|
|
+ return tradeGoodsInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static ContractDetailResp.TradeBaseInfo getBaseInfo(Map<String, KwcContractTradeUnit> ctTypeKeyAndUnitMap, KwcContractTrade kwcContractTrade) {
|
|
|
+ ContractDetailResp.TradeBaseInfo tradeBaseInfo = new ContractDetailResp.TradeBaseInfo();
|
|
|
+ KwcContractTradeUnit purchaseUnit =
|
|
|
+ ctTypeKeyAndUnitMap.getOrDefault(kwcContractTrade.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode(), new KwcContractTradeUnit());
|
|
|
+ tradeBaseInfo.setPurchaseEntId(purchaseUnit.getEntId());
|
|
|
+
|
|
|
+ tradeBaseInfo.setPurchaseFirmName(purchaseUnit.getFirmName());
|
|
|
+ tradeBaseInfo.setPurchasePhone(purchaseUnit.getPhone());
|
|
|
+ KwcContractTradeUnit provideUnit =
|
|
|
+ ctTypeKeyAndUnitMap.getOrDefault(kwcContractTrade.getId() + "-" + CooperateTypeEnum.SUPPLIER.getCode(), new KwcContractTradeUnit());
|
|
|
+ tradeBaseInfo.setProvideEntId(provideUnit.getEntId());
|
|
|
+ tradeBaseInfo.setProvideFirmName(provideUnit.getFirmName());
|
|
|
+ tradeBaseInfo.setProvidePhone(provideUnit.getPhone());
|
|
|
+ tradeBaseInfo.setContractCode(kwcContractTrade.getContractNo());
|
|
|
+ tradeBaseInfo.setContractName(kwcContractTrade.getName());
|
|
|
+ tradeBaseInfo.setContractStatus(String.valueOf(kwcContractTrade.getStatus()));
|
|
|
+ tradeBaseInfo.setContractStatusDesc(ContractStatusEnum.getNameByCode(kwcContractTrade.getStatus()));
|
|
|
+ tradeBaseInfo.setEndTime(kwcContractTrade.getEndTime());
|
|
|
+ tradeBaseInfo.setSigningWay(kwcContractTrade.getSigningWay());
|
|
|
+ tradeBaseInfo.setSigningWayDesc(DictEnum.getLabel(DictTypeEnum.SIGNING_WAY.getType(), String.valueOf(kwcContractTrade.getSigningWay())));
|
|
|
+ tradeBaseInfo.setStartTime(kwcContractTrade.getStartTime());
|
|
|
+ tradeBaseInfo.setSettlement(kwcContractTrade.getSettlement());
|
|
|
+ tradeBaseInfo.setSettlementDesc(DictEnum.getLabel(DictTypeEnum.SETTLEMENT_WAY.getType(),
|
|
|
+ String.valueOf(kwcContractTrade.getSettlement())));
|
|
|
+ tradeBaseInfo.setConsignment(kwcContractTrade.getConsignment());
|
|
|
+ tradeBaseInfo.setConsignmentDesc(DictEnum.getLabel(DictTypeEnum.CONSIGNMENT_WAY.getType(),
|
|
|
+ String.valueOf(kwcContractTrade.getConsignment())));
|
|
|
+
|
|
|
+ tradeBaseInfo.setUnloadWay(kwcContractTrade.getUnloadWay());
|
|
|
+ tradeBaseInfo.setUnloadWayDesc(DictEnum.getLabel(DictTypeEnum.CHARGING_TYPE.getType(),
|
|
|
+ String.valueOf(kwcContractTrade.getUnloadWay())));
|
|
|
+ tradeBaseInfo.setSalesmanId(kwcContractTrade.getSalesmanId());
|
|
|
+ tradeBaseInfo.setSalesmanPhone(kwcContractTrade.getSalesmanPhone());
|
|
|
+ return tradeBaseInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ public PageDataResult<QueryListResVo> queryTradeListByPage(QueryTradeReq req) {
|
|
|
+ Set<Long> entIds = Sets.newHashSet();
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getPurchaseEntId())) {
|
|
|
+ //查询企业 信息
|
|
|
+ entIds.add(Long.valueOf(req.getPurchaseEntId()));
|
|
|
+ }
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getSupplyEntId())) {
|
|
|
+ entIds.add(Long.valueOf(req.getSupplyEntId()));
|
|
|
+ }
|
|
|
+ Set<Long> contractIds = Sets.newHashSet();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(entIds)){
|
|
|
+ List<KwcContractTradeUnit> units = kwcContractTradeUnitRepository.queryByEntIds(entIds);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(units)){
|
|
|
+ contractIds = units.stream().map(KwcContractTradeUnit::getContractId).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Long> allEnt = Lists.newArrayList();
|
|
|
+ if (StringUtils.isBlank(req.getEntId())) {
|
|
|
+ req.setEntId(String.valueOf(LoginUserHolder.getEntId()));
|
|
|
+ }
|
|
|
+ allEnt.add(Long.valueOf(req.getEntId()));
|
|
|
+ EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(Long.valueOf(req.getEntId()));
|
|
|
+ if (Objects.nonNull(entCacheResDto)) {
|
|
|
+ EntCacheResDto entCacheResDto1 = remoteSystemService.queryEntTreeById(entCacheResDto.getId());
|
|
|
+ List<EntCacheResDto> child = entCacheResDto1.getChild();
|
|
|
+ if (CollectionUtils.isNotEmpty(child)) {
|
|
|
+ allEnt.addAll(child.stream().map(EntCacheResDto::getId).toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //分页查询合同信息
|
|
|
+ IPage<KwcContractTrade> page = kwcContractTradeRepository.queryTradeListByPage(allEnt,
|
|
|
+ req.getContractCode(),
|
|
|
+ req.getContractName(),
|
|
|
+ contractIds, req.getStatus(), req.getPageNum(), req.getPageSize());
|
|
|
+ List<KwcContractTrade> records = page.getRecords();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)){
|
|
|
+ return PageDataResult.empty(req.getPageNum(), req.getPageSize());
|
|
|
+ }
|
|
|
+ Set<Long> tradeContractIds = records.stream().map(KwcContractTrade::getId).collect(Collectors.toSet());
|
|
|
+ //获取父id
|
|
|
+ Set<Long> contractPids = records.stream().map(KwcContractTrade::getContractPid).collect(Collectors.toSet());
|
|
|
+ //根据父id查询父合同信息
|
|
|
+ Map<Long, KwcContractTrade> pidIdAndTradeMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(contractPids)){
|
|
|
+ List<KwcContractTrade> contractPidList = kwcContractTradeRepository.queryByContractIds(contractPids);
|
|
|
+
|
|
|
+ pidIdAndTradeMap =
|
|
|
+ contractPidList.stream().collect(Collectors.toMap(KwcContractTrade::getId
|
|
|
+ , Function.identity(), (v1, v2) -> v1));
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询公司信息
|
|
|
+ List<KwcContractTradeUnit> tradeUnits = kwcContractTradeUnitRepository.queryByContractIds(tradeContractIds);
|
|
|
+ Map<String, KwcContractTradeUnit> contractUnitTypeKeyAndUnitMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeUnits)){
|
|
|
+ contractUnitTypeKeyAndUnitMap = tradeUnits.stream()
|
|
|
+ .peek(x -> x.setContractIdUniTypeKey(x.getContractId() + "-" + x.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwcContractTradeUnit::getContractIdUniTypeKey, Function.identity(), (v1
|
|
|
+ , v2) -> v1));
|
|
|
+ }
|
|
|
+ //查询用户信息
|
|
|
+ //获取创建人
|
|
|
+ List<Long> createBys =
|
|
|
+ records.stream().map(KwcContractTrade::getCreateBy).distinct().collect(Collectors.toList());
|
|
|
+ Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(createBys);
|
|
|
+ Map<Long, KwcContractTrade> finalPidIdAndTradeMap = pidIdAndTradeMap;
|
|
|
+ Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap = contractUnitTypeKeyAndUnitMap;
|
|
|
+ List<QueryListResVo> queryListResVos = records.stream()
|
|
|
+ .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return PageDataResult.of(page, queryListResVos);
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static QueryListResVo getQueryListResVo(KwcContractTrade t, Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap, Map<Long, KwcContractTrade> finalPidIdAndTradeMap, Map<Long, UserCacheResDto> longUserCacheResDtoMap) {
|
|
|
+ QueryListResVo queryListResVo = new QueryListResVo();
|
|
|
+ queryListResVo.setId(t.getId());
|
|
|
+ queryListResVo.setStatus(t.getStatus());
|
|
|
+ queryListResVo.setStatusName(ContractStatusEnum.getNameByCode(t.getStatus()));
|
|
|
+
|
|
|
+ KwcContractTradeUnit purchaseEnt = finalContractUnitTypeKeyAndUnitMap.getOrDefault(t.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode(),
|
|
|
+ new KwcContractTradeUnit());
|
|
|
+ queryListResVo.setPurchaseEntId(String.valueOf(purchaseEnt.getEntId()));
|
|
|
+ queryListResVo.setPurchaseEntName(purchaseEnt.getFirmName());
|
|
|
+ KwcContractTradeUnit provideEnt =
|
|
|
+ finalContractUnitTypeKeyAndUnitMap.getOrDefault(t.getId() + "-" + CooperateTypeEnum.SUPPLIER.getCode(),
|
|
|
+ new KwcContractTradeUnit());
|
|
|
+ queryListResVo.setProvideEntId(String.valueOf(provideEnt.getEntId()));
|
|
|
+ queryListResVo.setProvideEntName(provideEnt.getFirmName());
|
|
|
+ //queryListResVo.setCheckedEntName();
|
|
|
+ queryListResVo.setContractNo(t.getContractNo());
|
|
|
+ queryListResVo.setContractName(t.getName());
|
|
|
+ queryListResVo.setSigningWay(String.valueOf(t.getSigningWay()));
|
|
|
+ queryListResVo.setSigningWayName(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(),String.valueOf(t.getSigningWay())));
|
|
|
+ queryListResVo.setUnloadWay(String.valueOf(t.getUnloadWay()));
|
|
|
+ queryListResVo.setUnloadWayName(DictEnum.getLabel(DictTypeEnum.LOAD_UNLOAD_WAY.getType(),
|
|
|
+ String.valueOf(t.getUnloadWay())));
|
|
|
+ queryListResVo.setAmount(t.getAmount());
|
|
|
+ queryListResVo.setPerformedAmount(t.getPerformedAmount());
|
|
|
+
|
|
|
+ // queryListResVo.setPerformedAmountMoney();
|
|
|
+ queryListResVo.setContractPid(t.getContractPid());
|
|
|
+ KwcContractTrade parentTrade = finalPidIdAndTradeMap.getOrDefault(t.getContractPid(),
|
|
|
+ new KwcContractTrade());
|
|
|
+ queryListResVo.setContractPname(parentTrade.getName());
|
|
|
+
|
|
|
+// queryListResVo.setChargingName();
|
|
|
+// queryListResVo.setTradingName();
|
|
|
+// queryListResVo.setCarrierEntName();
|
|
|
+ UserCacheResDto userCacheResDto = longUserCacheResDtoMap.getOrDefault(t.getCreateBy(), new UserCacheResDto());
|
|
|
+ queryListResVo.setInitiateName(userCacheResDto.getName());
|
|
|
+ if (Objects.nonNull(userCacheResDto.getEntInfo())){
|
|
|
+ queryListResVo.setInitiateEntName(userCacheResDto.getEntInfo().getFirmName());
|
|
|
+ }
|
|
|
+ queryListResVo.setCreateTime(t.getCreateTime());
|
|
|
+ queryListResVo.setStartTime(t.getStartTime());
|
|
|
+ queryListResVo.setEndTime(t.getEndTime());
|
|
|
+ queryListResVo.setInitiateTime(t.getCreateTime());
|
|
|
+ queryListResVo.setRemark(t.getRemark());
|
|
|
+ queryListResVo.setSignTime(t.getCreateTime());
|
|
|
+ return queryListResVo;
|
|
|
+ }
|
|
|
}
|