Browse Source

新增字典数据录入的手动接口

zhangqiankun 3 years ago
parent
commit
2a17bb9f8e

+ 2 - 2
src/main/java/com/persagy/calendar/client/RwdObjectClient.java

@@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.RequestBody;
 import com.persagy.calendar.client.fallback.RwdObjectClientFallBack;
 import com.persagy.calendar.client.model.BaseModel;
 import com.persagy.calendar.client.model.BaseQueryModel;
-import com.persagy.calendar.client.model.RwdObjectModel;
 import com.persagy.common.constant.ServiceNameConstants;
 
 /**
@@ -18,10 +17,11 @@ import com.persagy.common.constant.ServiceNameConstants;
  * @author zhangqiankun
  * @since 2021年3月1日:	上午10:16:42
  */
+@SuppressWarnings("rawtypes")
 @FeignClient(name = ServiceNameConstants.DMP_RWD_SERVICE, fallback = RwdObjectClientFallBack.class, decode404 = true)
 public interface RwdObjectClient {
 	
 	@PostMapping("/rwd/instance/object/query")
-    String queryProjectObjects(@SpringQueryMap BaseModel baseModel, @RequestBody BaseQueryModel<RwdObjectModel> object);
+    String queryProjectObjects(@SpringQueryMap BaseModel baseModel, @RequestBody BaseQueryModel object);
 
 }

+ 2 - 2
src/main/java/com/persagy/calendar/client/fallback/RwdObjectClientFallBack.java

@@ -5,7 +5,6 @@ import org.springframework.stereotype.Component;
 import com.persagy.calendar.client.RwdObjectClient;
 import com.persagy.calendar.client.model.BaseModel;
 import com.persagy.calendar.client.model.BaseQueryModel;
-import com.persagy.calendar.client.model.RwdObjectModel;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -18,10 +17,11 @@ import lombok.extern.slf4j.Slf4j;
  */
 @Slf4j
 @Component
+@SuppressWarnings("rawtypes") 
 public class RwdObjectClientFallBack implements RwdObjectClient {
 
 	@Override
-	public String queryProjectObjects(BaseModel baseModel, BaseQueryModel<RwdObjectModel> object) {
+	public String queryProjectObjects(BaseModel baseModel, BaseQueryModel object) {
 		log.error("数据中台物理世界,查询对象数据异常");
 		return null;
 	}

+ 13 - 0
src/main/java/com/persagy/calendar/controller/CommonController.java

@@ -169,6 +169,19 @@ public class CommonController {
     	return result ? ResponseUtil.successResult("创建成功") : ResponseUtil.successResult("创建失败");
     }
     
+    @ApiOperation(value = "项目字典数据初始化")
+    @RequestMapping(value = "initProjectDict")
+    public ResponseResult initProjectDict(@RequestBody DictQueryVO queryVO) {
+    	if (StringUtil.isBlank(queryVO.getGroupCode())) {
+    		return ResponseUtil.errorResult(ResponseCode.A0400.getCode(), "集团编码,不可为空");
+		}
+    	if (CollectionUtil.isEmpty(queryVO.getDictTypes())) {
+    		return ResponseUtil.errorResult(ResponseCode.A0400.getCode(), "字典类型,不可为空");
+		}
+    	String result = this.commonHandler.initProjectDict(queryVO.getGroupCode(), queryVO.getDictTypes());
+    	return StringUtil.isBlank(result) ? ResponseUtil.successResult("初始化成功") : ResponseUtil.errorResult(result);
+    }
+    
     @ApiOperation(value = "数据转换")
     @RequestMapping(value = "switchData")
     public ResponseResult switchData(@RequestBody DictQueryVO queryVO) {

+ 74 - 0
src/main/java/com/persagy/calendar/handle/CommonHandler.java

@@ -1,5 +1,6 @@
 package com.persagy.calendar.handle;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -9,16 +10,21 @@ import java.util.Set;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.common.collect.Lists;
 import com.persagy.calendar.pojo.dto.WorkCalendar;
 import com.persagy.calendar.pojo.dto.WorkCalendarDate;
+import com.persagy.calendar.pojo.dto.WorkCalendarDict;
 import com.persagy.calendar.pojo.dto.WorkCalendarLabel;
 import com.persagy.calendar.pojo.dto.WorkCalendarRule;
 import com.persagy.calendar.service.IWorkCalendarDateService;
+import com.persagy.calendar.service.IWorkCalendarDictService;
 import com.persagy.calendar.service.IWorkCalendarLabelService;
 import com.persagy.calendar.service.IWorkCalendarRuleService;
+import com.persagy.calendar.service.RwdObjectService;
+import com.persagy.common.utils.IdGenerator;
 
 import cn.hutool.core.collection.CollectionUtil;
 
@@ -33,6 +39,9 @@ import cn.hutool.core.collection.CollectionUtil;
 public class CommonHandler {
 
 	@Autowired
+	private RwdObjectService rwdObjectService;
+	
+	@Autowired
 	private IWorkCalendarLabelService workCalendarLabelService;
 	
     @Autowired
@@ -41,6 +50,71 @@ public class CommonHandler {
     @Autowired
     private IWorkCalendarDateService workCalendarDateService;
     
+    @Autowired
+    private IWorkCalendarDictService workCalendarDictService;
+    
+    /**
+     * 初始化项目ID的字典数据
+     * 
+     * @param groupCode
+     * @param dictTypes
+     * @return 不为null,返回错误信息
+     */
+	public String initProjectDict(String groupCode, Set<String> dictTypes) {
+		try {
+			// 1.获取运维系统中的项目数据
+			Set<String> allProjects = this.rwdObjectService.queryAllProjects(groupCode);
+			if (CollectionUtil.isEmpty(allProjects)) {
+				return null;
+			}
+			// 2.更新工作历这边的字典表信息
+			List<WorkCalendarDict> calendarDicts = new ArrayList<WorkCalendarDict>();
+			for (String projectId : allProjects) {
+				// 删除这个项目下的已有信息
+				LambdaQueryWrapper<WorkCalendarDict> queryWrapper = new WorkCalendarDict.BuilderQueryWrapper()
+						.projectIdEq(projectId, null).dictTypeIn(dictTypes).builder();
+				this.workCalendarDictService.remove(queryWrapper);
+				
+				// 每个项目添加六条
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "ACSeason", "ACSeason-1", "供冷"));
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "ACSeason", "ACSeason-2", "供暖"));
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "ACSeason", "ACSeason-3", "过渡"));
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "shop", "2", "开店时间"));
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "shop", "3", "商业闭店时间"));
+				calendarDicts.add(this.getWorkCalendarDict(groupCode, projectId, "shop", "4", "娱乐闭店时间"));
+			}
+			
+			this.workCalendarDictService.batchCreateCalendarDict(calendarDicts);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return e.getMessage();
+		}
+		
+		return null;
+	}
+    
+	/**
+	 * 
+	 * @param groupCode
+	 * @param projectId
+	 * @param dictType
+	 * @param dictCode
+	 * @param dictDesc
+	 * @return
+	 */
+	private WorkCalendarDict getWorkCalendarDict(String groupCode, String projectId, String dictType, String dictCode, String dictDesc) {
+		WorkCalendarDict calendarDict = new WorkCalendarDict();
+		calendarDict.setId(IdGenerator.getUUID());
+		calendarDict.setCalendarId("0");
+		calendarDict.setProjectId(projectId);
+		calendarDict.setGroupCode(groupCode);
+		calendarDict.setDictType(dictType);
+		calendarDict.setDictCode(dictCode);
+		calendarDict.setDictDesc(dictDesc);
+		return calendarDict;
+	}
+	
+	
 	/**
 	 * 数据转换
 	 * 

+ 10 - 0
src/main/java/com/persagy/calendar/pojo/dto/WorkCalendarDict.java

@@ -1,5 +1,7 @@
 package com.persagy.calendar.pojo.dto;
 
+import java.util.Set;
+
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -10,6 +12,7 @@ import com.persagy.common.enums.IdGeneratorAlgorithm;
 import com.persagy.common.utils.StringUtil;
 import com.persagy.db.model.BaseEntity;
 
+import cn.hutool.core.collection.CollectionUtil;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
@@ -104,6 +107,13 @@ public class WorkCalendarDict extends BaseEntity<WorkCalendarDict> {
 			}
 			return this;
 		}
+		
+		public BuilderQueryWrapper dictTypeIn(Set<String> dictTypes) {
+			if (CollectionUtil.isNotEmpty(dictTypes)) {
+				queryWrapper.in(WorkCalendarDict::getDictType, dictTypes);
+			}
+			return this;
+		}
 
 		public BuilderQueryWrapper dictCodeEq(String dictCode) {
 			if (StringUtil.isNotBlank(dictCode)) {

+ 5 - 0
src/main/java/com/persagy/calendar/pojo/vo/DictQueryVO.java

@@ -1,5 +1,7 @@
 package com.persagy.calendar.pojo.vo;
 
+import java.util.Set;
+
 import javax.validation.constraints.NotBlank;
 
 import io.swagger.annotations.ApiModel;
@@ -34,6 +36,9 @@ public class DictQueryVO {
 	@ApiModelProperty(value = "字典类型")
 	private String dictType; // 字典类型
 	
+	@ApiModelProperty(value = "字典类型集合")
+	private Set<String> dictTypes; // 字典类型
+	
 	@ApiModelProperty(value = "工作历ID")
 	private String calendarId; // 工作历ID
 	

+ 11 - 1
src/main/java/com/persagy/calendar/service/RwdObjectService.java

@@ -1,5 +1,7 @@
 package com.persagy.calendar.service;
 
+import java.util.Set;
+
 import com.persagy.calendar.client.model.BaseModel;
 import com.persagy.calendar.client.model.RwdObjectModel;
 import com.persagy.common.utils.ResponseResult;
@@ -14,11 +16,19 @@ import com.persagy.common.utils.ResponseResult;
 public interface RwdObjectService {
 
 	/**
+	 * 查询出该集团下所有的项目
+	 * 
+	 * @param groupCode
+	 * @return
+	 */
+	Set<String> queryAllProjects(String groupCode);
+	
+	/**
 	 * 查询物理世界对象信息
 	 * @param baseModel
 	 * @param objectModel 
 	 * @return
 	 */
 	ResponseResult queryRwdObjects(BaseModel baseModel, RwdObjectModel objectModel);
-
+	
 }

+ 35 - 1
src/main/java/com/persagy/calendar/service/impl/RwdObjectServiceImpl.java

@@ -1,8 +1,10 @@
 package com.persagy.calendar.service.impl;
 
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,6 +50,38 @@ public class RwdObjectServiceImpl implements RwdObjectService {
 	private IWorkCalendarObjectService workCalendarObjectService;
 	
 	@Override
+	public Set<String> queryAllProjects(String groupCode) {
+		BaseModel baseModel = new BaseModel();
+		baseModel.setGroupCode(groupCode);
+		
+		BaseQueryModel<JSONObject> queryModel = new BaseQueryModel<JSONObject>();
+		JSONObject criteria = new JSONObject();
+		criteria.put("objType", "project");
+		queryModel.setCriteria(criteria);
+		queryModel.setSize(10000);
+		String projectObjects = this.rwdObjectClient.queryProjectObjects(baseModel, queryModel);
+		if (StringUtil.isBlank(projectObjects) || projectObjects.indexOf(DMPConstant.DMP_RESULT_KEY) < 0) {
+			return null;
+		}
+		JSONObject result = JSONObject.parseObject(projectObjects);
+		if (!DMPConstant.DMP_RESULT_VAL.equals(result.getString(DMPConstant.DMP_RESULT_KEY))) {
+			return null;
+		}
+		JSONArray array = result.getJSONArray(DMPConstant.DMP_DATA_KEY);
+		if (array == null || array.size() == 0) {
+			return null;
+		}
+		
+		Set<String> projectIds = new HashSet<String>();
+		// 解析出所有的项目ID,并返回
+		for (int i = 0; i < array.size(); i++) {
+			JSONObject jsonObject = array.getJSONObject(i);
+			projectIds.add(jsonObject.getString("projectId"));
+		}
+		return projectIds;
+	}
+	
+	@Override
 	public ResponseResult queryRwdObjects(BaseModel baseModel, RwdObjectModel objectModel) {
 		BaseQueryModel<RwdObjectModel> object = new BaseQueryModel<RwdObjectModel>();
 		object.setCriteria(objectModel);
@@ -118,5 +152,5 @@ public class RwdObjectServiceImpl implements RwdObjectService {
 			}
 		}
 	}
-	
+
 }

+ 1 - 1
src/main/resources/mapper/WorkCalendarDictMapper.xml

@@ -14,7 +14,7 @@
 	</resultMap>
 
 	<insert id="batchCreateCalendarDict">
-		REPLACE INTO work_calendar_dict
+		INSERT INTO work_calendar_dict
 		(
 			ID, GROUP_CODE, PROJECT_ID, CALENDAR_ID, DICT_CODE, DICT_DESC, DICT_TYPE
 		) VALUES