RevenueServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. package com.huaxu.service.impl;
  2. import com.huaxu.dao.RevenueMapper;
  3. import com.huaxu.dto.*;
  4. import com.huaxu.entity.MonthRevenueEntity;
  5. import com.huaxu.entity.MonthSellwaterEntity;
  6. import com.huaxu.model.LoginUser;
  7. import com.huaxu.quartz.entity.QuartzEntity;
  8. import com.huaxu.quartz.job.SyncMeterCountJob;
  9. import com.huaxu.quartz.service.JobAndTriggerService;
  10. import com.huaxu.service.RevenueService;
  11. import com.huaxu.util.UserUtil;
  12. import lombok.extern.log4j.Log4j2;
  13. import org.springframework.beans.factory.InitializingBean;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Service;
  17. import org.springframework.web.client.RestTemplate;
  18. import javax.annotation.Resource;
  19. import java.util.*;
  20. /**
  21. * @description
  22. * @author yjy
  23. * @data 2021-2-24
  24. */
  25. @Service
  26. @Log4j2
  27. public class RevenueServiceImpl implements RevenueService, InitializingBean {
  28. @Resource
  29. private RevenueMapper revenueMapper;
  30. @Autowired
  31. private JobAndTriggerService jobAndTriggerService;
  32. @Autowired
  33. private RestTemplate restTemplate;
  34. @Value("${http_pool.meterRequesturl}")
  35. private String meterRequestUrl;
  36. @Override
  37. public void afterPropertiesSet() throws Exception {
  38. saveQrtzTask("0 0 1 * * ? ","同步水表数量","smsWaterSyncMeterCountJob", SyncMeterCountJob.class.getName());
  39. }
  40. public void saveQrtzTask(String cron, String jobGroup ,String jobName,String JobClassName) {
  41. // 1,查询需要批量推送的配置项目并构建定时任务
  42. // 2,若对应定时任务不存在则创建
  43. QuartzEntity entity = new QuartzEntity();
  44. entity.setJobGroup(jobGroup);
  45. entity.setJobName(jobName);
  46. entity.setDescription(jobName);
  47. //jobAndTriggerService.deleteJob(entity);
  48. boolean exists = jobAndTriggerService.isExists(entity);
  49. if(!exists){
  50. entity.setCronExpression(cron);
  51. entity.setJobClassName(JobClassName);
  52. jobAndTriggerService.save(entity);
  53. }
  54. }
  55. /**
  56. * 查询本月售水信息
  57. * @return
  58. */
  59. @Override
  60. public List<MonthSellwaterDto> selectMonthSell(Integer companyOrgId) {
  61. MonthSellwaterDto monthSellwaterDto=new MonthSellwaterDto();
  62. monthSellwaterDto.setCompanyOrgId(companyOrgId);
  63. LoginUser loginUser = UserUtil.getCurrentUser();
  64. monthSellwaterDto.setTenantId(loginUser.getTenantId());
  65. monthSellwaterDto.setProgramItems(loginUser.getProgramItemList());
  66. monthSellwaterDto.setUserType(loginUser.getType());
  67. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  68. monthSellwaterDto.setPermissonType(loginUser.getPermissonType());
  69. List<MonthSellwaterDto> monthSell=revenueMapper.selectMonthSell(monthSellwaterDto);
  70. List<MonthSellwaterDto> result=new ArrayList<>();
  71. Double othersUsage=null;
  72. if(monthSell.size()>4){
  73. for(int i=0;i<monthSell.size();i++){
  74. if(i<3){
  75. result.add(monthSell.get(i));
  76. } else{
  77. if(monthSell.get(i).getWaterUsage()!=null&&othersUsage!=null){
  78. othersUsage+=monthSell.get(i).getWaterUsage();
  79. }else if(monthSell.get(i).getWaterUsage()!=null){
  80. othersUsage=monthSell.get(i).getWaterUsage();
  81. }
  82. }
  83. }
  84. monthSellwaterDto.setPropertyName("其他用水");
  85. monthSellwaterDto.setWaterUsage(othersUsage);
  86. result.add(monthSellwaterDto);
  87. }else{
  88. result=monthSell;
  89. }
  90. return result;
  91. }
  92. /**
  93. * 查询近6个月总售水量
  94. *
  95. * @param companyOrgId
  96. * @return
  97. */
  98. @Override
  99. public List<MonthSellwaterDto> selectMonthSellTotal(Integer companyOrgId) {
  100. MonthSellwaterDto monthSellwaterDto=new MonthSellwaterDto();
  101. monthSellwaterDto.setCompanyOrgId(companyOrgId);
  102. LoginUser loginUser = UserUtil.getCurrentUser();
  103. monthSellwaterDto.setTenantId(loginUser.getTenantId());
  104. monthSellwaterDto.setProgramItems(loginUser.getProgramItemList());
  105. monthSellwaterDto.setUserType(loginUser.getType());
  106. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  107. monthSellwaterDto.setPermissonType(loginUser.getPermissonType());
  108. return revenueMapper.selectMonthSellTotal(monthSellwaterDto);
  109. }
  110. /**
  111. * 查询月营收情况
  112. *
  113. * @param companyOrgId
  114. * @return
  115. */
  116. @Override
  117. public List<MonthRevenueDto> selectMonthRevenue(Integer companyOrgId,Integer months) {
  118. MonthRevenueDto monthRevenueDto=new MonthRevenueDto();
  119. monthRevenueDto.setCompanyOrgId(companyOrgId);
  120. monthRevenueDto.setMonths(months);
  121. LoginUser loginUser = UserUtil.getCurrentUser();
  122. monthRevenueDto.setTenantId(loginUser.getTenantId());
  123. monthRevenueDto.setProgramItems(loginUser.getProgramItemList());
  124. monthRevenueDto.setUserType(loginUser.getType());
  125. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  126. monthRevenueDto.setPermissonType(loginUser.getPermissonType());
  127. return revenueMapper.selectMonthRevenue(monthRevenueDto);
  128. }
  129. /**
  130. * 查询本月各分公司的营收情况
  131. *
  132. * @return
  133. */
  134. @Override
  135. public List<MonthRevenueDto> selectCompanyRevenue() {
  136. MonthRevenueDto monthRevenueDto=new MonthRevenueDto();
  137. LoginUser loginUser = UserUtil.getCurrentUser();
  138. monthRevenueDto.setTenantId(loginUser.getTenantId());
  139. monthRevenueDto.setProgramItems(loginUser.getProgramItemList());
  140. monthRevenueDto.setUserType(loginUser.getType());
  141. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  142. monthRevenueDto.setPermissonType(loginUser.getPermissonType());
  143. return revenueMapper.selectCompanyRevenue(monthRevenueDto);
  144. }
  145. /**
  146. * wangbo
  147. * 查询前N个月的售水数据
  148. * @param companyOrgId
  149. * @param months
  150. * @return
  151. */
  152. @Override
  153. public List<MonthRevenueDto> selectOverviewRevenue(Integer companyOrgId,Integer months) {
  154. MonthRevenueDto monthRevenueDto=new MonthRevenueDto();
  155. monthRevenueDto.setCompanyOrgId(companyOrgId);
  156. monthRevenueDto.setMonths(months);
  157. LoginUser loginUser = UserUtil.getCurrentUser();
  158. monthRevenueDto.setTenantId(loginUser.getTenantId());
  159. monthRevenueDto.setProgramItems(loginUser.getProgramItemList());
  160. monthRevenueDto.setUserType(loginUser.getType());
  161. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  162. monthRevenueDto.setPermissonType(loginUser.getPermissonType());
  163. return revenueMapper.selectOverviewRevenue(monthRevenueDto);
  164. }
  165. /**
  166. * wangbo
  167. * 查询售水信息-按时间段
  168. * @param companyOrgId
  169. * @param startDate
  170. * @param endDate
  171. * @return
  172. */
  173. @Override
  174. public List<MonthRevenueDto> selectRevenueByDate(Integer companyOrgId,String startDate,String endDate) {
  175. MonthRevenueDto monthRevenueDto=new MonthRevenueDto();
  176. monthRevenueDto.setCompanyOrgId(companyOrgId);
  177. monthRevenueDto.setStartDate(startDate);
  178. monthRevenueDto.setEndDate(endDate);
  179. LoginUser loginUser = UserUtil.getCurrentUser();
  180. monthRevenueDto.setTenantId(loginUser.getTenantId());
  181. monthRevenueDto.setProgramItems(loginUser.getProgramItemList());
  182. monthRevenueDto.setUserType(loginUser.getType());
  183. //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
  184. monthRevenueDto.setPermissonType(loginUser.getPermissonType());
  185. return revenueMapper.selectRevenueByDate(monthRevenueDto);
  186. }
  187. /**
  188. * 查询是否当月有营收数据
  189. * @return
  190. */
  191. @Override
  192. public Integer isExistThisMonthRevenue(String tenantId) {
  193. return revenueMapper.isExistThisMonthRevenue(tenantId);
  194. }
  195. /**
  196. * 插入营收数据
  197. * @return
  198. */
  199. @Override
  200. public Integer insert(MonthRevenueEntity monthRevenueEntity) {
  201. return revenueMapper.insert(monthRevenueEntity);
  202. }
  203. /**
  204. * 修改营收数据
  205. * @return
  206. */
  207. @Override
  208. public Integer update(MonthRevenueEntity monthRevenueEntity) {
  209. return revenueMapper.update(monthRevenueEntity);
  210. }
  211. /**
  212. * 查询该租户一级公司id
  213. * @return
  214. */
  215. @Override
  216. public Integer selectCompanyIdByTenant(String tenantId) {
  217. return revenueMapper.selectCompanyIdByTenant(tenantId);
  218. }
  219. @Override
  220. public void syncMeterCount() {
  221. MeterCountDto meterCountDto = restTemplate.getForObject(meterRequestUrl, MeterCountDto.class);
  222. if(meterCountDto.getStatus()==0){
  223. for (MonthRevenueEntity monthRevenueEntity : meterCountDto.getData()) {
  224. //查询当月是否有数据 有就更新 没有就插入
  225. Integer count =revenueMapper.isExistThisMonthRevenue(monthRevenueEntity.getTenantId());
  226. if(count==0){
  227. Calendar thisMonthFirstDateCal = Calendar.getInstance();
  228. thisMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
  229. monthRevenueEntity.setCollectDate(thisMonthFirstDateCal.getTime());
  230. monthRevenueEntity.setCompanyOrgId(revenueMapper.selectCompanyIdByTenant(monthRevenueEntity.getTenantId()));
  231. revenueMapper.insert(monthRevenueEntity);
  232. }else{
  233. revenueMapper.update(monthRevenueEntity);
  234. }
  235. }
  236. }
  237. }
  238. /**
  239. * 插入售水数据
  240. * @return
  241. */
  242. @Override
  243. public Integer insertSellWater(MonthSellwaterEntity monthSellwaterEntity) {
  244. return revenueMapper.insertSellWater(monthSellwaterEntity);
  245. }
  246. /**
  247. * 修改售水数据
  248. * @return
  249. */
  250. @Override
  251. public Integer updateSellWater(MonthSellwaterEntity monthSellwaterEntity) {
  252. return revenueMapper.updateSellWater(monthSellwaterEntity);
  253. }
  254. /**
  255. * 修改营业数据
  256. * @return
  257. */
  258. @Override
  259. public Integer updateRevenue(MonthRevenueEntity monthRevenueEntity) {
  260. return revenueMapper.updateRevenue(monthRevenueEntity);
  261. }
  262. /**
  263. * 查询月营收情况
  264. * @param monthRevenueDto 营业信息查询条件
  265. * @return
  266. */
  267. @Override
  268. public List<MonthRevenueDto> selectList(MonthRevenueDto monthRevenueDto){
  269. return revenueMapper.selectList(monthRevenueDto);
  270. }
  271. /**
  272. * 查询某月是否有营收数据
  273. * @return
  274. */
  275. @Override
  276. public Integer isExistMonthRevenue(Integer companyOrgId,String collectDateString,Integer id) {
  277. return revenueMapper.isExistMonthRevenue(companyOrgId,collectDateString,id);
  278. }
  279. }