Kaynağa Gözat

客户端功能

huangjn 3 yıl önce
ebeveyn
işleme
bf1a46b245
28 değiştirilmiş dosya ile 347 ekleme ve 122 silme
  1. 2 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ImageClassificationShowVO.java
  2. 6 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ImageClassificationConfig.java
  3. 5 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ProjectContractAreaClient.java
  4. 7 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ImageClassificationConfigVO.java
  5. 9 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVOS.java
  6. 49 22
      blade-service/blade-business/src/main/java/org/springblade/business/controller/BusinessUserOpinionController.java
  7. 43 18
      blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java
  8. 44 7
      blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionController.java
  9. 7 18
      blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionFlowController.java
  10. 8 6
      blade-service/blade-business/src/main/java/org/springblade/business/controller/WeatherController.java
  11. 9 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.java
  12. 7 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml
  13. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionFlowMapper.java
  14. 4 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionFlowMapper.xml
  15. 5 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.xml
  16. 9 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IImageClassificationFileService.java
  17. 8 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IUserOpinionFlowService.java
  18. 8 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/IUserOpinionService.java
  19. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/WeatherInfoService.java
  20. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java
  21. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionFlowServiceImpl.java
  22. 60 30
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionServiceImpl.java
  23. 21 17
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WeatherInfoServiceImpl.java
  24. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ProjectContractAreaClientImpl.java
  25. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectContractAreaMapper.java
  26. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectContractAreaMapper.xml
  27. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/ProjectContractAreaService.java
  28. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectContractAreaServiceImpl.java

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ImageClassificationShowVO.java

@@ -1,5 +1,6 @@
 package org.springblade.business.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.business.entity.ImageClassificationShow;
 
@@ -8,6 +9,7 @@ import java.util.List;
 @Data
 public class ImageClassificationShowVO {
 
+    @ApiModelProperty("显隐控制表单数据")
     private List<ImageClassificationShow> showList;
 
 }

+ 6 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ImageClassificationConfig.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.io.Serializable;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -40,22 +41,27 @@ public class ImageClassificationConfig extends BaseEntity {
     /**
      * 分类名称
      */
+    @ApiModelProperty(value = "分类名称")
     private String classfName;
     /**
      * 所属项目阶段
      */
+    @ApiModelProperty(value = "所属项目阶段")
     private String projectStage;
     /**
      * 所属方
      */
+    @ApiModelProperty(value = "所属方")
     private String affiliatedParty;
     /**
      * 文件类型
      */
+    @ApiModelProperty(value = "文件类型 1视频文件,2图片文件")
     private Integer fileType;
     /**
      * 存储目录格式
      */
+    @ApiModelProperty(value = "存储目录格式 1按部位存储,2按日期存储")
     private Integer storageDirectoryFormat;
 
 

+ 5 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ProjectContractAreaClient.java

@@ -5,6 +5,8 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
 
 @FeignClient(value = APPLICATION_NAME_PREFIX +  "manager")
@@ -23,4 +25,7 @@ public interface ProjectContractAreaClient {
     @GetMapping(API_PREFIX + "/queryContractAreaByContractId")
     ProjectContractArea queryContractAreaByContractId(@RequestParam String contractId);
 
+    @GetMapping(API_PREFIX + "/queryAllContractArea")
+    List<ProjectContractArea> queryAllContractArea();
+
 }

+ 7 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ImageClassificationConfigVO.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import org.springblade.manager.entity.ImageClassificationConfig;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -34,11 +35,16 @@ public class ImageClassificationConfigVO extends ImageClassificationConfig {
 	/**
 	 * image_classification_show表 is_show
 	 */
-	private Integer isShow;
+	@ApiModelProperty(value = "是否显示 true为显示")
+	private Boolean isShow;
 
 	/**
 	 * image_classification_show表 ID
 	 */
+	@ApiModelProperty(value = "显示控制表主键,可为空,若有值则修改数据时必传")
 	private Long showId;
 
+	@ApiModelProperty(value = "当前类型下文件数量")
+	private Integer count;
+
 }

+ 9 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVOS.java

@@ -1,5 +1,6 @@
 package org.springblade.manager.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.ArrayList;
@@ -11,24 +12,32 @@ import java.util.List;
 @Data
 public class WbsTreeContractTreeVOS {
 
+    @ApiModelProperty("显隐控制表单数据")
     private String value;
 
     private String key;
 
+    @ApiModelProperty("节点类型")
     private Integer type;
 
+    @ApiModelProperty("节点名称")
     private String title;
 
+    @ApiModelProperty("父节点")
     private String parentId;
 
     private String id;
 
+    @ApiModelProperty("模板类型")
     private Integer wbsType;
 
+    @ApiModelProperty("主键,唯一ID")
     private String primaryKeyId;
 
+    @ApiModelProperty("是否是工序 true为工序")
     private Boolean leaf;
 
+    @ApiModelProperty("子节点")
     private List<WbsTreeContractTreeVOS> children = new ArrayList<>();
 
 }

+ 49 - 22
blade-service/blade-business/src/main/java/org/springblade/business/controller/BusinessUserOpinionController.java

@@ -14,15 +14,12 @@ import org.springblade.business.service.IUserOpinionFlowService;
 import org.springblade.business.service.IUserOpinionService;
 import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.UserOpinionFlowVO;
-import org.springblade.common.utils.CommonUtil;
-import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
-
-import java.sql.Wrapper;
+import java.util.Date;
 import java.util.List;
 
 @RestController
@@ -35,13 +32,28 @@ public class BusinessUserOpinionController {
 
     private final IUserOpinionFlowService userOpinionFlowService;
 
+    /**
+     * 获取所有工单及处理进度
+     * @param query 分页信息
+     * @return 结果
+     */
+    @GetMapping("/queryBusinessUserOpinionListAll")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "所有工单处理列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "query", value = "分页信息", required = true)
+    })
+    public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionListAll(@RequestBody Query query){
+        return R.data(this.userOpinionService.queryBusinessUserOpinionListAll(query));
+    }
+
     /**
      * 业务人员提交环节操作
      * @return 结果
      */
     @PostMapping("/manageUserOperationStatus")
     @ApiOperationSupport(order = 2)
-    @ApiOperation(value = "提交")
+    @ApiOperation(value = "业务人员提交环节操作")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "userOpinionId", value = "工单ID", required = true),
             @ApiImplicitParam(name = "newNumber", value = "当前流程次数", required = true),
@@ -51,18 +63,44 @@ public class BusinessUserOpinionController {
         if(StringUtils.isEmpty(currentLinkId)){
             return R.data(-1, false, "缺少currentLinkId参数");
         }
+        //获取当前操作用户
+        BladeUser user = AuthUtil.getUser();
         //获取当前最新流程
         List<UserOpinionFlowVO> flowVOS = this.userOpinionFlowService.queryCurrentUserOpinionFlowByUserOpinionId(userOpinionId, newNumber);
         //找到当前环节的下一环节
-        Long nextLinkOne = null, nextLinkTow = null;
+        Long nextLink = null, nextLinkEnd = null;
         for(int i = 0, l = flowVOS.size(); i < l; i ++){
-            if(new Long(currentLinkId).equals(flowVOS.get(i).getUserOpinionId())){
-                //找到下一个环节ID,判断下一环节是不是4,如果是,说明当前操作是已解决
-
+            if(new Long(currentLinkId).equals(flowVOS.get(i).getId())){
+                //找到下一个环节ID
+                switch (i){
+                    case 1:
+                        //说明当前环节是提交"进入人工处理环节"操作
+                        nextLink = flowVOS.get(i + 1).getId();
+                        break;
+                    case 2:
+                        //说明当前环节是提交"已解决"操作
+                        nextLinkEnd = flowVOS.get(i + 1).getId();
+                        break;
+                    default:
+                        break;
+                }
+                break;
+            }
+        }
+        //将当前环节更改为已完成
+        boolean result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getIsCurrent, 2).set(UserOpinionFlow::getUpdateUser, user.getUserId()).set(UserOpinionFlow::getUpdateTime, new Date()).eq(UserOpinionFlow::getId, currentLinkId));
+        if(result){
+            if(nextLink != null && StringUtils.isNotEmpty(String.valueOf(nextLink))){
+                //提交"进入人工处理环节"操作
+                result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getIsCurrent, 1).eq(UserOpinionFlow::getId, nextLink));
             }
+            if(nextLinkEnd != null && StringUtils.isNotEmpty(String.valueOf(nextLinkEnd))){
+                //提交"已解决"操作
+                result = this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getIsCurrent, 2).eq(UserOpinionFlow::getId, nextLinkEnd));
+            }
+            return R.data(result);
         }
 
-        this.userOpinionFlowService.update(Wrappers.<UserOpinionFlow>lambdaUpdate().set(UserOpinionFlow::getIsCurrent, 2));
         return R.data(false);
     }
 
@@ -80,18 +118,7 @@ public class BusinessUserOpinionController {
     public R<IPage<BusinessUserOpinionVO>> queryBusinessUserOpinionList(@RequestBody Query query){
         BladeUser user = AuthUtil.getUser();
         //获取推送给当前用户的工单信息
-        List<BusinessUserOpinionVO> result = this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(user.getUserId()));
-
-        if(result != null && result.size() > 0){
-            //分组
-            List<List<BusinessUserOpinionVO>> groupList = CommonUtil.getBatchSize(result, query.getSize());
-
-            IPage<BusinessUserOpinionVO> page = Condition.getPage(query);
-            page.setTotal(result.size());
-            page.setRecords(groupList.get(query.getCurrent() == 0 ? 0 : query.getCurrent() - 1));
-            return R.data(page);
-        }
-        return R.data(null);
+        return R.data(this.userOpinionService.queryBusinessUserOpinionList(String.valueOf(user.getUserId()),query));
     }
 
 }

+ 43 - 18
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -25,6 +25,8 @@ import org.springblade.manager.feign.ImageClassificationConfigClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.vo.ImageClassificationConfigVO;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springblade.system.entity.Dict;
+import org.springblade.system.feign.IDictClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -59,6 +61,8 @@ public class ImageClassificationFileController extends BladeController {
 
 	private final WbsTreeContractClient wbsTreeContractClient;
 
+	private final IDictClient dictClient;
+
 	/**
 	 * 获取当前合同段的工程划分
 	 * @param parentId 父节点,为空则查询第一级节点
@@ -76,19 +80,19 @@ public class ImageClassificationFileController extends BladeController {
 			//为空,说明初始化
 			//获取根节点
 			rootTreeNode = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, "0");
-			if(rootTreeNode != null && rootTreeNode.size() != 0){
-				rootTreeNode.forEach(vo -> {
-					//获取一级子节点
-					List<WbsTreeContractTreeVOS> treeNodes = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, vo.getId());
-					if(treeNodes != null && treeNodes.size() != 0){
-						vo.setChildren(treeNodes);
-					}
-				});
-			}
+//			if(rootTreeNode != null && rootTreeNode.size() != 0){
+//				rootTreeNode.forEach(vo -> {
+//					//获取一级子节点
+//					List<WbsTreeContractTreeVOS> treeNodes = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, vo.getId());
+//					if(treeNodes != null && treeNodes.size() != 0){
+//						vo.setChildren(treeNodes);
+//					}
+//				});
+//			}
 		} else {
 			// todo 先写死项目ID
 			//不为空,获取其下子节点
-			rootTreeNode = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType("1", 1, parentId);
+			rootTreeNode = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, parentId);
 		}
 		return R.data(rootTreeNode);
 	}
@@ -110,10 +114,11 @@ public class ImageClassificationFileController extends BladeController {
 		//判断提交的数据哪些是新增哪些是修改
 		List<ImageClassificationShow> saveShow = new ArrayList<>(), updateShow = new ArrayList<>();
 		shows.forEach(show -> {
-			if(show.getId() == null){
+			if(show.getId() == null || show.getId() == -1){
 				setUserData(show, true);
 				ImageClassificationShow newShow = new ImageClassificationShow();
 				BeanUtils.copyProperties(show, newShow);
+				newShow.setId(null);
 				saveShow.add(newShow);
 			} else {
 				setUserData(show, false);
@@ -155,7 +160,7 @@ public class ImageClassificationFileController extends BladeController {
 			showClassifyIdList.forEach(show -> {
 				for(ImageClassificationConfigVO vo : sysClassifyConfigVoList){
 					if(show.getClassifyId().equals(vo.getId())){
-						vo.setIsShow(show.getIsShow());
+						vo.setIsShow(new Integer("1").equals(show.getIsShow()));
 						vo.setShowId(show.getId());
 						break;
 					}
@@ -165,12 +170,12 @@ public class ImageClassificationFileController extends BladeController {
 			sysClassifyConfigVoList.forEach(vo -> {
 				if(StringUtils.isEmpty(String.valueOf(vo.getShowId()))){
 					//默认为不显示
-					vo.setIsShow(0);
+					vo.setIsShow(false);
 				}
 			});
 		} else {
 			//不存在显隐记录,全部默认为显示
-			sysClassifyConfigVoList.forEach(vo -> vo.setIsShow(1));
+			sysClassifyConfigVoList.forEach(vo -> vo.setIsShow(true));
 		}
 
 		return R.data(sysClassifyConfigVoList);
@@ -183,7 +188,7 @@ public class ImageClassificationFileController extends BladeController {
 	@GetMapping("/getClassIfyList")
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "获取类型列表(类型主页)")
-	public R<List<ImageClassificationConfig>> getClassIfyList(@RequestParam String projectId, @RequestParam String contractId){
+	public R<List<ImageClassificationConfigVO>> getClassIfyList(@RequestParam String projectId, @RequestParam String contractId){
 		//获取当前项目下的类型显隐情况
 		List<ImageClassificationShow> showClassifyIdList = this.imageClassificationShowService.queryShowClassify(projectId, contractId, "valid");
 
@@ -196,8 +201,28 @@ public class ImageClassificationFileController extends BladeController {
 		} else {
 			configList = this.imageClassificationConfigClient.queryClassificationConfigList();
 		}
+		//转换类型
+		List<ImageClassificationConfigVO> configVoList = JSONArray.parseArray(JSONObject.toJSONString(configList), ImageClassificationConfigVO.class);
+
+		//获取项目阶段字典
+		List<Dict> dictBizList = this.dictClient.getList("project_stage").getData();
+
+		configVoList.forEach(vo -> {
+			//转换项目阶段
+			for(Dict biz : dictBizList){
+				if(biz.getDictKey().equals(vo.getProjectStage())){
+					vo.setProjectStage(biz.getDictValue());
+					break;
+				}
+			}
+
+			//获取当前节点下的文件
+			Integer count = this.imageClassificationFileService.queryCurrentClassifyAllFileCount(projectId, contractId, vo.getId());
+			vo.setCount(count);
+
+		});
 
-		return R.data(configList);
+		return R.data(configVoList);
 	}
 
 	/**
@@ -322,7 +347,7 @@ public class ImageClassificationFileController extends BladeController {
 		//记录操作人信息
 		if(isCreate){
 			imageClassificationShow.setCreateUser(user.getUserId());
-			imageClassificationShow.setCreateDept(Long.parseLong(user.getDeptId()));
+			imageClassificationShow.setCreateDept(user.getDeptId().contains(",") ? Long.parseLong(user.getDeptId().split(",")[0]) : Long.parseLong(user.getDeptId()));
 		} else {
 			imageClassificationShow.setUpdateUser(user.getUserId());
 			imageClassificationShow.setUpdateTime(new Date());
@@ -336,7 +361,7 @@ public class ImageClassificationFileController extends BladeController {
 		//记录操作人信息
 		if(isCreate){
 			imageClassificationFile.setCreateUser(user.getUserId());
-			imageClassificationFile.setCreateDept(Long.parseLong(user.getDeptId()));
+			imageClassificationFile.setCreateDept(user.getDeptId().contains(",") ? Long.parseLong(user.getDeptId().split(",")[0]) : Long.parseLong(user.getDeptId()));
 		} else {
 			imageClassificationFile.setUpdateUser(user.getUserId());
 			imageClassificationFile.setUpdateTime(new Date());

+ 44 - 7
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionController.java

@@ -1,5 +1,6 @@
 package org.springblade.business.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -63,6 +64,25 @@ public class UserOpinionController extends BladeController {
 
 	private final IUserClient userClient;
 
+	/**
+	 * 取消点赞
+	 * @param userOpinionId 工单ID
+	 * @return 结果
+	 */
+	@PostMapping("/cancelGood")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "取消点赞")
+	@ApiImplicitParam(name = "userOpinionId", value = "工单ID")
+	public R<Boolean> cancelGood(@RequestParam String userOpinionId){
+		if(StringUtils.isNotEmpty(userOpinionId)){
+			UserOpinion opinion = this.userOpinionService.getById(userOpinionId);
+			//获取原本的点赞数
+			Integer oldGood = opinion.getGoodNumber();
+			return R.data(this.userOpinionService.update(Wrappers.<UserOpinion>lambdaUpdate().set(UserOpinion::getGoodNumber, (oldGood - 1)).eq(UserOpinion::getId, userOpinionId)));
+		}
+		return R.data(-1, false, "数据操作失败");
+	}
+
 	/**
 	 * 获取工单服务相关数据字典
 	 * @return 结果
@@ -73,30 +93,47 @@ public class UserOpinionController extends BladeController {
 	public R<List<DictBizVO>> queryDictBizList(){
 		//获取字典
 		List<DictBiz> dictList = this.dictBizClient.getList("opinion_type", "").getData();
-		//首先找到父节点为0的
-		List<DictBizVO> result = new ArrayList<>();
+		//找到根节点
+		DictBiz root = null;
 		Iterator<DictBiz> iterator = dictList.iterator();
 		while (iterator.hasNext()){
 			DictBiz biz = iterator.next();
 			if(new Long("0").equals(biz.getParentId())){
+				root = biz;
+				iterator.remove();
+				break;
+			}
+		}
+
+		//首先找到父节点为0的
+		List<DictBizVO> result = new ArrayList<>();
+		Iterator<DictBiz> iterator1 = dictList.iterator();
+		while (iterator1.hasNext()){
+			DictBiz biz = iterator1.next();
+			if(root != null && root.getId().equals(biz.getParentId())){
 				DictBizVO vo = new DictBizVO();
 				BeanUtils.copyProperties(biz, vo);
 				result.add(vo);
-				iterator.remove();
+				iterator1.remove();
+			} else if(new Long("0").equals(biz.getParentId())){
+				DictBizVO vo = new DictBizVO();
+				BeanUtils.copyProperties(biz, vo);
+				result.add(vo);
+				iterator1.remove();
 			}
 		}
 		//组成相关结构树
 		result.forEach(vo -> {
 			List<DictBizVO> clientList = new ArrayList<>();
-			Iterator<DictBiz> iterators = dictList.iterator();
-			while (iterators.hasNext()){
-				DictBiz biz = iterators.next();
+			Iterator<DictBiz> iterator2 = dictList.iterator();
+			while (iterator2.hasNext()){
+				DictBiz biz = iterator2.next();
 				if(biz.getParentId().equals(vo.getId())){
 					//找到子节点
 					DictBizVO voClient = new DictBizVO();
 					BeanUtils.copyProperties(biz, voClient);
 					clientList.add(voClient);
-					iterators.remove();
+					iterator2.remove();
 				}
 			}
 			vo.setChildren(clientList);

+ 7 - 18
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionFlowController.java

@@ -127,26 +127,15 @@ public class UserOpinionFlowController extends BladeController {
 			Integer newNumber = userOpinion.getNumber() + 1;
 			userOpinion.setNumber(newNumber);
 
-			//获取当前项目合同段下分配的维护人员
+			//获取前一个流程的维护人员
+			UserOpinionFlow leftFlow = this.userOpinionFlowService.queryLeftFlowManageUser(newNumber - 1, userOpinionId);
+
 			String manageUserName = "admin", manegeUserPhone = "";
 			Long manageUser = 1123598821738675201L;
-			try{
-				List<SaveUserInfoByProjectDTO> assignmentUserList = this.projectAssignmentUserClient.queryCurrentProjectContractAssignmentUserList(userOpinion.getProjectId(), userOpinion.getContractId());
-				if(assignmentUserList != null && assignmentUserList.size() > 0){
-					//有分配人员,随机获取某一个人员
-					Random random = new Random();
-					//随机结果集长度下的数量
-					int ran = random.nextInt(assignmentUserList.size());
-					SaveUserInfoByProjectDTO userDto = assignmentUserList.get(ran);
-					User user = this.userClient.userInfoById(Long.parseLong(userDto.getUserId())).getData();
-					if(user != null){
-						manageUser = user.getId();
-						manageUserName = user.getRealName();
-						manegeUserPhone = user.getPhone();
-					}
-				}
-			}catch (Exception e){
-				e.printStackTrace();
+			if(leftFlow != null){
+				manageUser = leftFlow.getManageUser();
+				manageUserName = leftFlow.getManageUserName();
+				manegeUserPhone = leftFlow.getManageUserPhone();
 			}
 
 			//生成新流程

+ 8 - 6
blade-service/blade-business/src/main/java/org/springblade/business/controller/WeatherController.java

@@ -1,9 +1,7 @@
 package org.springblade.business.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -70,9 +68,13 @@ public class WeatherController {
      * @param yearMonthDay 所选年份-月-日,也可以其他组合
      * @return 结果集
      */
-    @PostMapping(value = "queryWeatherAllByYear")
-    public R<List<Map<String,List<Map<String,Object>>>>> queryWeatherAllByYear(@RequestParam String yearMonthDay){
-        return R.data(this.weatherInfoService.queryWeatherAllByYear(yearMonthDay));
+    @GetMapping(value = "queryWeatherAllByYear")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "yearMonthDay", value = "年份", required = true),
+            @ApiImplicitParam(name = "contractId", value = "合同段ID", required = true)
+    })
+    public R<List<Map<String,List<Map<String,Object>>>>> queryWeatherAllByYear(@RequestParam String yearMonthDay, @RequestParam String contractId){
+        return R.data(this.weatherInfoService.queryWeatherAllByYear(yearMonthDay, contractId));
     }
 
     /**

+ 9 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.java

@@ -31,6 +31,15 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface ImageClassificationFileMapper extends BaseMapper<ImageClassificationFile> {
 
+	/**
+	 * 获取当前分类、项目、合同段下的所有文件数量
+	 * @param projectId 项目ID
+	 * @param contractId 合同段ID
+	 * @param classifyId 分类ID
+	 * @return 结果
+	 */
+	Integer queryCurrentClassifyAllFileCount(@Param("projectId") String projectId,@Param("contractId") String contractId,@Param("classifyId") Long classifyId);
+
 	/**
 	 * 获取当前分类下当前项目的拍摄时间
 	 * @param classifyId 分类ID

+ 7 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml

@@ -29,6 +29,13 @@
         <result column="text_content" property="textContent"/>
     </resultMap>
 
+    <select id="queryCurrentClassifyAllFileCount" resultType="java.lang.Integer">
+        select count(id) from u_image_classification_file where is_deleted = 0 and classify_id = #{classifyId} and contract_id = #{contractId}
+        <if test="projectId != null and projectId != ''">
+            and project_id = #{projectId}
+        </if>
+    </select>
+
     <select id="selectShootingTimeByClassifyAndProjectId" resultType="java.util.Date">
         select shooting_time from u_image_classification_file where is_deleted = 0 and classify_id = #{classifyId} and project_id = #{projectId}
         <if test="contractId != null and contractId != ''">

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionFlowMapper.java

@@ -31,6 +31,8 @@ import java.util.List;
  */
 public interface UserOpinionFlowMapper extends BaseMapper<UserOpinionFlow> {
 
+	UserOpinionFlow queryLeftFlowManageUser(@Param("number")Integer number, @Param("userOpinionId")String userOpinionId);
+
 	List<UserOpinionFlow> queryCurrentUserOpinionFlowByUserOpinionId(@Param("key")String userOpinionId, @Param("number")Integer number);
 
 	Integer selectIsSolveByUserOpinionKey(@Param("key") Long userOpinionKey);

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionFlowMapper.xml

@@ -25,6 +25,10 @@
         <result column="manage_time" property="manageTime"/>
     </resultMap>
 
+    <select id="queryLeftFlowManageUser" resultMap="userOpinionFlowResultMap">
+        select id,manage_user,manage_user_name,manage_user_phone from u_user_opinion_flow where is_deleted = 0 and number = #{number} and sort = 2 and user_opinion_id = #{userOpinionId}
+    </select>
+
     <select id="queryCurrentUserOpinionFlowByUserOpinionId" resultMap="userOpinionFlowResultMap">
         select
             id,

+ 5 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/UserOpinionMapper.xml

@@ -59,7 +59,11 @@
                 uof.*
             from
             (
-                select user_opinion_id,is_current,manage_time,number,sort,evaluation from u_user_opinion_flow where manage_user = #{currentUser} and sort = 4 order by number DESC
+                select user_opinion_id,is_current,manage_time,number,sort,evaluation from u_user_opinion_flow where is_deleted = 0
+                <if test="currentUser != null and currentUser != ''">
+                    and manage_user = #{currentUser}
+                </if>
+                and sort = 4 order by number DESC
             ) as uof group by uof.user_opinion_id
         ) as uof on uof.user_opinion_id = uo.id
         where uo.is_deleted = 0;

+ 9 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IImageClassificationFileService.java

@@ -33,6 +33,15 @@ import java.util.List;
  */
 public interface IImageClassificationFileService extends BaseService<ImageClassificationFile> {
 
+	/**
+	 * 获取当前分类、项目、合同段下的所有文件数量
+	 * @param projectId 项目ID
+	 * @param contractId 合同段ID
+	 * @param classifyId 分类ID
+	 * @return 结果
+	 */
+	Integer queryCurrentClassifyAllFileCount(String projectId, String contractId, Long classifyId);
+
 	/**
 	 * 获取当前分类下当前项目的拍摄时间
 	 * @param classifyId 分类ID

+ 8 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IUserOpinionFlowService.java

@@ -31,6 +31,14 @@ import java.util.List;
  */
 public interface IUserOpinionFlowService extends BaseService<UserOpinionFlow> {
 
+	/**
+	 * 获取前一个流程的维护人员
+	 * @param number 流程次数
+	 * @param userOpinionId
+	 * @return
+	 */
+	UserOpinionFlow queryLeftFlowManageUser(Integer number, String userOpinionId);
+
 	/**
 	 * 获取当前工单的最新流程
 	 * @param userOpinionId 当前工单ID

+ 8 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/IUserOpinionService.java

@@ -21,6 +21,7 @@ import org.springblade.business.vo.BusinessUserOpinionVO;
 import org.springblade.business.vo.UserOpinionVO;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 
 import java.util.List;
@@ -33,11 +34,17 @@ import java.util.List;
  */
 public interface IUserOpinionService extends BaseService<UserOpinion> {
 
+	/**
+	 * 获取所有工单及相应进度
+	 * @return 结果集
+	 */
+	IPage<BusinessUserOpinionVO> queryBusinessUserOpinionListAll(Query query);
+
 	/**
 	 * 获取分配给当前登录用户的工单记录
 	 * @return 结果集
 	 */
-	List<BusinessUserOpinionVO> queryBusinessUserOpinionList(String currentUserId);
+	IPage<BusinessUserOpinionVO> queryBusinessUserOpinionList(String currentUserId, Query query);
 
 	/**
 	 * 获取当前用户提交的工单信息

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/WeatherInfoService.java

@@ -11,7 +11,7 @@ public interface WeatherInfoService extends IService<WeatherInfo> {
     /**
      * 根据所选年份获取当年所有天气台账
      */
-    List<Map<String, List<Map<String,Object>>>> queryWeatherAllByYear(String year);
+    List<Map<String, List<Map<String,Object>>>> queryWeatherAllByYear(String year, String contractId);
 
     /**
      * 自动同步当天天气

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java

@@ -40,6 +40,11 @@ import java.util.*;
 @Service
 public class ImageClassificationFileServiceImpl extends BaseServiceImpl<ImageClassificationFileMapper, ImageClassificationFile> implements IImageClassificationFileService {
 
+	@Override
+	public Integer queryCurrentClassifyAllFileCount(String projectId, String contractId, Long classifyId) {
+		return this.baseMapper.queryCurrentClassifyAllFileCount(projectId, contractId, classifyId);
+	}
+
 	@Override
 	public List<TreeVo> getYearDateTree(String classifyId, String projectId, String contractId) {
 		//获取时间

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionFlowServiceImpl.java

@@ -38,6 +38,11 @@ import java.util.List;
 @Service
 public class UserOpinionFlowServiceImpl extends BaseServiceImpl<UserOpinionFlowMapper, UserOpinionFlow> implements IUserOpinionFlowService {
 
+	@Override
+	public UserOpinionFlow queryLeftFlowManageUser(Integer number, String userOpinionId) {
+		return this.baseMapper.queryLeftFlowManageUser(number, userOpinionId);
+	}
+
 	@Override
 	public List<UserOpinionFlowVO> queryCurrentUserOpinionFlowByUserOpinionId(String userOpinionId, Integer number) {
 		List<UserOpinionFlow> result = this.baseMapper.queryCurrentUserOpinionFlowByUserOpinionId(userOpinionId, number);

+ 60 - 30
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/UserOpinionServiceImpl.java

@@ -1,21 +1,6 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
 package org.springblade.business.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
@@ -23,7 +8,6 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.http.client.utils.DateUtils;
 import org.springblade.business.entity.UserOpinion;
 import org.springblade.business.entity.UserOpinionFile;
-import org.springblade.business.entity.UserOpinionFlow;
 import org.springblade.business.service.IUserOpinionCommentsService;
 import org.springblade.business.service.IUserOpinionFileService;
 import org.springblade.business.service.IUserOpinionFlowService;
@@ -32,17 +16,18 @@ import org.springblade.business.vo.UserOpinionFlowVO;
 import org.springblade.business.vo.UserOpinionVO;
 import org.springblade.business.mapper.UserOpinionMapper;
 import org.springblade.business.service.IUserOpinionService;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -64,16 +49,26 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 	private final IUserClient userClient;
 
 	@Override
-	public List<BusinessUserOpinionVO> queryBusinessUserOpinionList(String currentUserId) {
+	public IPage<BusinessUserOpinionVO> queryBusinessUserOpinionListAll(Query query) {
+		return this.queryBusinessUserOpinionList(null, query);
+	}
+
+	@Override
+	public IPage<BusinessUserOpinionVO> queryBusinessUserOpinionList(String currentUserId, Query query) {
 		//获取分配给当前用户的工单
 		List<BusinessUserOpinionVO> businessUserOpinionVOS = this.baseMapper.queryManageUserOpinionList(currentUserId);
 		if(businessUserOpinionVOS != null && businessUserOpinionVOS.size() > 0){
+			//先分组
+			List<List<BusinessUserOpinionVO>> resultList = CommonUtil.getBatchSize(businessUserOpinionVOS, query.getSize());
+			//获取具体页数下的数据
+			List<BusinessUserOpinionVO> finalResult = resultList.get(query.getCurrent() - 1);
+
 			//获取得到的工单所关联的所有附件
-			List<Long> userOpinionKeys = businessUserOpinionVOS.stream().map(BusinessUserOpinionVO::getUserOpinionId).distinct().collect(Collectors.toList());
+			List<Long> userOpinionKeys = finalResult.stream().map(BusinessUserOpinionVO::getUserOpinionId).distinct().collect(Collectors.toList());
 			List<UserOpinionFile> allFile = this.userOpinionFileService.selectUserOpinionFileByUserOpinionKeys(userOpinionKeys);
 
 			//设置附件信息
-			businessUserOpinionVOS.forEach(vo -> {
+			finalResult.forEach(vo -> {
 				List<String> imageUrls = new ArrayList<>();
 				if(allFile != null && allFile.size() > 0){
 					//处理附件信息
@@ -88,13 +83,8 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 				}
 				//设置附件信息
 				vo.setImageUrl(imageUrls);
-				//设置当前用户操作权限(如果当前用户的流程次数和主表次数一致,认为可以操作)
-				vo.setOperation(vo.getNumber().equals(vo.getNewNumber()));
 
 				//获取当前工单最新状态
-				if(new Long("4336330718665349716").equals(vo.getUserOpinionId())){
-					int i = 0;
-				}
 				List<UserOpinionFlowVO> newFlow = this.userOpinionFlowService.queryCurrentUserOpinionFlowByUserOpinionId(String.valueOf(vo.getUserOpinionId()), vo.getNewNumber());
 				if(newFlow != null && newFlow.size() > 0){
 					//获取退后阶段
@@ -105,6 +95,16 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 						//如果有权限则获取当前正在进行的操作环节
 						for(UserOpinionFlowVO flowVo : newFlow){
 							//依次找到正在执行的环节
+							if(new Integer("2").equals(flowVo.getSort())){
+								//设置当前用户操作权限(如果当前用户的流程次数和主表次数一致,认为可以操作)
+								if(StringUtils.isNotEmpty(currentUserId)){
+									vo.setOperation(vo.getNumber().equals(vo.getNewNumber()));
+								} else {
+									Long userId = AuthUtil.getUser().getUserId();
+									vo.setOperation(StringUtils.isNotEmpty(String.valueOf(userId)) && flowVo.getManageUser().equals(userId));
+								}
+							}
+
 							if(new Integer("1").equals(flowVo.getIsCurrent())){
 								vo.setCurrentLinkId(flowVo.getId());
 								vo.setCurrentLink(flowVo.getSort());
@@ -113,8 +113,38 @@ public class UserOpinionServiceImpl extends BaseServiceImpl<UserOpinionMapper, U
 						}
 					}
 				}
+
+				//获取当前时间以判断距离结束时间还剩多少分钟
+				try{
+					if(vo.getCurrentLinkId() == null || vo.getCurrentLink() == null || vo.getCurrentLinkId() == -1 || vo.getCurrentLink() == -1){
+						//说明已处理
+						vo.setTimeRemaining("已处理");
+					} else {
+						//未处理
+						Date manageDate = DateUtil.parseDate(vo.getManageTime()), nowDate = new Date();
+						long between = manageDate.getTime() - nowDate.getTime();
+						if(between > 0){
+							long day = between / (24 * 60 * 60 * 1000);
+							long hour = (between - (day * 24 * 60 * 60 * 1000)) / ( 60 * 60 * 1000);
+							long minute = (between - (day * 24 * 60 * 60 * 1000) - hour * 60 * 60 * 1000) / ( 60 * 1000);
+
+							vo.setTimeRemaining(day + "天" + hour + "小时" + minute + "分");
+						} else {
+							vo.setTimeRemaining("已超时");
+						}
+					}
+				}catch (Exception e){
+					e.printStackTrace();
+				}
+
 			});
-			return businessUserOpinionVOS;
+
+			//设置分页信息及结果数据
+			IPage<BusinessUserOpinionVO> page = Condition.getPage(query);
+			page.setTotal(businessUserOpinionVOS.size());
+			page.setRecords(finalResult);
+
+			return page;
 		}
 
 		return null;

+ 21 - 17
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WeatherInfoServiceImpl.java

@@ -1,6 +1,7 @@
 package org.springblade.business.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.common.utils.BaiduApiUtil;
 import org.springblade.core.tool.utils.DateUtil;
@@ -8,6 +9,9 @@ import org.springblade.business.entity.WeatherInfo;
 import org.springblade.business.mapper.WeatherInfoMapper;
 import org.springblade.business.service.WeatherInfoService;
 //import org.springframework.scheduling.annotation.Scheduled;
+import org.springblade.manager.entity.ProjectContractArea;
+import org.springblade.manager.feign.ProjectContractAreaClient;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springblade.core.mp.support.Condition;
 
@@ -16,15 +20,16 @@ import java.util.*;
 
 @Slf4j
 @Service
+@AllArgsConstructor
 public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, WeatherInfo> implements WeatherInfoService {
 
+    private final ProjectContractAreaClient projectContractAreaClient;
+
     /**
      * 根据所选年份获取当年所有天气台账
      */
-    public List<Map<String,List<Map<String,Object>>>> queryWeatherAllByYear(String yearMonthDay){
-        //todo 先写死区域编码ID,之后根据当前登录账户的信息获取
-        String contractAreaId = "12332112345678";
-        //todo ======================================
+    public List<Map<String,List<Map<String,Object>>>> queryWeatherAllByYear(String yearMonthDay, String contractId){
+        ProjectContractArea area = this.projectContractAreaClient.queryContractAreaByContractId(contractId);
 
         //获取当前区域yearMonthDay的所有数据
         Map<String,Object> queryMap = new HashMap<>();
@@ -32,11 +37,11 @@ public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, Weath
         if(yearMonthDay.contains("~")){
             String[] yearMonthDays = yearMonthDay.split("~");
             //区间
-            queryMap.put("contractAreaId", contractAreaId);
+            queryMap.put("contractAreaId", area.getId());
             yearWeatherList = this.list(Condition.getQueryWrapper(queryMap, WeatherInfo.class).lambda().between(WeatherInfo::getRecordTime, yearMonthDays[0].trim(), yearMonthDays[1].trim()).orderByAsc(WeatherInfo::getRecordTime));
         } else {
             queryMap.put("recordTime", yearMonthDay);
-            queryMap.put("contractAreaId", contractAreaId);
+            queryMap.put("contractAreaId", area.getId());
             yearWeatherList = this.list(Condition.getQueryWrapper(queryMap, WeatherInfo.class).lambda().orderByAsc(WeatherInfo::getRecordTime));
         }
 
@@ -83,37 +88,36 @@ public class WeatherInfoServiceImpl extends ServiceImpl<WeatherInfoMapper, Weath
     /**
      * 获取当前系统所有项目下所有合同段的当天天气
      */
-//    @Scheduled(cron = "0 0 7 * * ?")
+    @Scheduled(cron = "0 0 7 * * ?")
     public void syncWeatherInfo(){
-        //todo 目前缺少合同段所在区域的地图编号及ID,所以暂时写死区域数据ID,之后修改为接口获取
-        String cityCode = "450721";
-        String areaId = "12332112345678";
+        //获取所有合同段的定位信息
+        List<ProjectContractArea> areaList = this.projectContractAreaClient.queryAllContractArea();
 
         //todo 这里之后会换成批量
-        for(int i = 0; i < 1; i ++){
+        for(ProjectContractArea area : areaList){
             try{
                 //校验当前区域是否已经获取当天日期(手动补填或自动获取)
                 Map<String,Object> queryMap = new HashMap<>();
-                queryMap.put("contractAreaId", areaId);
+                queryMap.put("contractAreaId", area.getId());
                 queryMap.put("recordTime", DateUtil.format(new Date(), "yyyy-MM-dd"));
                 //查询
                 long count = this.count(Condition.getQueryWrapper(queryMap, WeatherInfo.class));
                 if(count > 0){
                     //存在,取消自动同步
-                    log.info("今日的天气已经同步完成!contractAreaId:" + areaId + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+                    log.info("今日的天气已经同步完成!contractAreaId:" + area.getId() + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
                     continue;
                 }
 
                 //获取天气信息(百度天气)
-                Map<String,String> weatherMap = BaiduApiUtil.getTodayWeather(cityCode);
+                Map<String,String> weatherMap = BaiduApiUtil.getTodayWeather(area.getCity_code());
                 if(weatherMap != null){
                     //计算平均气温
                     BigDecimal aver = (new BigDecimal(weatherMap.get("high")).add(new BigDecimal(weatherMap.get("low")))).divide(new BigDecimal("2"), 1, BigDecimal.ROUND_HALF_UP);
-                    WeatherInfo newWeather = new WeatherInfo(areaId, weatherMap.get("weather"), aver.toString(), weatherMap.get("high"), weatherMap.get("low"), weatherMap.get("windLevel"));
+                    WeatherInfo newWeather = new WeatherInfo(String.valueOf(area.getId()), weatherMap.get("weather"), aver.toString(), weatherMap.get("high"), weatherMap.get("low"), weatherMap.get("windLevel"));
                     this.save(newWeather);
-                    log.info("今日的天气已经同步完成!contractAreaId:" + areaId + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+                    log.info("今日的天气已经同步完成!contractAreaId:" + area.getId() + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
                 } else {
-                    log.info("获取今日的天气失败!contractAreaId:" + areaId + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
+                    log.info("获取今日的天气失败!contractAreaId:" + area.getId() + ",syncTime:" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
                 }
             }catch (Exception e){
                 e.printStackTrace();

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ProjectContractAreaClientImpl.java

@@ -5,12 +5,19 @@ import org.springblade.manager.entity.ProjectContractArea;
 import org.springblade.manager.service.ProjectContractAreaService;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 @RestController
 @AllArgsConstructor
 public class ProjectContractAreaClientImpl implements ProjectContractAreaClient {
 
     private final ProjectContractAreaService projectContractAreaService;
 
+    @Override
+    public List<ProjectContractArea> queryAllContractArea() {
+        return this.projectContractAreaService.queryAllContractArea();
+    }
+
     @Override
     public ProjectContractArea queryContractAreaByContractId(String contractId) {
         return this.projectContractAreaService.queryContractAreaByContractId(contractId);

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectContractAreaMapper.java

@@ -4,7 +4,11 @@ package org.springblade.manager.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.manager.entity.ProjectContractArea;
 
+import java.util.List;
+
 
 public interface ProjectContractAreaMapper extends BaseMapper<ProjectContractArea> {
 
+    List<ProjectContractArea> queryAllContractArea();
+
 }

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ProjectContractAreaMapper.xml

@@ -20,5 +20,8 @@
         <result column="county" property="county"/>
     </resultMap>
 
+    <select id="queryAllContractArea" resultMap="imageClassificationConfigResultMap">
+        select id, city_code from m_project_contract_area where is_deleted = 0
+    </select>
 
 </mapper>

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/ProjectContractAreaService.java

@@ -2,8 +2,12 @@ package org.springblade.manager.service;
 
 import org.springblade.manager.entity.ProjectContractArea;
 
+import java.util.List;
+
 public interface ProjectContractAreaService {
 
+    List<ProjectContractArea> queryAllContractArea();
+
     ProjectContractArea queryContractAreaByContractId(String contractId);
 
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectContractAreaServiceImpl.java

@@ -13,6 +13,11 @@ import java.util.Map;
 @Service
 public class ProjectContractAreaServiceImpl extends BaseServiceImpl<ProjectContractAreaMapper, ProjectContractArea> implements ProjectContractAreaService {
 
+    @Override
+    public List<ProjectContractArea> queryAllContractArea() {
+        return this.baseMapper.queryAllContractArea();
+    }
+
     @Override
     public ProjectContractArea queryContractAreaByContractId(String contractId) {
         Map<String,Object> queryMap = new HashMap<>();