Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into master

yangyj 2 жил өмнө
parent
commit
718680ff35

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ContractLogClient.java

@@ -28,7 +28,7 @@ public interface ContractLogClient {
     void updateTheLogPdfUrl(@RequestParam String theLogId, @RequestParam String pdfUrl);
 
     @GetMapping(API_PREFIX + "/queryContractLogByPrimaryKeyIdAndRecordTime")
-    JSONObject queryContractLogByPrimaryKeyIdAndRecordTime(@RequestParam String nodePrimaryKeyId, @RequestParam String recordTime);
+    JSONObject queryContractLogByPrimaryKeyIdAndRecordTime(@RequestParam String nodePrimaryKeyId, @RequestParam String recordTime, @RequestParam String contractId);
 
     @GetMapping(API_PREFIX + "/queryContractLogById")
     JSONObject queryContractLogById(@RequestParam String theLogId);

+ 51 - 3
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -69,19 +69,67 @@ public class ContractLogController extends BladeController {
 
 	private final NewIOSSClient newIOSSClient;
 
+	/**
+	 * 获取当前资料的任务状态
+	 */
+	@GetMapping("/checkTheLogTaskStatus")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "获取当前资料的任务状态")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "startTaskVO", value = "流程参数", required = true),
+			@ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId", required = true),
+			@ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd", required = true)
+	})
+	public R<Integer> checkTheLogTaskStatus(@RequestParam String nodePrimaryKeyId, @RequestParam String recordTime, @RequestParam String contractId){
+		ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery()
+				.eq(ContractLog::getWbsNodeId, nodePrimaryKeyId)
+				.eq(ContractLog::getContractId, contractId)
+				.eq(ContractLog::getRecordTime, recordTime)
+				.eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
+		//默认未上报
+		int status = 1;
+
+		if(log != null){
+			switch (log.getStatus()){
+				case 0:
+				case 3:
+					//已填报未上报 或 已填报已废除
+					status = 2;
+					break;
+				case 1:
+					//待审批
+					status = 3;
+					break;
+				case 2:
+					//已审批
+					status = 4;
+					break;
+			}
+		}
+
+		return R.data(status);
+	}
+
     /**
      * 日志上报(填报页)
      */
     @PostMapping("/startTaskTheLog")
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "日志上报(填报页)")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "startTaskVO", value = "流程参数", required = true),
+			@ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId", required = true),
+			@ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd", required = true)
+	})
     public R<Boolean> startTaskTheLog(@RequestBody StartTaskVO startTaskVO, @RequestParam String nodePrimaryKeyId, @RequestParam String recordTime){
         if(StringUtils.isEmpty(startTaskVO.getIds())){
             if(StringUtils.isEmpty(nodePrimaryKeyId) && StringUtils.isEmpty(recordTime)){
                 return R.fail("未找到业务数据");
             }
             //如果ids为空,说明是填报页上报,那么需要根据 nodePrimaryKeyId 和 recordTime 获取当前用户的填写记录
-            ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery().eq(ContractLog::getWbsNodeId, nodePrimaryKeyId).eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
+            ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery().eq(ContractLog::getWbsNodeId, nodePrimaryKeyId)
+					.eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getContractId, startTaskVO.getContractId())
+					.eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
             if(log == null){
                 return R.fail("未找到业务数据");
             }
@@ -142,13 +190,13 @@ public class ContractLogController extends BladeController {
 			@ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd")
 		}
 	)
-	public R<List<JSONObject>> querySelectProcessList(String theLogId, String nodePrimaryKeyId, String recordTime){
+	public R<List<JSONObject>> querySelectProcessList(String theLogId, String nodePrimaryKeyId, String recordTime, String contractId){
 		List<JSONObject> jsonResult = new ArrayList<>();
 
 		if(StringUtils.isEmpty(theLogId)){
 			ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery()
 					.eq(ContractLog::getWbsNodeId, nodePrimaryKeyId)
-					.eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
+					.eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getContractId, contractId).eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
 			if(log == null){
 				return R.data(300, null, "未找到数据");
 			}

+ 14 - 4
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java

@@ -61,10 +61,12 @@ public class ContractLogClientImpl implements ContractLogClient {
     }
 
     @Override
-    public JSONObject queryContractLogByPrimaryKeyIdAndRecordTime(String nodePrimaryKeyId, String recordTime) {
+    public JSONObject queryContractLogByPrimaryKeyIdAndRecordTime(String nodePrimaryKeyId, String recordTime, String contractId) {
         ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery()
                 .eq(ContractLog::getWbsNodeId, nodePrimaryKeyId)
-                .eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
+                .eq(ContractLog::getRecordTime, recordTime)
+                .eq(ContractLog::getContractId, contractId)
+                .eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
         return log != null ? JSONObject.parseObject(JSONObject.toJSONString(log)) : null;
     }
 
@@ -81,7 +83,7 @@ public class ContractLogClientImpl implements ContractLogClient {
         BeanUtils.copyProperties(saveContractLogVO, contractLog);
 
         //查询是否存在旧数据
-        JSONObject logJson = this.queryContractLogByPrimaryKeyIdAndRecordTime(saveContractLogVO.getWbsNodeId().toString(), saveContractLogVO.getRecordTime());
+        JSONObject logJson = this.queryContractLogByPrimaryKeyIdAndRecordTime(saveContractLogVO.getWbsNodeId().toString(), saveContractLogVO.getRecordTime(), saveContractLogVO.getContractId().toString());
 
         if(logJson != null){
             //主键不为空,说明是修改
@@ -116,12 +118,20 @@ public class ContractLogClientImpl implements ContractLogClient {
                     }
 
                     //处理新增数据
-                    jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, contractLog)));
+                    jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, JSONObject.parseObject(JSONObject.toJSONString(logJson), ContractLog.class))));
                     //删除掉已经被取消的数据
                     this.contractLogWbsService.removeBatchByIds(oldLogWbsList);
                     //保存新增的数据
                     this.contractLogWbsService.saveBatch(saveList);
 
+                } else {
+                    //没有旧数据,直接新增
+                    List<JSONObject> jsonList = saveContractLogVO.getCorrelationIds();
+
+                    List<ContractLogWbs> saveList = new ArrayList<>();
+                    jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, JSONObject.parseObject(JSONObject.toJSONString(logJson), ContractLog.class))));
+
+                    this.contractLogWbsService.saveBatch(saveList);
                 }
             }
             //修改数据ID指向

+ 23 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1743,7 +1743,7 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId"),
             @ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd")
     })
-    public R<String> getTheLogPdInfo(String theLogId, String nodePrimaryKeyId, String recordTime) throws Exception{
+    public R<String> getTheLogPdInfo(String theLogId, String nodePrimaryKeyId, String recordTime, String contractId) throws Exception{
         //获取配置的路径
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
 
@@ -1755,7 +1755,7 @@ public class ExcelTabController extends BladeController {
             if(StringUtils.isEmpty(recordTime)){
                 recordTime = DateUtil.format(DateUtil.now(), "yyyy-MM-dd");
             }
-            theLogJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, recordTime);
+            theLogJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, recordTime, contractId);
         }
 
         if(theLogJson != null){
@@ -1779,7 +1779,7 @@ public class ExcelTabController extends BladeController {
             }
 
             //获取数据
-            List<Map<String, Object>> businessDataMapList = (List<Map<String, Object>>)this.getTheLogBusinessData(theLogId, nodePrimaryKeyId, recordTime).getData();
+            List<Map<String, Object>> businessDataMapList = this.getTheLogBusinessData(theLogId, nodePrimaryKeyId, recordTime, contractId).getData();
             //PDF路径
             List<String> pdfUrls = new ArrayList<>();
 
@@ -1885,6 +1885,7 @@ public class ExcelTabController extends BladeController {
                                 int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
 
                                 final CellRange cellRange = sheet.getCellRange(y1, x1);
+
                                 cellRange.setText(e.getId() + "");
                                 cellRange.getCellStyle().getFont().setColor(Color.white);
 
@@ -1932,18 +1933,25 @@ public class ExcelTabController extends BladeController {
         return R.data(null);
     }
 
+    /**
+     * 获取当前用户当前日期的填报记录
+     */
     @GetMapping("/get-the-log-business-data")
     @ApiOperationSupport(order = 26)
     @ApiOperation(value = "获取当前用户当前日期的填报记录")
-    @ApiImplicitParam(name = "theLogId", value = "日志ID", required = true)
-    public R getTheLogBusinessData(String theLogId, String nodePrimaryKeyId, String recordTime) {
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "theLogId", value = "日志记录的id,可能为空"),
+            @ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId"),
+            @ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd")
+    })
+    public R<List<Map<String, Object>>> getTheLogBusinessData(String theLogId, String nodePrimaryKeyId, String recordTime, String contractId) {
         List<Map<String, Object>> resultMapList = new ArrayList<>();
         //获取对应的记录
         JSONObject theLogJson;
         if(StringUtils.isNotEmpty(theLogId)){
             theLogJson = this.contractLogClient.queryContractLogById(theLogId);
         } else {
-            theLogJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, recordTime);
+            theLogJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, recordTime, contractId);
         }
         if(theLogJson != null){
             //查询对应的html
@@ -2035,10 +2043,10 @@ public class ExcelTabController extends BladeController {
             @ApiImplicitParam(name = "currentTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd"),
             @ApiImplicitParam(name = "targetTime", value = "需要复制的目标日期")
     })
-    public R<List<Map<String, Object>>> copyTheLogBusinessData(@RequestParam String nodePrimaryKeyId, @RequestParam String currentTime, @RequestParam String targetTime){
+    public R<List<Map<String, Object>>> copyTheLogBusinessData(@RequestParam String nodePrimaryKeyId, @RequestParam String currentTime, @RequestParam String targetTime, @RequestParam String contractId){
         if(StringUtils.isNotEmpty(nodePrimaryKeyId) && StringUtils.isNotEmpty(currentTime) && StringUtils.isNotEmpty(targetTime)){
             //获取目标的数据
-            JSONObject targetJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, targetTime);
+            JSONObject targetJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, targetTime, contractId);
             if(targetJson == null){
                 return R.fail("目标日期下未找到当前用户填报的数据,请重新选择");
             }
@@ -2053,7 +2061,7 @@ public class ExcelTabController extends BladeController {
             List<Map<String, Object>> targetDatas = this.jdbcTemplate.queryForList(queryTargetDataSql);
 
             //检查当前日期下是否存在数据
-            JSONObject currentJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, currentTime);
+            JSONObject currentJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, currentTime, contractId);
             String businessId = SnowFlakeUtil.getId().toString();
             boolean isNew = true;
             if(currentJson != null){
@@ -2085,7 +2093,11 @@ public class ExcelTabController extends BladeController {
                     }
                     //设置参数
                     keySql.append(",").append(key);
-                    valueSql.append(",").append("'").append(value).append("'");
+                    if(value != null && StringUtils.isNotEmpty(String.valueOf(value))){
+                        valueSql.append(",").append("'").append(value).append("'");
+                    } else {
+                        valueSql.append(",").append(value);
+                    }
                 }
                 //组装SQL
                 insertSql.append(" (").append(keySql.toString().substring(1)).append(") ");
@@ -2113,7 +2125,7 @@ public class ExcelTabController extends BladeController {
             ));
 
             //返回当前的新数据
-            return this.getTheLogBusinessData(!isNew  ? currentJson.getString("id") : null, nodePrimaryKeyId, currentTime);
+            return this.getTheLogBusinessData(!isNew  ? currentJson.getString("id") : null, nodePrimaryKeyId, currentTime, contractId);
         }
 
         return null;

+ 12 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -24,10 +24,7 @@ import org.springblade.manager.excel.WbsTreeExcel;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsFormElementService;
-import org.springblade.manager.vo.WbsFormElementVO;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreeVO;
-import org.springblade.manager.vo.WbsTreeVO2;
+import org.springblade.manager.vo.*;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.enums.DictEnum;
 import org.springframework.transaction.annotation.Transactional;
@@ -333,6 +330,17 @@ public class WbsTreeController extends BladeController {
         return R.status(wbsTreeService.updateBatchById(WbsTrees));
     }
 
+    /**
+     * 查询公有wbs节点元素表与节点参数
+     */
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value = "查询节点元素表与节点参数", notes = "传入父节点id")
+    @RequestMapping(value = "/getNodeTabAndParam", method = RequestMethod.GET)
+    public R<WbsNodeTabAndParamVO> getNodeTabAndParam(@ApiParam(value = "父节点id", required = true) @RequestParam String id) {
+        WbsNodeTabAndParamVO rs = wbsTreeService.getNodeTabAndParam(id);
+        return R.data(rs);
+    }
+
 
 }
 

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -366,10 +366,10 @@ public class WbsTreePrivateController extends BladeController {
     }
 
     /**
-     * 查询节点元素表与节点参数
+     * 查询私有wbs节点元素表与节点参数
      */
     @ApiOperationSupport(order = 12)
-    @ApiOperation(value = "查询节点元素表与节点参数", notes = "传入节点parentId、wbsId、projectId")
+    @ApiOperation(value = "查询私有wbs节点元素表与节点参数", notes = "传入节点parentId、wbsId、projectId")
     @RequestMapping(value = "/getNodeTabAndParam", method = RequestMethod.GET)
     public R<WbsNodeTabAndParamVO> getNodeTabAndParam(@RequestParam("parentId") String parentId,
                                                       @RequestParam("wbsId") String wbsId,

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -64,4 +64,6 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
 
     boolean deleteLogicById(String id);
 
+    WbsNodeTabAndParamVO getNodeTabAndParam(String id);
+
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -300,7 +300,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 		if(StringUtils.isEmpty(businessId)){
 
 			//检查是否存在原本的数据
-			JSONObject logJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(parentNode.getPKeyId().toString(), recordTime);
+			JSONObject logJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(parentNode.getPKeyId().toString(), recordTime, tableInfoList.get(0).getContractId());
 
 			if(logJson == null){
 				businessId = SnowFlakeUtil.getId().toString();

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -51,6 +51,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     private final TextdictInfoServiceImpl textDictInfoService;
     private final FormulaMapper formulaMapper;
     private final BladeRedis bladeRedis;
+    private final WbsParamServiceImpl wbsParamService;
 
 
     @Override
@@ -277,6 +278,18 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return baseMapper.deleteLogicById(id) > 0;
     }
 
+    @Override
+    public WbsNodeTabAndParamVO getNodeTabAndParam(String id) {
+        WbsNodeTabAndParamVO result = new WbsNodeTabAndParamVO();
+        //获取元素表
+        List<WbsNodeTableVO> tableVOList = selectByNodeTable(id);
+        result.setTabData(tableVOList);
+        //获取节点参数
+        List<WbsParam> paramList = wbsParamService.findByNodeId(Long.valueOf(id));
+        result.setParamData(paramList);
+        return result;
+    }
+
     private Boolean initTable(String tableName) {
         Integer row = baseMapper.createTable(tableName);
         if (row >= 0) {