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