|
@@ -18,11 +18,13 @@ import org.springblade.meter.entity.ContractInventoryForm;
|
|
import org.springblade.meter.entity.InventoryFormMeter;
|
|
import org.springblade.meter.entity.InventoryFormMeter;
|
|
import org.springblade.meter.entity.MeterTreeContract;
|
|
import org.springblade.meter.entity.MeterTreeContract;
|
|
import org.springblade.meter.entity.MeterTreeProject;
|
|
import org.springblade.meter.entity.MeterTreeProject;
|
|
|
|
+import org.springblade.meter.mapper.ContractInventoryFormMapper;
|
|
import org.springblade.meter.mapper.InventoryFormMeterMapper;
|
|
import org.springblade.meter.mapper.InventoryFormMeterMapper;
|
|
import org.springblade.meter.mapper.MeterTreeContractMapper;
|
|
import org.springblade.meter.mapper.MeterTreeContractMapper;
|
|
import org.springblade.meter.mapper.MeterTreeProjectMapper;
|
|
import org.springblade.meter.mapper.MeterTreeProjectMapper;
|
|
import org.springblade.meter.service.MeterTreeContractService;
|
|
import org.springblade.meter.service.MeterTreeContractService;
|
|
import org.springblade.meter.vo.ChangeNodeVO;
|
|
import org.springblade.meter.vo.ChangeNodeVO;
|
|
|
|
+import org.springblade.meter.vo.ContractFromVO;
|
|
import org.springblade.meter.vo.MeterTreeContractVO;
|
|
import org.springblade.meter.vo.MeterTreeContractVO;
|
|
import org.springblade.system.entity.Dict;
|
|
import org.springblade.system.entity.Dict;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
@@ -46,6 +48,7 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
|
|
private final JdbcTemplate jdbcTemplate;
|
|
private final JdbcTemplate jdbcTemplate;
|
|
private final MeterTreeProjectMapper meterTreeProjectMapper;
|
|
private final MeterTreeProjectMapper meterTreeProjectMapper;
|
|
private final InventoryFormMeterMapper inventoryFormMeterMapper;
|
|
private final InventoryFormMeterMapper inventoryFormMeterMapper;
|
|
|
|
+ private final ContractInventoryFormMapper contractInventoryFormMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Integer selectMaxSort(Long parentId) {
|
|
public Integer selectMaxSort(Long parentId) {
|
|
@@ -583,29 +586,75 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
|
|
rootNodesImport.add(meterTreeContract);
|
|
rootNodesImport.add(meterTreeContract);
|
|
}
|
|
}
|
|
|
|
|
|
- List<MeterTreeContract> resultNodeList = new ArrayList<>();
|
|
|
|
- List<InventoryFormMeter> resultFormList = new ArrayList<>();
|
|
|
|
|
|
+ /*解析excel*/
|
|
List<Map<String, String>> parseExcelFileToList = this.parseExcelFile(file);
|
|
List<Map<String, String>> parseExcelFileToList = this.parseExcelFile(file);
|
|
|
|
+
|
|
|
|
+ /*节点新增*/
|
|
|
|
+ List<MeterTreeContract> resultNodeListAdd = new LinkedList<>();
|
|
|
|
+ /*节点金额修改Ids*/
|
|
|
|
+ Set<Long> updateNodeSet = new HashSet<>();
|
|
|
|
+ /*清单中间新增*/
|
|
|
|
+ List<InventoryFormMeter> resultFormListAdd = new LinkedList<>();
|
|
|
|
+ /*清单中间数量修改*/
|
|
|
|
+ List<InventoryFormMeter> resultFormListUpdate = new LinkedList<>();
|
|
|
|
+
|
|
|
|
+ /*导入节点的子级信息*/
|
|
|
|
+ List<Long> rootNodeIds = rootNodesImport.stream().map(MeterTreeContract::getId).collect(Collectors.toList());
|
|
|
|
+ List<MeterTreeContract> rootNodeChild = baseMapper.selectList(Wrappers.<MeterTreeContract>lambdaQuery().in(MeterTreeContract::getParentId, rootNodeIds).isNotNull(MeterTreeContract::getNodeCode));
|
|
|
|
+ Map<String, MeterTreeContract> rootNodeChildMap = rootNodeChild.stream().collect(Collectors.toMap(MeterTreeContract::getNodeCode, Function.identity()));
|
|
|
|
+ List<Long> rootNodeChildIds = rootNodeChild.stream().map(MeterTreeContract::getId).collect(Collectors.toList());
|
|
|
|
+ Map<Long, List<InventoryFormMeter>> inventoryFormMeterMapsGroupByContractMeterId = new HashMap<>();
|
|
|
|
+ Map<String, InventoryFormMeter> inventoryFormMeterMapsByContractFormId = new HashMap<>();
|
|
|
|
+ if (rootNodeChildIds.size() > 0) {
|
|
|
|
+ /*子级的中间表关联的清单信息*/
|
|
|
|
+ List<InventoryFormMeter> query = jdbcTemplate.query("SELECT * FROM s_inventory_form_meter WHERE is_deleted = 0" +
|
|
|
|
+ " AND contract_id = " + meterTreeContract.getContractId() +
|
|
|
|
+ " AND contract_meter_id IN(" + StringUtils.join(rootNodeChildIds, ",") + ")",
|
|
|
|
+ new BeanPropertyRowMapper<>(InventoryFormMeter.class));
|
|
|
|
+ inventoryFormMeterMapsGroupByContractMeterId = query.stream().collect(Collectors.groupingBy(InventoryFormMeter::getContractMeterId));
|
|
|
|
+ inventoryFormMeterMapsByContractFormId =
|
|
|
|
+ query.stream()
|
|
|
|
+ .collect(Collectors.toMap(
|
|
|
|
+ meter -> meter.getContractFormId() + ":" + meter.getContractMeterId(),
|
|
|
|
+ Function.identity()
|
|
|
|
+ ));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*桩号类型*/
|
|
Map<String, String> meterStakeTypeMaps = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_stake_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictValue, Dict::getDictKey));
|
|
Map<String, String> meterStakeTypeMaps = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_stake_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictValue, Dict::getDictKey));
|
|
- Map<String, ContractInventoryForm> contractInventoryFormMaps = jdbcTemplate.query("SELECT id,change_price,form_number FROM s_contract_inventory_form WHERE is_deleted = 0 AND contract_id = " + meterTreeContract.getContractId(), new BeanPropertyRowMapper<>(ContractInventoryForm.class)).stream().collect(Collectors.toMap(ContractInventoryForm::getFormNumber, Function.identity()));
|
|
|
|
|
|
+
|
|
|
|
+ /*清单信息*/
|
|
|
|
+ List<ContractInventoryForm> query = jdbcTemplate.query("SELECT id,change_price,form_number FROM s_contract_inventory_form WHERE is_deleted = 0 AND contract_id = " + meterTreeContract.getContractId(), new BeanPropertyRowMapper<>(ContractInventoryForm.class));
|
|
|
|
+ Map<String, ContractInventoryForm> contractInventoryFormMapsByFormNumber = query.stream().collect(Collectors.toMap(ContractInventoryForm::getFormNumber, Function.identity()));
|
|
|
|
+ Map<Long, ContractInventoryForm> contractInventoryFormMapsById = query.stream().collect(Collectors.toMap(ContractInventoryForm::getId, Function.identity()));
|
|
|
|
+
|
|
Map<String, List<Map<String, String>>> rootCodeMaps = parseExcelFileToList.stream()
|
|
Map<String, List<Map<String, String>>> rootCodeMaps = parseExcelFileToList.stream()
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
map -> map.get("工程编号"),
|
|
map -> map.get("工程编号"),
|
|
LinkedHashMap::new,
|
|
LinkedHashMap::new,
|
|
- Collectors.toList()
|
|
|
|
- ));
|
|
|
|
|
|
+ Collectors.toList()));
|
|
|
|
+
|
|
for (MeterTreeContract treeContract : rootNodesImport) {
|
|
for (MeterTreeContract treeContract : rootNodesImport) {
|
|
|
|
+
|
|
|
|
+ /*工程编号匹配*/
|
|
List<Map<String, String>> projectCodeGroup = rootCodeMaps.getOrDefault(treeContract.getNodeCode(), null);
|
|
List<Map<String, String>> projectCodeGroup = rootCodeMaps.getOrDefault(treeContract.getNodeCode(), null);
|
|
|
|
+
|
|
if (ObjectUtil.isNotEmpty(projectCodeGroup)) {
|
|
if (ObjectUtil.isNotEmpty(projectCodeGroup)) {
|
|
|
|
+
|
|
Map<String, List<Map<String, String>>> nodeCodeGroup = projectCodeGroup.stream()
|
|
Map<String, List<Map<String, String>>> nodeCodeGroup = projectCodeGroup.stream()
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
map -> map.get("节点编号"),
|
|
map -> map.get("节点编号"),
|
|
LinkedHashMap::new,
|
|
LinkedHashMap::new,
|
|
- Collectors.toList()
|
|
|
|
- ));
|
|
|
|
|
|
+ Collectors.toList()));
|
|
|
|
+ nodeCodeGroup.values().forEach(list -> list.forEach(map -> map.entrySet().removeIf(entry -> entry.getKey().isEmpty())));
|
|
|
|
+
|
|
int sort = 1;
|
|
int sort = 1;
|
|
|
|
+
|
|
|
|
+ /*节点编号匹配*/
|
|
for (Map.Entry<String, List<Map<String, String>>> listEntry : nodeCodeGroup.entrySet()) {
|
|
for (Map.Entry<String, List<Map<String, String>>> listEntry : nodeCodeGroup.entrySet()) {
|
|
|
|
+
|
|
String nodeCode = listEntry.getKey();
|
|
String nodeCode = listEntry.getKey();
|
|
|
|
+
|
|
List<Map<String, String>> rows = listEntry.getValue().stream()
|
|
List<Map<String, String>> rows = listEntry.getValue().stream()
|
|
.sorted(Comparator.comparing(map -> {
|
|
.sorted(Comparator.comparing(map -> {
|
|
String formCode = map.get("清单编号");
|
|
String formCode = map.get("清单编号");
|
|
@@ -614,108 +663,266 @@ public class MeterTreeContractServiceImpl extends BaseServiceImpl<MeterTreeContr
|
|
long nullFormCodeCount = rows.stream()
|
|
long nullFormCodeCount = rows.stream()
|
|
.filter(map -> ObjectUtil.isEmpty(map.get("清单编号")))
|
|
.filter(map -> ObjectUtil.isEmpty(map.get("清单编号")))
|
|
.count();
|
|
.count();
|
|
|
|
+ if (nullFormCodeCount == 0) {
|
|
|
|
+ throw new RuntimeException("节点编号【" + nodeCode + "】没有清单编号为空的数据,请确认至少有一条");
|
|
|
|
+ }
|
|
if (nullFormCodeCount > 1) {
|
|
if (nullFormCodeCount > 1) {
|
|
throw new RuntimeException("节点编号【" + nodeCode + "】存在多条清单编号为空的数据,请确认是否只有一条");
|
|
throw new RuntimeException("节点编号【" + nodeCode + "】存在多条清单编号为空的数据,请确认是否只有一条");
|
|
}
|
|
}
|
|
|
|
|
|
- MeterTreeContract obj = new MeterTreeContract();
|
|
|
|
- Long nodeId = SnowFlakeUtil.getId();
|
|
|
|
- BigDecimal money = BigDecimal.ZERO;
|
|
|
|
- BigDecimal moneyChange = BigDecimal.ZERO;
|
|
|
|
|
|
+ MeterTreeContract orDefault = rootNodeChildMap.getOrDefault(nodeCode, null);
|
|
|
|
|
|
- for (Map<String, String> map : rows) {
|
|
|
|
- String currCode = map.get("节点编号");
|
|
|
|
- if (currCode.equals(nodeCode)) {
|
|
|
|
- String formCode = map.get("清单编号");
|
|
|
|
- String nodeName = map.get("工程名称");
|
|
|
|
- String buildPictureTotal = map.get("施工图数量");
|
|
|
|
- String stakeType = map.get("桩号类型");
|
|
|
|
- String startStake = map.get("起始桩号");
|
|
|
|
- String endStake = map.get("结束桩号");
|
|
|
|
- String contractPicture = map.get("合同图号");
|
|
|
|
- String remarks = map.get("备注");
|
|
|
|
-
|
|
|
|
- //节点
|
|
|
|
- if (ObjectUtil.isEmpty(formCode)) {
|
|
|
|
- obj.setId(nodeId);
|
|
|
|
- obj.setParentId(treeContract.getId());
|
|
|
|
- obj.setAncestor(treeContract.getAncestor() + "," + obj.getParentId());
|
|
|
|
- obj.setNodeName(nodeName);
|
|
|
|
- obj.setNodeCode(currCode);
|
|
|
|
- obj.setUpdateStatus(0);
|
|
|
|
- obj.setSort(sort);
|
|
|
|
- if (ObjectUtil.isNotEmpty(stakeType)) {
|
|
|
|
- String upperCase = stakeType.toUpperCase();
|
|
|
|
- String key = meterStakeTypeMaps.getOrDefault(upperCase, null);
|
|
|
|
- if (key != null) {
|
|
|
|
- obj.setStakeType(Integer.parseInt(key));
|
|
|
|
|
|
+ /*不存在节点编号,新增节点、清单*/
|
|
|
|
+ if (orDefault == null) {
|
|
|
|
+ MeterTreeContract obj = new MeterTreeContract();
|
|
|
|
+ Long nodeId = SnowFlakeUtil.getId();
|
|
|
|
+ BigDecimal money = BigDecimal.ZERO;
|
|
|
|
+ BigDecimal moneyChange = BigDecimal.ZERO;
|
|
|
|
+
|
|
|
|
+ for (Map<String, String> map : rows) {
|
|
|
|
+ String currCode = map.get("节点编号");
|
|
|
|
+ if (currCode.equals(nodeCode)) {
|
|
|
|
+ String formCode = map.get("清单编号");
|
|
|
|
+ String nodeName = map.get("工程名称");
|
|
|
|
+ String buildPictureTotal = map.get("施工图数量");
|
|
|
|
+ String stakeType = map.get("桩号类型");
|
|
|
|
+ String startStake = map.get("起始桩号");
|
|
|
|
+ String endStake = map.get("结束桩号");
|
|
|
|
+ String contractPicture = map.get("合同图号");
|
|
|
|
+ String remarks = map.get("备注");
|
|
|
|
+
|
|
|
|
+ //节点
|
|
|
|
+ if (ObjectUtil.isEmpty(formCode)) {
|
|
|
|
+ obj.setId(nodeId);
|
|
|
|
+ obj.setParentId(treeContract.getId());
|
|
|
|
+ obj.setAncestor(treeContract.getAncestor() + "," + obj.getParentId());
|
|
|
|
+ obj.setNodeName(nodeName);
|
|
|
|
+ obj.setNodeCode(currCode);
|
|
|
|
+ obj.setUpdateStatus(0);
|
|
|
|
+ obj.setSort(sort);
|
|
|
|
+
|
|
|
|
+ /*获取父节点下一级类型,如果父节点是最大类型6,那么默认最大6*/
|
|
|
|
+ if (ObjectUtil.isNotEmpty(treeContract.getNodeType())) {
|
|
|
|
+ obj.setNodeType(treeContract.getNodeType().equals(6) ? 6 : treeContract.getNodeType() + 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (ObjectUtil.isNotEmpty(stakeType)) {
|
|
|
|
+ String upperCase = stakeType.toUpperCase();
|
|
|
|
+ String key = meterStakeTypeMaps.getOrDefault(upperCase, null);
|
|
|
|
+ if (key != null) {
|
|
|
|
+ obj.setStakeType(Integer.parseInt(key));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ obj.setStartStake(startStake);
|
|
|
|
+ obj.setEndStake(endStake);
|
|
|
|
+ obj.setContractPicture(contractPicture);
|
|
|
|
+ obj.setRemarks(remarks);
|
|
|
|
+
|
|
|
|
+ obj.setTemplateId(treeContract.getTemplateId());
|
|
|
|
+ obj.setProjectId(treeContract.getProjectId());
|
|
|
|
+ obj.setContractId(treeContract.getContractId());
|
|
|
|
+
|
|
|
|
+ obj.setDataSourceType(4); //导入
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ //清单
|
|
|
|
+ ContractInventoryForm contractInventoryForm = contractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
|
|
|
|
+ if (contractInventoryForm != null) {
|
|
|
|
+ InventoryFormMeter objForm = new InventoryFormMeter();
|
|
|
|
+ objForm.setId(SnowFlakeUtil.getId());
|
|
|
|
+ objForm.setProjectId(treeContract.getProjectId());
|
|
|
|
+ objForm.setContractId(treeContract.getContractId());
|
|
|
|
+
|
|
|
|
+ if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
|
|
|
|
+ objForm.setCreateUser(SecureUtil.getUserId());
|
|
|
|
+ objForm.setUpdateUser(SecureUtil.getUserId());
|
|
|
|
+ if (SecureUtil.getDeptId().contains(",")) {
|
|
|
|
+ objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
|
|
|
|
+ } else {
|
|
|
|
+ objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ objForm.setContractMeterId(nodeId);
|
|
|
|
+ objForm.setContractFormId(contractInventoryForm.getId());
|
|
|
|
+
|
|
|
|
+ objForm.setBuildPictureTotal(this.parseString(buildPictureTotal));
|
|
|
|
+ objForm.setChangeBuildPictureTotal(objForm.getBuildPictureTotal());
|
|
|
|
+ objForm.setBuildPictureMoney(objForm.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
|
|
|
|
+ objForm.setChangeBuildPictureMoney(objForm.getBuildPictureMoney());
|
|
|
|
+
|
|
|
|
+ /*计量单元节点金额相关累加*/
|
|
|
|
+ money = money.add(objForm.getBuildPictureMoney());
|
|
|
|
+ moneyChange = moneyChange.add(objForm.getChangeBuildPictureMoney());
|
|
|
|
+
|
|
|
|
+ resultFormListAdd.add(objForm);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- obj.setStartStake(startStake);
|
|
|
|
- obj.setEndStake(endStake);
|
|
|
|
- obj.setContractPicture(contractPicture);
|
|
|
|
- obj.setRemarks(remarks);
|
|
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- obj.setTemplateId(treeContract.getTemplateId());
|
|
|
|
- obj.setProjectId(treeContract.getProjectId());
|
|
|
|
- obj.setContractId(treeContract.getContractId());
|
|
|
|
|
|
+ obj.setBuildPictureMoney(money);
|
|
|
|
+ obj.setChangeMoney(moneyChange);
|
|
|
|
+ resultNodeListAdd.add(obj);
|
|
|
|
+ sort++;
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ /*存在节点编号,只同步累加或者新增清单*/
|
|
|
|
+ /*获取该节点的原始的清单中间信息*/
|
|
|
|
+ List<InventoryFormMeter> inventoryFormMeters = inventoryFormMeterMapsGroupByContractMeterId.get(orDefault.getId());
|
|
|
|
+ Map<String, ContractInventoryForm> ysContractInventoryFormMapsByFormNumber = new HashMap<>();
|
|
|
|
+ for (InventoryFormMeter objForm : inventoryFormMeters) {
|
|
|
|
+ /*获取原始清单详细详细*/
|
|
|
|
+ ContractInventoryForm contractInventoryForm = contractInventoryFormMapsById.getOrDefault(objForm.getContractFormId(), null);
|
|
|
|
+ if (contractInventoryForm != null) {
|
|
|
|
+ ysContractInventoryFormMapsByFormNumber.put(contractInventoryForm.getFormNumber(), contractInventoryForm);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (Map<String, String> map : rows) {
|
|
|
|
+ String formCode = map.get("清单编号");
|
|
|
|
+ if (formCode.isEmpty()) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ String buildPictureTotal = map.get("施工图数量");
|
|
|
|
+
|
|
|
|
+ /*获取原始清单详细详细*/
|
|
|
|
+ ContractInventoryForm contractInventoryForm = ysContractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
|
|
|
|
+ if (contractInventoryForm != null) {
|
|
|
|
+ //相同清单编号,则同步累加
|
|
|
|
+ if (contractInventoryForm.getFormNumber().equals(formCode)) {
|
|
|
|
+ /*获取到对应的中间关联清单信息*/
|
|
|
|
+ InventoryFormMeter formUpdate = inventoryFormMeterMapsByContractFormId.getOrDefault(contractInventoryForm.getId() + ":" + orDefault.getId(), null);
|
|
|
|
+ if (formUpdate != null) {
|
|
|
|
+ //累加
|
|
|
|
+ BigDecimal bigDecimal = this.parseString(buildPictureTotal);
|
|
|
|
+ formUpdate.setBuildPictureTotal(formUpdate.getBuildPictureTotal().add(bigDecimal));
|
|
|
|
+
|
|
|
|
+ formUpdate.setChangeBuildPictureTotal(formUpdate.getBuildPictureTotal());
|
|
|
|
|
|
- obj.setDataSourceType(4); //导入
|
|
|
|
|
|
+ formUpdate.setBuildPictureMoney(formUpdate.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
|
|
|
|
+
|
|
|
|
+ formUpdate.setChangeBuildPictureMoney(formUpdate.getBuildPictureMoney());
|
|
|
|
+
|
|
|
|
+ /*更改数量*/
|
|
|
|
+ resultFormListUpdate.add(formUpdate);
|
|
|
|
+
|
|
|
|
+ /*更新节点金额*/
|
|
|
|
+ updateNodeSet.add(orDefault.getId());
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
} else {
|
|
- //清单
|
|
|
|
- ContractInventoryForm contractInventoryForm = contractInventoryFormMaps.getOrDefault(formCode, null);
|
|
|
|
- if (contractInventoryForm != null) {
|
|
|
|
- InventoryFormMeter objForm = new InventoryFormMeter();
|
|
|
|
- objForm.setId(SnowFlakeUtil.getId());
|
|
|
|
- objForm.setProjectId(treeContract.getProjectId());
|
|
|
|
- objForm.setContractId(treeContract.getContractId());
|
|
|
|
|
|
+
|
|
|
|
+ //没有获取到,那么证明是不相同清单编号,则获取对应的清单数据,进行新增清单
|
|
|
|
+ ContractInventoryForm contractInventoryFormAdd = contractInventoryFormMapsByFormNumber.getOrDefault(formCode, null);
|
|
|
|
+ if (contractInventoryFormAdd != null) {
|
|
|
|
+ InventoryFormMeter formAdd = new InventoryFormMeter();
|
|
|
|
+ formAdd.setId(SnowFlakeUtil.getId());
|
|
|
|
+ formAdd.setProjectId(orDefault.getProjectId());
|
|
|
|
+ formAdd.setContractId(orDefault.getContractId());
|
|
|
|
|
|
if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
|
|
if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
|
|
- objForm.setCreateUser(SecureUtil.getUserId());
|
|
|
|
- objForm.setUpdateUser(SecureUtil.getUserId());
|
|
|
|
|
|
+ formAdd.setCreateUser(SecureUtil.getUserId());
|
|
|
|
+ formAdd.setUpdateUser(SecureUtil.getUserId());
|
|
if (SecureUtil.getDeptId().contains(",")) {
|
|
if (SecureUtil.getDeptId().contains(",")) {
|
|
- objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
|
|
|
|
|
|
+ formAdd.setCreateDept(Long.parseLong(SecureUtil.getDeptId().split(",")[0]));
|
|
} else {
|
|
} else {
|
|
- objForm.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
|
|
|
|
|
|
+ formAdd.setCreateDept(Long.parseLong(SecureUtil.getDeptId()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- objForm.setContractMeterId(nodeId);
|
|
|
|
- objForm.setContractFormId(contractInventoryForm.getId());
|
|
|
|
|
|
+ formAdd.setContractMeterId(orDefault.getId());
|
|
|
|
+ formAdd.setContractFormId(contractInventoryFormAdd.getId());
|
|
|
|
|
|
- objForm.setBuildPictureTotal(this.parseString(buildPictureTotal));
|
|
|
|
- objForm.setChangeBuildPictureTotal(objForm.getBuildPictureTotal());
|
|
|
|
- objForm.setBuildPictureMoney(objForm.getBuildPictureTotal().multiply(contractInventoryForm.getChangePrice())); //数量*变更后单价
|
|
|
|
- objForm.setChangeBuildPictureMoney(objForm.getBuildPictureMoney());
|
|
|
|
|
|
+ formAdd.setBuildPictureTotal(this.parseString(buildPictureTotal));
|
|
|
|
+ formAdd.setChangeBuildPictureTotal(formAdd.getBuildPictureTotal());
|
|
|
|
+ formAdd.setBuildPictureMoney(formAdd.getBuildPictureTotal().multiply(contractInventoryFormAdd.getChangePrice())); //数量*变更后单价
|
|
|
|
+ formAdd.setChangeBuildPictureMoney(formAdd.getBuildPictureMoney());
|
|
|
|
|
|
- /*计量单元节点金额相关累加*/
|
|
|
|
- money = money.add(objForm.getBuildPictureMoney());
|
|
|
|
- moneyChange = moneyChange.add(objForm.getChangeBuildPictureMoney());
|
|
|
|
|
|
+ /*新增清单*/
|
|
|
|
+ resultFormListAdd.add(formAdd);
|
|
|
|
+
|
|
|
|
+ /*更新节点金额*/
|
|
|
|
+ updateNodeSet.add(orDefault.getId());
|
|
|
|
|
|
- resultFormList.add(objForm);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- obj.setBuildPictureMoney(money);
|
|
|
|
- obj.setChangeMoney(moneyChange);
|
|
|
|
- resultNodeList.add(obj);
|
|
|
|
- sort++;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (resultNodeList.size() > 0) {
|
|
|
|
- this.saveBatch(resultNodeList, 1000);
|
|
|
|
- if (resultFormList.size() > 0) {
|
|
|
|
- inventoryFormMeterMapper.batchInsert(resultFormList);
|
|
|
|
- /*for (InventoryFormMeter inventoryFormMeter : resultFormList) {
|
|
|
|
- inventoryFormMeterMapper.insert(inventoryFormMeter);
|
|
|
|
- }*/
|
|
|
|
|
|
+
|
|
|
|
+ boolean var = false;
|
|
|
|
+
|
|
|
|
+ /*节点*/
|
|
|
|
+ if (resultNodeListAdd.size() > 0) {
|
|
|
|
+ this.saveBatch(resultNodeListAdd, 1000);
|
|
|
|
+ var = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*清单中间新增*/
|
|
|
|
+ if (resultFormListAdd.size() > 0) {
|
|
|
|
+ inventoryFormMeterMapper.batchInsert(resultFormListAdd);
|
|
|
|
+ /*for (InventoryFormMeter inventoryFormMeter : resultFormListAdd) {
|
|
|
|
+ inventoryFormMeterMapper.insert(inventoryFormMeter);
|
|
|
|
+ }*/
|
|
|
|
+ var = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*清单中间数量修改*/
|
|
|
|
+ if (resultFormListUpdate.size() > 0) {
|
|
|
|
+ for (InventoryFormMeter inventoryFormMeter : resultFormListUpdate) {
|
|
|
|
+ String sql = "UPDATE s_inventory_form_meter " +
|
|
|
|
+ "SET build_picture_total = ? ," +
|
|
|
|
+ "change_build_picture_total = ? ," +
|
|
|
|
+ "build_picture_money = ? ," +
|
|
|
|
+ "change_build_picture_money = ? WHERE id = ?";
|
|
|
|
+ jdbcTemplate.update(sql,
|
|
|
|
+ inventoryFormMeter.getBuildPictureTotal(),
|
|
|
|
+ inventoryFormMeter.getChangeBuildPictureTotal(),
|
|
|
|
+ inventoryFormMeter.getBuildPictureMoney(),
|
|
|
|
+ inventoryFormMeter.getChangeBuildPictureMoney(),
|
|
|
|
+ inventoryFormMeter.getId());
|
|
|
|
+ }
|
|
|
|
+ var = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*节点金额修改*/
|
|
|
|
+ if (updateNodeSet.size() > 0) {
|
|
|
|
+ for (Long treeContractId : updateNodeSet) {
|
|
|
|
+ /*重新计算节点下的清单数量金额等*/
|
|
|
|
+ List<ContractFromVO> decompositionList = contractInventoryFormMapper.getNodeResolveForm(meterTreeContract.getContractId(), treeContractId);
|
|
|
|
+ if (ObjectUtil.isNotEmpty(decompositionList) && decompositionList.size() > 0) {
|
|
|
|
+ BigDecimal moneyAll = BigDecimal.ZERO;
|
|
|
|
+ BigDecimal moneyChangeAll = BigDecimal.ZERO;
|
|
|
|
+
|
|
|
|
+ for (ContractFromVO contractFromVO : decompositionList) {
|
|
|
|
+ BigDecimal buildPictureTotal = contractFromVO.getBuildPictureTotal(); //变更前数量
|
|
|
|
+ BigDecimal changeBuildPictureTotal = contractFromVO.getChangeBuildPictureTotal(); //变更后数量
|
|
|
|
+ BigDecimal currentPrice = contractFromVO.getCurrentPrice(); //单价
|
|
|
|
+
|
|
|
|
+ BigDecimal buildPictureMoney = buildPictureTotal.multiply(currentPrice); //变更前金额
|
|
|
|
+ BigDecimal changeBuildPictureMoney = changeBuildPictureTotal.multiply(currentPrice); //变更后金额
|
|
|
|
+
|
|
|
|
+ moneyAll = moneyAll.add(buildPictureMoney);
|
|
|
|
+ moneyChangeAll = moneyChangeAll.add(changeBuildPictureMoney);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String sql = "UPDATE s_meter_tree_contract " +
|
|
|
|
+ "SET build_picture_money = ?, " +
|
|
|
|
+ "change_money = ? WHERE id = ?";
|
|
|
|
+ jdbcTemplate.update(sql,
|
|
|
|
+ moneyAll,
|
|
|
|
+ moneyChangeAll,
|
|
|
|
+ treeContractId);
|
|
|
|
+ }
|
|
|
|
+ var = true;
|
|
}
|
|
}
|
|
- return true;
|
|
|
|
}
|
|
}
|
|
- return false;
|
|
|
|
|
|
+ return var;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|