From 471f693ac87a6ed6a2b00e93472b025266c0271f Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 13 Nov 2023 09:27:19 +0800
Subject: [PATCH] Merge branch 'wb' of http://blit.7drlb.com:8888/r/moral into qa
---
screen-api/src/main/resources/mapper/OrganizationMapper.xml | 35 +
screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationExt.java | 13
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java | 150 +++++++-
screen-common/src/main/java/com/moral/util/TokenUtils.java | 11
screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java | 107 ++++-
screen-api/src/main/resources/mapper/ResponsibilityUnitMapper.xml | 10
screen-api/src/main/java/com/moral/api/config/Interceptor/SyncConfiguration.java | 42 ++
screen-api/pom.xml | 22 +
screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java | 22
screen-api/src/main/java/com/moral/api/service/OrganizationService.java | 8
screen-api/src/main/java/com/moral/api/service/UserService.java | 6
screen-api/src/main/java/com/moral/api/controller/AppUserController.java | 55 ++
screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java | 6
screen-job/src/main/resources/application-cjl.yml | 2
screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java | 6
screen-api/src/main/java/com/moral/api/pojo/query/app/AppAllocationPushUserCond.java | 49 ++
screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml | 50 ++
screen-api/src/main/resources/mapper/DeviceMapper.xml | 2
screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserListDTO.java | 35 +
screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java | 23
screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 4
screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAuthority.java | 13
screen-api/src/main/java/com/moral/api/service/AllocationService.java | 13
screen-api/src/main/java/com/moral/api/controller/CruiserController.java | 99 +++--
screen-api/src/main/java/com/moral/api/mapper/ResponsibilityUnitMapper.java | 8
screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationPageExt.java | 4
screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAllocationFindVo.java | 16
screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java | 7
screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java | 14
screen-api/src/main/java/com/moral/api/vo/WxMssVo.java | 4
screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java | 1
screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java | 46 +-
screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java | 3
screen-api/src/main/java/com/moral/api/utils/WechatUtils.java | 27
screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java | 3
screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java | 110 +----
screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java | 5
screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java | 1
screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationPageVo.java | 2
screen-api/src/main/resources/word/尘负荷监测报告.docx | 0
screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java | 1
41 files changed, 763 insertions(+), 272 deletions(-)
diff --git a/screen-api/pom.xml b/screen-api/pom.xml
index 93aa181..ea3e1f9 100644
--- a/screen-api/pom.xml
+++ b/screen-api/pom.xml
@@ -78,11 +78,31 @@
<artifactId>jfreechart</artifactId>
<version>1.5.0</version>
</dependency>
+ <!-- ���������������������-->
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml</artifactId>
+ <version>4.1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi-ooxml-schemas</artifactId>
+ <version>4.1.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>4.1.2</version>
+ </dependency>
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
- <version>1.5.1</version>
+ <version>1.9.1</version>
</dependency>
+
+
+
+
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
diff --git a/screen-api/src/main/java/com/moral/api/config/Interceptor/SyncConfiguration.java b/screen-api/src/main/java/com/moral/api/config/Interceptor/SyncConfiguration.java
new file mode 100644
index 0000000..ea9663f
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/config/Interceptor/SyncConfiguration.java
@@ -0,0 +1,42 @@
+package com.moral.api.config.Interceptor;
+
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+//@Configuration
+@EnableAsync
+public class SyncConfiguration {
+
+ @Bean(name = "asyncPoolTaskExecutor")
+ public ThreadPoolTaskExecutor executor() {
+ ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
+ //���������������
+ taskExecutor.setCorePoolSize(10);
+ //������������������������������������,���������������������������������������������������������������������������
+ taskExecutor.setMaxPoolSize(20);
+ //������������
+ taskExecutor.setQueueCapacity(50);
+ //������������������,���������������������������������������������������������������������������������
+ taskExecutor.setKeepAliveSeconds(200);
+ //������������������������������
+ taskExecutor.setThreadNamePrefix("async-");
+ /**
+ * ������������������������������������������������������������������������������maximumPoolSize���������������������������������������������������������
+ * ������������������������������
+ * ThreadPoolExecutor.AbortPolicy:���������������������RejectedExecutionException���������
+ * ThreadPoolExecutor.DiscardPolicy������������������������������������������������
+ * ThreadPoolExecutor.DiscardOldestPolicy���������������������������������������������������������������������������������������
+ * ThreadPoolExecutor.CallerRunsPolicy��������������������������������������������������� execute() ���������������������
+ */
+ taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+ taskExecutor.initialize();
+ return taskExecutor;
+ }
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java b/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
index e1d9d2f..ddec6d4 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AppAllocationController.java
@@ -6,6 +6,7 @@
import com.moral.api.pojo.query.app.AppAllocationFileCond;
import com.moral.api.pojo.query.app.AppAllocationPageCond;
import com.moral.api.pojo.vo.app.AppAllocationFindVo;
+import com.moral.api.pojo.vo.app.AppAuthority;
import com.moral.constant.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -93,7 +94,7 @@
@ApiOperation(value = "������������")
public ResultMessage authority(@RequestParam @ApiParam(value = "allocationNum",name = "������") String allocationNum,
@RequestParam @ApiParam(value = "userId",name = "������Id") Integer userId){
- boolean authority = allocationService.authority(allocationNum,userId);
+ AppAuthority authority = allocationService.authority(allocationNum, userId);
return ResultMessage.ok(authority);
}
diff --git a/screen-api/src/main/java/com/moral/api/controller/AppUserController.java b/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
index 444a080..c6157c1 100644
--- a/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/AppUserController.java
@@ -18,9 +18,15 @@
import java.util.HashMap;
import java.util.Map;
+import javax.validation.Valid;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.entity.Allocation;
+import com.moral.api.pojo.query.app.AppAllocationPushUserCond;
import com.moral.api.service.UserService;
-import com.moral.api.utils.HttpClientUtil;
+
+import com.moral.api.utils.WechatUtils;
import com.moral.api.vo.WxMssVo;
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
@@ -65,31 +71,50 @@
return ResultMessage.ok();
}
- @GetMapping("pushOneUser")
+ @PostMapping("pushOneUser")
@ApiOperation(value = "���������������������")
- public ResultMessage pushOneUser(String openid){
- String body = push("oOCWi6yfVapaK25Jnkk7jKSbMLyw");
- return ResultMessage.ok(body);
+ public ResultMessage pushOneUser(@Valid @RequestBody Allocation appAllocationPushUserCond){
+ userService.pushOneUser(appAllocationPushUserCond);
+// String body = push("oOCWi6-_hnzSvrMT8HX5D7Dz7tEA");
+ return ResultMessage.ok();
}
public String push(String openid) {
RestTemplate restTemplate = new RestTemplate();
//������������������������������������������������access_token������������������������������access_token������������������������������
- String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + HttpClientUtil.getAccessToken();
+ //���������������
+ String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + WechatUtils.getAccessToken();
+// String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=" + HttpClientUtil.getAccessToken();
+// String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=" + HttpClientUtil.getAccessToken();
+// String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + HttpClientUtil.getAccessToken();
+ //���������������
+// String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + HttpClientUtil.getAccessToken();
+
+
//���������������������
WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);//���������openid���������������������������������������������������������������������
- wxMssVo.setTemplate_id("sClgB85aEG1hgaiXpnJBopo5LJX6r91DUsyikOmUgv8");//������������������id
- wxMssVo.setPage("pages/index/index");
+ wxMssVo.setTemplate_id("YNqUZ1MgMvwY3G-NENVbcmIBR5dUotSdnwcz96CWrho");//������������������id
+ wxMssVo.setLang("zh_CN");
+ wxMssVo.setMiniprogramState("formal");
+// wxMssVo.setPage("pages/index/index");
- Map<String, String> m = new HashMap<>(3);
- m.put("time2", "2023-10-23");
- m.put("thing3", "������");
- m.put("thing7", "������������������");
- m.put("character_string8", "������������������");
- m.put("phrase10", "������������������");
- wxMssVo.setData(m);
+ Map<String, Object> m = new HashMap<>();
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ HashMap<String, Object> map3 = new HashMap<>();
+ HashMap<String, Object> map4 = new HashMap<>();
+ map1.put("value","���������2");
+ map2.put("value","ouyanglun");
+ map3.put("value","���������1");
+ map4.put("value","2023-10-16");
+ m.put("thing18", map1);
+ m.put("character_string1", map2);
+ m.put("thing2", map3);
+ m.put("date4", map4);
+ wxMssVo.setData(JSON.toJSON(m));
+
ResponseEntity<String> responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
return responseEntity.getBody();
diff --git a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
index 776c15c..31908f5 100644
--- a/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/CruiserController.java
@@ -2,12 +2,13 @@
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.hutool.poi.word.WordUtil;
-import com.deepoove.poi.NiceXWPFDocument;
import com.deepoove.poi.XWPFTemplate;
-import com.deepoove.poi.data.MiniTableRenderData;
+import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.data.TextRenderData;
+import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import com.moral.api.entity.Dustld;
+import com.moral.api.exception.BusinessException;
import com.moral.api.pojo.bo.ExcelBO;
import com.moral.api.pojo.dto.historySecondCruiser.HistorySecondCruiserResultDTO;
import com.moral.api.pojo.dust.DustForm;
@@ -24,7 +25,6 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
-import org.apache.xmlbeans.impl.jam.provider.ResourcePath;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@@ -236,23 +236,19 @@
*/
@PostMapping("dailyDustlds")
@Transactional
- public ResultMessage dailyDustlds(@RequestBody Map<String,Object> params, HttpServletResponse response) throws IOException {
+ public void dailyDustlds(@RequestBody Map<String,Object> params, HttpServletResponse response,HttpServletRequest request) throws IOException {
// Map<String, Object> params = WebUtils.getParametersStartingWith(request, null);
if (!params.containsKey("mac") || !params.containsKey("startTime") || !params.containsKey("endTime")){
- return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ return;
}
- System.out.println(CruiserController.class.getResource("/word/���������������������.docx").getPath());
- URL resource = getClass().getResource("/word/���������������������.docx");
- String path = resource.getPath();
- System.out.println(path);
Map<String, Object> map = dustldService.dailyDustlds(params);
if (ObjectUtils.isEmpty(map)){
- return ResultMessage.fail(ResponseCodeEnum.TARGET_IS_NULL.getCode(), ResponseCodeEnum.TARGET_IS_NULL.getMsg());
+ throw new BusinessException("���������������������");
}
- test(map,response);
+ test(map,response,request);
- return ResultMessage.ok();
+
}
@@ -315,56 +311,87 @@
}
- public static void test( Map<String, Object> params,HttpServletResponse response) throws IOException {
- InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������.docx");
- XWPFDocument compile = null;
+ public void test( Map<String, Object> params,HttpServletResponse response,HttpServletRequest request) throws IOException {
+
try {
+ //InputStream inputStream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������.docx");
+ InputStream stream = WordUtil.class.getClassLoader().getResourceAsStream("word/���������������������.docx");
+ //������������������
+ File file = new File("word/���������������������.docx");
+ //���������������������������������������������������������������������������������������������
+ FileUtils.copyInputStreamToFile(stream, file);
+ //��������������������������������������������� ������������������������
+ String filePath = file.getAbsolutePath();
+
+
+
//������������������������������������������������������{{}}������������������������,map������������key������������������������������������������
HashMap<String, Object> map = new HashMap<>();
//������������������������
- RowRenderData header1 = RowRenderData.build(new TextRenderData("6495ED", "������"), new TextRenderData("6495ED", "������"),new TextRenderData("6495ED", "���������������������/������������"));
+ //RowRenderData header1 = RowRenderData.build(new TextRenderData("6495ED", "������"), new TextRenderData("6495ED", "������"),new TextRenderData("6495ED", "���������������������/������������"));
//���������������������������������������������������������list������������������������������foreach������������������
List<DustForm> list1 = (List<DustForm>) params.get("list1");
- ArrayList<Map<String, Object>> mapArrayList = (ArrayList<Map<String, Object>>) params.get("list3");
+ List<Map<String, Object>> mapArrayList = (ArrayList<Map<String, Object>>) params.get("list3");
ArrayList<RowRenderData> rsList1 = new ArrayList<>();
ArrayList<RowRenderData> rsList3 = new ArrayList<>();
-
+ List<Map> detailList = new ArrayList<>();
for (int i = 0; i < list1.size(); i++) {
DustForm dustForm = list1.get(i);
- RowRenderData row0 = RowRenderData.build(i+1+"",dustForm.getRoad(), dustForm.getValue()+"");
- rsList1.add(row0);
+ Map maps = new HashMap();
+ maps.put("table1", i+1);
+ maps.put("table2", dustForm.getRoad());
+ maps.put("table3", dustForm.getValue());
+ detailList.add(maps);
}
-
+ List<Map> detailList2 = new ArrayList<>();
+ Map maps = new HashMap();
+ /* maps.put("table4", "");
+ maps.put("table5", "");
+ maps.put("table6", "");
+ maps.put("table7", map.get("date1"));
+ maps.put("table8", map.get("date2"));
+ detailList2.add(maps);*/
for (int i = 0; i < mapArrayList.size(); i++) {
Map<String, Object> map1 = mapArrayList.get(i);
- RowRenderData row = RowRenderData.build(i + 1 + "", map1.get("road").toString(), map1.get("value1").toString(), map1.get("value2").toString(), map1.get("value3").toString());
- rsList3.add(row);
+ maps = new HashMap();
+ maps.put("time4", i+1);
+ maps.put("time5", map1.get("road").toString());
+ maps.put("time6", map1.get("value1").toString());
+ maps.put("time7", map1.get("value2").toString());
+ maps.put("time8", map1.get("value3").toString());
+ detailList2.add(maps);
}
- if (!ObjectUtils.isEmpty(mapArrayList)){
- map.put("table3", new MiniTableRenderData(rsList3));
- }
- map.put("table1", new MiniTableRenderData(header1, rsList1));
String data = params.get("data").toString();
map.put("data",data);
map.put("time",params.get("time").toString());
map.put("date1",params.get("date1").toString());
map.put("date2",params.get("date2").toString());
- File docxFile = new File("���������������������.docx");
- FileUtils.copyToFile(inputStream,docxFile);
- compile = WordExportUtil.exportWord07(docxFile.getPath(),map);
- compile.write(response.getOutputStream());
+ HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
+ Configure config = Configure.newBuilder().bind("detailList", policy).bind("detailList2", policy).build();
+ XWPFTemplate compile = XWPFTemplate.compile(filePath,config).render(new HashMap<String, Object>(){{
+ put("time",map.get("time"));
+ put("data",map.get("data"));
+ put("time1",map.get("date1").toString());
+ put("time2",map.get("date2").toString());
+ put("detailList", detailList);
+ put("detailList2", detailList2);
+ }});
+
+ response.setContentType("multipart/form-data");
+ // ���������������
+ response.addHeader("Content-Disposition", "attachment;fileName=ce.docx" );
+ response.setCharacterEncoding("UTF-8");
+ OutputStream out = response.getOutputStream();
+ compile.write(out);
+ out.flush();
+ out.close();
compile.close();
- inputStream.close();
} catch (IOException e) {
log.error ("������������������������������������������", e);
} catch (Exception e) {
throw new RuntimeException(e);
- }finally {
- compile.close();
- inputStream.close();
-
}
}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java b/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
index 96f6f50..afedd98 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/OrganizationMapper.java
@@ -2,6 +2,9 @@
import com.moral.api.entity.Organization;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +16,7 @@
*/
public interface OrganizationMapper extends BaseMapper<Organization> {
+ List<Integer> orgIdList(@Param("organizationId") Integer organizationId);
+
+ List<Integer> orgIdSpecialDevList(@Param("organizationId") Integer organizationId,@Param("mac") String mac);
}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/ResponsibilityUnitMapper.java b/screen-api/src/main/java/com/moral/api/mapper/ResponsibilityUnitMapper.java
index 6dec41c..68b2dd7 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/ResponsibilityUnitMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/ResponsibilityUnitMapper.java
@@ -22,4 +22,12 @@
* ������������id
*/
List<Integer> selectCodeList(@Param("code") String code,@Param("id") Integer id);
+
+ /**
+ * ������������������������
+ * @param code
+ * @param id
+ * @return
+ */
+ String selectName(@Param("code") String code,@Param("id") Integer id);
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationExt.java b/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationExt.java
index a0fca82..a5b3b7e 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationExt.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationExt.java
@@ -1,5 +1,6 @@
package com.moral.api.pojo.ext.allocation;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.moral.api.entity.Allocation;
import com.moral.api.pojo.vo.approvetable.ApproveTableListVo;
import com.moral.api.pojo.vo.file.FileVo;
@@ -34,4 +35,16 @@
@ApiModelProperty(value = "������������")
private List<ApproveTableListVo> approveList;
+
+ //������������������
+ @TableField(exist = false)
+ private String unitName;
+
+ //������������������
+ @TableField(exist = false)
+ private String escalationUnitName;
+ @TableField(exist = false)
+ //������������������
+ private String polluteTypeName;
+
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationPageExt.java b/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationPageExt.java
index 3b4b5d2..bedf4e4 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationPageExt.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/ext/allocation/AllocationPageExt.java
@@ -1,6 +1,7 @@
package com.moral.api.pojo.ext.allocation;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.moral.api.entity.Allocation;
import io.swagger.annotations.ApiModelProperty;
@@ -27,4 +28,7 @@
@ApiModelProperty(value = "������������")
private String stateName;
+
+ //������������������
+ private String escalationUnitName;
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/query/app/AppAllocationPushUserCond.java b/screen-api/src/main/java/com/moral/api/pojo/query/app/AppAllocationPushUserCond.java
new file mode 100644
index 0000000..25e8813
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/query/app/AppAllocationPushUserCond.java
@@ -0,0 +1,49 @@
+package com.moral.api.pojo.query.app;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+import javax.validation.constraints.NotNull;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="AppAllocationPushUserCond - ������������������", description="AppAllocationPushUserCond - ������������������")
+public class AppAllocationPushUserCond {
+
+ @ApiModelProperty(value = "������������")
+ @NotNull(message = "���������������������������")
+ private Date escalationTime;
+
+
+ @ApiModelProperty(value = "������������id")
+ @NotNull(message = "���������������������������")
+ private Integer unitId;
+
+
+ @ApiModelProperty(value = "������������id")
+ @NotNull(message = "���������������������������")
+ private Integer escalationUnitId;
+
+
+ @ApiModelProperty(value = "������")
+ @NotNull(message = "���������������������")
+ private Integer state;
+ /**
+ *������������
+ */
+ @ApiModelProperty(value = "������������")
+ @NotNull(message = "���������������������")
+ private String allocationNum;
+
+
+}
+
+
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationPageVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationPageVo.java
index 7aede07..a8c61e0 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationPageVo.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationPageVo.java
@@ -109,7 +109,7 @@
}
public Integer getResidueDay() {
- int day = this.changeDay;
+ int day = Objects.isNull(this.changeDay)?0:this.changeDay;
if(AllocationApproveEnum.UNDER_RECTIFICATION.value.equals(state)){
Date date = new Date();
int days = DateUtils.getDays(escalationTime, date);
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
index ddf8f60..64c73f2 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/allocation/AllocationVo.java
@@ -139,6 +139,13 @@
@TableField(exist = false)
private String time;
+ @TableField(exist = false)
+ private String unitName;
+ @TableField(exist = false)
+ private String escalationUnitName;
+ @TableField(exist = false)
+ private String polluteTypeName;
+
public static AllocationVo convert(AllocationExt allocationExt) {
AllocationVo allocationVo = BeanConverts.convert(allocationExt, AllocationVo.class);
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAllocationFindVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAllocationFindVo.java
index b5fb539..00c0cbb 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAllocationFindVo.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAllocationFindVo.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.moral.api.pojo.enums.AllocationApproveEnum;
+import com.moral.api.pojo.enums.ChangeEnum;
import com.moral.api.pojo.ext.allocation.AllocationPageExt;
import com.moral.api.pojo.vo.allocation.AllocationPageVo;
import com.moral.api.utils.BeanConverts;
@@ -73,13 +74,18 @@
@ApiModelProperty(value = "������������")
private String stateName;
+ //������������������
+ private String escalationUnitName;
public Integer getResidueDay() {
- int day = this.changeDay;
- if(AllocationApproveEnum.UNDER_RECTIFICATION.value.equals(state)){
- Date date = new Date();
- int days = DateUtils.getDays(escalationTime, date);
- return day-days;
+ int day=0;
+ if (this.changeType==ChangeEnum.DEADLINE.value){
+ day = this.changeDay;
+ if(AllocationApproveEnum.UNDER_RECTIFICATION.value.equals(state)){
+ Date date = new Date();
+ int days = DateUtils.getDays(escalationTime, date);
+ return day-days;
+ }
}
return day;
}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAuthority.java b/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAuthority.java
new file mode 100644
index 0000000..c7f4b95
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/app/AppAuthority.java
@@ -0,0 +1,13 @@
+package com.moral.api.pojo.vo.app;
+
+
+import lombok.Data;
+
+@Data
+public class AppAuthority {
+ //������������
+ private Integer code;
+
+ //������������
+ private String name;
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/AllocationService.java b/screen-api/src/main/java/com/moral/api/service/AllocationService.java
index abdb545..218cbfc 100644
--- a/screen-api/src/main/java/com/moral/api/service/AllocationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/AllocationService.java
@@ -12,13 +12,11 @@
import com.moral.api.pojo.ext.allocation.AllocationListExt;
import com.moral.api.pojo.ext.allocation.AllocationPageExt;
import com.moral.api.pojo.query.allocation.*;
-import com.moral.api.pojo.dto.allocation.AllocationUnitDto;
import com.moral.api.pojo.query.allocationextension.AllocationExtensionAddCond;
import com.moral.api.pojo.query.app.AppAllocationFileCond;
import com.moral.api.pojo.query.app.AppAllocationPageCond;
import com.moral.api.pojo.vo.allocation.AllocationFindVo;
-import com.moral.api.pojo.vo.allocation.AllocationPageVo;
-import com.moral.api.pojo.vo.app.AppAllocationFindVo;
+import com.moral.api.pojo.vo.app.AppAuthority;
public interface AllocationService extends IService<Allocation> {
@@ -133,8 +131,13 @@
*/
void checkSmallRoutine(AllocationCheckCond checkCond);
-
- boolean authority(String allocationNum,Integer userId);
+ /**
+ * ������������ 1 ������������������ 2.������������������ 3.���������
+ * @param allocationNum
+ * @param userId
+ * @return
+ */
+ AppAuthority authority(String allocationNum, Integer userId);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
index c27d8ef..2c3972c 100644
--- a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
@@ -2,6 +2,7 @@
import com.moral.api.entity.Organization;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -34,6 +35,11 @@
Organization getOrganizationById(Integer id);
-
+ /**
+ * ������������������������
+ * @param organizationId
+ * @return
+ */
+ List<Integer> orgIdList( Integer organizationId);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java
index 9a27915..56ef3f0 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -5,11 +5,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.moral.api.entity.Allocation;
import com.moral.api.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.moral.api.pojo.bo.UserBO;
-import com.moral.api.pojo.query.AppUserCond;
+import com.moral.api.pojo.query.app.AppAllocationPushUserCond;
/**
* <p>
@@ -53,4 +54,7 @@
boolean updateUserId(Integer userId);
+ // ���������������
+ void pushOneUser(Allocation appAllocationPushUserCond);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
index 235b1e7..0b9da91 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/AllocationServiceImpl.java
@@ -25,6 +25,7 @@
import com.moral.api.pojo.query.app.AppAllocationPageCond;
import com.moral.api.pojo.vo.allocation.AllocationFindVo;
import com.moral.api.pojo.vo.app.AppAllocationFindVo;
+import com.moral.api.pojo.vo.app.AppAuthority;
import com.moral.api.pojo.vo.user.QxUser;
import com.moral.api.service.*;
import com.moral.constant.Constants;
@@ -70,6 +71,8 @@
private ResponsibilityUnitService responsibilityUnitService;
@Autowired
private SysDictTypeService sysDictTypeService;
+ @Autowired
+ private UserService userService;
/**
* ������������������������������������
@@ -124,7 +127,7 @@
//������
String allocationNum = "JBD-" + dateString + String.format("%04d", i);
allocation.setAllocationNum(allocationNum);
- if(Objects.nonNull(allocationCond.getEscalationUnitId())&& escalationType(allocationCond.getEscalationUnitId())) {
+ if(Objects.nonNull(allocationCond.getEscalationUnitId())&& !allocationCond.getEscalationUnitId().equals(allocationCond.getUnitId()) && escalationType(allocationCond.getEscalationUnitId())) {
allocation.setEscalationType(AllocationEscalationTypeEnum.CHECK.getValue());
}
if(NEW_BUILT.equals(allocationCond.getState())) {
@@ -132,8 +135,10 @@
}
//������������������
allocationMapper.insert(allocation);
+ //������������
+ userService.pushOneUser(allocation);
redisTemplate.opsForValue().set(RedisConstants.JBD_DATA,i);
- if(NEW_BUILT.equals(allocationCond.getState())) {
+ if(NEW_BUILT.equals(allocationCond.getState())||AllocationApproveEnum.UNDER_RECTIFICATION.value.equals(allocationCond.getState())) {
//������������������
ApproveTable approveTable = new ApproveTable();
approveTable.setRelationId(allocation.getAllocationId());
@@ -503,6 +508,9 @@
allocationExt.setFileChangeList(fileTableService.list(id,FileTableEnum.ALLOCATION_RECTIFICATION.value));
allocationExt.setFileApproveList(fileTableService.list(id,FileTableEnum.ALLOCATION_APPROVE.value));
allocationExt.setApproveList(approveTableService.listAll(id, FileTableEnum.ALLOCATION_FOUNDATION.value));
+ allocationExt.setUnitName(getUnitName(allocationExt.getUnitId()).getUnitName());
+ allocationExt.setEscalationUnitName(getUnitName(allocationExt.getEscalationUnitId()).getUnitName());
+ allocationExt.setPolluteTypeName(responsibilityUnitMapper.selectName(Constants.WU_RAN_LEI_XING,allocationExt.getPolluteType()));
return allocationExt;
}
@@ -526,6 +534,9 @@
allocation.setState(changeCond.getState());
allocation.setChangeTime(new Date());
this.updateById(allocation);
+ //������������
+ Allocation allocation1 = this.getById(changeCond.getAllocationId());
+ userService.pushOneUser(allocation1);
//������������������
ApproveTable approveTable = new ApproveTable();
approveTable.setRelationId(allocation.getAllocationId());
@@ -700,6 +711,8 @@
Page<AllocationPageExt> extAppPage = this.baseMapper.extAppPage(allocationPageCond.getPage().convertPage(),allocationPageCond);
extAppPage.getRecords().forEach(it->{
Integer state = it.getState();
+ //������������������������
+ it.setEscalationUnitName(getUnitName(it.getEscalationUnitId()).getUnitName());
if (state.equals(AllocationApproveEnum.DRAFT.value)||state.equals(AllocationApproveEnum.UNDER_RECTIFICATION.value)){
if(integer==0||integer==1){
it.setStateName(AppAllocationStateEnum.TO_BE_PROCESSED.name);
@@ -787,9 +800,12 @@
//������������������
ApproveTable approveTable = new ApproveTable();
approveTable.setRelationId(allocation.getAllocationId());
+ approveTable.setApproveModule(FileTableEnum.ALLOCATION_FOUNDATION.value);
+ /* approveTable.setState(NEW_BUILT);
+ approveTable.setStateName("������");
+ approveTableService.saveResult(approveTable);*/
approveTable.setState(AllocationApproveEnum.UNDER_RECTIFICATION.value);
approveTable.setStateName(AllocationApproveEnum.UNDER_RECTIFICATION.name);
- approveTable.setApproveModule(FileTableEnum.ALLOCATION_FOUNDATION.value);
approveTableService.saveResult(approveTable);
fileTableService.upDateResult(changeCond.getFileChangeList(),allocation.getAllocationId(), FileTableEnum.ALLOCATION_RECTIFICATION.value);
}
@@ -835,30 +851,66 @@
}
@Override
- public boolean authority(String allocationNum,Integer userId) {
+ public AppAuthority authority(String allocationNum,Integer userId) {
+ //������������
+ AppAuthority appAuthority = new AppAuthority();
//������������������
QxUser user = UserHelper.getCurrentUser();
+ //���������������������
+ LambdaQueryWrapper<Allocation> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Allocation::getAllocationNum,allocationNum);
+ wrapper.eq(Allocation::getIsDel,0);
+ wrapper.eq(Allocation::getIsInvalid,0);
+ Allocation allocation = allocationMapper.selectOne(wrapper);
+
List<Integer> userList = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_JBD.getValue(),user.getUserId());
if(CollectionUtils.isNotEmpty(userList)){
- return true;
- }
- if(Objects.nonNull(user.getUnitId())){
- LambdaQueryWrapper<Allocation> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(Allocation::getAllocationNum,allocationNum);
- wrapper.eq(Allocation::getIsDel,0);
- wrapper.eq(Allocation::getIsInvalid,0);
- Allocation allocation = allocationMapper.selectOne(wrapper);
- if (allocation.getUnitId().equals(user.getUnitId())){
- return true;
- }
- String code = responsibilityUnitMapper.selectAreaCode(user.getUnitId());
- if(code.length()>6){
- return false;
+ //���������������������
+ if (allocation.getState()>30){
+ appAuthority.setCode(2);
+ appAuthority.setName(AppAllocationStateEnum.COMPLETED.name);
}else {
- return true;
+ appAuthority.setCode(1);
+ appAuthority.setName(AppAllocationStateEnum.COMPLETED.name);
+ }
+ return appAuthority;
+ }
+ if(Objects.nonNull(user.getUnitId())&&user.getUnitId()!=0){
+ String code = responsibilityUnitMapper.selectAreaCode(user.getUnitId());
+ if (code.length() > 6 && allocation.getUnitId().equals(user.getUnitId())) {
+ if (allocation.getState().equals(AllocationApproveEnum.UNDER_RECTIFICATION.value)){
+ appAuthority.setCode(1);
+ appAuthority.setName(AppAllocationStateEnum.TO_BE_PROCESSED.name);
+ return appAuthority;
+ }else if (allocation.getState().equals(AllocationApproveEnum.IN_APPROVAL.value)){
+ appAuthority.setCode(2);
+ appAuthority.setName(AppAllocationStateEnum.TO_BE_COMPLETED.name);
+ return appAuthority;
+ }else {
+ appAuthority.setCode(2);
+ appAuthority.setName(AppAllocationStateEnum.COMPLETED.name);
+ return appAuthority;
+ }
+ } else if (code.length() <= 6){
+ if (allocation.getState().equals(AllocationApproveEnum.IN_APPROVAL.value)){
+ appAuthority.setCode(1);
+ appAuthority.setName(AppAllocationStateEnum.TO_BE_PROCESSED.name);
+ return appAuthority;
+ }else if (allocation.getState().equals(AllocationApproveEnum.UNDER_RECTIFICATION.value)){
+ appAuthority.setCode(2);
+ appAuthority.setName(AppAllocationStateEnum.TO_BE_COMPLETED.name);
+ return appAuthority;
+ }else {
+ appAuthority.setCode(2);
+ appAuthority.setName(AppAllocationStateEnum.COMPLETED.name);
+ return appAuthority;
+ }
}
}
- return true;
+ //���������������������
+ appAuthority.setCode(3);
+ appAuthority.setName("������������");
+ return appAuthority;
}
@Override
@@ -883,15 +935,15 @@
if(CollectionUtils.isNotEmpty(userList)){
return 1;
}
- if(Objects.nonNull(user.getUnitId())){
+ if(Objects.nonNull(user.getUnitId())&&user.getUnitId()!=0) {
String code = responsibilityUnitMapper.selectAreaCode(user.getUnitId());
- if(code.length()>6){
+ if (code.length() > 6) {
return 0;
- }else {
+ } else {
return 2;
}
}
- return 1;
+ return 0;
}
private boolean escalationType(Integer id){
boolean f = false;
@@ -901,4 +953,11 @@
}
return f;
}
+
+
+ private ResponsibilityUnit getUnitName(Integer unitId){
+ ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(unitId);
+ return responsibilityUnit;
+ }
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
index 1863fba..4ce7314 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DustldServiceImpl.java
@@ -1,7 +1,10 @@
package com.moral.api.service.impl;
+import com.moral.api.exception.BusinessException;
+import com.moral.api.mapper.*;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.stereotype.Service;
@@ -36,10 +39,6 @@
import com.moral.api.entity.Dustld;
import com.moral.api.entity.ManageCoordinate;
import com.moral.api.entity.MaxRoad;
-import com.moral.api.mapper.DustldMapper;
-import com.moral.api.mapper.HistorySecondCruiserMapper;
-import com.moral.api.mapper.ManageCoordinateMapper;
-import com.moral.api.mapper.MaxRoadMapper;
import com.moral.api.pojo.dto.historySecondCruiser.DustldDTO;
import com.moral.api.pojo.dust.DustForm;
import com.moral.api.pojo.dust.TimeForm;
@@ -270,6 +269,8 @@
private ManageCoordinateMapper manageCoordinateMapper;
@Autowired
private MaxRoadMapper maxRoadMapper;
+ @Autowired
+ private OrganizationMapper organizationMapper;
@Override
@Transactional
@@ -278,6 +279,11 @@
Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfo();
Map<String, Object> orgInfo = (Map<String, Object>) userInfo.get("organization");
Integer orgId = (Integer) orgInfo.get("id");
+ String mac = params.get("mac").toString();
+ List<Integer> orgList = organizationMapper.orgIdSpecialDevList(orgId,mac);
+ if(CollectionUtils.isEmpty(orgList)){
+ throw new BusinessException("������������������������������������");
+ }
String time1 = params.get("startTime").toString();
String dateString1 = DateUtils.stringToDateString(time1, DateUtils.yyyy_MM_dd_HH_mm_ss_EN, DateUtils.yyyy_MM_dd_HH_mm_CN);
String rsTime1 = dateString1.substring(5, 14);
@@ -286,7 +292,7 @@
String rsTime2 = dateString2.substring(5, 14);
HashMap<String, Object> rsMap = new HashMap<>();
List<Map<String, Object>> dusts = historySecondCruiserMapper.getDusts(params);
- Map<String, List<DustldDTO>> collect = manageCoordinateMapper.CompareTo(orgId).stream().collect(Collectors.groupingBy(o -> o.getName()));
+ Map<String, List<DustldDTO>> collect = manageCoordinateMapper.CompareTo(orgList.get(0)).stream().collect(Collectors.groupingBy(o -> o.getName()));
if (ObjectUtils.isEmpty(dusts) || ObjectUtils.isEmpty(collect)){
return null;
}
@@ -384,9 +390,9 @@
if (road.getName().equals(dustForm.getRoad())){
HashMap<String, Object> map = new HashMap<>();
map.put("road",road.getName());
- map.put("value1",road.getData());
- map.put("value2",dustForm.getValue());
- map.put("value3",road.getData()-dustForm.getValue());
+ map.put("value1",String.format("%.2f",road.getData()));
+ map.put("value2",String.format("%.2f",dustForm.getValue()));
+ map.put("value3",String.format("%.2f",road.getData()-dustForm.getValue()));
list3.add(map);
}
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
index c290dc5..40b13b6 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -39,6 +39,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
+import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -292,6 +293,7 @@
}
}
+ String str = new DecimalFormat("#.######").format(Double.parseDouble(result.get("a21005").toString()));
QueryFiveDataByMacVO queryFiveDataByMacVO = new QueryFiveDataByMacVO();
queryFiveDataByMacVO.setName(device.getName());
queryFiveDataByMacVO.setDataTime(datas.get("dataTime").toString());
@@ -299,7 +301,7 @@
queryFiveDataByMacVO.setA34002(result.get("a34002").toString());
queryFiveDataByMacVO.setA21026(result.get("a21026").toString());
queryFiveDataByMacVO.setA21004(result.get("a21004").toString());
- queryFiveDataByMacVO.setA21005(result.get("a21005").toString());
+ queryFiveDataByMacVO.setA21005(str);
queryFiveDataByMacVO.setA05024(result.get("a05024").toString());
queryFiveDataByMacVO.setA01008(result.get("a01008").toString());
queryFiveDataByMacVO.setA01007(result.get("a01007").toString());
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
index db1785c..7287c00 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistorySecondUavServiceImpl.java
@@ -27,6 +27,7 @@
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
+import java.util.stream.Collectors;
/**
* <p>
@@ -59,28 +60,27 @@
public List<Date> queryDate(Integer organizationId) {
//������������������
QueryWrapper<HistorySecondUav> queryWrapper = new QueryWrapper<>();
+ //List<Integer> childrenId = new ArrayList<>();
+ List<Integer> children = organizationService.orgIdList(organizationId);
//���������������id
- List<Organization> children = organizationService.getChildrenOrganizationsById(organizationId);
+ /*List<Organization> children = organizationService.getChildrenOrganizationsById(organizationId);
List<Integer> childrenId = new ArrayList<>();
for (Organization child : children) {
childrenId.add(child.getId());
}
- childrenId.add(organizationId);
- queryWrapper.in("organization_id", childrenId);
+ childrenId.add(organizationId);*/
+ queryWrapper.in("organization_id", children);
//���������������������������180���
Date endDate = new Date();
Date startDate = DateUtils.addDays(endDate, -180);
queryWrapper.between("batch", startDate, endDate);
//������������������
- queryWrapper.select("DISTINCT batch");
+ queryWrapper.select("DISTINCT DATE_FORMAT(batch,'%Y-%m-%d') batch ");
queryWrapper.orderByDesc("batch");
//������������
List<HistorySecondUav> historySecondUavs = historySecondUavMapper.selectList(queryWrapper);
//������������Date������
- List<Date> result = new ArrayList<>();
- for (HistorySecondUav historySecondUav : historySecondUavs) {
- result.add(historySecondUav.getBatch());
- }
+ List<Date> result = historySecondUavs.stream().map(HistorySecondUav::getBatch).collect(Collectors.toList());
return result;
}
@@ -94,12 +94,9 @@
Date endDate = form.getEndDate();
QueryWrapper<HistorySecondUav> wrapper = new QueryWrapper<>();
//���������������id
- List<Organization> children = organizationService.getChildrenOrganizationsById(organizationId);
+ List<Integer> children = organizationService.orgIdList(organizationId);
List<Integer> childrenId = new ArrayList<>();
- for (Organization child : children) {
- childrenId.add(child.getId());
- }
- childrenId.add(organizationId);
+ childrenId.addAll(children);
childrenId.addAll(integerList);
wrapper.in("organization_id", childrenId);
//������������batch������������������������������������������������
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index 98ad2cd..9b03888 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -71,4 +71,9 @@
return;
}
}
+
+ @Override
+ public List<Integer> orgIdList(Integer organizationId) {
+ return this.baseMapper.orgIdList(organizationId);
+ }
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
index 33c1ea6..2930b9a 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -210,7 +210,7 @@
});
}
}else {
- BigDecimal dataValue = Objects.nonNull(list.getDataValue())?BigDecimal.valueOf(Integer.parseInt(list.getDataValue())):BigDecimal.ZERO;
+ BigDecimal dataValue = Objects.nonNull(list.getDataValue())?BigDecimal.valueOf(Double.parseDouble(list.getDataValue())):BigDecimal.ZERO;
result.forEach(it->{
it.setAvgNum(it.getAvgNum().add(dataValue));
});
@@ -224,8 +224,8 @@
private BigDecimal numAvg(List<String> list , BigDecimal num){
int nums = 1;
for (int i=0;i<list.size();i=i+2){
- if(num.compareTo(BigDecimal.valueOf(Integer.parseInt(list.get(i))))>= 0 ){
- return num.add(BigDecimal.valueOf(Integer.parseInt(list.get(nums))));
+ if(num.compareTo(BigDecimal.valueOf(Double.parseDouble(list.get(i))))>= 0 ){
+ return num.add(BigDecimal.valueOf(Double.parseDouble(list.get(i+1))));
}
nums+=2;
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index b112317..cde7c7f 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -8,27 +8,38 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.config.Interceptor.UserHelper;
import com.moral.api.entity.*;
import com.moral.api.mapper.*;
import com.moral.api.pojo.bo.UserBO;
+import com.moral.api.pojo.enums.AllocationApproveEnum;
import com.moral.api.pojo.enums.FileTableEnum;
import com.moral.api.pojo.enums.StateEnum;
import com.moral.api.pojo.enums.SysDictTypeEnum;
+
import com.moral.api.pojo.vo.file.FileVo;
+import com.moral.api.pojo.vo.user.QxUser;
import com.moral.api.service.FileTableService;
+import com.moral.api.service.ResponsibilityUnitService;
import com.moral.api.service.UserService;
import com.moral.api.utils.OperationLogUtils;
+import com.moral.api.utils.StringUtils;
import com.moral.api.utils.WechatUtils;
+import com.moral.api.vo.WxMssVo;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
import com.moral.util.*;
+
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
+import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -69,6 +80,9 @@
@Autowired
private ResponsibilityUnitMapper responsibilityUnitMapper;
+ @Autowired
+ private ResponsibilityUnitService responsibilityUnitService;
+
@Value("${AES.KEY}")
private String AESKey;
@@ -103,6 +117,16 @@
}
ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(userBo.getUnitId());
List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, userBo.getId());
+ result.put("userName", userBo.getUserName());
+ result.put("unitId",userBo.getUnitId());
+ result.put("userId", userBo.getId());
+ result.put("account", userBo.getAccount());
+ List<FileVo> listFile = fileTableService.list(userBo.getId(), FileTableEnum.APP_ALLOCATION.value);
+ result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
+ result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
+ result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value :StateEnum.TAKE_EFFECT.value);
+ String userIdStr = new StringBuffer("00").append(userBo.getId().toString()).toString();
+ String tokenResult = TokenUtils.getTokenById(userIdStr);
//������������������
Map<String, Object> userInfo = new LinkedHashMap<>();
userInfo.put("userId", userBo.getId());
@@ -117,19 +141,25 @@
userInfo.put("isAdmin", userBo.getIsAdmin());
userInfo.put("organizationId",userBo.getOrganizationId());
userInfo.put("openid", openId);
+ if(StringUtils.isNotEmpty(tokenResult)){
+ result.put("token", tokenResult);
+ result.put("code", ResponseCodeEnum.SUCCESS.getCode());
+ result.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
+ sysLog("������������������" + userBo.getAccount()+" ;openId:"+openId,userBo);
+ //������openId���user������
+ User user = userMapper.selectById(userBo.getId());
+ user.setOpenId(openId);
+ userMapper.updateById(user);
+ TokenUtils.getRefreshTokenApp(tokenResult,userInfo);
+ return result;
+ }
+
try {
//������token������������redis
String token = TokenUtils.getTokenApp(new StringBuffer("00").append(userBo.getId().toString()).toString(),userInfo);
result.put("token", token);
- result.put("userName", userBo.getUserName());
- result.put("unitId",userBo.getUnitId());
- result.put("userId", userBo.getId());
- result.put("account", userBo.getAccount());
- List<FileVo> listFile = fileTableService.list(userBo.getId(), FileTableEnum.APP_ALLOCATION.value);
- result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
- result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
- result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value :StateEnum.TAKE_EFFECT.value);
+
} catch (Exception e) {
log.error("token���������������" + e.getMessage());
result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
@@ -178,7 +208,19 @@
// String nickName = rawDataJson.getString("nickName");
// String avatarUrl = rawDataJson.getString("avatarUrl");
}
-
+ String userIdStr = new StringBuffer("00").append(user.getId().toString()).toString();
+ String tokenResult = TokenUtils.getTokenById(userIdStr);
+ result.put("userName", user.getUserName());
+ result.put("unitId",user.getUnitId());
+ List<FileVo> listFile = fileTableService.list(user.getId(), FileTableEnum.APP_ALLOCATION.value);
+ result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
+ result.put("userId", user.getId());
+ result.put("account", user.getAccount());
+ ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(user.getUnitId());
+ List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, user.getId());
+ result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
+ result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
+ result.put("openId",openid);
Map<String, Object> userInfo = new LinkedHashMap<>();
userInfo.put("userId", user.getId());
userInfo.put("account", user.getAccount());
@@ -186,26 +228,24 @@
userInfo.put("email", user.getEmail());
userInfo.put("mobile", user.getMobile());
userInfo.put("unitId",user.getUnitId());
-// userInfo.put("unName",user.getAreaName());
userInfo.put("organizationId",user.getOrganizationId());
userInfo.put("wechat", user.getWechat());
userInfo.put("expireTime", DateUtils.dateToDateString(user.getExpireTime()));
userInfo.put("isAdmin", user.getIsAdmin());
- ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(user.getUnitId());
- List<Integer> list = responsibilityUnitMapper.selectCodeList(SysDictTypeEnum.SYS_DEVICE.value, user.getId());
+ if(StringUtils.isNotEmpty(tokenResult)){
+ result.put("token", tokenResult);
+ result.put("code", ResponseCodeEnum.SUCCESS.getCode());
+ result.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
+ sysLog("������������������" + user.getAccount()+" ;openId:"+openid,user);
+ TokenUtils.getRefreshTokenApp(tokenResult,userInfo);
+ return result;
+ }
try {
//������token������������redis
String token = TokenUtils.getTokenApp(new StringBuffer("00").append(user.getId().toString()).toString(),userInfo);
result.put("token", token);
- result.put("userName", user.getUserName());
- result.put("unitId",user.getUnitId());
- List<FileVo> listFile = fileTableService.list(user.getId(), FileTableEnum.APP_ALLOCATION.value);
- result.put("file", CollectionUtils.isNotEmpty(listFile)?listFile.get(0):new FileVo());
- result.put("userId", user.getId());
- result.put("account", user.getAccount());
- result.put("device",ObjectUtils.isEmpty(list)? StateEnum.NOT_EFFECTIVE.value : StateEnum.TAKE_EFFECT.value);
- result.put("unName",Objects.nonNull(responsibilityUnit)&&Objects.nonNull(responsibilityUnit.getUnitName())?responsibilityUnit.getUnitName():"���������������");
- result.put("openId",openid);
+
+
} catch (Exception e) {
log.error("token���������������" + e.getMessage());
result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
@@ -226,6 +266,74 @@
sysLog(userId+"������������������",user);
return true;
}
+
+
+
+ /**
+ * ���������������
+ * @param appAllocationPushUserCond
+ */
+ @Override
+ @Async("asyncPoolTaskExecutor")
+ public void pushOneUser(Allocation appAllocationPushUserCond) {
+ QxUser currentUser = UserHelper.getCurrentUser();
+ ResponsibilityUnit responsibilityUnit = responsibilityUnitMapper.selectById(appAllocationPushUserCond.getUnitId());
+ Integer areaCode = responsibilityUnit.getAreaCode();
+
+ List<ResponsibilityUnit> responsibilityUnits = responsibilityUnitService.selectAreaUnit(areaCode.toString().length()>6?responsibilityUnit.getParentCode():responsibilityUnit.getAreaCode());
+ //������unitid
+ LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(User::getIsDelete,Constants.NOT_DELETE);
+ Integer state = appAllocationPushUserCond.getState();
+ if (state==20){
+ wrapper.eq(User::getUnitId,appAllocationPushUserCond.getUnitId());
+ }else {
+ wrapper.eq(User::getUnitId,ObjectUtils.isEmpty(responsibilityUnits)?0:responsibilityUnits.get(0).getUnitId());
+ }
+
+ List<User> users = userMapper.selectList(wrapper);
+ if (ObjectUtils.isEmpty(users)){
+ return;
+ }
+
+ String dateString = DateUtils.dateToDateString(appAllocationPushUserCond.getEscalationTime(),"MM���dd���");
+ //������������������������������������������������access_token������������������������������access_token������������������������������
+ //���������������
+ String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + WechatUtils.getAccessToken();
+ //������������
+ for (User user : users) {
+ if (user.getId().equals(currentUser.getUserId())){
+ continue;
+ }
+ RestTemplate restTemplate = new RestTemplate();
+ //���������������������
+ WxMssVo wxMssVo = new WxMssVo();
+ wxMssVo.setTouser(user.getOpenId());//���������openid���������������������������������������������������������������������
+ wxMssVo.setTemplate_id("YNqUZ1MgMvwY3G-NENVbcmIBR5dUotSdnwcz96CWrho");//������������������id
+ wxMssVo.setLang("zh_CN");
+ wxMssVo.setMiniprogramState("formal");
+ wxMssVo.setPage("pages/index/index");
+ Map<String, Object> m = new HashMap<>();
+ HashMap<String, Object> map1 = new HashMap<>();
+ HashMap<String, Object> map2 = new HashMap<>();
+ HashMap<String, Object> map3 = new HashMap<>();
+ HashMap<String, Object> map4 = new HashMap<>();
+ map1.put("value",responsibilityUnit.getUnitName()+dateString+"������������");
+ map2.put("value",appAllocationPushUserCond.getAllocationNum());
+ map3.put("value",state==30? AllocationApproveEnum.IN_APPROVAL.name:AllocationApproveEnum.UNDER_RECTIFICATION.name);
+ map4.put("value",DateUtils.dateToDateString(new Date(),"yyyy���MM���dd���"));
+ m.put("thing18", map1);
+ m.put("character_string1", map2);
+ m.put("thing2", map3);
+ m.put("date4", map4);
+ wxMssVo.setData(JSON.toJSON(m));
+ ResponseEntity<String> responseEntity =
+ restTemplate.postForEntity(url, wxMssVo, String.class);
+ String body = responseEntity.getBody();
+ log.info("������:"+body+"������:"+user.getAccount()+"openID"+user.getOpenId());
+ }
+ }
+
private void sysLog(String cont,User user){
//������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
diff --git a/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java b/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
index 198c652..ac06c8c 100644
--- a/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
+++ b/screen-api/src/main/java/com/moral/api/utils/HttpClientUtil.java
@@ -140,18 +140,4 @@
return resultString;
}
- public static String getAccessToken() {
- RestTemplate restTemplate = new RestTemplate();
- Map<String, String> params = new HashMap<>();
- params.put("APPID", "wx7c54942dfc87f4d8"); //
- params.put("APPSECRET", "5873a729c365b65ab42bb5fc82d2ed49"); //
- ResponseEntity<String> responseEntity = restTemplate.getForEntity(
- "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}", String.class, params);
- String body = responseEntity.getBody();
- JSONObject object = JSON.parseObject(body);
- String Access_Token = object.getString("access_token");
- String expires_in = object.getString("expires_in");
- System.out.println("������������expires_in���" + expires_in);
- return Access_Token;
- }
}
diff --git a/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java b/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
index bdafa35..8471c56 100644
--- a/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
+++ b/screen-api/src/main/java/com/moral/api/utils/WechatUtils.java
@@ -3,16 +3,9 @@
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
+
import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestClientException;
+
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
@@ -20,7 +13,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
-import com.moral.api.service.UserLogService;
+
public class WechatUtils {
@@ -46,4 +39,18 @@
return jsonObject;
}
+
+ public static String getAccessToken() {
+ RestTemplate restTemplate = new RestTemplate();
+ Map<String, String> params = new HashMap<>();
+ params.put("APPID", APPID); //
+ params.put("APPSECRET", SECRET); //
+ ResponseEntity<String> responseEntity = restTemplate.getForEntity(
+ "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}", String.class, params);
+ String body = responseEntity.getBody();
+ JSONObject object = JSON.parseObject(body);
+ String Access_Token = object.getString("access_token");
+// String expires_in = object.getString("expires_in");
+ return Access_Token;
+ }
}
diff --git a/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java b/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java
index 706aa87..3ad7ea7 100644
--- a/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java
+++ b/screen-api/src/main/java/com/moral/api/vo/WxMssVo.java
@@ -9,5 +9,7 @@
private String touser;//������openid
private String template_id;//������������������id
private String page = "pages/index/index";//���������������������������
- private Map<String, String> data;//������������
+ private Object data;//������������
+ private String miniprogramState;
+ private String lang;
}
diff --git a/screen-api/src/main/resources/mapper/DeviceMapper.xml b/screen-api/src/main/resources/mapper/DeviceMapper.xml
index 238bf81..959ae30 100644
--- a/screen-api/src/main/resources/mapper/DeviceMapper.xml
+++ b/screen-api/src/main/resources/mapper/DeviceMapper.xml
@@ -199,7 +199,7 @@
<if test="organizationId !=null">
AND organization_id = #{organizationId}
</if>
- and mac LIKE "%"#{mac}"%" AND is_delete = 0
+ and mac LIKE "%"#{mac}"%" or `name` like "%"#{mac}"%" AND is_delete = 0
union
SELECT sd.id,sd.`name`,sd.mac,sd.special_type FROM special_device as sd
WHERE 1=1
diff --git a/screen-api/src/main/resources/mapper/OrganizationMapper.xml b/screen-api/src/main/resources/mapper/OrganizationMapper.xml
index e6490b9..7b47b80 100644
--- a/screen-api/src/main/resources/mapper/OrganizationMapper.xml
+++ b/screen-api/src/main/resources/mapper/OrganizationMapper.xml
@@ -26,4 +26,39 @@
<result column="is_delete" property="isDelete"/>
</resultMap>
+ <select id="orgIdList" resultType="java.lang.Integer">
+ SELECT id FROM (
+ SELECT id, parent_id, name FROM organization WHERE id = #{organizationId}
+ UNION ALL
+ SELECT i.id, i.parent_id, i.name
+ FROM organization i
+ INNER JOIN (
+ SELECT * FROM (
+ SELECT id, parent_id, name FROM organization WHERE id = #{organizationId}
+ UNION ALL
+ SELECT id, parent_id, name FROM organization WHERE parent_id = #{organizationId}
+ ) t1
+ ) t2 ON i.parent_id = t2.id
+ where i.is_delete = 0
+ ) t3
+ </select>
+ <select id="orgIdSpecialDevList" resultType="java.lang.Integer">
+ select organization_id from special_device where organization_id in (
+ SELECT id FROM (
+ SELECT id, parent_id, name FROM organization WHERE id = #{organizationId}
+ UNION ALL
+ SELECT i.id, i.parent_id, i.name
+ FROM organization i
+ INNER JOIN (
+ SELECT * FROM (
+ SELECT id, parent_id, name FROM organization WHERE id = #{organizationId}
+ UNION ALL
+ SELECT id, parent_id, name FROM organization WHERE parent_id = #{organizationId}
+ ) t1
+ ) t2 ON i.parent_id = t2.id
+ where i.is_delete = 0
+ ) t3 ) and mac = #{mac} and is_delete = 0
+
+
+ </select>
</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/ResponsibilityUnitMapper.xml b/screen-api/src/main/resources/mapper/ResponsibilityUnitMapper.xml
index 522b283..b8efaa6 100644
--- a/screen-api/src/main/resources/mapper/ResponsibilityUnitMapper.xml
+++ b/screen-api/src/main/resources/mapper/ResponsibilityUnitMapper.xml
@@ -42,4 +42,14 @@
select area_code from responsibility_unit t where unit_id = #{id}
</select>
+
+ <select id="selectName" resultType="java.lang.String">
+ select t1.dataValue from sys_dict_type t
+ left join sys_dict_data t1 on t1.dict_type_id = t.id
+
+ where t.is_delete = 0 and t.name = #{code} and t1.dataKey = #{id} and t1.is_delete = 0
+
+
+ </select>
+
</mapper>
\ No newline at end of file
diff --git "a/screen-api/src/main/resources/word/\345\260\230\350\264\237\350\215\267\347\233\221\346\265\213\346\212\245\345\221\212.docx" "b/screen-api/src/main/resources/word/\345\260\230\350\264\237\350\215\267\347\233\221\346\265\213\346\212\245\345\221\212.docx"
index 282bede..efbb72c 100644
--- "a/screen-api/src/main/resources/word/\345\260\230\350\264\237\350\215\267\347\233\221\346\265\213\346\212\245\345\221\212.docx"
+++ "b/screen-api/src/main/resources/word/\345\260\230\350\264\237\350\215\267\347\233\221\346\265\213\346\212\245\345\221\212.docx"
Binary files differ
diff --git a/screen-common/src/main/java/com/moral/util/TokenUtils.java b/screen-common/src/main/java/com/moral/util/TokenUtils.java
index e8ae947..e51b7c0 100644
--- a/screen-common/src/main/java/com/moral/util/TokenUtils.java
+++ b/screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -86,7 +86,7 @@
if (oldToken != null)
redisTemplate.delete(oldToken);
//���token���������value���
- redisTemplate.opsForValue().set(token, userInfo);
+ getRefreshTokenApp(token,userInfo);
//redisTemplate.expire(token, validity_time, TimeUnit.SECONDS);
//���token���������Hash���
redisTemplate.opsForHash().put("user_token", uid, token);
@@ -98,6 +98,9 @@
}
}
+ public static void getRefreshTokenApp(String token, Object userInfo) {
+ redisTemplate.opsForValue().set(token, userInfo);
+ }
/**
* @Description: ������token
@@ -197,7 +200,11 @@
* @Date: 2021/5/21
*/
public static String getTokenById(Integer id) {
- return (String)redisTemplate.opsForHash().get("user_token", String.valueOf(id));
+ return (String) getTokenById(id.toString());
+ }
+
+ public static String getTokenById(String id) {
+ return (String)redisTemplate.opsForHash().get("user_token", String.valueOf(id));
}
diff --git a/screen-job/src/main/resources/application-cjl.yml b/screen-job/src/main/resources/application-cjl.yml
index d731ad2..ac9d5f2 100644
--- a/screen-job/src/main/resources/application-cjl.yml
+++ b/screen-job/src/main/resources/application-cjl.yml
@@ -110,4 +110,4 @@
date:
changshu: P5DND7A0245358,P5DND7A0245364,P5DND7A0245413,P5DND7A0245355,P5DND7A0245416,P5DND7A0245426,P5DND7A0245398,P5DND7A0245441,P5DND7A0245429,P5DND7A0245435,P5DND7A0245372,P5DND7A0245397,P5DND7A0245415,P5DND7A0245411,P5DND7A0245407,P5DND7A0245418,P5DND7A0245430,P5DND7A0245493,P5DND7A0245414,P5DND7A0245366,P5DND7A0245442,P5DND7A0245386,P5DND7A0245431,P5DND7A0245394,P5DND7A0245380,P5DND7A0245420,P5DND7A0245440,P5DND7A0245432,P5DND7A0391974,P5DND7A0391989,P5DND7A0245481,P5DND7A0392001,P5DND7A0391991,P5DND7A0391978,P5DND7A0245499
device:
- list: p5dnd7a0245499,p5dnd7a0391962
+ list: p5dnd7a0245499,p5dnd7a0391962,HJS00002156B89
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
index 0cab33e..2c1b26a 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondCruiserMapper.java
@@ -6,6 +6,7 @@
import com.moral.api.entity.HistorySecondCruiser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.moral.api.pojo.dto.cruiser.CruiserDTO;
+import com.moral.api.pojo.dto.cruiser.CruiserListDTO;
/**
* <p>
@@ -19,4 +20,6 @@
List<CruiserDTO> getCruiserInfo(Map<String,Object> params);
+ List<CruiserListDTO> cruiserList(Map<String,Object> params);
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserListDTO.java b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserListDTO.java
new file mode 100644
index 0000000..a0b43ce
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/pojo/dto/cruiser/CruiserListDTO.java
@@ -0,0 +1,35 @@
+package com.moral.api.pojo.dto.cruiser;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.Objects;
+
+@Data
+public class CruiserListDTO {
+
+ /**
+ * ������������
+ */
+ private String time;
+
+ /**
+ * ������
+ */
+ private Double flyLat;
+
+ /**
+ * ������
+ */
+ private Double flyLon;
+
+
+ private Integer coordinateId;
+
+ private Integer id;
+
+ private Integer state;
+
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
index 92da268..a6a1a4a 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondCruiserServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.entity.HistorySecondCruiser;
import com.moral.api.entity.ManageCoordinateDetail;
import com.moral.api.entity.Sensor;
@@ -10,28 +11,20 @@
import com.moral.api.mapper.ManageCoordinateDetailMapper;
import com.moral.api.mapper.SpecialDeviceMapper;
import com.moral.api.pojo.dto.cruiser.CruiserDTO;
-import com.moral.api.service.DeviceService;
+import com.moral.api.pojo.dto.cruiser.CruiserListDTO;
import com.moral.api.service.HistorySecondCruiserService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.service.SpecialDeviceService;
import com.moral.api.util.RoadUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.DateUtils;
-
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
-import java.sql.Wrapper;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -172,82 +165,41 @@
@Override
public Map<String, Object> getCruiserCompare(Map<String, Object> params) {
HashMap<String,Object> rsMap = new HashMap<>();
- String mac = params.get("mac").toString();
- String time1 = params.get("time1").toString();
+ List<CruiserListDTO> list = historySecondCruiserMapper.cruiserList(params);
+ List<CruiserDTO> cruiserInfo = new ArrayList<>();
ArrayList<ManageCoordinateDetail> rsList1 = new ArrayList<>();
- params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
- List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(null);
- List<CruiserDTO> cruiserInfo = (List<CruiserDTO>) redisTemplate.opsForHash().get(RedisConstants.DATE_COORDINATE, mac + time1);
-
- if (ObjectUtils.isEmpty(cruiserInfo)){
- cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
- cruiserInfo = cruiserInfo.stream().distinct().collect(Collectors.toList());
- cruiserInfo.removeIf(o->{
- if (ObjectUtils.isEmpty(o.getFlyLon()) || ObjectUtils.isEmpty(o.getFlyLat())) {
- return true;
- }
- double lon = o.getFlyLon();
- double lat = o.getFlyLat();
- double[] doubles = RoadUtils.transformWGS84ToBD09(lon, lat);
- Matcher matcher = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[0]);
- matcher.find();
- String s = matcher.group();
- Matcher matcher1 = Pattern.compile("\\d*\\.\\d{8}").matcher(""+doubles[1]);
- matcher1.find();
- String s1 = matcher1.group();
- o.setFlyLon(Double.parseDouble(s));
- o.setFlyLat(Double.parseDouble(s1));
- o.setData(lon+"_"+lat);
-// o.setFlyLon(doubles[0]);
-// o.setFlyLat(doubles[1]);
- if (lon < 70 || lon > 150 || lat < 20 || lat > 60) {
- return true;
- }
- return false;
- });
-
- redisTemplate.opsForHash().put(RedisConstants.DATE_COORDINATE,mac+time1,cruiserInfo);
- //������������������
- redisTemplate.opsForHash().getOperations().expire(RedisConstants.DATE_COORDINATE,6000, TimeUnit.SECONDS);
-
- }
-// List<CruiserDTO> cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params);
- log.info(""+cruiserInfo.size());
- if (ObjectUtils.isEmpty(manageCoordinateDetails)){
- rsMap.put("rsData",cruiserInfo);
- rsMap.put("data",rsList1);
- return rsMap;
- }
- for (int i=cruiserInfo.size()-1;i>0;i--) {
- CruiserDTO cruiserDTO = cruiserInfo.get(i);
- String data = cruiserDTO.getData();
- String[] rs = data.split("_");
- String flyLon = rs[0];
- String flyLat = rs[1];
-// double lonDouble = Double.parseDouble(flyLon);
-// double latDouble = Double.parseDouble(flyLat);
- for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
- String latitude = manageCoordinateDetail.getLatitude().toString();
- String longitude = manageCoordinateDetail.getLongitude().toString();
-// double lonDouble1 = Double.parseDouble(longitude);
-// double latDouble1 = Double.parseDouble(latitude);
-// if (latDouble1==latDouble && lonDouble==lonDouble1){
- if (flyLon.equals(longitude) && flyLat.equals(latitude)){
- manageCoordinateDetail.setCode(data);
- manageCoordinateDetail.setLongitude(cruiserDTO.getFlyLon());
- manageCoordinateDetail.setLatitude(cruiserDTO.getFlyLat());
- rsList1.add(manageCoordinateDetail);
- cruiserInfo.remove(i);
- break;
- }
+ for(CruiserListDTO c : list){
+ if (ObjectUtils.isEmpty(c.getFlyLon()) || ObjectUtils.isEmpty(c.getFlyLat())) {
+ continue;
}
-
+ double[] doubles = RoadUtils.transformWGS84ToBD09(c.getFlyLon(), c.getFlyLat());
+ if(doubles.length !=2){
+ continue;
+ }
+ String date = new StringBuilder().append(c.getFlyLon()).append("_").append(c.getFlyLat()).toString();
+ if(c.getState().equals(0)){
+ CruiserDTO cruiserDTO = new CruiserDTO();
+ cruiserDTO.setTime(c.getTime());
+ cruiserDTO.setFlyLat(doubles[1]);
+ cruiserDTO.setFlyLon(doubles[0]);
+ cruiserDTO.setData(date);
+ cruiserDTO.setState("1");
+ cruiserInfo.add(cruiserDTO);
+ }else {
+ ManageCoordinateDetail detail = new ManageCoordinateDetail();
+ detail.setId(c.getId());
+ detail.setCoordinateId(c.getCoordinateId());
+ detail.setLongitude(doubles[0]);
+ detail.setLatitude(doubles[1]);
+ detail.setState(c.getState().toString());
+ detail.setCode(date);
+ rsList1.add(detail);
+ }
}
rsMap.put("rsData",cruiserInfo);
rsMap.put("data",rsList1);
rsMap.put("message","���"+cruiserInfo.size()+"������������������"+"���������"+(cruiserInfo.size()+rsList1.size())+"���");
return rsMap;
}
-
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
index 095f733..d8c1d64 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -19,6 +19,7 @@
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -226,35 +227,24 @@
log.info(j+"");
}
}else {
- for (int i=cruiserInfo.size()-1;i>0;i--) {
- CruiserDTO cruiserDTO = cruiserInfo.get(i);
- Double flyLat = cruiserDTO.getFlyLat();
- Double flyLon = cruiserDTO.getFlyLon();
- for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
- String latitude = manageCoordinateDetail.getLatitude().toString();
- String longitude = manageCoordinateDetail.getLongitude().toString();
-// double lonDouble1 = Double.parseDouble(longitude);
-// double latDouble1 = Double.parseDouble(latitude);
-// if (lonDouble1==flyLon && flyLat==latDouble1 ){
- if (longitude.equals(flyLon+"") && latitude.equals(flyLat+"")){
- cruiserInfo.remove(i);
- break;
- }
- }
- }
+ Map<String,Integer> map = new HashMap<>(manageCoordinateDetails.size()+50);
+ manageCoordinateDetails.forEach(it->map.put(it.getLatitude()+"_"+it.getLongitude(),it.getId()));
+ List<ManageCoordinateDetail> result = new ArrayList<>();
for (CruiserDTO cruiserDTO : cruiserInfo) {
- Double flyLat = cruiserDTO.getFlyLat();
- Double flyLon = cruiserDTO.getFlyLon();
- ManageCoordinateDetail rsDTO = new ManageCoordinateDetail();
- rsDTO.setLatitude(flyLat);
- rsDTO.setLongitude(flyLon);
- rsDTO.setState("2");
- rsDTO.setCreateTime(new Date());
- rsDTO.setUpdateTime(new Date());
- rsDTO.setCoordinateId(coordinateId);
- manageCoordinateDetailMapper.insert(rsDTO);
- j++;
- log.info(j+"");
+ String fly = cruiserDTO.getFlyLat()+"_"+cruiserDTO.getFlyLon();
+ if(!map.containsKey(fly)){
+ ManageCoordinateDetail rsDTO = new ManageCoordinateDetail();
+ rsDTO.setLatitude(cruiserDTO.getFlyLat());
+ rsDTO.setLongitude(cruiserDTO.getFlyLon());
+ rsDTO.setState("2");
+ rsDTO.setCreateTime(new Date());
+ rsDTO.setUpdateTime(new Date());
+ rsDTO.setCoordinateId(coordinateId);
+ result.add(rsDTO);
+ }
+ }
+ if(!CollectionUtils.isEmpty(result)){
+ this.saveBatch(result);
}
}
return 200;
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java
index 14fd4c3..cc9489c 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ResponsibilityUnitServiceImpl.java
@@ -79,6 +79,7 @@
public Map<String, Object> selectUnit(Map<String, Object> parameters) {
QueryWrapper<ResponsibilityUnit> wrapper = new QueryWrapper<>();
wrapper.eq("is_del",Constants.NOT_DELETE);
+ wrapper.eq("is_invalid",0);
int page = Integer.parseInt(parameters.get("page").toString());
int size = Integer.parseInt(parameters.get("size").toString());
Object parentName1 = parameters.get("parentCode");
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
index 3e0da43..b709f21 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictDataServiceImpl.java
@@ -219,6 +219,7 @@
QueryWrapper<SysDictData> wrapper = new QueryWrapper<>();
wrapper.eq("is_delete", Constants.NOT_DELETE);
wrapper.eq("dict_type_id", type.getId());
+ wrapper.orderByAsc("id");
List<SysDictData> datas = sysDictDataMapper.selectList(wrapper);
result.put(type.getName(), datas);
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
index fcdce43..b9bd60d 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SysDictTypeServiceImpl.java
@@ -202,6 +202,7 @@
private List<SysDictType> getAllDictTypeFromDB() {
QueryWrapper<SysDictType> wrapper = new QueryWrapper<>();
wrapper.eq("is_delete", Constants.NOT_DELETE);
+ wrapper.orderByAsc("id");
List<SysDictType> sysDictTypes = sysDictTypeMapper.selectList(wrapper);
return sysDictTypes;
}
diff --git a/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml b/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
index 553e496..ec050c7 100644
--- a/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
+++ b/screen-manage/src/main/resources/mapper/HistorySecondCruiserMapper.xml
@@ -20,4 +20,54 @@
order by time
</select>
+ <select id="cruiserList" resultType="com.moral.api.pojo.dto.cruiser.CruiserListDTO">
+ WITH zb AS (
+ SELECT
+ DATE_FORMAT( `time`, '%Y-%m-%d %H:%i:%s' ) AS time,VALUE->> '$.flylat' AS flyLat,VALUE->> '$.flylon' AS flyLon
+ FROM
+ history_second_cruiser
+ WHERE
+ mac = #{mac}
+ AND `time` <![CDATA[>=]]> #{time1}
+ AND `time` <![CDATA[<=]]> #{time2}
+ ORDER BY
+ time
+ ),
+ resultList AS (
+ SELECT
+ t1.time,
+ t1.flyLat,
+ t1.flyLon
+ FROM
+ zb t1
+ INNER JOIN ( SELECT flyLon, flyLat, MAX( time ) AS max_time FROM zb GROUP BY flyLat, flyLon ) t2 ON t1.flyLon = t2.flyLon
+ AND t1.flyLat = t2.flyLat
+ AND t1.time = t2.max_time
+ ),
+ mx AS (
+ SELECT t2.latitude,
+ t2.longitude,
+ t2.state,
+ t2.coordinate_id ,max(t2.id) id
+ FROM
+ manage_coordinate t1
+ LEFT JOIN manage_coordinate_detail t2 ON t1.coordinate_id = t2.coordinate_id
+ LEFT JOIN special_device t3 ON t1.organization_id = t3.organization_id
+ WHERE
+ t1.is_del = 0
+ AND t3.mac = #{mac} group by t2.latitude,
+ t2.longitude,
+ t2.state,
+ t2.coordinate_id
+ ) SELECT
+ tt.time,
+ tt.flyLat,
+ tt.flyLon,
+ COALESCE ( tt1.state, 0 ) AS state ,tt1.coordinate_id,tt1.id as id
+ FROM
+ resultList tt
+ LEFT JOIN mx tt1 ON tt.flyLat = tt1.latitude
+ AND tt.flyLon = tt1.longitude
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0