|
|
@@ -41,6 +41,7 @@ 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.order.api.model.TradeOrderContractVo;
|
|
|
import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
import com.sckw.stream.enums.MessageEnum;
|
|
|
@@ -171,55 +172,7 @@ public class KwcContractTradeService {
|
|
|
queryTradeReq.setPageSize(reqVo.getPageSize());
|
|
|
|
|
|
List<QueryListResVo> queryListResVoPageDataResult = queryTradeListByPage(queryTradeReq);
|
|
|
- // List<QueryListResVo> list1 = queryListResVoPageDataResult.getList();
|
|
|
-// QueryListReqDto queryListReqDto = new QueryListReqDto();
|
|
|
-// BeanUtils.copyProperties(reqVo, queryListReqDto);
|
|
|
-// List<Long> allEnt = new ArrayList<>();
|
|
|
-// if (Objects.isNull(reqVo.getEntId())) {
|
|
|
-// queryListReqDto.setEntId(LoginUserHolder.getEntId());
|
|
|
-// }
|
|
|
-// allEnt.add(queryListReqDto.getEntId());
|
|
|
-//
|
|
|
-// EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(queryListReqDto.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());
|
|
|
-// }
|
|
|
-// }
|
|
|
-// queryListReqDto.setAllEnt(allEnt);
|
|
|
-//
|
|
|
-// if (StringUtils.isNotBlank(reqVo.getKeywords())) {
|
|
|
-// List<KwsUserResDto> userByName = remoteUserService.getUserByName(reqVo.getKeywords());
|
|
|
-// if (CollectionUtils.isNotEmpty(userByName)) {
|
|
|
-// queryListReqDto.setInitiateList(userByName.stream().map(KwsUserResDto::getId).toList());
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// List<QueryListResDto> queryListResDtos = kwcContractTradeMapper.queryList1(queryListReqDto);
|
|
|
-// if (CollectionUtils.isEmpty(queryListResDtos)) {
|
|
|
-// return PageHelperUtil.getPageResult(new PageInfo<>());
|
|
|
-// }
|
|
|
-// //查询公司信息
|
|
|
-// Set<Long> tradeContractIds = queryListResDtos.stream().map(QueryListResDto::getId).collect(Collectors.toSet());
|
|
|
-// 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<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,contractUnitTypeKeyAndUnitMap);
|
|
|
+
|
|
|
return PageHelperUtil.getPageResult(new PageInfo<>(queryListResVoPageDataResult), queryListResVoPageDataResult, reqVo.getPageSize());
|
|
|
}
|
|
|
|
|
|
@@ -324,7 +277,15 @@ 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.WAIT_APPROVE.getCode());
|
|
|
+ EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(LoginUserHolder.getEntId());
|
|
|
+ if (Objects.nonNull(entCacheResDto) && StringUtils.isNotBlank(entCacheResDto.getEntTypes())) {
|
|
|
+ if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.SUPPLIER.getCode()))){
|
|
|
+ kwcContractTrade.setStatus(ContractStatusEnum.WAIT_APPROVE.getCode());
|
|
|
+ }else if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.PURCHASER.getCode()))){
|
|
|
+ kwcContractTrade.setStatus(ContractStatusEnum.SUBMIT.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
kwcContractTrade.setSigningUrl(reqVo.getContractFile());
|
|
|
if (kwcContractTradeMapper.insert(kwcContractTrade) <= 0) {
|
|
|
throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
|
|
|
@@ -781,7 +742,6 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
kwcContractTrade.setAmount(amountTotal);
|
|
|
kwcContractTrade.setSigningUrl(reqVo.getContractFile());
|
|
|
- kwcContractTrade.setStatus(ContractStatusEnum.SAVE.getCode());
|
|
|
kwcContractTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
kwcContractTrade.setUpdateTime(date);
|
|
|
if (kwcContractTradeMapper.updateById(kwcContractTrade) <= 0) {
|
|
|
@@ -1368,16 +1328,15 @@ public class KwcContractTradeService {
|
|
|
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())) {
|
|
|
+ //签约 (状态由带签约或者待审核变成签约)
|
|
|
+ if (Objects.equals(req.getStatus(), ContractStatusEnum.SIGNED.getCode()) &&
|
|
|
+ Arrays.asList(ContractStatusEnum.SUBMIT.getCode(), ContractStatusEnum.WAIT_APPROVE.getCode(),ContractStatusEnum.CANNEL.getCode())
|
|
|
+ .contains(kwcContractTrade.getStatus())) {
|
|
|
updateKwcContractTrade.setStatus(ContractStatusEnum.SIGNED.getCode());
|
|
|
updateKwcContractTrade.setSignTime(new Date());
|
|
|
}
|
|
|
@@ -1431,6 +1390,17 @@ public class KwcContractTradeService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ //查询字典
|
|
|
+ List<SysDictResDto> sysDictResDtos = remoteSystemService.queryDictByType(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
|
|
|
+ Map<String, SysDictResDto> dictValueAndDictResDtoMap = new HashMap<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(sysDictResDtos)){
|
|
|
+ //字典value映射字典
|
|
|
+ dictValueAndDictResDtoMap = sysDictResDtos.stream()
|
|
|
+ .collect(Collectors.toMap(SysDictResDto::getValue, Function.identity()));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
ContractDetailResp contractDetailResp = new ContractDetailResp();
|
|
|
contractDetailResp.setId(kwcContractTrade.getId());
|
|
|
contractDetailResp.setPid(kwcContractTrade.getContractPid());
|
|
|
@@ -1443,8 +1413,9 @@ public class KwcContractTradeService {
|
|
|
//标地信息
|
|
|
if (CollectionUtils.isNotEmpty(tradeGoods)){
|
|
|
Map<Long, KwpGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
|
|
|
+ Map<String, SysDictResDto> finalDictValueAndDictResDtoMap = dictValueAndDictResDtoMap;
|
|
|
List<ContractDetailResp.TradeGoodsInfo> tradeGoodsInfos = tradeGoods.stream()
|
|
|
- .map(t -> getTradeGoodsInfo(t, finalGoodsIdAndGoodsMap))
|
|
|
+ .map(t -> getTradeGoodsInfo(t, finalGoodsIdAndGoodsMap, finalDictValueAndDictResDtoMap))
|
|
|
.collect(Collectors.toList());
|
|
|
contractDetailResp.setGoodsInfo(tradeGoodsInfos);
|
|
|
}
|
|
|
@@ -1456,15 +1427,17 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private static ContractDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractTradeGoods t, Map<Long,
|
|
|
- KwpGoods> finalGoodsIdAndGoodsMap) {
|
|
|
+ private static ContractDetailResp.TradeGoodsInfo getTradeGoodsInfo(KwcContractTradeGoods t,
|
|
|
+ Map<Long, KwpGoods> finalGoodsIdAndGoodsMap,
|
|
|
+ Map<String, SysDictResDto> dictValueAndDictResDtoMap) {
|
|
|
ContractDetailResp.TradeGoodsInfo tradeGoodsInfo = new ContractDetailResp.TradeGoodsInfo();
|
|
|
tradeGoodsInfo.setGoodsId(t.getGoodsId());
|
|
|
KwpGoods goods = finalGoodsIdAndGoodsMap.getOrDefault(t.getGoodsId(), new KwpGoods());
|
|
|
- tradeGoodsInfo.setGoodsName(goods.getName()+"/"+goods.getGoodsType()+"/"+goods.getSpec());
|
|
|
+ SysDictResDto dictResDto = dictValueAndDictResDtoMap.getOrDefault(goods.getGoodsType(), new SysDictResDto());
|
|
|
+ tradeGoodsInfo.setGoodsName(goods.getName()+"/"+dictResDto.getLabel()+"/"+goods.getSpec());
|
|
|
tradeGoodsInfo.setAmount(t.getAmount());
|
|
|
tradeGoodsInfo.setPrice(t.getPrice());
|
|
|
- tradeGoodsInfo.setUnit(t.getUnit());
|
|
|
+ tradeGoodsInfo.setUnit(DictEnum.getLabel(DictTypeEnum.UNIT_TYPE.getType(),t.getUnit()));
|
|
|
tradeGoodsInfo.setEffectiveStartTime(t.getStartTime());
|
|
|
tradeGoodsInfo.setEffectiveEntTime(t.getEndTime());
|
|
|
return tradeGoodsInfo;
|
|
|
@@ -1586,10 +1559,39 @@ public class KwcContractTradeService {
|
|
|
List<Long> createBys =
|
|
|
records.stream().map(KwcContractTrade::getCreateBy).distinct().collect(Collectors.toList());
|
|
|
Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(createBys);
|
|
|
+ //根据物流查询贸易订单
|
|
|
+ List<TradeOrderContractVo> tradeOrderContractVos = tradeOrderInfoService.queryByTradeContactIds(tradeContractIds);
|
|
|
+ Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap = Maps.newHashMap();
|
|
|
+ Map<Long, TradeOrderContractVo> contractIdAndContractMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeOrderContractVos)){
|
|
|
+ contractIdAndContractMap = tradeOrderContractVos.stream()
|
|
|
+ .collect(Collectors.toMap(TradeOrderContractVo::getContractId, Function.identity(), (v1, v2) -> v1));
|
|
|
+ //贸易订单id
|
|
|
+ Set<Long> tradeOrderIds = tradeOrderContractVos.stream()
|
|
|
+ .map(TradeOrderContractVo::getTOrderId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ //通过贸易订单id查询物流运单
|
|
|
+ List<RWaybillSubOrderVo> rWaybillSubOrderVos = transportRemoteService.queryWaybillOrderByTradeOrderIds(tradeOrderIds);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rWaybillSubOrderVos)){
|
|
|
+ tradeOrderIdAndWaybillMap = rWaybillSubOrderVos.stream()
|
|
|
+ .collect(Collectors.toMap(RWaybillSubOrderVo::getTradeId, Function.identity(), (k1, k2) -> k1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //根据合同id查询合同商品
|
|
|
+ List<KwcContractTradeGoods> tradeGoods = kwcContractTradeGoodsRepository.queryByContractIds(tradeContractIds);
|
|
|
+ Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap = Maps.newHashMap();
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(tradeGoods)){
|
|
|
+ goodsIdAndGoodsMap = tradeGoods.stream().collect(Collectors.toMap(KwcContractTradeGoods::getGoodsId,Function.identity(), (v1, v2) -> v1));
|
|
|
+ }
|
|
|
+
|
|
|
Map<Long, KwcContractTrade> finalPidIdAndTradeMap = pidIdAndTradeMap;
|
|
|
Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap = contractUnitTypeKeyAndUnitMap;
|
|
|
+ Map<Long, RWaybillSubOrderVo> finalTradeOrderIdAndWaybillMap = tradeOrderIdAndWaybillMap;
|
|
|
+ Map<Long, TradeOrderContractVo> finalContractIdAndContractMap = contractIdAndContractMap;
|
|
|
+ Map<Long, KwcContractTradeGoods> finalGoodsIdAndGoodsMap = goodsIdAndGoodsMap;
|
|
|
List<QueryListResVo> queryListResVos = records.stream()
|
|
|
- .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap))
|
|
|
+ .map(t -> getQueryListResVo(t, finalContractUnitTypeKeyAndUnitMap, finalPidIdAndTradeMap, longUserCacheResDtoMap,
|
|
|
+ finalTradeOrderIdAndWaybillMap, finalContractIdAndContractMap, finalGoodsIdAndGoodsMap))
|
|
|
.collect(Collectors.toList());
|
|
|
if (org.apache.commons.lang3.StringUtils.isNotBlank(req.getPurchaseEntId())){
|
|
|
queryListResVos = queryListResVos.stream()
|
|
|
@@ -1606,7 +1608,13 @@ public class KwcContractTradeService {
|
|
|
}
|
|
|
|
|
|
@NotNull
|
|
|
- private static QueryListResVo getQueryListResVo(KwcContractTrade t, Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap, Map<Long, KwcContractTrade> finalPidIdAndTradeMap, Map<Long, UserCacheResDto> longUserCacheResDtoMap) {
|
|
|
+ private static QueryListResVo getQueryListResVo(KwcContractTrade t,
|
|
|
+ Map<String, KwcContractTradeUnit> finalContractUnitTypeKeyAndUnitMap,
|
|
|
+ Map<Long, KwcContractTrade> finalPidIdAndTradeMap,
|
|
|
+ Map<Long, UserCacheResDto> longUserCacheResDtoMap,
|
|
|
+ Map<Long, RWaybillSubOrderVo> tradeOrderIdAndWaybillMap,
|
|
|
+ Map<Long, TradeOrderContractVo> contractIdAndContractMap,
|
|
|
+ Map<Long, KwcContractTradeGoods> goodsIdAndGoodsMap) {
|
|
|
QueryListResVo queryListResVo = new QueryListResVo();
|
|
|
queryListResVo.setId(t.getId());
|
|
|
queryListResVo.setStatus(t.getStatus());
|
|
|
@@ -1630,18 +1638,33 @@ public class KwcContractTradeService {
|
|
|
queryListResVo.setUnloadWayName(DictEnum.getLabel(DictTypeEnum.LOAD_UNLOAD_WAY.getType(),
|
|
|
String.valueOf(t.getUnloadWay())));
|
|
|
queryListResVo.setAmount(t.getAmount());
|
|
|
- queryListResVo.setPerformedAmount(t.getPerformedAmount());
|
|
|
-
|
|
|
- // queryListResVo.setPerformedAmountMoney();
|
|
|
+ TradeOrderContractVo tradeOrderContractVo = contractIdAndContractMap.getOrDefault(t.getId(), new TradeOrderContractVo());
|
|
|
+ RWaybillSubOrderVo subOrderVo = tradeOrderIdAndWaybillMap.getOrDefault(tradeOrderContractVo.getTOrderId(), new RWaybillSubOrderVo());
|
|
|
+ List<RWaybillSubOrderVo.BillSubOrder> subOrders = subOrderVo.getSubOrders();
|
|
|
+ BigDecimal unloadQty = BigDecimal.ZERO;
|
|
|
+ BigDecimal performedAmountMoney = BigDecimal.ZERO;
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(subOrders)){
|
|
|
+ unloadQty = subOrders.stream()
|
|
|
+ .map(RWaybillSubOrderVo.BillSubOrder::getUnloadAmount)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ performedAmountMoney = subOrders.stream()
|
|
|
+ .filter(x -> Objects.nonNull(x.getUnloadAmount()))
|
|
|
+ .map(x -> {
|
|
|
+ KwcContractTradeGoods orDefault = goodsIdAndGoodsMap.getOrDefault(x.getGoodId(), new KwcContractTradeGoods());
|
|
|
+ BigDecimal price = Optional.ofNullable(orDefault).map(KwcContractTradeGoods::getPrice).orElse(BigDecimal.ZERO);
|
|
|
+ return x.getUnloadAmount().multiply(price);
|
|
|
+ }).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ }
|
|
|
+ queryListResVo.setPerformedAmount(unloadQty.setScale(2, RoundingMode.HALF_UP));
|
|
|
+
|
|
|
+ queryListResVo.setPerformedAmountMoney(performedAmountMoney.setScale(2, RoundingMode.HALF_UP));
|
|
|
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.setInitiatorId(t.getCreateBy());
|
|
|
queryListResVo.setInitiateName(userCacheResDto.getName());
|
|
|
if (Objects.nonNull(userCacheResDto.getEntInfo())){
|
|
|
queryListResVo.setInitiateEntName(userCacheResDto.getEntInfo().getFirmName());
|