|
|
@@ -1,20 +1,25 @@
|
|
|
package com.ydtech.modules.protocols.service.impl;
|
|
|
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
|
|
|
import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
|
|
|
import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewHistoryMapper;
|
|
|
import com.ydtech.modules.protocols.entity.po.*;
|
|
|
+import com.ydtech.modules.protocols.entity.vo.AgreementProductCostsSave;
|
|
|
+import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
|
|
|
import com.ydtech.modules.protocols.service.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.ydtech.modules.base.model.vo.PageVo.buildPageRequest;
|
|
|
+
|
|
|
/**
|
|
|
* @description
|
|
|
* @createDate
|
|
|
@@ -32,15 +37,27 @@ public class PtlAgreementProductCostsNewHistoryServiceImpl extends ServiceImpl<P
|
|
|
@Autowired
|
|
|
PtlAgreementUndwrtRulesAttrService ptlAgreementUndwrtRulesAttrService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ PtlAgreementProductCostsNewService ptlAgreementProductCostsNewService;
|
|
|
+
|
|
|
@Override
|
|
|
- public Page<PtlAgreementProductCostsNewHistory> pageHistory(Page page, String agreementId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
|
|
|
+ public Page<PtlAgreementProductCostsNewHistory> pageHistory(AgreementProductQueryVo agreementProductQueryVo, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
|
|
|
+ Page page = buildPageRequest(agreementProductQueryVo.getPageDto());
|
|
|
Page<PtlAgreementProductCostsNewHistory> historyVoPage = new Page<>();
|
|
|
//获取当前协议下的产品
|
|
|
- LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.eq(PtlAgreementProductCostsNewHistory::getAgreementId, agreementId);
|
|
|
+
|
|
|
+ QueryWrapper<PtlAgreementProductCostsNewHistory> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper
|
|
|
+ .eq("agreement_id", agreementProductQueryVo.getAgreementId())
|
|
|
+ .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperator()), "modifier", agreementProductQueryVo.getOperator())
|
|
|
+ .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperatorType()), "operator_type", agreementProductQueryVo.getOperatorType())
|
|
|
+ .eq(!ObjectUtils.isEmpty(agreementProductQueryVo.getOperatorTime()), "DATE(`operator_time`)", agreementProductQueryVo.getOperatorTime());
|
|
|
Page selectPage = baseMapper.selectPage(page, wrapper);
|
|
|
List<PtlAgreementProductCostsNewHistory> records = selectPage.getRecords();
|
|
|
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return historyVoPage;
|
|
|
+ }
|
|
|
|
|
|
//获取所有历史记录产品批次
|
|
|
List<String> batch = new ArrayList<>();
|
|
|
@@ -69,6 +86,134 @@ public class PtlAgreementProductCostsNewHistoryServiceImpl extends ServiceImpl<P
|
|
|
return historyVoPage;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取产品历史详情
|
|
|
+ *
|
|
|
+ * @param batchNo 批次号
|
|
|
+ * @return 返回一个包含成本历史详细信息的HashMap,其中主要包含了一个经过处理的成本历史对象。
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public HashMap<String, Object> getCostHistoryDetail(String batchNo) {
|
|
|
+
|
|
|
+ // 根据批次号查询产品历史出入口信息
|
|
|
+ LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PtlAgreementProductCostsNewHistory::getBatch, batchNo);
|
|
|
+ PtlAgreementProductCostsNewHistory agreementProductCostsNewHistory = getOne(lambdaQueryWrapper);
|
|
|
+
|
|
|
+ // 查询该批次号下的所有费用因子属性历史记录
|
|
|
+ LambdaQueryWrapper<PtlAgreementProductCostsAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PtlAgreementProductCostsAttrLinkHistory::getBatch, batchNo);
|
|
|
+ List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory = costsAttrLinkHistoryService.list(queryWrapper);
|
|
|
+
|
|
|
+ // 查询所有费用属性模型
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
|
|
|
+
|
|
|
+ // 整合费用属性历史记录和属性模型,获取具体的属性列表
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> rulesAttrs = manage(agreementProductCostsAttrLinkHistory, undwrtRulesAttrList);
|
|
|
+
|
|
|
+ // 设置产品费用因子对象的属性列表
|
|
|
+ agreementProductCostsNewHistory.setCostsAttrLinkList(rulesAttrs);
|
|
|
+
|
|
|
+ // 将产品历史对象放入HashMap中,以供返回
|
|
|
+ HashMap<String, Object> hashMap = new HashMap<>();
|
|
|
+ hashMap.put("agreementProductCostsNewHistory", agreementProductCostsNewHistory);
|
|
|
+
|
|
|
+ return hashMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 产品比较
|
|
|
+ *
|
|
|
+ * @param batchNo 批次号,用于查询特定批次的成本比较数据
|
|
|
+ * @return 返回一个包含协议产品成本新历史记录和新协议产品成本保存信息的HashMap
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public HashMap<String, Object> costComparison(String batchNo) {
|
|
|
+
|
|
|
+ // 根据批次号查询协议产品成本历史记录
|
|
|
+ LambdaQueryWrapper<PtlAgreementProductCostsNewHistory> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PtlAgreementProductCostsNewHistory::getBatch, batchNo);
|
|
|
+ PtlAgreementProductCostsNewHistory agreementProductCostsNewHistory = getOne(lambdaQueryWrapper);
|
|
|
+
|
|
|
+ // 根据批次号查询协议产品成本属性费用因子历史记录
|
|
|
+ LambdaQueryWrapper<PtlAgreementProductCostsAttrLinkHistory> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(PtlAgreementProductCostsAttrLinkHistory::getBatch, batchNo);
|
|
|
+ List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory = costsAttrLinkHistoryService.list(queryWrapper);
|
|
|
+
|
|
|
+ // 获取费用属性模型列表
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
|
|
|
+
|
|
|
+ // 管理并处理成本属性因子列表
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> costsAttrLinkList = manage(agreementProductCostsAttrLinkHistory, undwrtRulesAttrList);
|
|
|
+
|
|
|
+ // 设置产品属性因子列表到协议产品成本历史记录
|
|
|
+ agreementProductCostsNewHistory.setCostsAttrLinkList(costsAttrLinkList);
|
|
|
+
|
|
|
+ // 获取产品ID
|
|
|
+ String costsId = agreementProductCostsNewHistory.getCostsId();
|
|
|
+
|
|
|
+ // 根据产品ID和费用属性列表获取最新新协议产品信息
|
|
|
+ AgreementProductCostsSave newAgreementProductCostsSave = ptlAgreementProductCostsNewService.costsGet(costsId, undwrtRulesAttrList);
|
|
|
+
|
|
|
+ // 创建并填充HashMap,包含协议产品历史记录和最新协议产品信息
|
|
|
+ HashMap<String, Object> hashMap = new HashMap<>();
|
|
|
+ hashMap.put("agreementProductCostsNewHistory", agreementProductCostsNewHistory);
|
|
|
+ hashMap.put("newAgreementProductCostsSave", newAgreementProductCostsSave);
|
|
|
+
|
|
|
+ return hashMap;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 遍历处理车牌和地区ID
|
|
|
+ */
|
|
|
+ private List<PtlAgreementUndwrtRulesAttr> manage(List<PtlAgreementProductCostsAttrLinkHistory> agreementProductCostsAttrLinkHistory, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
|
|
|
+ List<PtlAgreementUndwrtRulesAttr> ptlAgreementUndwrtRulesAttrs = new ArrayList<>();
|
|
|
+
|
|
|
+ undwrtRulesAttrList.stream().forEach(x -> {
|
|
|
+ //处理多选和下拉
|
|
|
+ if ("checkbox".equals(x.getAttrType()) || "select".equals(x.getAttrType())) {
|
|
|
+ //处理车牌
|
|
|
+ if ("select".equals(x.getAttrType()) && "LicenseNo".equals(x.getAttrCode())) {
|
|
|
+ PtlAgreementProductCostsAttrLinkHistory licenseNo = agreementProductCostsAttrLinkHistory.stream().filter(l -> l.getAttrCode().equals("LicenseNo")).findFirst().orElse(null);
|
|
|
+ if (licenseNo != null) {
|
|
|
+ //根据operator 获取车牌的地区id
|
|
|
+ List<PtlAreaLicense> byParentNumber = ptlAreaLicenseService.getByParentNumber(licenseNo.getOperator());
|
|
|
+ List<PtlAgreementUndwrtRulesDictLabal> dictLabal = byParentNumber.stream().map(y -> {
|
|
|
+ PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = new PtlAgreementUndwrtRulesDictLabal();
|
|
|
+ ptlAgreementUndwrtRulesDictLabal.setDictId(y.getId());
|
|
|
+ ptlAgreementUndwrtRulesDictLabal.setCode(y.getAreaNumber());
|
|
|
+ ptlAgreementUndwrtRulesDictLabal.setName(y.getLicense());
|
|
|
+ return ptlAgreementUndwrtRulesDictLabal;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ x.setDictLabal(dictLabal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ x.setMinArray(new String[]{});
|
|
|
+ agreementProductCostsAttrLinkHistory.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
|
|
|
+ if (null != z.getMin()) {
|
|
|
+ x.setId(z.getId());
|
|
|
+ x.setMinArray(z.getMin().split(","));
|
|
|
+ x.setMax(z.getMax());
|
|
|
+ x.setOperator(z.getOperator());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ agreementProductCostsAttrLinkHistory.stream().filter(y -> y.getAttrCode().equals(x.getAttrCode())).findFirst().ifPresent(z -> {
|
|
|
+ x.setId(z.getId());
|
|
|
+ x.setMin(z.getMin());
|
|
|
+ x.setMax(z.getMax());
|
|
|
+ x.setOperator(z.getOperator());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ ptlAgreementUndwrtRulesAttrs.add(x);
|
|
|
+ });
|
|
|
+
|
|
|
+ return ptlAgreementUndwrtRulesAttrs;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 遍历费用属性描述文字
|
|
|
*
|