|
@@ -92,6 +92,11 @@ import java.util.stream.Collectors;
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
public class KwcContractTradeService {
|
|
public class KwcContractTradeService {
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 供应单位代理属性类型
|
|
|
|
|
+ */
|
|
|
|
|
+ static final int SUPPLY_AGENT_ENT_TYPE = 4;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private KwcContractTradeMapper kwcContractTradeMapper;
|
|
private KwcContractTradeMapper kwcContractTradeMapper;
|
|
@@ -199,6 +204,7 @@ public class KwcContractTradeService {
|
|
|
queryTradeReq.setSupplyEntId(reqVo.getSupplyEntId());
|
|
queryTradeReq.setSupplyEntId(reqVo.getSupplyEntId());
|
|
|
queryTradeReq.setDispatchWay(reqVo.getDispatchWay());
|
|
queryTradeReq.setDispatchWay(reqVo.getDispatchWay());
|
|
|
queryTradeReq.setStatus(reqVo.getStatus());
|
|
queryTradeReq.setStatus(reqVo.getStatus());
|
|
|
|
|
+ queryTradeReq.setAgentFlag(reqVo.getAgentFlag());
|
|
|
queryTradeReq.setPageNum(reqVo.getPageNum());
|
|
queryTradeReq.setPageNum(reqVo.getPageNum());
|
|
|
queryTradeReq.setPageSize(reqVo.getPageSize());
|
|
queryTradeReq.setPageSize(reqVo.getPageSize());
|
|
|
|
|
|
|
@@ -232,6 +238,7 @@ public class KwcContractTradeService {
|
|
|
for (QueryListResDto queryListResDto : queryListResDtos) {
|
|
for (QueryListResDto queryListResDto : queryListResDtos) {
|
|
|
QueryListResVo queryListResVo = new QueryListResVo();
|
|
QueryListResVo queryListResVo = new QueryListResVo();
|
|
|
BeanUtils.copyProperties(queryListResDto, queryListResVo);
|
|
BeanUtils.copyProperties(queryListResDto, queryListResVo);
|
|
|
|
|
+ queryListResVo.setAgentFlagDesc(Objects.equals(queryListResDto.getAgentFlag(), Global.YES) ? "是" : "否");
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Objects.nonNull(queryListResDto.getUnitType())) {
|
|
if (Objects.nonNull(queryListResDto.getUnitType())) {
|
|
@@ -313,6 +320,7 @@ public class KwcContractTradeService {
|
|
|
KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPid());
|
|
KwcContractTrade kwcContractTrade = getKwcContractTrade(baseInfo, reqVo.getGoodsInfo(), reqVo.getRemark(), reqVo.getPid());
|
|
|
long contactId = new IdWorker(1L).nextId();
|
|
long contactId = new IdWorker(1L).nextId();
|
|
|
kwcContractTrade.setId(contactId);
|
|
kwcContractTrade.setId(contactId);
|
|
|
|
|
+ kwcContractTrade.setAgentFlag(querySupplyAgentFlag(baseInfo.getProvideEntId()));
|
|
|
EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(LoginUserHolder.getEntId());
|
|
EntCacheResDto entCacheResDto = remoteSystemService.queryEntTreeById(LoginUserHolder.getEntId());
|
|
|
if (Objects.nonNull(entCacheResDto) && StringUtils.isNotBlank(entCacheResDto.getEntTypes())) {
|
|
if (Objects.nonNull(entCacheResDto) && StringUtils.isNotBlank(entCacheResDto.getEntTypes())) {
|
|
|
if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.SUPPLIER.getCode()))) {
|
|
if (org.apache.commons.lang3.StringUtils.equals(entCacheResDto.getEntTypes(), String.valueOf(EntTypeEnum.SUPPLIER.getCode()))) {
|
|
@@ -489,6 +497,82 @@ public class KwcContractTradeService {
|
|
|
return kwcContractTrade;
|
|
return kwcContractTrade;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据供应单位企业属性计算贸易合同代理标记。
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param supplyEntId 供应单位ID
|
|
|
|
|
+ * @return 0-否,1-是
|
|
|
|
|
+ */
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 查询供应单位是否具备代理属性。
|
|
|
|
|
+ * <p>
|
|
|
|
|
+ * 通过远程服务获取企业属性信息,判断该企业是否被标记为“供应单位代理”。
|
|
|
|
|
+ * 如果具备代理属性,返回 Global.YES (1),否则返回 Global.NO (0)。
|
|
|
|
|
+ * </p>
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param supplyEntId 供应单位ID
|
|
|
|
|
+ * @return 代理标识:1-是代理,0-非代理
|
|
|
|
|
+ * @throws BusinessException 当供应单位ID为空或查询远程服务异常时抛出
|
|
|
|
|
+ */
|
|
|
|
|
+ private Integer querySupplyAgentFlag(Long supplyEntId) {
|
|
|
|
|
+ // 参数校验:供应单位ID不能为空
|
|
|
|
|
+ if (Objects.isNull(supplyEntId)) {
|
|
|
|
|
+ log.warn("查询供应单位代理属性失败,原因:供应单位ID为空");
|
|
|
|
|
+ throw new BusinessException("供应单位不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.debug("开始查询供应单位代理属性,supplyEntId: {}", supplyEntId);
|
|
|
|
|
+
|
|
|
|
|
+ // 调用远程系统服务查询企业属性类型列表
|
|
|
|
|
+ List<EntTypeResDto> entTypeList = remoteSystemService.queryEntTypeByIds(Collections.singleton(supplyEntId));
|
|
|
|
|
+
|
|
|
|
|
+ // 判断是否包含代理属性类型
|
|
|
|
|
+ boolean isAgent = hasSupplyAgentAttribute(entTypeList, supplyEntId);
|
|
|
|
|
+ Integer result = isAgent ? Global.YES : Global.NO;
|
|
|
|
|
+
|
|
|
|
|
+ log.debug("供应单位代理属性查询完成,supplyEntId: {}, 结果: {}", supplyEntId, result);
|
|
|
|
|
+ return result;
|
|
|
|
|
+
|
|
|
|
|
+ } catch (BusinessException e) {
|
|
|
|
|
+ // 业务异常直接抛出,避免重复包装
|
|
|
|
|
+ throw e;
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ // 捕获其他异常(如网络超时、远程服务错误等),记录详细日志并抛出通用业务异常
|
|
|
|
|
+ log.error("查询供应单位代理属性发生系统异常,supplyEntId: {}", supplyEntId, e);
|
|
|
|
|
+ throw new BusinessException("查询供应单位代理属性失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 判断指定供应单位是否具备代理属性。
|
|
|
|
|
+ * <p>
|
|
|
|
|
+ * 遍历企业属性列表,检查是否存在与给定 supplyEntId 匹配且类型为 {@link #SUPPLY_AGENT_ENT_TYPE} 的记录。
|
|
|
|
|
+ * </p>
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param entTypeList 企业属性集合,由远程服务返回
|
|
|
|
|
+ * @param supplyEntId 待检查的供应单位ID
|
|
|
|
|
+ * @return true-具备代理属性,false-不具备代理属性或参数无效
|
|
|
|
|
+ */
|
|
|
|
|
+ static boolean hasSupplyAgentAttribute(List<EntTypeResDto> entTypeList, Long supplyEntId) {
|
|
|
|
|
+ // 前置条件检查:ID不为空且列表非空
|
|
|
|
|
+ if (Objects.isNull(supplyEntId) || CollectionUtils.isEmpty(entTypeList)) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 流式处理:过滤空对象 -> 匹配企业ID -> 检查是否为代理类型
|
|
|
|
|
+ boolean isMatch = entTypeList.stream()
|
|
|
|
|
+ .filter(Objects::nonNull) // 过滤列表中的null元素
|
|
|
|
|
+ .filter(item -> Objects.equals(item.getEntId(), supplyEntId)) // 匹配指定的企业ID
|
|
|
|
|
+ .anyMatch(item -> Objects.equals(item.getType(), SUPPLY_AGENT_ENT_TYPE)); // 检查类型是否为代理类型(4)
|
|
|
|
|
+
|
|
|
|
|
+ if (isMatch) {
|
|
|
|
|
+ log.debug("检测到供应单位具备代理属性,supplyEntId: {}", supplyEntId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return isMatch;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @param reqVo 补充入参
|
|
* @param reqVo 补充入参
|
|
|
* @desc: 补充合同
|
|
* @desc: 补充合同
|
|
@@ -812,6 +896,7 @@ public class KwcContractTradeService {
|
|
|
kwcContractTrade.setSalesmanId(baseInfo.getSalesmanId());
|
|
kwcContractTrade.setSalesmanId(baseInfo.getSalesmanId());
|
|
|
kwcContractTrade.setSalesmanPhone(baseInfo.getSalesmanPhone());
|
|
kwcContractTrade.setSalesmanPhone(baseInfo.getSalesmanPhone());
|
|
|
kwcContractTrade.setDispatchWay(baseInfo.getDispatchWay());
|
|
kwcContractTrade.setDispatchWay(baseInfo.getDispatchWay());
|
|
|
|
|
+ kwcContractTrade.setAgentFlag(querySupplyAgentFlag(baseInfo.getProvideEntId()));
|
|
|
List<TradeGoodsInfoReqVo> goodsInfo = reqVo.getGoodsInfo();
|
|
List<TradeGoodsInfoReqVo> goodsInfo = reqVo.getGoodsInfo();
|
|
|
BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
|
|
BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
|
|
|
if (CollectionUtils.isNotEmpty(goodsInfo)) {
|
|
if (CollectionUtils.isNotEmpty(goodsInfo)) {
|
|
@@ -1351,6 +1436,7 @@ public class KwcContractTradeService {
|
|
|
kwcContractTrade.setSalesmanId(baseInfo.getSalesmanId());
|
|
kwcContractTrade.setSalesmanId(baseInfo.getSalesmanId());
|
|
|
kwcContractTrade.setSalesmanPhone(baseInfo.getSalesmanPhone());
|
|
kwcContractTrade.setSalesmanPhone(baseInfo.getSalesmanPhone());
|
|
|
kwcContractTrade.setDispatchWay(baseInfo.getDispatchWay());
|
|
kwcContractTrade.setDispatchWay(baseInfo.getDispatchWay());
|
|
|
|
|
+ kwcContractTrade.setAgentFlag(querySupplyAgentFlag(baseInfo.getProvideEntId()));
|
|
|
|
|
|
|
|
|
|
|
|
|
BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
|
|
BigDecimal amountTotal = new BigDecimal(Global.NUMERICAL_ZERO);
|
|
@@ -1674,7 +1760,7 @@ public class KwcContractTradeService {
|
|
|
req.getContractCode(),
|
|
req.getContractCode(),
|
|
|
req.getContractName(),
|
|
req.getContractName(),
|
|
|
req.getSupplementCode(),
|
|
req.getSupplementCode(),
|
|
|
- contractIds, req.getStatus(), req.getDispatchWay(), req.getPageNum(), req.getPageSize());
|
|
|
|
|
|
|
+ contractIds, req.getStatus(), req.getDispatchWay(), req.getAgentFlag(), req.getPageNum(), req.getPageSize());
|
|
|
// List<KwcContractTrade> records = page.getRecords();
|
|
// List<KwcContractTrade> records = page.getRecords();
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)) {
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)) {
|
|
|
return Collections.emptyList();
|
|
return Collections.emptyList();
|
|
@@ -1842,7 +1928,7 @@ public class KwcContractTradeService {
|
|
|
req.getContractCode(),
|
|
req.getContractCode(),
|
|
|
req.getContractName(),
|
|
req.getContractName(),
|
|
|
req.getSupplementCode(),
|
|
req.getSupplementCode(),
|
|
|
- contractIds, req.getStatus(), req.getDispatchWay(), 0, 0);
|
|
|
|
|
|
|
+ contractIds, req.getStatus(), req.getDispatchWay(), req.getAgentFlag(), 0, 0);
|
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)) {
|
|
if (org.apache.commons.collections4.CollectionUtils.isEmpty(records)) {
|
|
|
return 0L;
|
|
return 0L;
|
|
|
}
|
|
}
|
|
@@ -1965,6 +2051,8 @@ public class KwcContractTradeService {
|
|
|
queryListResVo.setStatusName(ContractStatusEnum.getNameByCode(t.getStatus()));
|
|
queryListResVo.setStatusName(ContractStatusEnum.getNameByCode(t.getStatus()));
|
|
|
queryListResVo.setDispatchWay(t.getDispatchWay());
|
|
queryListResVo.setDispatchWay(t.getDispatchWay());
|
|
|
queryListResVo.setDispatchWayDesc(DispatchWayEnums.getDesc(t.getDispatchWay()));
|
|
queryListResVo.setDispatchWayDesc(DispatchWayEnums.getDesc(t.getDispatchWay()));
|
|
|
|
|
+ queryListResVo.setAgentFlag(t.getAgentFlag());
|
|
|
|
|
+ queryListResVo.setAgentFlagDesc(Objects.equals(t.getAgentFlag(), Global.YES) ? "是" : "否");
|
|
|
|
|
|
|
|
KwcContractTradeUnit purchaseEnt = finalContractUnitTypeKeyAndUnitMap.getOrDefault(t.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode(),
|
|
KwcContractTradeUnit purchaseEnt = finalContractUnitTypeKeyAndUnitMap.getOrDefault(t.getId() + "-" + CooperateTypeEnum.PURCHASER.getCode(),
|
|
|
new KwcContractTradeUnit());
|
|
new KwcContractTradeUnit());
|
|
@@ -2332,7 +2420,7 @@ public class KwcContractTradeService {
|
|
|
req.getContractCode(),
|
|
req.getContractCode(),
|
|
|
req.getContractName(),
|
|
req.getContractName(),
|
|
|
req.getSupplementCode(),
|
|
req.getSupplementCode(),
|
|
|
- contractIds, req.getStatus(), req.getDispatchWay(), 0, 0);
|
|
|
|
|
|
|
+ contractIds, req.getStatus(), req.getDispatchWay(), req.getAgentFlag(), 0, 0);
|
|
|
|
|
|
|
|
// List<KwcContractTrade> kwcContractTrades = kwcContractTradeRepository.queryTradeListByPageList(LoginUserHolder.getEntId());
|
|
// List<KwcContractTrade> kwcContractTrades = kwcContractTradeRepository.queryTradeListByPageList(LoginUserHolder.getEntId());
|
|
|
|
|
|