TEquipmentApplyController.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. package com.szwl.controller;
  2. import cn.com.crbank.ommo.bean.ResultMessage;
  3. import cn.com.crbank.ommo.esUtil.BeanUtils;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.szwl.model.bean.TEquipmentDTO;
  9. import com.szwl.model.bo.R;
  10. import com.szwl.model.bo.ResponseModel;
  11. import com.szwl.model.entity.*;
  12. import com.szwl.model.utils.PushUtils;
  13. import com.szwl.service.*;
  14. import com.szwl.service.es.EsTEquipmentService;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.http.HttpStatus;
  20. import org.springframework.http.ResponseEntity;
  21. import org.springframework.web.bind.annotation.GetMapping;
  22. import org.springframework.web.bind.annotation.PostMapping;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import java.math.BigDecimal;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. /**
  29. * <p>
  30. * 设备连接申请表 前端控制器
  31. * </p>
  32. *
  33. * @author wuhs
  34. * @since 2022-04-21
  35. */
  36. @RestController
  37. @Api(value = "/tEquipmentApply", tags = {"设备连接申请表"})
  38. @RequestMapping("/tEquipmentApply")
  39. public class TEquipmentApplyController {
  40. @Autowired
  41. TAdminService adminService;
  42. @Autowired
  43. TEquipmentApplyService equipmentApplyService;
  44. @Autowired
  45. TEquipmentService equipmentService;
  46. @Autowired
  47. TProductService productService;
  48. @Autowired
  49. TEquipmentDescService equipmentDescService;
  50. @Autowired
  51. EsTEquipmentService esTEquipmentService;
  52. @ApiOperation(value = "查找机器审核列表")
  53. @GetMapping("/pageTEquipmentApply")
  54. public ResponseModel<IPage<?>> pageTEquipmentApply(String clientId, String userName,String managerId,String type, long current, long size ) {
  55. LambdaQueryWrapper<TEquipmentApply> query = Wrappers.lambdaQuery();
  56. if(StringUtils.isNotEmpty(clientId)){
  57. query.like(TEquipmentApply::getClientId,clientId);
  58. }
  59. if(StringUtils.isNotEmpty(userName)){
  60. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  61. adminQuery.eq(TAdmin::getUsername,userName);
  62. List<TAdmin> list = adminService.list(adminQuery);
  63. if(list.size()>0){
  64. query.eq(TEquipmentApply::getAdminId,list.get(0).getId());
  65. }
  66. }
  67. if(StringUtils.isNotEmpty(type)){
  68. query.eq(TEquipmentApply::getType,type);
  69. }
  70. if(StringUtils.isNotEmpty(managerId)){
  71. query.like(TEquipmentApply::getManagerId,managerId);
  72. }
  73. Page<TEquipmentApply> page = new Page<>(current, size, true);
  74. IPage<TEquipmentApply> iPage = equipmentApplyService.page(page, query);
  75. return R.ok(iPage);
  76. }
  77. /**
  78. * 更新申请状态
  79. */
  80. @ApiOperation(value = "更新申请状态")
  81. @GetMapping("/changeStatus")
  82. public ResponseModel<?> changeStatus(Long id, String status) {
  83. if (null != id) {
  84. TEquipmentApply equipmentApply = equipmentApplyService.getById(id);
  85. if (equipmentApply != null) {
  86. if (!StringUtils.isEmpty(status)) {
  87. if (status.equals("agreed")) {
  88. String clientId = equipmentApply.getClientId();
  89. //判断是否设备初始化
  90. Long adminId = equipmentApply.getAdminId();
  91. String adminLevel = equipmentApply.getAdminLevel();
  92. String adminUserName = equipmentApply.getAdminUserName();
  93. Integer type = equipmentApply.getType();
  94. String gtClientId = equipmentApply.getGtClientId();
  95. String equimentType = equipmentApply.getEquimentType();
  96. String old = "";
  97. // ArrayList<Filter> filters = new ArrayList<>();
  98. // filters.add(Filter.eq("clientId", clientId + "xxx"));
  99. // List<Equipment> list = equipmentService.findList(null, filters, null);
  100. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  101. query.like(TEquipment::getClientId,clientId+"xxx");
  102. List<TEquipment> list = equipmentService.list(query);
  103. equipmentApply.setStatusType(3);
  104. if (list.size() > 0) {
  105. //表示设备第二次申请了:主要为了区分脱离以及初始化
  106. old = "1";
  107. //重新修改设备名称
  108. TEquipment equipment = list.get(0);
  109. equipment.setClientId(clientId);
  110. equipment.setGtClientId(gtClientId);
  111. equipment.setAdminId(adminId);
  112. equipment.setAdminLevel(adminLevel);
  113. equipment.setAdminUserName(adminUserName);
  114. equipment.setType(type);
  115. if(equipmentApply.getEquimentType().equals("MG320-1")){
  116. if(!equipmentApply.getEquimentType().equals(equipment.getEquimentType())&&equipment.getEquimentType().equals("MG320")){
  117. // List<Filter> filter = new ArrayList<>();
  118. // filter.add(Filter.eq("equipmentId", equipment.getId()));
  119. // List<Product> productList = productService.findList(null, filter, null);
  120. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  121. queryProduct.eq(TProduct::getEquipmentId,equipment.getId());
  122. List<TProduct> productList = productService.list(queryProduct);
  123. if(productList.size()==18){
  124. //从18种变成30种花型
  125. saveProductMG12(equipment.getId());
  126. }
  127. //从18种变成30种花型
  128. // saveProductMG12(equipment.getId());
  129. }
  130. equipment.setEquimentType("MG320");
  131. }
  132. if(equipmentApply.getEquimentType().equals("MG330")){
  133. equipment.setEquimentType("MG330");
  134. }
  135. equipmentService.updateById(equipment);
  136. String data = com.alibaba.fastjson.JSON.toJSONString(equipment);
  137. try {
  138. esTEquipmentService.updateDataById(equipment);
  139. }catch (Exception e) {
  140. e.printStackTrace();
  141. }
  142. equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("statusType", "agreed" + old).toString());
  143. PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  144. equipmentApplyService.updateById(equipmentApply);
  145. equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
  146. PushUtils.push(equipmentApply.getGtClientId(), "", "", PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
  147. return R.ok();
  148. }
  149. TEquipment equipment = new TEquipment();
  150. equipment.setClientId(clientId);
  151. equipment.setManagerId(equipmentApply.getManagerId());
  152. equipment.setAdminId(adminId);
  153. equipment.setAdminLevel(adminLevel);
  154. equipment.setGtClientId(gtClientId);
  155. equipment.setAdminUserName(adminUserName);
  156. equipment.setIsUsing(true);
  157. equipment.setIsNetWork(true);
  158. equipment.setGuestPwd("123456");
  159. equipment.setAdminPwd("123456");
  160. equipment.setChannel("1");
  161. equipment.setProductTotal(0);
  162. equipment.setType(type);
  163. //设置默认规则
  164. equipment.setTimeRuleId(Long.valueOf(1));
  165. if(equimentType.equals("MG320-1")){
  166. equipment.setEquimentType("MG320");
  167. }else {
  168. equipment.setEquimentType(equimentType);
  169. }
  170. if(equipmentApply.getEquimentType().equals("MG330")){
  171. equipment.setEquimentType("MG330");
  172. }
  173. if(!StringUtils.isEmpty(equimentType)&&equimentType.equals("MG280")){
  174. Long monthBegin = getMonthBegin(new Date());
  175. long time = new Date().getTime();
  176. if(time<monthBegin){
  177. equipment.setEndDate(new Date(monthBegin));
  178. }else{
  179. Date date = nextMonthDate();
  180. equipment.setEndDate(date);
  181. }
  182. equipmentService.sentMessage(equipmentApply.getClientId(), PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
  183. PushUtils.push(equipmentApply.getGtClientId(), "", "", PushUtils.buildJson("endDate",String.valueOf(equipment.getEndDate().getTime()) ).toString());
  184. }
  185. equipmentService.save(equipment);
  186. equipmentService.sentMessage(equipmentApply.getClientId(), PushUtils.buildJson("statusType", "agreed" + old).toString());
  187. PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  188. //获取设备的id
  189. Long equipmentId = equipment.getId();
  190. if(equipmentApply.getEquimentType()!=null&&equipmentApply.getEquimentType().equals("MG280")){
  191. saveProductMG280(equipmentId);
  192. } else if(equipmentApply.getEquimentType()!=null&&equipmentApply.getEquimentType().equals("MG320-1")){
  193. saveProductMG1(equipmentId);
  194. } else{
  195. saveProduct(equipmentId);
  196. }
  197. LambdaQueryWrapper<TEquipment> query1 = Wrappers.lambdaQuery();
  198. query1.eq(TEquipment::getClientId,clientId);
  199. List<TEquipment> list1 = equipmentService.list(query1);
  200. try {
  201. if(list1.size()>0){
  202. TEquipment tEquipment = list1.get(0);
  203. esTEquipmentService.insertData(tEquipment);
  204. }
  205. }catch (Exception e) {
  206. e.printStackTrace();
  207. }
  208. TEquipmentDesc equipmentDesc = new TEquipmentDesc();
  209. equipmentDesc.setEquipmentId(list1.get(0).getId());
  210. equipmentDescService.save(equipmentDesc);
  211. } else if (status.equals("rejected")) {
  212. equipmentApply.setStatusType(2);
  213. equipmentService.sentMessage(equipmentApply.getClientId(),PushUtils.buildJson("statusType", "rejected").toString());
  214. PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "拒绝", PushUtils.buildJson("statusType", "rejected").toString());
  215. }
  216. equipmentApplyService.updateById(equipmentApply);
  217. }
  218. }
  219. }
  220. return R.ok();
  221. }
  222. /**
  223. * 添加产品
  224. *
  225. * @param id
  226. */
  227. private void saveProduct(Long id) {
  228. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  229. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18"};
  230. for (int i = 0; i < str.length; i++) {
  231. TProduct product = new TProduct();
  232. product.setEquipmentId(id);
  233. String[] split = str[i].split("-");
  234. product.setProductName(split[0]);
  235. product.setNo(split[1]);
  236. product.setRmbPrice(BigDecimal.ZERO);
  237. product.setCodePrice(BigDecimal.ZERO);
  238. productService.save(product);
  239. }
  240. }
  241. private void saveProductMG280(Long id) {
  242. String[] str = { "水中芙蓉-A05", "水中芙蓉mini-A31", "烈焰红唇-A06", "烈焰红唇mini-A32", "夏日爱恋-A11", "夏日爱恋mini-A33", "冰美人-A12", "冰美人mini-A34", "彩色精灵-A17", "彩色精灵mini-A35"};
  243. for (int i = 0; i < str.length; i++) {
  244. TProduct product = new TProduct();
  245. product.setEquipmentId(id);
  246. String[] split = str[i].split("-");
  247. product.setProductName(split[0]);
  248. product.setNo(split[1]);
  249. product.setRmbPrice(BigDecimal.ZERO);
  250. product.setCodePrice(BigDecimal.ZERO);
  251. productService.save(product);
  252. }
  253. }
  254. private void saveProductMG1(Long id) {
  255. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09",
  256. "心之守护-A10", "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18",
  257. "精灵蝶梦-A19","夏日倾城-A20","百花齐放-A21","蜂缠蝶恋-A22","豆蔻年华-A23","星空幻想-A24","坠入星空-A25","雪花飞舞-A26","春暖花开-A27","花飞蝶舞-A28",
  258. "花样年华-A29","心花怒放-A30"};
  259. for (int i = 0; i < str.length; i++) {
  260. TProduct product = new TProduct();
  261. product.setEquipmentId(id);
  262. String[] split = str[i].split("-");
  263. product.setProductName(split[0]);
  264. product.setNo(split[1]);
  265. product.setRmbPrice(BigDecimal.ZERO);
  266. product.setCodePrice(BigDecimal.ZERO);
  267. productService.save(product);
  268. }
  269. }
  270. private void saveProductMG12(Long id) {
  271. String[] str = { "精灵蝶梦-A19","夏日倾城-A20","百花齐放-A21","蜂缠蝶恋-A22","豆蔻年华-A23","星空幻想-A24"
  272. ,"坠入星空-A25","雪花飞舞-A26","春暖花开-A27","花飞蝶舞-A28","花样年华-A29","心花怒放-A30"};
  273. for (int i = 0; i < str.length; i++) {
  274. TProduct product = new TProduct();
  275. product.setEquipmentId(id);
  276. String[] split = str[i].split("-");
  277. product.setProductName(split[0]);
  278. product.setNo(split[1]);
  279. product.setRmbPrice(BigDecimal.ZERO);
  280. product.setCodePrice(BigDecimal.ZERO);
  281. productService.save(product);
  282. }
  283. }
  284. private void saveProductMG22(Long id) {
  285. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  286. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19","蜂缠蝶恋-A22","坠入星空-A25","花飞蝶舞-A28"};
  287. for (int i = 0; i < str.length; i++) {
  288. TProduct product = new TProduct();
  289. product.setEquipmentId(id);
  290. String[] split = str[i].split("-");
  291. product.setProductName(split[0]);
  292. product.setNo(split[1]);
  293. product.setRmbPrice(BigDecimal.ZERO);
  294. product.setCodePrice(BigDecimal.ZERO);
  295. productService.save(product);
  296. }
  297. }
  298. private void saveProductMG26(Long id) {
  299. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  300. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19","蜂缠蝶恋-A22","坠入星空-A25","花飞蝶舞-A28",
  301. "夏日倾城-A20", "雪花飞舞-A26", "豆蔻年华-A23", "花样年华-A29"};
  302. for (int i = 0; i < str.length; i++) {
  303. TProduct product = new TProduct();
  304. product.setEquipmentId(id);
  305. String[] split = str[i].split("-");
  306. product.setProductName(split[0]);
  307. product.setNo(split[1]);
  308. product.setRmbPrice(BigDecimal.ZERO);
  309. product.setCodePrice(BigDecimal.ZERO);
  310. productService.save(product);
  311. }
  312. }
  313. /**
  314. * 获取指定日期所在月份开始的时间戳
  315. * @param date 指定日期
  316. * @return
  317. */
  318. public static Long getMonthBegin(Date date) {
  319. Calendar c = Calendar.getInstance();
  320. c.setTime(date);
  321. //设置为10号,当前日期既为本月10号
  322. c.set(Calendar.DAY_OF_MONTH, 10);
  323. //将小时至0
  324. c.set(Calendar.HOUR_OF_DAY, 0);
  325. //将分钟至0
  326. c.set(Calendar.MINUTE, 0);
  327. //将秒至0
  328. c.set(Calendar.SECOND,0);
  329. //将毫秒至0
  330. c.set(Calendar.MILLISECOND, 0);
  331. // 获取本月第一天的时间戳
  332. return c.getTimeInMillis();
  333. }
  334. public static Date nextMonthDate() {
  335. Calendar calendar = Calendar.getInstance();
  336. calendar.set(Calendar.DAY_OF_MONTH,10);
  337. //将小时至0
  338. calendar.set(Calendar.HOUR_OF_DAY, 0);
  339. //将分钟至0
  340. calendar.set(Calendar.MINUTE, 0);
  341. //将秒至0
  342. calendar.set(Calendar.SECOND,0);
  343. //将毫秒至0
  344. calendar.set(Calendar.MILLISECOND, 0);
  345. calendar.add(Calendar.MONTH,1);
  346. return calendar.getTime();
  347. }
  348. }