|
|
@@ -59,6 +59,7 @@ 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;
|
|
|
@@ -1078,7 +1079,7 @@ public class KwcContractLogisticsService {
|
|
|
.map(KwcContractLogistics::getId)
|
|
|
.collect(Collectors.toSet());
|
|
|
//查询物流商品信息
|
|
|
- List<KwcContractLogisticsGoods> kwcContractLogisticsGoods =kwcContractLogisticsGoodsRepository.queryByContractIds(entIds);
|
|
|
+ List<KwcContractLogisticsGoods> kwcContractLogisticsGoods =kwcContractLogisticsGoodsRepository.queryByContractIds(contractIds);
|
|
|
Map<Long, List<KwcContractLogisticsGoods>> contractIdAndGoodsMap = Maps.newHashMap();
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwcContractLogisticsGoods)){
|
|
|
//按照合同id进行分组
|
|
|
@@ -1195,6 +1196,8 @@ public class KwcContractLogisticsService {
|
|
|
saveContractLogistics.setCreateTime(date);
|
|
|
saveContractLogistics.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
saveContractLogistics.setUpdateTime(date);
|
|
|
+ saveContractLogistics.setCommonPrice(baseInfo.getCommonPrice());
|
|
|
+ saveContractLogistics.setSigningUrl(changeFile(req.getContractFile()));
|
|
|
kwcContractLogisticsRepository.saveOrUpdateLogistics(saveContractLogistics);
|
|
|
|
|
|
//保存交易商品信息
|
|
|
@@ -1216,19 +1219,32 @@ public class KwcContractLogisticsService {
|
|
|
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
-
|
|
|
+ private String changeFile(String contractFile) {
|
|
|
+ if (StringUtils.isNotBlank(contractFile)) {
|
|
|
+ JSONArray jsonArray = JSONArray.parseArray(contractFile);
|
|
|
+ for (int n = 0; n < jsonArray.size(); n++) {
|
|
|
+ JSONObject jsonObject = jsonArray.getJSONObject(n);
|
|
|
+ String url = jsonObject.getString("url");
|
|
|
+ jsonObject.put("url", FileUtils.replaceAll(url));
|
|
|
+ }
|
|
|
+ return JSON.toJSONString(jsonArray);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
private void saveLogisticsGoods(LogisticListReq req, long contactId) {
|
|
|
//删除商品
|
|
|
kwcContractLogisticsGoodsRepository.deleteByContractId(contactId);
|
|
|
+ LogisticListReq.TradeBaseInfo baseInfo = req.getBaseInfo();
|
|
|
List<LogisticListReq.TradeGoodsInfo> goodsInfos = req.getGoodsInfo();
|
|
|
List<KwcContractLogisticsGoods> goods = goodsInfos.stream()
|
|
|
- .map(x -> getKwcContractLogisticsGoods(x, contactId))
|
|
|
+ .map(x -> getKwcContractLogisticsGoods(x, contactId,baseInfo))
|
|
|
.collect(Collectors.toList());
|
|
|
kwcContractLogisticsGoodsRepository.saveLogisticsGoods(goods);
|
|
|
}
|
|
|
|
|
|
@NotNull
|
|
|
- private static KwcContractLogisticsGoods getKwcContractLogisticsGoods(LogisticListReq.TradeGoodsInfo x, long contactId) {
|
|
|
+ private static KwcContractLogisticsGoods getKwcContractLogisticsGoods(LogisticListReq.TradeGoodsInfo x,
|
|
|
+ long contactId,LogisticListReq.TradeBaseInfo baseInfo) {
|
|
|
KwcContractLogisticsGoods logisticsGoods = new KwcContractLogisticsGoods();
|
|
|
Date date1 = new Date();
|
|
|
logisticsGoods.setId(x.getGoodsId());
|
|
|
@@ -1238,7 +1254,12 @@ public class KwcContractLogisticsService {
|
|
|
logisticsGoods.setSkuId(0L);
|
|
|
logisticsGoods.setAmount(x.getAmount());
|
|
|
logisticsGoods.setUnit(x.getUnit());
|
|
|
- logisticsGoods.setPrice(x.getPrice());
|
|
|
+ if (Objects.isNull(x.getPrice())) {
|
|
|
+ logisticsGoods.setPrice(Objects.nonNull(baseInfo.getCommonPrice())? baseInfo.getCommonPrice().setScale(2,
|
|
|
+ RoundingMode.HALF_UP) : null);
|
|
|
+ }else {
|
|
|
+ logisticsGoods.setPrice(x.getPrice());
|
|
|
+ }
|
|
|
logisticsGoods.setPriceUnit(x.getAmountUnit());
|
|
|
logisticsGoods.setCreateBy(LoginUserHolder.getUserId());
|
|
|
logisticsGoods.setCreateTime(date1);
|
|
|
@@ -1287,4 +1308,87 @@ public class KwcContractLogisticsService {
|
|
|
kwcContractTradeUnit.setDelFlag(Global.NO);
|
|
|
units.add(kwcContractTradeUnit);
|
|
|
}
|
|
|
+
|
|
|
+ public QueryLogisticDetailResp queryLogisticsContractDetail(ContractDetailReq req) {
|
|
|
+ log.info("查询物流合同明细参数:{}", JSON.toJSONString( req));
|
|
|
+ if (Objects.isNull(req.getContractId())){
|
|
|
+ throw new BusinessException("物流合同id不能为空");
|
|
|
+ }
|
|
|
+ KwcContractLogistics logistics = kwcContractLogisticsRepository.queryById(req.getContractId());
|
|
|
+ if (Objects.isNull(logistics)){
|
|
|
+ throw new BusinessException("物流合同不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ //合同id
|
|
|
+ Long contractId = logistics.getId();
|
|
|
+
|
|
|
+ //查询物流商品信息
|
|
|
+ List<KwcContractLogisticsGoods> kwcContractLogisticsGoods =kwcContractLogisticsGoodsRepository.queryByContractId(contractId);
|
|
|
+
|
|
|
+
|
|
|
+ List<KwcContractLogisticsUnit> kwcContractLogisticsUnits =
|
|
|
+ kwcContractLogisticsUnitRepository.queryByContractId(contractId);
|
|
|
+ Map<String, KwcContractLogisticsUnit> contractUniTypeAndUnitMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwcContractLogisticsUnits)){
|
|
|
+ //合同id和单位类型组合成key映射物流企业信息
|
|
|
+ contractUniTypeAndUnitMap = kwcContractLogisticsUnits.stream()
|
|
|
+ .peek(k -> k.setContractIdUnitTypeKey(k.getContractId() + "-" + k.getUnitType()))
|
|
|
+ .collect(Collectors.toMap(KwcContractLogisticsUnit::getContractIdUnitTypeKey, Function.identity(),
|
|
|
+ (x, y) -> x));
|
|
|
+ }
|
|
|
+
|
|
|
+ return getQueryLogisticDetailResp(logistics, contractUniTypeAndUnitMap, kwcContractLogisticsGoods);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @NotNull
|
|
|
+ private static QueryLogisticDetailResp getQueryLogisticDetailResp(KwcContractLogistics logistics, Map<String, KwcContractLogisticsUnit> contractUniTypeAndUnitMap, List<KwcContractLogisticsGoods> kwcContractLogisticsGoods) {
|
|
|
+ QueryLogisticDetailResp queryLogisticListResp = new QueryLogisticDetailResp();
|
|
|
+ queryLogisticListResp.setId(logistics.getId());
|
|
|
+ queryLogisticListResp.setPid(logistics.getContractPid());
|
|
|
+ QueryLogisticDetailResp.TradeBaseInfo tradeBaseInfo = new QueryLogisticDetailResp.TradeBaseInfo();
|
|
|
+ KwcContractLogisticsUnit logisticsUnit = contractUniTypeAndUnitMap.get(logistics.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode());
|
|
|
+ if (Objects.nonNull(logisticsUnit)){
|
|
|
+ tradeBaseInfo.setPurchaseEntId(logisticsUnit.getEntId());
|
|
|
+ tradeBaseInfo.setPurchasePhone(logisticsUnit.getPhone());
|
|
|
+ }
|
|
|
+ KwcContractLogisticsUnit providerLogisticsUnit =
|
|
|
+ contractUniTypeAndUnitMap.get(logistics.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode());
|
|
|
+ if (Objects.nonNull(providerLogisticsUnit)){
|
|
|
+ tradeBaseInfo.setProvideEntId(providerLogisticsUnit.getEntId());
|
|
|
+ tradeBaseInfo.setProvidePhone(providerLogisticsUnit.getPhone());
|
|
|
+ }
|
|
|
+
|
|
|
+ tradeBaseInfo.setContractCode(logistics.getContractNo());
|
|
|
+ tradeBaseInfo.setContractName(logistics.getName());
|
|
|
+ tradeBaseInfo.setEndTime(logistics.getEndTime());
|
|
|
+ tradeBaseInfo.setSigningWay(logistics.getSigningWay());
|
|
|
+ tradeBaseInfo.setSigningWayDesc(DictEnum.getLabel(DictTypeEnum.SIGNING_TYPE.getType(),
|
|
|
+ String.valueOf(logistics.getSigningWay())));
|
|
|
+ tradeBaseInfo.setStartTime(logistics.getStartTime());
|
|
|
+ tradeBaseInfo.setCommonPrice(logistics.getCommonPrice());
|
|
|
+
|
|
|
+ queryLogisticListResp.setBaseInfo(tradeBaseInfo);
|
|
|
+ queryLogisticListResp.setContractFile(logistics.getSigningUrl());
|
|
|
+ List<QueryLogisticDetailResp.TradeGoodsInfo> tradeGoodsInfos = Lists.newArrayList();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(kwcContractLogisticsGoods)){
|
|
|
+ tradeGoodsInfos = kwcContractLogisticsGoods.stream()
|
|
|
+ .map(KwcContractLogisticsService::getTradeGoodsInfo)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ queryLogisticListResp.setGoodsInfo(tradeGoodsInfos);
|
|
|
+ queryLogisticListResp.setRemark(logistics.getRemark());
|
|
|
+ return queryLogisticListResp;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static QueryLogisticDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractLogisticsGoods x) {
|
|
|
+ QueryLogisticDetailResp.TradeGoodsInfo tradeGoodsInfo = new QueryLogisticDetailResp.TradeGoodsInfo();
|
|
|
+ tradeGoodsInfo.setGoodsId(x.getGoodsId());
|
|
|
+ tradeGoodsInfo.setGoodsName(x.getGoodsName());
|
|
|
+ tradeGoodsInfo.setAmount(x.getAmount());
|
|
|
+ tradeGoodsInfo.setAmountUnit(x.getUnit());
|
|
|
+ tradeGoodsInfo.setPrice(x.getPrice());
|
|
|
+ return tradeGoodsInfo;
|
|
|
+ }
|
|
|
}
|