DkCommonServerceImpl.java 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. package com.ruoyi.system.service.impl;
  2. import com.ruoyi.common.core.domain.AjaxResult;
  3. import com.ruoyi.common.core.domain.entity.SysDept;
  4. import com.ruoyi.common.core.domain.entity.SysRole;
  5. import com.ruoyi.common.utils.DateUtils;
  6. import com.ruoyi.common.utils.SecurityUtils;
  7. import com.ruoyi.common.utils.StringUtils;
  8. import com.ruoyi.system.domain.Dksq;
  9. import com.ruoyi.system.domain.DksqLcjl;
  10. import com.ruoyi.system.mapper.DksqLcjlMapper;
  11. import com.ruoyi.system.mapper.DksqMapper;
  12. import com.ruoyi.system.mapper.SysDeptMapper;
  13. import com.ruoyi.system.service.IDkCommonServerce;
  14. import org.apache.poi.ss.usermodel.DateUtil;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.text.NumberFormat;
  18. import java.util.*;
  19. import java.util.stream.Collectors;
  20. import static com.ruoyi.common.constant.Constants.*;
  21. /**
  22. * @Author: tjf
  23. * @Date: 2023/6/15 15:32
  24. * @Describe:
  25. */
  26. @Service
  27. public class DkCommonServerceImpl implements IDkCommonServerce {
  28. @Autowired
  29. private DksqMapper dksqMapper;
  30. @Autowired
  31. private DksqLcjlMapper dksqLcjlMapper;
  32. @Autowired
  33. private SysDeptMapper sysDeptMapper;
  34. /**
  35. * 劳动局审核
  36. *
  37. * @param dksq
  38. * @return
  39. */
  40. @Override
  41. public AjaxResult shenHe(Dksq dksq) {
  42. if (!ONE.equals(dksq.getType())) {
  43. return AjaxResult.error("请勿重复审核");
  44. }
  45. //通过不通过都设置为2
  46. dksq.setType(TWO);
  47. dksqMapper.updateDksq(dksq);
  48. //插入流程记录表
  49. DksqLcjl dksqLcjl = new DksqLcjl();
  50. dksqLcjl.setDksqId(dksq.getId());
  51. dksqLcjl.setType(TWO);
  52. dksqLcjl.setResult(dksq.getResult());
  53. dksqLcjl.setCreateBy(SecurityUtils.getUsername());
  54. dksqLcjlMapper.insertDksqLcjl(dksqLcjl);
  55. return AjaxResult.success();
  56. }
  57. /**
  58. * 劳动局指派银行
  59. *
  60. * @param dksq
  61. * @return
  62. */
  63. @Override
  64. public AjaxResult zhiPai(Dksq dksq) {
  65. if (!TWO.equals(dksq.getType()) && !TWO.equals(dksq.getResult())) {
  66. return AjaxResult.error("审核未通过,请勿指派下一阶段");
  67. }
  68. //设置为等待银行评估
  69. dksq.setType(THR);
  70. dksq.setResult(ONE);
  71. dksqMapper.updateDksq(dksq);
  72. //插入流程记录表
  73. DksqLcjl dksqLcjl = new DksqLcjl();
  74. dksqLcjl.setDksqId(dksq.getId());
  75. dksqLcjl.setType(THR);
  76. dksqLcjl.setResult(ONE);
  77. dksqLcjl.setCreateBy(SecurityUtils.getUsername());
  78. dksqLcjlMapper.insertDksqLcjl(dksqLcjl);
  79. return AjaxResult.success();
  80. }
  81. /**
  82. * 银行评估
  83. *
  84. * @param dksq
  85. * @return
  86. */
  87. @Override
  88. public AjaxResult pingGu(Dksq dksq) {
  89. if (!THR.equals(dksq.getType()) && !ONE.equals(dksq.getResult())) {
  90. return AjaxResult.error("当前状态异常");
  91. }
  92. //根据评估结果来设置状态
  93. String result = dksq.getResult();
  94. DksqLcjl dksqLcjl = new DksqLcjl();
  95. //流程记录
  96. dksqLcjl.setType(THR);
  97. dksqLcjl.setResult(result);
  98. //不通过
  99. if (THR.equals(result)){
  100. //回到人社局审核通过
  101. dksq.setType(TWO);
  102. dksq.setResult(TWO);
  103. dksq.setFdBank(null);
  104. dksq.setFdBankId(-1L);
  105. }else if(TWO.equals(result)){
  106. //通过进去到等待放贷
  107. dksq.setType(FOR);
  108. dksq.setResult(ONE);
  109. }
  110. dksqMapper.updateDksq(dksq);
  111. //插入流程记录表
  112. dksqLcjl.setDksqId(dksq.getId());
  113. dksqLcjl.setCreateBy(SecurityUtils.getUsername());
  114. dksqLcjlMapper.insertDksqLcjl(dksqLcjl);
  115. return AjaxResult.success();
  116. }
  117. /**
  118. * 银行放贷
  119. * @param dksq
  120. * @return
  121. */
  122. @Override
  123. public AjaxResult fangDai(Dksq dksq) {
  124. if (!FOR.equals(dksq.getType()) && !ONE.equals(dksq.getResult())) {
  125. return AjaxResult.error("当前状态异常");
  126. }
  127. //默认放贷成功
  128. //流程记录
  129. dksq.setResult(TWO);
  130. dksq.setFdTime(DateUtils.parseDate(DateUtils.getDate()));
  131. dksqMapper.updateDksq(dksq);
  132. //插入流程记录表
  133. DksqLcjl dksqLcjl = new DksqLcjl();
  134. dksqLcjl.setType(FOR);
  135. dksqLcjl.setResult(TWO);
  136. dksqLcjl.setDksqId(dksq.getId());
  137. dksqLcjl.setCreateBy(SecurityUtils.getUsername());
  138. dksqLcjlMapper.insertDksqLcjl(dksqLcjl);
  139. return AjaxResult.success();
  140. }
  141. /**
  142. * 首页统计
  143. * @return
  144. */
  145. @Override
  146. public AjaxResult index() {
  147. Dksq dksq = new Dksq();
  148. //定义返回值
  149. Map<String,Object> indexMap = new HashMap<>();
  150. Map<String,Object> up = new HashMap<>();
  151. up.put("sqCount",0);
  152. up.put("sqMoney",0);
  153. up.put("dbr",0);
  154. up.put("fc",0);
  155. up.put("dbrPer","00.0%");
  156. up.put("fcPer","00.0%");
  157. Map<String,Double> right = new HashMap<>();
  158. //获取所有银行名称
  159. SysDept sysDept = new SysDept();
  160. sysDept.setParentId(110L);
  161. List<SysDept> sysDepts = sysDeptMapper.selectDeptList(sysDept);
  162. if (sysDepts != null && sysDepts.size() > 0){
  163. for (SysDept dept : sysDepts) {
  164. right.put(dept.getDeptName(),0D);
  165. }
  166. }
  167. //判断用户角色 如果是银行角色
  168. List<SysRole> roles = SecurityUtils.getLoginUser().getUser().getRoles();
  169. if (roles != null && roles.size() > 0){
  170. for (SysRole role : roles) {
  171. if ("bank".equals(role.getRoleKey())){
  172. //查询指派给自己的
  173. dksq.setFdBankId(SecurityUtils.getLoginUser().getDeptId());
  174. break;
  175. }
  176. }
  177. }
  178. //所有的贷款信息
  179. dksq.setCreateTime(DateUtils.parseDate(DateUtils.getDate()));
  180. List<Dksq> dksqs = dksqMapper.selectDksqList(dksq);
  181. if (dksqs != null && dksqs.size() > 0){
  182. //申请人数
  183. up.put("sqCount",dksqs.size());
  184. double sqMoney = dksqs.stream().mapToDouble(Dksq::getSqMoney).sum();
  185. up.put("sqMoney",sqMoney);
  186. //担保人担保
  187. double dbr = dksqs.stream().filter(s -> ONE.equals(s.getDbType())).count();
  188. //房产担保
  189. double fc = dksqs.stream().filter(s -> TWO.equals(s.getDbType())).count();
  190. up.put("dbr",dbr);
  191. up.put("fc",fc);
  192. Map<String, Double> collect = dksqs.stream().filter(s -> StringUtils.isNotBlank(s.getFdBank())).collect(Collectors.groupingBy(Dksq::getFdBank, Collectors.summingDouble(Dksq::getFdMoney)));
  193. for (String deptName : collect.keySet()) {
  194. right.put(deptName,collect.get(deptName));
  195. }
  196. NumberFormat nf = NumberFormat.getPercentInstance();
  197. nf.setMinimumFractionDigits( 1 );
  198. up.put("dbrPer",nf.format(dbr / (double) dksqs.size()));
  199. up.put("fcPer",nf.format(fc / (double)dksqs.size()));
  200. }
  201. indexMap.put("up",up);
  202. indexMap.put("right",right);
  203. return AjaxResult.success(indexMap);
  204. }
  205. /**
  206. * 首页eCharts
  207. * 每个月无担保 贷款金额和有担保贷款金额
  208. * @param dksq
  209. * @return
  210. */
  211. @Override
  212. public AjaxResult eCharts(Dksq dksq) {
  213. Object beginTime = dksq.getParams().get("beginTime");
  214. //把查询时间设置为20230101
  215. dksq.getParams().put("beginTime",beginTime+"0101");
  216. dksq.setType(FOR);
  217. dksq.setResult(TWO);
  218. Map<String,Object> indexMap = new HashMap<>();
  219. List<Object> months = new ArrayList<>();
  220. List<Object> y1 = new ArrayList<>();
  221. List<Object> y2 = new ArrayList<>();
  222. for (int i = 1; i <= 12; i++) {
  223. months.add(i+"");
  224. }
  225. indexMap.put("x",months);
  226. List<Dksq> dksqs = dksqMapper.selectDksqList(dksq);
  227. if (dksqs != null && dksqs.size() > 0){
  228. //放贷统计
  229. Map<String, Double> collectY1 = dksqs.stream().filter(s -> ONE.equals(s.getDbGrade())).collect(Collectors.groupingBy(o -> DateUtils.format(o.getFdTime(), "M"), Collectors.summingDouble(Dksq::getFdMoney)));
  230. for (Object month : months) {
  231. Double aDouble = collectY1.get(month);
  232. if (aDouble == null){
  233. y1.add(0);
  234. }else {
  235. y1.add(aDouble);
  236. }
  237. }
  238. //放贷统计
  239. Map<String, Double> collectY2 = dksqs.stream().filter(s -> !ONE.equals(s.getDbGrade())).collect(Collectors.groupingBy(o -> DateUtils.format(o.getFdTime(), "M"), Collectors.summingDouble(Dksq::getFdMoney)));
  240. for (Object month : months) {
  241. Double aDouble = collectY2.get(month);
  242. if (aDouble == null){
  243. y2.add(0);
  244. }else {
  245. y2.add(aDouble);
  246. }
  247. }
  248. }
  249. indexMap.put("y1",y1);
  250. indexMap.put("y2",y2);
  251. return AjaxResult.success(indexMap);
  252. }
  253. }