|
@@ -3,6 +3,7 @@ package org.springblade.business.controller;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.nacos.common.utils.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiImplicitParam;
|
|
@@ -12,17 +13,22 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springblade.business.entity.ConstructionLedger;
|
|
|
import org.springblade.business.feignClient.ClientTreePublicCodeClientImpl;
|
|
|
import org.springblade.business.service.IConstructionLedgerService;
|
|
|
+import org.springblade.business.service.IInformationQueryService;
|
|
|
import org.springblade.business.vo.NeiYeLedgerVO;
|
|
|
import org.springblade.business.vo.NeiYeQueryVO;
|
|
|
+import org.springblade.business.vo.QueryProcessDataVO;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
import org.springblade.core.mp.support.Condition;
|
|
|
import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.manager.entity.WbsTreeContract;
|
|
|
+import org.springblade.manager.feign.ContractClient;
|
|
|
import org.springblade.manager.feign.WbsTreeContractClient;
|
|
|
import org.springblade.manager.vo.WbsTreeContractTreeVOS;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springblade.core.mp.support.Query;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@AllArgsConstructor
|
|
@@ -36,6 +42,10 @@ public class NeiYeController {
|
|
|
|
|
|
private final ClientTreePublicCodeClientImpl clientTreePublicCodeClient;
|
|
|
|
|
|
+ private final IInformationQueryService informationQueryService;
|
|
|
+
|
|
|
+ private final ContractClient contractClient;
|
|
|
+
|
|
|
/**
|
|
|
* 获取内业台账列表
|
|
|
* @return 内业台账列表
|
|
@@ -44,104 +54,85 @@ public class NeiYeController {
|
|
|
@ApiOperationSupport(order = 2)
|
|
|
@ApiOperation(value = "获取内业台账列表")
|
|
|
public R<IPage<NeiYeLedgerVO>> queryCurrentNodeNeiYeLedger(@RequestBody NeiYeQueryVO queryVO){
|
|
|
- //获取当前合同段所有划分情况
|
|
|
- List<WbsTreeContractTreeVOS> contractNodeLIst = this.wbsTreeContractClient.queryContractWbsTreeAll(queryVO.getContractId(), 1, "");
|
|
|
- //形成Map
|
|
|
- Map<String,WbsTreeContractTreeVOS> vosMap = new HashMap<>();
|
|
|
- Map<String,String> vosParentMap = new HashMap<>();
|
|
|
- contractNodeLIst.forEach(vo -> {
|
|
|
- vosMap.put(vo.getId(), vo);
|
|
|
- if(vosParentMap.containsKey(vo.getParentId())){
|
|
|
- //存在,获取拼接
|
|
|
- vosParentMap.put(vo.getParentId(), vosParentMap.get(vo.getParentId()) + "," + vo.getId());
|
|
|
- } else {
|
|
|
- //不存在,新建
|
|
|
- vosParentMap.put(vo.getParentId(), vo.getId());
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- //根据parentId获取其下所有子节点
|
|
|
- String clientId = queryVO.getParentId();
|
|
|
- clientId = this.getAllClientId(queryVO.getParentId(), clientId, vosParentMap);
|
|
|
-
|
|
|
- //结果数据
|
|
|
- List<NeiYeLedgerVO> result = new ArrayList<>();
|
|
|
- //循环节点集合,找到工序节点
|
|
|
- for(WbsTreeContractTreeVOS vos : contractNodeLIst){
|
|
|
- if(new Integer("6").equals(vos.getType())){
|
|
|
- if(clientId != null && !clientId.contains(vos.getId())){
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- //工序节点,递归获取父节点信息
|
|
|
- Map<String,String> map = new HashMap<>();
|
|
|
- this.foreachGetParent(map, vosMap, vos.getParentId());
|
|
|
-
|
|
|
- //目前先查询名称(暂时这么处理)
|
|
|
- if(StringUtils.isNotEmpty(queryVO.getQueryStr()) && !(map.get("unitProject").contains(queryVO.getQueryStr()) || map.get("partProject").contains(queryVO.getQueryStr()) || map.get("subentryProject").contains(queryVO.getQueryStr()) || vos.getTitle().contains(queryVO.getQueryStr()))){
|
|
|
- //不符合查询条件,跳过
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- //获取当前工序的施工台账信息
|
|
|
- Map<String,Object> queryMap = new HashMap<>();
|
|
|
- queryMap.put("wbs_id",vos.getPrimaryKeyId());
|
|
|
- List<ConstructionLedger> ledgers = this.constructionLedgerService.listByMap(queryMap);
|
|
|
- if(ledgers != null && ledgers.size() > 0){
|
|
|
- ConstructionLedger ledger = ledgers.get(0);
|
|
|
- if(ledger.getSiteStartTime() != null && ledger.getSiteEndTime() != null){
|
|
|
- //获取施工起止时间
|
|
|
- map.put("siteStartToEndTime", DateUtil.format(ledger.getSiteStartTime(), "yyyy-MM-dd") + " ~ " + DateUtil.format(ledger.getSiteEndTime(), "yyyy-MM-dd"));
|
|
|
- }
|
|
|
- if(ledger.getDetectionStartTime() != null && ledger.getDetectionEndTime() != null){
|
|
|
- //获取检测起止时间
|
|
|
- map.put("detectionStartToEndTime", DateUtil.format(ledger.getDetectionStartTime(), "yyyy-MM-dd") + " ~ " + DateUtil.format(ledger.getDetectionEndTime(), "yyyy-MM-dd"));
|
|
|
+ if(queryVO.getWbsIds() != null && queryVO.getWbsIds().size() > 0){
|
|
|
+ //生成列表
|
|
|
+ List<NeiYeLedgerVO> neiYeLedgerVOList = new ArrayList<>();
|
|
|
+
|
|
|
+ //获取当前合同段所有划分情况
|
|
|
+ List<WbsTreeContractTreeVOS> contractNodeLIst = this.wbsTreeContractClient.queryContractWbsTreeAll(queryVO.getContractId(), 1, "");
|
|
|
+ //设置map
|
|
|
+ Map<String, WbsTreeContractTreeVOS> idToNodeMap = new HashMap<>();
|
|
|
+ contractNodeLIst.forEach(vos -> idToNodeMap.put(vos.getId(), vos));
|
|
|
+
|
|
|
+ //根据点击的节点获取这个节点下所有填报节点
|
|
|
+ WbsTreeContract node = this.wbsTreeContractClient.getContractNodeByPrimaryKeyId(queryVO.getWbsIds().get(0));
|
|
|
+
|
|
|
+ if(!new Integer("6").equals(node.getDeptCategory()) && !Arrays.asList("1,2,3,4".split(",")).contains(node.getMajorDataType().toString())){
|
|
|
+ //不是工序,则查询当前节点下的所有填报节点
|
|
|
+ List<QueryProcessDataVO> queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(node.getId().toString(), 1, queryVO.getContractId());
|
|
|
+ if(queryDataResult != null && queryDataResult.size() > 0){
|
|
|
+ //删除非工序节点
|
|
|
+ queryDataResult.removeIf(vo -> !new Integer("4").equals(vo.getMajorDataType()));
|
|
|
+
|
|
|
+ //分组
|
|
|
+ List<List<QueryProcessDataVO>> groupList = CommonUtil.getBatchSize(queryDataResult, queryVO.getSize());
|
|
|
+ List<QueryProcessDataVO> groupQueryList = groupList.get(queryVO.getCurrent() == 0 ? 0 : queryVO.getCurrent() - 1);
|
|
|
+
|
|
|
+ //获取所有施工日志记录
|
|
|
+ List<String> primaryKeyIds = groupQueryList.stream().map(QueryProcessDataVO::getPrimaryKeyId).distinct().collect(Collectors.toList());
|
|
|
+ List<ConstructionLedger> ledgers = this.constructionLedgerService.list(Wrappers.<ConstructionLedger>lambdaQuery().in(ConstructionLedger::getWbsId, primaryKeyIds));
|
|
|
+
|
|
|
+ for(QueryProcessDataVO vo : groupQueryList){
|
|
|
+ //处理父节点信息
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ this.foreachGetParent(map, idToNodeMap, vo.getParentId(), queryVO.getContractId());
|
|
|
+
|
|
|
+ //获取当前工序的施工台账信息
|
|
|
+ if(ledgers != null && ledgers.size() > 0){
|
|
|
+ Iterator<ConstructionLedger> iterator = ledgers.iterator();
|
|
|
+ while (iterator.hasNext()){
|
|
|
+ ConstructionLedger ledger = iterator.next();
|
|
|
+ if(vo.getPrimaryKeyId().equals(ledger.getWbsId().toString())){
|
|
|
+ if(ledger.getSiteStartTime() != null && ledger.getSiteEndTime() != null){
|
|
|
+ //获取施工起止时间
|
|
|
+ map.put("siteStartToEndTime", DateUtil.format(ledger.getSiteStartTime(), "yyyy-MM-dd") + " ~ " + DateUtil.format(ledger.getSiteEndTime(), "yyyy-MM-dd"));
|
|
|
+ }
|
|
|
+ if(ledger.getDetectionStartTime() != null && ledger.getDetectionEndTime() != null){
|
|
|
+ //获取检测起止时间
|
|
|
+ map.put("detectionStartToEndTime", DateUtil.format(ledger.getDetectionStartTime(), "yyyy-MM-dd") + " ~ " + DateUtil.format(ledger.getDetectionEndTime(), "yyyy-MM-dd"));
|
|
|
+ }
|
|
|
+ iterator.remove();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //todo 当前缺少流程状态、是否关联评定、是否关联试验 =================================
|
|
|
+ //新增列表数据
|
|
|
+ neiYeLedgerVOList.add(new NeiYeLedgerVO(map.get("unitProject"),
|
|
|
+ map.get("partProject"),
|
|
|
+ map.get("partChildProject"),
|
|
|
+ map.get("subentryProject"),
|
|
|
+ map.get("subentryChildProject"),
|
|
|
+ vo.getTitle(),
|
|
|
+ map.get("siteStartToEndTime"),
|
|
|
+ map.get("detectionStartToEndTime"),
|
|
|
+ new Integer("1").equals(vo.getStatus()) ? "待审批" : new Integer("2").equals(vo.getStatus()) ? "已审批" : "未上报",
|
|
|
+ "false",
|
|
|
+ "false"));
|
|
|
}
|
|
|
+ //转换为page信息
|
|
|
+ Query query = new Query();
|
|
|
+ query.setCurrent(queryVO.getCurrent());
|
|
|
+ query.setSize(queryVO.getSize());
|
|
|
+ IPage<NeiYeLedgerVO> page = Condition.getPage(query);
|
|
|
+ page.setTotal(queryDataResult.size());
|
|
|
+ page.setRecords(neiYeLedgerVOList);
|
|
|
+ return R.data(page);
|
|
|
}
|
|
|
- //todo 当前缺少流程状态、是否关联评定、是否关联试验 =================================
|
|
|
- //新增列表数据
|
|
|
- result.add(new NeiYeLedgerVO(map.get("unitProject"), map.get("partProject"), map.get("subentryProject"), vos.getTitle(), map.get("siteStartToEndTime"), map.get("detectionStartToEndTime"), "1", "false", "false"));
|
|
|
}
|
|
|
}
|
|
|
- //根据query的分页信息分组
|
|
|
- if(result.size() != 0){
|
|
|
- List<List<NeiYeLedgerVO>> groupList = CommonUtil.getBatchSize(result, queryVO.getSize());
|
|
|
-
|
|
|
- //转换为page信息
|
|
|
- Query query = new Query();
|
|
|
- query.setCurrent(queryVO.getCurrent());
|
|
|
- query.setSize(queryVO.getSize());
|
|
|
- IPage<NeiYeLedgerVO> page = Condition.getPage(query);
|
|
|
- page.setTotal(result.size());
|
|
|
- page.setRecords(groupList.get(queryVO.getCurrent() == 0 ? 0 : queryVO.getCurrent() - 1));
|
|
|
- return R.data(page);
|
|
|
- }
|
|
|
|
|
|
- return R.data(null);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取指定节点下的所有子节点
|
|
|
- * @param parentId 父节点
|
|
|
- * @param clientId 子节点ID串
|
|
|
- * @param vosParentMap 数据map
|
|
|
- * @return clientId
|
|
|
- */
|
|
|
- private String getAllClientId(String parentId, String clientId, Map<String,String> vosParentMap){
|
|
|
- if(vosParentMap.containsKey(parentId)){
|
|
|
- //获取其下所有子节点
|
|
|
- String clientIds = vosParentMap.get(parentId);
|
|
|
- if(StringUtils.isNotEmpty(clientIds)){
|
|
|
- String[] clientIdArray = clientIds.split(",");
|
|
|
- for(String id : clientIdArray){
|
|
|
- clientId = this.getAllClientId(id, clientId, vosParentMap);
|
|
|
- }
|
|
|
- clientId += "," + clientIds;
|
|
|
- }
|
|
|
- }
|
|
|
- return clientId;
|
|
|
+ return R.data(300, null, "未查询到数据");
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -150,33 +141,32 @@ public class NeiYeController {
|
|
|
* @param vosMap 所有节点信息
|
|
|
* @param parentId 父节点
|
|
|
*/
|
|
|
- private void foreachGetParent(Map<String,String> resultMap, Map<String,WbsTreeContractTreeVOS> vosMap, String parentId){
|
|
|
+ private void foreachGetParent(Map<String,String> resultMap, Map<String,WbsTreeContractTreeVOS> vosMap, String parentId, String contractId){
|
|
|
if(vosMap.containsKey(parentId) || !"0".equals(parentId.trim())){
|
|
|
//存在父节点信息,获取
|
|
|
WbsTreeContractTreeVOS vos = vosMap.get(parentId);
|
|
|
- if(new Integer("1").equals(vos.getType())){
|
|
|
+ if(new Integer("1").equals(vos.getDeptCategory())){
|
|
|
//类型属于1则为单位工程
|
|
|
- resultMap.put("unitProject", vos.getTitle());
|
|
|
- } else if(Arrays.asList("2,3".split(",")).contains(String.valueOf(vos.getType()))){
|
|
|
- //类型属于2和3则为分部工程和子分部工程
|
|
|
- if(resultMap.containsKey("partProject")){
|
|
|
- //存在
|
|
|
- resultMap.put("partProject", vos.getTitle() + "/" + resultMap.get("partProject"));
|
|
|
- } else {
|
|
|
- //不存在
|
|
|
- resultMap.put("partProject", vos.getTitle());
|
|
|
- }
|
|
|
- } else if(Arrays.asList("4,5".split(",")).contains(String.valueOf(vos.getType()))){
|
|
|
- //类型属于2和3则为分项工程和子分项工程
|
|
|
- if(resultMap.containsKey("subentryProject")){
|
|
|
- //存在
|
|
|
- resultMap.put("subentryProject", vos.getTitle() + "/" + resultMap.get("subentryProject"));
|
|
|
- } else {
|
|
|
- //不存在
|
|
|
- resultMap.put("subentryProject", vos.getTitle());
|
|
|
- }
|
|
|
+ resultMap.put("unitProject", this.contractClient.getContractById(Long.parseLong(contractId)).getContractName());
|
|
|
+
|
|
|
+ } else if(new Integer("2").equals(vos.getDeptCategory())){
|
|
|
+ //类型属于2则为分部工程
|
|
|
+ resultMap.put("partProject", vos.getTitle());
|
|
|
+
|
|
|
+ } else if(new Integer("3").equals(vos.getDeptCategory())){
|
|
|
+ //类型属于3则为子分部工程
|
|
|
+ resultMap.put("partChildProject", vos.getTitle());
|
|
|
+
|
|
|
+ } else if(new Integer("4").equals(vos.getDeptCategory())){
|
|
|
+ //类型属于4则为分项工程
|
|
|
+ resultMap.put("subentryProject", vos.getTitle());
|
|
|
+
|
|
|
+ } else if(new Integer("5").equals(vos.getDeptCategory())){
|
|
|
+ //类型属于5则为子分项工程
|
|
|
+ resultMap.put("subentryChildProject", vos.getTitle());
|
|
|
+
|
|
|
}
|
|
|
- this.foreachGetParent(resultMap, vosMap, vos.getParentId());
|
|
|
+ this.foreachGetParent(resultMap, vosMap, vos.getParentId(), contractId);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -199,10 +189,15 @@ public class NeiYeController {
|
|
|
//为空,说明初始化
|
|
|
//获取根节点
|
|
|
rootTreeNode = this.clientTreePublicCodeClient.queryContractWbsTreeByContractIdAndType(contractId, 1, "0");
|
|
|
+ //设置名称
|
|
|
+ rootTreeNode.get(0).setTitle(this.contractClient.getContractById(Long.parseLong(contractId)).getContractName());
|
|
|
} else {
|
|
|
//不为空,获取其下子节点
|
|
|
rootTreeNode = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, parentId);
|
|
|
}
|
|
|
+
|
|
|
+ rootTreeNode.removeIf(vos -> Arrays.asList("1,2,3".split(",")).contains(vos.getMajorDataType().toString()));
|
|
|
+
|
|
|
return R.data(rootTreeNode);
|
|
|
}
|
|
|
|