IndexController.java 111 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471
  1. package com.szwl.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.google.gson.Gson;
  8. import com.qiniu.http.Response;
  9. import com.qiniu.storage.Configuration;
  10. import com.qiniu.storage.Region;
  11. import com.qiniu.storage.UploadManager;
  12. import com.qiniu.storage.model.DefaultPutRet;
  13. import com.qiniu.util.Auth;
  14. import com.szwl.constant.ConfigConsts;
  15. import com.szwl.constant.ResponseCodesEnum;
  16. import com.szwl.model.bean.*;
  17. import com.szwl.model.bo.JsonUtils;
  18. import com.szwl.model.bo.R;
  19. import com.szwl.model.bo.ResponseModel;
  20. import com.szwl.model.dto.ReturnCoinVo;
  21. import com.szwl.model.entity.*;
  22. import com.szwl.model.utils.AdminUtils;
  23. import com.szwl.model.utils.HttpClientSslUtils;
  24. import com.szwl.model.utils.PushUtils;
  25. import com.szwl.service.*;
  26. import com.szwl.service.es.EsTEquipmentService;
  27. import com.szwl.util.IDGenerator;
  28. import com.szwl.util.WechatSendUtil;
  29. import com.szwl.util.WhoIsUtil;
  30. import io.swagger.annotations.Api;
  31. import io.swagger.annotations.ApiOperation;
  32. import org.apache.commons.io.IOUtils;
  33. import org.apache.commons.lang.StringUtils;
  34. import org.springframework.beans.factory.annotation.Autowired;
  35. import org.springframework.web.bind.annotation.*;
  36. import javax.annotation.Resource;
  37. import javax.servlet.ServletInputStream;
  38. import javax.servlet.http.HttpServletRequest;
  39. import javax.servlet.http.HttpServletResponse;
  40. import java.io.IOException;
  41. import java.io.PrintWriter;
  42. import java.math.BigDecimal;
  43. import java.math.RoundingMode;
  44. import java.text.ParseException;
  45. import java.text.SimpleDateFormat;
  46. import java.util.*;
  47. import static com.szwl.util.geoCoderUtil.getLocByLonLatVer;
  48. @Api(value = "/indexController", tags = {"设备信息上传接口"})
  49. @RestController
  50. @RequestMapping("/api/app_equipment/index")
  51. public class IndexController {
  52. @Autowired
  53. TAdminService adminService;
  54. @Autowired
  55. TEquipmentService equipmentService;
  56. @Autowired
  57. TEquipmentApplyService equipmentApplyService;
  58. @Autowired
  59. TProductService productService;
  60. @Autowired
  61. TProportionService proportionService;
  62. @Autowired
  63. TEquipmentDescService equipmentDescService;
  64. @Autowired
  65. EsTEquipmentService esTEquipmentService;
  66. @Autowired
  67. TParametersService parametersService;
  68. @Autowired
  69. TPriceService priceService;
  70. @Autowired
  71. TPromoCodeService promoCodeService;
  72. @Autowired
  73. TDiyFlowerService diyFlowerService;
  74. @Autowired
  75. TNameDictionaryService nameDictionaryService;
  76. @Autowired
  77. TWechatService wechatService;
  78. @Resource
  79. TLocationCheckService locationCheckService;
  80. @Autowired
  81. TGoodsDataService goodsDataService;
  82. @Autowired
  83. TAlarmRecordService alarmRecordService;
  84. @Autowired
  85. ReturnCoinRecordService returnCoinRecordService;
  86. private static final String appid = "07784f5fedb508046c841b391005b7de";
  87. @ApiOperation(value = "心跳")
  88. @RequestMapping(value = "/heart.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  89. @ResponseBody
  90. public String heart(@RequestBody EquipmentVo equipmentVo) {
  91. String clientId = equipmentVo.getClientId();
  92. Date lastUpdateTime = equipmentVo.getLastUpdateTime();
  93. String cabinetHd = equipmentVo.getCabinetHd();
  94. String cabinetTm = equipmentVo.getCabinetTm();
  95. String furnaceSp = equipmentVo.getFurnaceSp();
  96. String furnaceTm = equipmentVo.getFurnaceTm();
  97. String gtClientId = equipmentVo.getGtClientId();
  98. String volume = equipmentVo.getVolume();
  99. Integer eqeStatus = equipmentVo.getEqeStatus();
  100. Boolean isSleep = equipmentVo.getIs_sleep();
  101. String netWorkingMode = equipmentVo.getNetWorkingMode();
  102. String numberOne = equipmentVo.getNumberOne();
  103. String candyGeneratorTm = equipmentVo.getCandyGeneratorTm();
  104. String outsideTm = equipmentVo.getOutsideTm();
  105. String outsideHd = equipmentVo.getOutsideHd();
  106. Integer workingMode = equipmentVo.getWorkingMode();
  107. Integer isAlarm = equipmentVo.getIsAlarm();
  108. //有记录,则进行修改
  109. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  110. query.eq(TEquipment::getClientId, clientId);
  111. TEquipment newEquipment = equipmentService.getOne(query);
  112. if (newEquipment != null) {
  113. newEquipment.setNetWorkingMode(netWorkingMode);
  114. if (StringUtils.isNotEmpty(cabinetTm)) {
  115. newEquipment.setCabinetTm(cabinetTm);
  116. }
  117. if (StringUtils.isNotEmpty(cabinetHd)) {
  118. newEquipment.setCabinetHd(cabinetHd);
  119. }
  120. if (StringUtils.isNotEmpty(furnaceSp)) {
  121. newEquipment.setFurnaceSp(furnaceSp);
  122. }
  123. if (StringUtils.isNotEmpty(furnaceTm)) {
  124. newEquipment.setFurnaceTm(furnaceTm);
  125. }
  126. newEquipment.setLastUpdateTime(lastUpdateTime);
  127. if (eqeStatus != null) {
  128. newEquipment.setEqeStatus(eqeStatus);
  129. }
  130. if (isSleep != null) {
  131. newEquipment.setIsSleep(isSleep);
  132. }
  133. if (!StringUtils.isEmpty(furnaceTm)) {
  134. int fur = Integer.parseInt(furnaceTm);
  135. if (newEquipment.getEqeStatus() == 0 && fur > 150) {
  136. newEquipment.setEqeStatus(1);
  137. }
  138. if (newEquipment.getEqeStatus() == null) {
  139. newEquipment.setEqeStatus(1);
  140. }
  141. }
  142. if (!StringUtils.isEmpty(volume)) {
  143. newEquipment.setVolume(volume);
  144. }
  145. // 是否报警
  146. if (isAlarm != null) {
  147. if (isAlarm == 1) {
  148. newEquipment.setIsAlarm(true);
  149. } else if (isAlarm == 0) {
  150. // 更改报警状态,并消除以往的报警记录
  151. LambdaUpdateWrapper<TAlarmRecord> wrapper = Wrappers.lambdaUpdate();
  152. wrapper.eq(TAlarmRecord::getClientId, clientId);
  153. wrapper.eq(TAlarmRecord::getIsEliminate, 0);
  154. wrapper.le(TAlarmRecord::getCreateDate, new Date());
  155. wrapper.set(TAlarmRecord::getIsEliminate, 1);
  156. alarmRecordService.update(wrapper);
  157. newEquipment.setIsAlarm(false);
  158. }
  159. }
  160. newEquipment.setGtClientId(gtClientId);
  161. newEquipment.setModifyDate(new Date());
  162. equipmentService.updateById(newEquipment);
  163. TEquipmentDesc equipmentDesc = equipmentDescService.getById(newEquipment.getId());
  164. if (StringUtils.isNotEmpty(equipmentVo.getBlueSugar())) {
  165. equipmentDesc.setBlueSugar(equipmentVo.getBlueSugar());
  166. }
  167. if (StringUtils.isNotEmpty(equipmentVo.getRedSugar())) {
  168. equipmentDesc.setRedSugar(equipmentVo.getRedSugar());
  169. }
  170. if (StringUtils.isNotEmpty(equipmentVo.getYellowSugar())) {
  171. equipmentDesc.setYellowSugar(equipmentVo.getYellowSugar());
  172. }
  173. if (StringUtils.isNotEmpty(equipmentVo.getWhiteSugar())) {
  174. equipmentDesc.setWhiteSugar(equipmentVo.getWhiteSugar());
  175. }
  176. if (StringUtils.isNotEmpty(equipmentVo.getWater())) {
  177. equipmentDesc.setWater(equipmentVo.getWater());
  178. }
  179. if (StringUtils.isNotEmpty(equipmentVo.getWasteWater())) {
  180. equipmentDesc.setWasteWater(equipmentVo.getWasteWater());
  181. }
  182. if (StringUtils.isNotEmpty(equipmentVo.getStick())) {
  183. equipmentDesc.setStick(equipmentVo.getStick());
  184. }
  185. // 如果是爆米花机
  186. String machineType = newEquipment.getMachineType();
  187. if (StringUtils.isNotEmpty(machineType) && "1".equals(newEquipment.getMachineType())) {
  188. // 爆米花机搅拌温度
  189. if (StringUtils.isNotEmpty(cabinetTm)) {
  190. equipmentDesc.setStirTm(cabinetTm);
  191. }
  192. // 爆米花机玉米发生器温度
  193. if (StringUtils.isNotEmpty(cabinetHd)) {
  194. equipmentDesc.setCornGeneratorTm(cabinetHd);
  195. }
  196. // 爆米花机杯子剩余量
  197. if (StringUtils.isNotEmpty(furnaceTm)) {
  198. equipmentDesc.setCupQuantity(Long.parseLong(furnaceTm));
  199. }
  200. }
  201. // 如果是雪糕机
  202. if (StringUtils.isNotEmpty(machineType) && "2".equals(newEquipment.getMachineType())) {
  203. if (workingMode != null) {
  204. equipmentDesc.setWorkingMode(workingMode);
  205. }
  206. }
  207. if (StringUtils.isNotEmpty(numberOne)) {
  208. equipmentDesc.setNumberOne(numberOne);
  209. }
  210. if (StringUtils.isNotEmpty(candyGeneratorTm)) {
  211. equipmentDesc.setCandyGeneratorTm(candyGeneratorTm);
  212. }
  213. if (StringUtils.isNotEmpty(outsideHd)) {
  214. equipmentDesc.setOutsideHd(outsideHd);
  215. }
  216. if (StringUtils.isNotEmpty(outsideTm)) {
  217. equipmentDesc.setOutsideTm(outsideTm);
  218. }
  219. equipmentDescService.updateById(equipmentDesc);
  220. return "心跳成功";
  221. }
  222. return "心跳失败";
  223. }
  224. /**
  225. * 设备初始化申请2
  226. */
  227. @ApiOperation(value = "设备初始化申请2")
  228. @RequestMapping(value = "/initNew2.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  229. @ResponseBody
  230. public String initNew2(String clientId, String managerId, String gtClientId, String equipmentType, String ip, String longitude, String latitude) throws IOException {
  231. if (StringUtils.isEmpty(clientId) || StringUtils.isEmpty(longitude) || StringUtils.isEmpty(latitude)) {
  232. return "设备编号、经纬度不能为空";
  233. }
  234. // 根据 clientId 查设备的 location,country
  235. LambdaQueryWrapper<TLocationCheck> lqw = Wrappers.lambdaQuery();
  236. lqw.eq(TLocationCheck::getClientId, clientId);
  237. TLocationCheck locationCheck = locationCheckService.getOne(lqw);
  238. if (Objects.isNull(locationCheck)) {
  239. return "生产部未录入改设备的位置信息";
  240. }
  241. // 判断ip是否属于国内,if 国内,放行
  242. double lon = Double.parseDouble(longitude);
  243. double lat = Double.parseDouble(latitude);
  244. // 经度范围在73至135之间,纬度范围在3至53之间,即国内区域
  245. // 经度:73~124,纬度17~47,经度排除韩国,纬度排除俄罗斯,海南以南
  246. if (!(lon >= 73) || !(lon <= 124) || !(lat >= 17) || !(lat <= 47)) {
  247. // 根据 ip 校验位置信息
  248. // String addr = WhoIsUtil.getLocByIp(ip);
  249. // 根据 longitude, latitude 校验位置信息
  250. String addr;
  251. String ipApiAddr = WhoIsUtil.getLocByIp2(ip);
  252. try {
  253. String lonLatAddr = getLocByLonLatVer(longitude, latitude);
  254. if (lonLatAddr!= null &&!lonLatAddr.isEmpty()) {
  255. addr = lonLatAddr + ipApiAddr;
  256. } else {
  257. addr = ipApiAddr;
  258. }
  259. } catch (Exception e) {
  260. e.printStackTrace();
  261. addr = "Failed to get geolocation";
  262. }
  263. locationCheck.setIp(ip);
  264. locationCheck.setLongitude(longitude);
  265. locationCheck.setLatitude(latitude);
  266. locationCheck.setAddr(addr);
  267. locationCheckService.saveOrUpdate(locationCheck);
  268. String checkResult = locationCheckService.locCheckMsg(locationCheck, clientId, addr);
  269. if (checkResult.equals("fail")) {
  270. return "位置不匹配,请联系营销经理/售后处理";
  271. }
  272. }
  273. return this.initNew(clientId, managerId, gtClientId, equipmentType);
  274. }
  275. /**
  276. * 设备申请
  277. *
  278. * @param clientId 个推
  279. * @param managerId 管理系统id
  280. * @return
  281. */
  282. @ApiOperation(value = "设备申请")
  283. @RequestMapping(value = "/initNew.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  284. @ResponseBody
  285. public String initNew(String clientId, String managerId, String gtClientId, String equimentType) {
  286. String machineType = "0";
  287. String status = "0";
  288. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  289. query.like(TEquipment::getClientId, clientId);
  290. List<TEquipment> list = equipmentService.list(query);
  291. if (!list.isEmpty()) {
  292. TEquipment equipment = list.get(0);
  293. if (equipment.getAdminId() != 31) {
  294. if (!equipment.getClientId().substring(equipment.getClientId().length() - 3, equipment.getClientId().length()).equals("xxx")) {
  295. String managerId1 = equipment.getManagerId();
  296. if (!managerId.equals(managerId1)) {
  297. return "该设备未脱离";
  298. } else {
  299. return "该设备已经初始化";
  300. }
  301. }
  302. } else {
  303. status = "1";
  304. }
  305. }
  306. if (StringUtils.isEmpty(gtClientId)) {
  307. return "设备不能为空";
  308. }
  309. LambdaQueryWrapper<TEquipmentApply> query1 = Wrappers.lambdaQuery();
  310. query1.eq(TEquipmentApply::getClientId, clientId);
  311. query1.eq(TEquipmentApply::getStatusType, "1");
  312. query1.eq(TEquipmentApply::getManagerId, managerId);
  313. String dateStr = "2022-12-28 00:00:00";
  314. //获得SimpleDateFormat类,我们转换为yyyy-MM-dd的时间格式
  315. SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  316. try {
  317. //使用SimpleDateFormat的parse()方法生成Date
  318. Date date = sf.parse(dateStr);
  319. query1.gt(TEquipmentApply::getCreateDate, date);
  320. } catch (ParseException e) {
  321. e.printStackTrace();
  322. }
  323. List<TEquipmentApply> list1 = equipmentApplyService.list(query1);
  324. if (list1.size() > 0) {
  325. return "重复申请";
  326. }
  327. TEquipmentApply equipmentApply = new TEquipmentApply();
  328. equipmentApply.setStatusType(1);
  329. equipmentApply.setClientId(clientId);
  330. equipmentApply.setManagerId(managerId);
  331. equipmentApply.setGtClientId(gtClientId);
  332. Long adminId = AdminUtils.decrypt(false, managerId);
  333. if (adminId == null) {
  334. return "找不到商家";
  335. }
  336. TAdmin admin = adminService.getById(adminId);
  337. if (admin == null) {
  338. return "找不到商家";
  339. }
  340. Integer type = admin.getType();
  341. if (type != null && type == 3) {
  342. return "账号类型错误,请使用商家账号绑定";
  343. }
  344. //所属商家
  345. String username = admin.getUsername();
  346. equipmentApply.setAdminId(adminId);
  347. equipmentApply.setAdminUserName(username);
  348. equipmentApply.setEquimentType(equimentType);
  349. // 如果是爆米花
  350. if (equimentType.equals("P10") || equimentType.equals("P20") || equimentType.equals("P30")) {
  351. machineType = "1";
  352. }
  353. // 如果是冰淇淋
  354. if (equimentType.equals("SI320")) {
  355. machineType = "2";
  356. }
  357. equipmentApply.setMachineType(machineType);
  358. equipmentApply.setCreateDate(new Date());
  359. equipmentApply.setModifyDate(new Date());
  360. equipmentApplyService.save(equipmentApply);
  361. if (status.equals("1") || String.valueOf(adminId).equals("3") || String.valueOf(adminId).equals("31") || String.valueOf(adminId).equals("506") || String.valueOf(adminId).equals("1090")) {
  362. Long id = equipmentApply.getId();
  363. agree(id);
  364. return "设备申请成功";
  365. }
  366. if (admin.getApplyStartTime() != null && admin.getApplyEndTime() != null) {
  367. Date applyStartTime = admin.getApplyStartTime();
  368. Date applyEndTime = admin.getApplyEndTime();
  369. Date now = new Date();
  370. if (now.getTime() > applyStartTime.getTime() && now.getTime() < applyEndTime.getTime()) {
  371. Long id = equipmentApply.getId();
  372. agree(id);
  373. return "设备申请成功";
  374. }
  375. }
  376. return "设备申请中,请耐心等待";
  377. }
  378. // @ApiOperation(value = "同意设备申请")
  379. // @RequestMapping(value = "/agree", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  380. // @ResponseBody
  381. private void agree(Long id) {
  382. String status = "agreed";
  383. if (null != id) {
  384. TEquipmentApply equipmentApply = equipmentApplyService.getById(id);
  385. Integer statusType = equipmentApply.getStatusType();
  386. if (statusType > 1) {
  387. equipmentApply = null;
  388. }
  389. if (equipmentApply != null) {
  390. if (!StringUtils.isEmpty(status)) {
  391. if (status.equals("agreed")) {
  392. String clientId = equipmentApply.getClientId();
  393. //判断是否设备初始化
  394. Long adminId = equipmentApply.getAdminId();
  395. String adminLevel = equipmentApply.getAdminLevel();
  396. String adminUserName = equipmentApply.getAdminUserName();
  397. String gtClientId = equipmentApply.getGtClientId();
  398. String equimentType = equipmentApply.getEquimentType();
  399. String machineType = equipmentApply.getMachineType();
  400. TAdmin admin = adminService.getById(adminId);
  401. String companyType = admin.getCompanyType(); // 公司平台
  402. String old = "";
  403. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  404. query.like(TEquipment::getClientId, clientId + "xxx");
  405. List<TEquipment> list = equipmentService.list(query);
  406. LambdaQueryWrapper<TEquipment> query0 = Wrappers.lambdaQuery();
  407. query0.eq(TEquipment::getClientId, clientId);
  408. List<TEquipment> list2 = equipmentService.list(query0);
  409. equipmentApply.setStatusType(3);
  410. if (list.size() > 0 || list2.size() > 0) {
  411. //表示设备第二次申请了:主要为了区分脱离以及初始化
  412. old = "1";
  413. //重新修改设备名称
  414. TEquipment equipment = new TEquipment();
  415. if (list2.size() > 0) {
  416. equipment = list2.get(0);
  417. } else {
  418. equipment = list.get(0);
  419. }
  420. equipment.setClientId(clientId);
  421. equipment.setGtClientId(gtClientId);
  422. equipment.setAdminId(adminId);
  423. equipment.setAdminLevel(adminLevel);
  424. equipment.setAdminUserName(adminUserName);
  425. equipment.setMachineType(machineType);
  426. equipment.setCompanyType(companyType);
  427. if (equipmentApply.getEquimentType().equals("MG320-1")) {
  428. if (!equipmentApply.getEquimentType().equals(equipment.getEquimentType()) && equipment.getEquimentType().equals("MG320")) {
  429. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  430. queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
  431. List<TProduct> productList = productService.list(queryProduct);
  432. if (productList.size() == 18) {
  433. //从18种变成30种花型
  434. saveProductMG12(equipment.getId());
  435. }
  436. }
  437. equipment.setEquimentType("MG320");
  438. } else {
  439. equipment.setEquimentType(equipmentApply.getEquimentType());
  440. }
  441. // if (equipmentApply.getEquimentType().equals("MG330")) {
  442. // equipment.setEquimentType("MG330");
  443. // }
  444. // if (equipmentApply.getEquimentType().equals("P30")) {
  445. // equipment.setEquimentType(equipmentApply.getEquimentType());
  446. // }
  447. // if (equipmentApply.getEquimentType().equals("SI320")) {
  448. // equipment.setEquimentType(equipmentApply.getEquimentType());
  449. // }
  450. equipmentService.updateById(equipment);
  451. LambdaQueryWrapper<TProportion> queryProportion = Wrappers.lambdaQuery();
  452. queryProportion.eq(TProportion::getEquipmentId, equipment.getId());
  453. List<TProportion> list1 = proportionService.list(queryProportion);
  454. if (list1.size() > 0) {
  455. for (TProportion proportion : list1) {
  456. proportionService.removeById(proportion.getId());
  457. }
  458. }
  459. try {
  460. esTEquipmentService.updateDataById(equipment);
  461. } catch (Exception e) {
  462. e.printStackTrace();
  463. }
  464. if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
  465. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  466. PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  467. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("1")) {
  468. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  469. PushUtils.push(equipmentApply.getGtClientId(), "【爆米花】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  470. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("2")) {
  471. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  472. PushUtils.push(equipmentApply.getGtClientId(), "【冰淇淋】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  473. }
  474. if (equipment.getEquimentType().equals("280")) {
  475. equipmentService.sentMessage(clientId, PushUtils.buildJson("endDate", String.valueOf(equipment.getEndDate().getTime())).toString());
  476. PushUtils.push(equipmentApply.getGtClientId(), "", "", PushUtils.buildJson("endDate", String.valueOf(equipment.getEndDate().getTime())).toString());
  477. }
  478. LambdaQueryWrapper<TEquipmentDesc> lqw = Wrappers.lambdaQuery();
  479. lqw.eq(TEquipmentDesc::getEquipmentId, equipment.getId());
  480. List<TEquipmentDesc> equipmentDescs = equipmentDescService.list(lqw);
  481. if (equipmentDescs.size() == 0) {
  482. TEquipmentDesc equipmentDesc = new TEquipmentDesc();
  483. equipmentDesc.setEquipmentId(equipment.getId());
  484. equipmentDescService.save(equipmentDesc);
  485. }
  486. } else {
  487. TEquipment equipment = new TEquipment();
  488. equipment.setId(IDGenerator.commonID());
  489. equipment.setCreateDate(new Date());
  490. equipment.setModifyDate(new Date());
  491. equipment.setClientId(clientId);
  492. equipment.setManagerId(equipmentApply.getManagerId());
  493. equipment.setAdminId(adminId);
  494. equipment.setAdminLevel(adminLevel);
  495. equipment.setGtClientId(gtClientId);
  496. equipment.setAdminUserName(adminUserName);
  497. equipment.setIsUsing(true);
  498. equipment.setIsNetWork(true);
  499. equipment.setGuestPwd("123456");
  500. equipment.setAdminPwd("123456");
  501. equipment.setChannel("1");
  502. equipment.setProductTotal(0);
  503. equipment.setCompanyType(companyType);
  504. equipment.setMachineType(machineType);
  505. //设置默认规则
  506. equipment.setTimeRuleId(Long.valueOf(1));
  507. if (equimentType.equals("MG320-1")) {
  508. equipment.setEquimentType("MG320");
  509. } else {
  510. equipment.setEquimentType(equimentType);
  511. }
  512. if (!StringUtils.isEmpty(equimentType) && equimentType.equals("MG280")) {
  513. Long monthBegin = getMonthBegin(new Date());
  514. long time = System.currentTimeMillis();
  515. if (time < monthBegin) {
  516. equipment.setEndDate(new Date(monthBegin));
  517. } else {
  518. Date date = nextMonthDate();
  519. equipment.setEndDate(date);
  520. }
  521. equipmentService.sentMessage(clientId, PushUtils.buildJson("endDate", String.valueOf(equipment.getEndDate().getTime())).toString());
  522. PushUtils.push(equipmentApply.getGtClientId(), "", "", PushUtils.buildJson("endDate", String.valueOf(equipment.getEndDate().getTime())).toString());
  523. }
  524. equipmentService.save(equipment);
  525. if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
  526. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  527. PushUtils.push(equipmentApply.getGtClientId(), "【棉花糖】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  528. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("1")) {
  529. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  530. PushUtils.push(equipmentApply.getGtClientId(), "【爆米花】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  531. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("2")) {
  532. equipmentService.sentMessage(clientId, PushUtils.buildJson("statusType", "agreed" + old).toString());
  533. PushUtils.push(equipmentApply.getGtClientId(), "【冰淇淋】设备初始化申请", "同意", PushUtils.buildJson("statusType", "agreed" + old).toString());
  534. }
  535. LambdaQueryWrapper<TEquipment> query3 = Wrappers.lambdaQuery();
  536. query3.eq(TEquipment::getClientId, clientId);
  537. TEquipment tEquipment = equipmentService.getOne(query3);
  538. try {
  539. if (tEquipment != null) {
  540. esTEquipmentService.insertData(tEquipment);
  541. }
  542. } catch (Exception e) {
  543. e.printStackTrace();
  544. }
  545. TEquipmentDesc equipmentDesc = new TEquipmentDesc();
  546. equipmentDesc.setEquipmentId(tEquipment.getId());
  547. equipmentDescService.save(equipmentDesc);
  548. }
  549. //获取设备的id
  550. LambdaQueryWrapper<TEquipment> query1 = Wrappers.lambdaQuery();
  551. query1.eq(TEquipment::getClientId, clientId);
  552. TEquipment equipment = equipmentService.getOne(query1);
  553. Long equipmentId = equipment.getId();
  554. // 如果存在旧花型,就删除重新创建
  555. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  556. queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
  557. List<TProduct> productList = productService.list(queryProduct);
  558. if (productList.isEmpty()) {
  559. if (StringUtils.isEmpty(machineType) || machineType.equals("0")) {
  560. if (equipmentApply.getEquimentType() != null && equipmentApply.getEquimentType().equals("MG280")) {
  561. saveProductMG280(equipmentId);
  562. } else if (equipmentApply.getEquimentType() != null && equipmentApply.getEquimentType().equals("MG320-1")) {
  563. saveProductMG1(equipmentId);
  564. } else {
  565. saveProduct(equipmentId);
  566. }
  567. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("1")) {
  568. switch (equimentType) {
  569. case "P30":
  570. saveGoodsData(equipmentId, machineType, 6, equimentType);
  571. break;
  572. case "P20":
  573. saveGoodsData(equipmentId, machineType, 12, equimentType);
  574. break;
  575. case "P10":
  576. saveGoodsData(equipmentId, machineType, 2, equimentType);
  577. break;
  578. default:
  579. break;
  580. }
  581. } else if (StringUtils.isNotEmpty(machineType) && machineType.equals("2")) {
  582. if (equimentType.equals("SI320")) {
  583. saveGoodsData(equipmentId, machineType, 6, equimentType);
  584. }
  585. }
  586. }
  587. if (String.valueOf(adminId).equals("3") || String.valueOf(adminId).equals("31") || String.valueOf(adminId).equals("506") || String.valueOf(adminId).equals("1090")) {
  588. //自动设置分销
  589. setProportion(adminId, equipmentId, clientId);
  590. }
  591. } else if (status.equals("rejected")) {
  592. equipmentApply.setStatusType(2);
  593. equipmentService.sentMessage(equipmentApply.getClientId(), PushUtils.buildJson("statusType", "rejected").toString());
  594. }
  595. equipmentApplyService.updateById(equipmentApply);
  596. }
  597. }
  598. }
  599. }
  600. private void setProportion(Long adminId, Long equipmentId, String clientId) {
  601. //先找到原账户的分销
  602. LambdaQueryWrapper<TProportion> query3 = Wrappers.lambdaQuery();
  603. query3.eq(TProportion::getAdminId, adminId);
  604. List<TProportion> list3 = proportionService.list(query3);
  605. if (list3.size() > 0) {
  606. TProportion adminProportion = list3.get(0);
  607. if (StringUtils.isEmpty(adminProportion.getClientId())) {
  608. TProportion equipmentProportion = new TProportion();
  609. equipmentProportion.setCreateDate(new Date());
  610. equipmentProportion.setModifyDate(new Date());
  611. equipmentProportion.setAdminId(adminId);
  612. equipmentProportion.setClientId(clientId);
  613. equipmentProportion.setEquipmentId(equipmentId);
  614. equipmentProportion.setAdminProportion(adminProportion.getAdminProportion());
  615. Integer type = adminProportion.getType();
  616. if (type != null) {
  617. switch (type) {
  618. case 1:
  619. equipmentProportion.setProportion(adminProportion.getAgencyProportion());
  620. equipmentProportion.setAgencyProportion(new BigDecimal("0.00"));
  621. equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
  622. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  623. equipmentProportion.setType(0);
  624. break;
  625. case 2:
  626. equipmentProportion.setProportion(adminProportion.getMerchantProportion());
  627. equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
  628. equipmentProportion.setAgencyId(adminProportion.getAgencyId());
  629. TAdmin byId = adminService.getById(adminProportion.getAgencyId());
  630. equipmentProportion.setAgencyName(byId.getUsername());
  631. equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
  632. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  633. equipmentProportion.setType(1);
  634. break;
  635. case 3:
  636. equipmentProportion.setProportion(adminProportion.getPersonageProportion());
  637. equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
  638. equipmentProportion.setAgencyId(adminProportion.getAgencyId());
  639. TAdmin byId1 = adminService.getById(adminProportion.getAgencyId());
  640. equipmentProportion.setAgencyName(byId1.getUsername());
  641. equipmentProportion.setMerchantProportion(adminProportion.getMerchantProportion());
  642. equipmentProportion.setMerchantId(adminProportion.getMerchantId());
  643. TAdmin byId2 = adminService.getById(adminProportion.getMerchantId());
  644. equipmentProportion.setMerchantName(byId2.getUsername());
  645. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  646. equipmentProportion.setType(2);
  647. break;
  648. }
  649. boolean save = proportionService.save(equipmentProportion);
  650. }
  651. }
  652. }
  653. }
  654. /**
  655. * 添加商品
  656. *
  657. * @param id
  658. * @param machineType
  659. * @param number
  660. */
  661. private void saveGoodsData(Long id, String machineType, Integer number, String equipmentType) {
  662. LambdaQueryWrapper<TGoodsData> wrapper = Wrappers.lambdaQuery();
  663. wrapper.eq(TGoodsData::getNumber, number);
  664. wrapper.eq(TGoodsData::getMachineType, machineType);
  665. if (!machineType.equals("0")) {
  666. wrapper.eq(TGoodsData::getEquipmentType, equipmentType);
  667. }
  668. TGoodsData goodsData = goodsDataService.getOne(wrapper);
  669. String goods = goodsData.getGoods();
  670. String[] str = goods.split(",");
  671. for (int i = 0; i < str.length; i++) {
  672. TProduct product = new TProduct();
  673. product.setCreateDate(new Date());
  674. product.setModifyDate(new Date());
  675. product.setEquipmentId(id);
  676. String[] split = str[i].split("-");
  677. product.setProductName(split[0]);
  678. product.setNo(split[1]);
  679. product.setRmbPrice(new BigDecimal(0.01));
  680. product.setCodePrice(new BigDecimal(0.01));
  681. productService.save(product);
  682. }
  683. }
  684. /**
  685. * 添加棉花糖产品
  686. *
  687. * @param id
  688. */
  689. private void saveProduct(Long id) {
  690. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  691. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18"};
  692. for (int i = 0; i < str.length; i++) {
  693. TProduct product = new TProduct();
  694. product.setCreateDate(new Date());
  695. product.setModifyDate(new Date());
  696. product.setEquipmentId(id);
  697. String[] split = str[i].split("-");
  698. product.setProductName(split[0]);
  699. product.setNo(split[1]);
  700. product.setRmbPrice(new BigDecimal(0.01));
  701. product.setCodePrice(new BigDecimal(0.01));
  702. productService.save(product);
  703. }
  704. }
  705. private void saveProductMG280(Long id) {
  706. String[] str = {"水中芙蓉-A05", "水中芙蓉mini-A31", "烈焰红唇-A06", "烈焰红唇mini-A32", "夏日爱恋-A11", "夏日爱恋mini-A33", "冰美人-A12", "冰美人mini-A34", "彩色精灵-A17", "彩色精灵mini-A35"};
  707. for (int i = 0; i < str.length; i++) {
  708. TProduct product = new TProduct();
  709. product.setCreateDate(new Date());
  710. product.setModifyDate(new Date());
  711. product.setEquipmentId(id);
  712. String[] split = str[i].split("-");
  713. product.setProductName(split[0]);
  714. product.setNo(split[1]);
  715. product.setRmbPrice(new BigDecimal(0.01));
  716. product.setCodePrice(new BigDecimal(0.01));
  717. productService.save(product);
  718. }
  719. }
  720. private void saveProductMG1(Long id) {
  721. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09",
  722. "心之守护-A10", "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18",
  723. "精灵蝶梦-A19", "夏日倾城-A20", "百花齐放-A21", "蜂缠蝶恋-A22", "豆蔻年华-A23", "星空幻想-A24", "坠入星空-A25", "雪花飞舞-A26", "春暖花开-A27", "花飞蝶舞-A28",
  724. "花样年华-A29", "心花怒放-A30"};
  725. for (int i = 0; i < str.length; i++) {
  726. TProduct product = new TProduct();
  727. product.setCreateDate(new Date());
  728. product.setModifyDate(new Date());
  729. product.setEquipmentId(id);
  730. String[] split = str[i].split("-");
  731. product.setProductName(split[0]);
  732. product.setNo(split[1]);
  733. product.setRmbPrice(new BigDecimal(0.01));
  734. product.setCodePrice(new BigDecimal(0.01));
  735. productService.save(product);
  736. }
  737. }
  738. private void saveProductMG12(Long id) {
  739. String[] str = {"精灵蝶梦-A19", "夏日倾城-A20", "百花齐放-A21", "蜂缠蝶恋-A22", "豆蔻年华-A23", "星空幻想-A24"
  740. , "坠入星空-A25", "雪花飞舞-A26", "春暖花开-A27", "花飞蝶舞-A28", "花样年华-A29", "心花怒放-A30"};
  741. for (int i = 0; i < str.length; i++) {
  742. TProduct product = new TProduct();
  743. product.setEquipmentId(id);
  744. product.setCreateDate(new Date());
  745. product.setModifyDate(new Date());
  746. String[] split = str[i].split("-");
  747. product.setProductName(split[0]);
  748. product.setNo(split[1]);
  749. product.setRmbPrice(new BigDecimal(0.01));
  750. product.setCodePrice(new BigDecimal(0.01));
  751. productService.save(product);
  752. }
  753. }
  754. private void saveProductMG22(Long id) {
  755. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  756. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19", "蜂缠蝶恋-A22", "坠入星空-A25", "花飞蝶舞-A28"};
  757. for (int i = 0; i < str.length; i++) {
  758. TProduct product = new TProduct();
  759. product.setCreateDate(new Date());
  760. product.setModifyDate(new Date());
  761. product.setEquipmentId(id);
  762. String[] split = str[i].split("-");
  763. product.setProductName(split[0]);
  764. product.setNo(split[1]);
  765. product.setRmbPrice(new BigDecimal(0.01));
  766. product.setCodePrice(new BigDecimal(0.01));
  767. productService.save(product);
  768. }
  769. }
  770. private void saveProductMG26(Long id) {
  771. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09", "心之守护-A10",
  772. "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18", "精灵蝶梦-A19", "蜂缠蝶恋-A22", "坠入星空-A25", "花飞蝶舞-A28",
  773. "夏日倾城-A20", "雪花飞舞-A26", "豆蔻年华-A23", "花样年华-A29"};
  774. for (int i = 0; i < str.length; i++) {
  775. TProduct product = new TProduct();
  776. product.setCreateDate(new Date());
  777. product.setModifyDate(new Date());
  778. product.setEquipmentId(id);
  779. String[] split = str[i].split("-");
  780. product.setProductName(split[0]);
  781. product.setNo(split[1]);
  782. product.setRmbPrice(new BigDecimal(0.01));
  783. product.setCodePrice(new BigDecimal(0.01));
  784. productService.save(product);
  785. }
  786. }
  787. private void saveProductMG42(Long id) {
  788. String[] str = {"玫瑰精灵-A01", "童心未泯-A02", "五彩缤纷-A03", "天雪恋舞-A04", "水中芙蓉-A05", "烈焰红唇-A06", "美梦成真-A07", "一见钟情-A08", "幽兰爱恋-A09",
  789. "心之守护-A10", "夏日爱恋-A11", "冰美人-A12", "国色天香-A13", "赤子之心-A14", "海洋之心-A15", "水晶之恋-A16", "彩色精灵-A17", "小棉袄-A18",
  790. "精灵蝶梦-A19", "夏日倾城-A20", "百花齐放-A21", "蜂缠蝶恋-A22", "豆蔻年华-A23", "星空幻想-A24", "坠入星空-A25", "雪花飞舞-A26", "春暖花开-A27", "花飞蝶舞-A28",
  791. "花样年华-A29", "心花怒放-A30", "花好月圆-A37", "出水芙蓉-A38", "微光染晕-A39", "夏日莓莓-A40", "芳楚纷飞-A41", "晨夕光晕-A42", "坠入爱河-A43", "天马行空-A44",
  792. "灼灼其华-A45", "一帘幽梦-A46", "七月初夏-A47", "四月微风-A48"};
  793. for (int i = 0; i < str.length; i++) {
  794. TProduct product = new TProduct();
  795. product.setCreateDate(new Date());
  796. product.setModifyDate(new Date());
  797. product.setEquipmentId(id);
  798. String[] split = str[i].split("-");
  799. product.setProductName(split[0]);
  800. product.setNo(split[1]);
  801. product.setRmbPrice(new BigDecimal(0.01));
  802. product.setCodePrice(new BigDecimal(0.01));
  803. productService.save(product);
  804. }
  805. }
  806. /**
  807. * 添加爆米花产品
  808. *
  809. * @param id
  810. */
  811. private void saveProductP30(Long id) {
  812. String[] str = {"活力爆米花(正常糖)-B01", "活力爆米花(无糖)-B02", "活力爆米花(巧克力)-B03", "活力爆米花(焦糖)-B04", "活力爆米花(水蜜桃)-B05", "活力爆米花(蓝莓)-B06"};
  813. for (int i = 0; i < str.length; i++) {
  814. TProduct product = new TProduct();
  815. product.setCreateDate(new Date());
  816. product.setModifyDate(new Date());
  817. product.setEquipmentId(id);
  818. String[] split = str[i].split("-");
  819. product.setProductName(split[0]);
  820. product.setNo(split[1]);
  821. product.setRmbPrice(new BigDecimal(0.01));
  822. product.setCodePrice(new BigDecimal(0.01));
  823. productService.save(product);
  824. }
  825. }
  826. /**
  827. * 添加冰淇淋产品
  828. *
  829. * @param id
  830. */
  831. private void saveProductSI320(Long id) {
  832. LambdaQueryWrapper<TGoodsData> wrapper = Wrappers.lambdaQuery();
  833. wrapper.eq(TGoodsData::getNumber, 6);
  834. wrapper.eq(TGoodsData::getMachineType, "2");
  835. TGoodsData goodsData = goodsDataService.getOne(wrapper);
  836. String goods = goodsData.getGoods();
  837. String[] str = goods.split(",");
  838. for (int i = 0; i < str.length; i++) {
  839. TProduct product = new TProduct();
  840. product.setCreateDate(new Date());
  841. product.setModifyDate(new Date());
  842. product.setEquipmentId(id);
  843. String[] split = str[i].split("-");
  844. product.setProductName(split[0]);
  845. product.setNo(split[1]);
  846. product.setRmbPrice(new BigDecimal(0.01));
  847. product.setCodePrice(new BigDecimal(0.01));
  848. productService.save(product);
  849. }
  850. }
  851. /**
  852. * 获取指定日期所在月份开始的时间戳
  853. *
  854. * @param date 指定日期
  855. * @return
  856. */
  857. public static Long getMonthBegin(Date date) {
  858. Calendar c = Calendar.getInstance();
  859. c.setTime(date);
  860. //设置为10号,当前日期既为本月10号
  861. c.set(Calendar.DAY_OF_MONTH, 10);
  862. //将小时至0
  863. c.set(Calendar.HOUR_OF_DAY, 0);
  864. //将分钟至0
  865. c.set(Calendar.MINUTE, 0);
  866. //将秒至0
  867. c.set(Calendar.SECOND, 0);
  868. //将毫秒至0
  869. c.set(Calendar.MILLISECOND, 0);
  870. // 获取本月第一天的时间戳
  871. return c.getTimeInMillis();
  872. }
  873. public static Date nextMonthDate() {
  874. Calendar calendar = Calendar.getInstance();
  875. calendar.set(Calendar.DAY_OF_MONTH, 10);
  876. //将小时至0
  877. calendar.set(Calendar.HOUR_OF_DAY, 0);
  878. //将分钟至0
  879. calendar.set(Calendar.MINUTE, 0);
  880. //将秒至0
  881. calendar.set(Calendar.SECOND, 0);
  882. //将毫秒至0
  883. calendar.set(Calendar.MILLISECOND, 0);
  884. calendar.add(Calendar.MONTH, 1);
  885. return calendar.getTime();
  886. }
  887. /**
  888. * 改花型
  889. *
  890. * @param
  891. * @return
  892. */
  893. @RequestMapping(value = "/updateFlowers.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  894. @ResponseBody
  895. public String updateFlowers(String clientId, String number) {
  896. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  897. query.eq(TEquipment::getClientId, clientId);
  898. TEquipment equipment = equipmentService.getOne(query);
  899. if (equipment != null) {
  900. Long id = equipment.getId();
  901. //修改花型记录数目
  902. equipment.setFlowers(number);
  903. equipmentService.updateById(equipment);
  904. //修改设备描述表中的花型记录数目
  905. TEquipmentDesc equipmentDesc = equipmentDescService.getById(id);
  906. if (equipmentDesc != null) {
  907. equipmentDesc.setFlowers(number);
  908. equipmentDescService.updateById(equipmentDesc);
  909. } else {
  910. TEquipmentDesc equipmentDesc1 = new TEquipmentDesc();
  911. equipmentDesc1.setEquipmentId(id);
  912. equipmentDesc1.setFlowers(number);
  913. equipmentDescService.save(equipmentDesc1);
  914. }
  915. //删除旧花型
  916. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  917. queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
  918. List<TProduct> productList = productService.list(queryProduct);
  919. for (TProduct product : productList) {
  920. productService.removeById(product.getId());
  921. }
  922. // 机器类型
  923. String machineType = equipment.getMachineType();
  924. if (StringUtils.isEmpty(equipment.getMachineType())) {
  925. machineType = "0";
  926. }
  927. String equipmentType = equipment.getEquimentType();
  928. //创建花型
  929. saveGoodsData(id, machineType, Integer.parseInt(number), equipmentType);
  930. return "success";
  931. } else {
  932. return "error";
  933. }
  934. }
  935. /**
  936. * 设备类型 开机时上传
  937. *
  938. * @param clientId 个推
  939. * @return
  940. */
  941. @RequestMapping(value = "/equimentType.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  942. @ResponseBody
  943. public String equimentType(String clientId, String equimentType) {
  944. if (!StringUtils.isEmpty(equimentType)) {
  945. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  946. query.eq(TEquipment::getClientId, clientId);
  947. TEquipment equipment = equipmentService.getOne(query);
  948. equipment.setEquimentType(equimentType);
  949. equipmentService.updateById(equipment);
  950. }
  951. return "success";
  952. }
  953. /**
  954. * 设备地址 开机时上传
  955. *
  956. * @param clientId 个推
  957. * @return
  958. */
  959. @RequestMapping(value = "/equimentArea.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  960. @ResponseBody
  961. public String equimentArea(String clientId, String longitude, String latitude, String fullName) {
  962. if (!StringUtils.isEmpty(longitude) && !StringUtils.isEmpty(latitude) && !StringUtils.isEmpty(fullName)) {
  963. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  964. query.eq(TEquipment::getClientId, clientId);
  965. TEquipment equipment = equipmentService.getOne(query);
  966. equipment.setLatitude(Double.valueOf(latitude));
  967. equipment.setLongitude(Double.valueOf(longitude));
  968. equipment.setFullName(fullName + "-");
  969. equipmentService.updateById(equipment);
  970. return "success";
  971. }
  972. return "error";
  973. }
  974. /**
  975. * 商品调价
  976. */
  977. @RequestMapping(value = "/updateProduct.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  978. @ResponseBody
  979. public String updateProduct(@RequestBody List<ProductVo> productVos) {
  980. for (ProductVo product : productVos) {
  981. String clientId = product.getClientId();
  982. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  983. query.eq(TEquipment::getClientId, clientId);
  984. TEquipment equipment = equipmentService.getOne(query);
  985. Long id = equipment.getId();
  986. if (StringUtils.isNotEmpty(product.getShowType())) {
  987. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  988. queryProduct.eq(TProduct::getEquipmentId, id);
  989. queryProduct.eq(TProduct::getProductName, product.getProductName());
  990. TProduct tProduct = productService.getOnly(queryProduct);
  991. if (tProduct == null) {
  992. LambdaQueryWrapper<TNameDictionary> wrapper = Wrappers.lambdaQuery();
  993. wrapper.eq(TNameDictionary::getLanguage, "zh");
  994. wrapper.eq(TNameDictionary::getName, product.getProductName());
  995. TNameDictionary nameDictionary = nameDictionaryService.getOne(wrapper);
  996. LambdaQueryWrapper<TProduct> queryWrapper = Wrappers.lambdaQuery();
  997. queryWrapper.eq(TProduct::getEquipmentId, id);
  998. queryWrapper.eq(TProduct::getNo, nameDictionary.getNo());
  999. tProduct = productService.getOnly(queryWrapper);
  1000. }
  1001. tProduct.setRmbPrice(BigDecimal.valueOf(product.getRmbPrice()));
  1002. tProduct.setCodePrice(BigDecimal.valueOf(product.getCodePrice()));
  1003. tProduct.setShowType(product.getShowType());
  1004. tProduct.setSellStatus(product.getSellStatus());
  1005. productService.updateById(tProduct);
  1006. } else {
  1007. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  1008. queryProduct.eq(TProduct::getEquipmentId, id);
  1009. queryProduct.eq(TProduct::getProductName, product.getProductName());
  1010. TProduct tProduct = productService.getOnly(queryProduct);
  1011. if (tProduct == null) {
  1012. LambdaQueryWrapper<TNameDictionary> wrapper = Wrappers.lambdaQuery();
  1013. wrapper.eq(TNameDictionary::getLanguage, "zh");
  1014. wrapper.eq(TNameDictionary::getName, product.getProductName());
  1015. TNameDictionary nameDictionary = nameDictionaryService.getOne(wrapper);
  1016. LambdaQueryWrapper<TProduct> queryWrapper = Wrappers.lambdaQuery();
  1017. queryWrapper.eq(TProduct::getEquipmentId, id);
  1018. queryWrapper.eq(TProduct::getNo, nameDictionary.getNo());
  1019. tProduct = productService.getOnly(queryWrapper);
  1020. }
  1021. tProduct.setRmbPrice(BigDecimal.valueOf(product.getRmbPrice()));
  1022. tProduct.setCodePrice(BigDecimal.valueOf(product.getCodePrice()));
  1023. tProduct.setSellStatus(product.getSellStatus());
  1024. productService.updateById(tProduct);
  1025. }
  1026. }
  1027. return "调价成功";
  1028. }
  1029. public Double tran(Double d) {
  1030. return new BigDecimal(d).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
  1031. }
  1032. public Double tran2(Double d) {
  1033. return new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
  1034. }
  1035. /**
  1036. * 密码修改
  1037. *
  1038. * @param clientId 设备个推Id
  1039. * @param pwdType 密码类型 1d代表修adminPwd,0代表guestPwd
  1040. * @return
  1041. * @Param pwd 密码内容
  1042. */
  1043. @RequestMapping(value = "/updatePwd.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1044. @ResponseBody
  1045. public String updatePwd(String clientId, String pwdType, String pwd) {
  1046. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1047. query.eq(TEquipment::getClientId, clientId);
  1048. TEquipment equipment = equipmentService.getOne(query);
  1049. if (equipment != null) {
  1050. if (!StringUtils.isEmpty(pwdType)) {
  1051. switch (pwdType) {
  1052. case "1":
  1053. equipment.setAdminPwd(pwd);
  1054. break;
  1055. case "0":
  1056. equipment.setGuestPwd(pwd);
  1057. break;
  1058. }
  1059. equipmentService.updateById(equipment);
  1060. return "更新密码成功";
  1061. }
  1062. }
  1063. return "更新密码失败";
  1064. }
  1065. /**
  1066. * 设备获取密码
  1067. */
  1068. @GetMapping(value = "/getPwd", produces = "text/html;charset=utf-8")
  1069. @ResponseBody
  1070. public String getPwd(String clientId) {
  1071. if (StringUtils.isEmpty(clientId)) {
  1072. return null;
  1073. }
  1074. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1075. query.eq(TEquipment::getClientId, clientId);
  1076. TEquipment equipment = equipmentService.getOne(query);
  1077. Map<String, String> map = new HashMap<>();
  1078. map.put("adminPwd", equipment.getAdminPwd());
  1079. map.put("guestPwd", equipment.getGuestPwd());
  1080. JSONObject jsonObject = new JSONObject();
  1081. jsonObject.put("code", 0);
  1082. jsonObject.put("data", JSONObject.toJSON(map).toString());
  1083. jsonObject.put("errmsg", "");
  1084. return jsonObject.toJSONString();
  1085. }
  1086. /**
  1087. * 修改支付方式
  1088. *
  1089. * @param clientId
  1090. * @param payType: 无需支付
  1091. * 线上支付
  1092. * 线下支付
  1093. * 线上/线下
  1094. * @return
  1095. */
  1096. @RequestMapping(value = "/updatePayType.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1097. @ResponseBody
  1098. public String updatePayType(String clientId, String payType) {
  1099. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1100. query.eq(TEquipment::getClientId, clientId);
  1101. TEquipment equipment = equipmentService.getOne(query);
  1102. if (equipment == null) {
  1103. return "修改支付方式失败";
  1104. }
  1105. equipment.setPayType(0);
  1106. equipmentService.updateById(equipment);
  1107. return "修改成功";
  1108. }
  1109. /**
  1110. * 日志上传
  1111. */
  1112. @RequestMapping(value = "/sendLog.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1113. @ResponseBody
  1114. public String uploadFile(HttpServletRequest request, HttpServletResponse response, String fileName) throws Exception {
  1115. //构造一个带指定 Region 对象的配置类
  1116. Configuration cfg = new Configuration(Region.region2());
  1117. cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
  1118. UploadManager uploadManager = new UploadManager(cfg);
  1119. //默认不指定key的情况下,以文件内容的hash值作为文件名
  1120. String key = "log/" + fileName + ".txt";
  1121. try {
  1122. ServletInputStream input = request.getInputStream();
  1123. Auth auth = Auth.create(ConfigConsts.QINIU_CLOUD_ACCESS_KEY, ConfigConsts.QINIU_CLOUD_SECRET_KEY);
  1124. String upToken = auth.uploadToken(ConfigConsts.QINIU_CLOUD_BUCKET, key);
  1125. Response responseMap = uploadManager.put(input, key, upToken, null, null);
  1126. //解析上传成功的结果
  1127. DefaultPutRet putRet = new Gson().fromJson(responseMap.bodyString(), DefaultPutRet.class);
  1128. System.out.println(putRet.key);
  1129. System.out.println(putRet.hash);
  1130. } catch (Exception ex) {
  1131. //响应信息 json字符串格式
  1132. Map<String, Object> responseMap = new HashMap<String, Object>();
  1133. responseMap.put("flag", false);
  1134. responseMap.put("errorMsg", ex.getMessage());
  1135. String jsonResponse = JSONObject.toJSONString(responseMap);
  1136. sendResponse(jsonResponse, response);
  1137. }
  1138. return "success";
  1139. }
  1140. /**
  1141. * 返回响应
  1142. *
  1143. * @throws Exception
  1144. */
  1145. private void sendResponse(String responseString, HttpServletResponse response) throws Exception {
  1146. response.setContentType("application/json;charset=UTF-8");
  1147. PrintWriter pw = null;
  1148. try {
  1149. pw = response.getWriter();
  1150. pw.write(responseString);
  1151. pw.flush();
  1152. } finally {
  1153. IOUtils.closeQuietly(pw);
  1154. }
  1155. }
  1156. /**
  1157. * 脱离系统
  1158. *
  1159. * @param clientId
  1160. * @return
  1161. */
  1162. @RequestMapping(value = "/separate.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1163. @ResponseBody
  1164. public String separate(String clientId) {
  1165. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1166. query.eq(TEquipment::getClientId, clientId);
  1167. TEquipment equipment = equipmentService.getOne(query);
  1168. if (equipment == null) {
  1169. return "该设备不存在";
  1170. }
  1171. equipmentService.sentMessage(clientId, PushUtils.buildJson("tuoji", "0").toString());
  1172. if ("xxx".equals(equipment.getClientId().substring(equipment.getClientId().length() - 3, equipment.getClientId().length()))) {
  1173. return "脱离成功";
  1174. }
  1175. equipment.setClientId(equipment.getClientId() + "xxx");
  1176. equipmentService.updateById(equipment);
  1177. return "脱离成功";
  1178. }
  1179. /**
  1180. * 脱离系统
  1181. *
  1182. * @param clientId
  1183. * @return
  1184. */
  1185. @RequestMapping(value = "/updateClientId", method = RequestMethod.POST)
  1186. @ResponseBody
  1187. public String updateClientId(String clientId) {
  1188. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1189. query.eq(TEquipment::getClientId, clientId);
  1190. TEquipment equipment = equipmentService.getOne(query);
  1191. if (equipment == null) {
  1192. return "该设备不存在";
  1193. }
  1194. if ("xxx".equals(equipment.getClientId().substring(equipment.getClientId().length() - 3, equipment.getClientId().length()))) {
  1195. return "脱离成功";
  1196. }
  1197. equipment.setClientId(equipment.getClientId() + "xxx");
  1198. equipment.setManagerId(null);
  1199. equipmentService.updateById(equipment);
  1200. return "脱离成功";
  1201. }
  1202. /**
  1203. * 修改设备联系人名称以及电话
  1204. */
  1205. @RequestMapping(value = "/updateContractPN.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1206. @ResponseBody
  1207. public String updateContractPN(String clientId, String contactName, String contactPhone) {
  1208. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1209. query.eq(TEquipment::getClientId, clientId);
  1210. TEquipment equipment = equipmentService.getOne(query);
  1211. if (equipment == null) {
  1212. return "该设备不存在";
  1213. }
  1214. equipment.setContactName(contactName);
  1215. equipment.setContactPhone(contactPhone);
  1216. equipmentService.updateById(equipment);
  1217. return "修改成功";
  1218. }
  1219. /**
  1220. * 设备上传公司电话
  1221. */
  1222. @RequestMapping(value = "/sentCompanyPhone.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1223. @ResponseBody
  1224. public String sentCompanyPhone(String clientId, String companyPhone) {
  1225. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1226. query.eq(TEquipment::getClientId, clientId);
  1227. TEquipment equipment = equipmentService.getOne(query);
  1228. if (equipment == null) {
  1229. return "该设备不存在";
  1230. }
  1231. equipment.setCompanyPhone(companyPhone);
  1232. equipmentService.updateById(equipment);
  1233. return "修改成功";
  1234. }
  1235. /**
  1236. * 获取二维码图片
  1237. */
  1238. @RequestMapping(value = "/getQrCodeImgUrl.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1239. @ResponseBody
  1240. public String getQrCodeImgUrl(String clientId) {
  1241. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1242. query.eq(TEquipment::getClientId, clientId);
  1243. TEquipment equipment = equipmentService.getOne(query);
  1244. if (equipment == null) {
  1245. return "404";
  1246. }
  1247. return "400";
  1248. }
  1249. /**
  1250. * 上传4G卡号
  1251. */
  1252. @RequestMapping(value = "/sentSimNo.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1253. @ResponseBody
  1254. public String sentSimNo(String clientId, String simNo) {
  1255. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1256. query.eq(TEquipment::getClientId, clientId);
  1257. TEquipment equipment = equipmentService.getOne(query);
  1258. if (equipment == null) {
  1259. return "该设备不存在";
  1260. }
  1261. equipment.setSimNo(simNo);
  1262. equipmentService.updateById(equipment);
  1263. return "修改成功";
  1264. }
  1265. /**
  1266. * 上传机器的apk版本
  1267. */
  1268. @RequestMapping(value = "/sendApkVersion.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1269. @ResponseBody
  1270. public String sendApkVersion(String clientId, String apkVersion) {
  1271. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1272. query.eq(TEquipment::getClientId, clientId);
  1273. TEquipment equipment = equipmentService.getOne(query);
  1274. if (equipment == null) {
  1275. return "该设备不存在";
  1276. }
  1277. equipment.setApkVersion(apkVersion);
  1278. equipmentService.updateById(equipment);
  1279. return "success";
  1280. }
  1281. /**
  1282. * 上传机器的做糖状态
  1283. */
  1284. @RequestMapping(value = "/equipmentStatus.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1285. @ResponseBody
  1286. public String equipmentStatus(String clientId, String status) {
  1287. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1288. query.eq(TEquipment::getClientId, clientId);
  1289. TEquipment equipment = equipmentService.getOne(query);
  1290. if (equipment == null) {
  1291. return "该设备不存在";
  1292. }
  1293. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  1294. //机器状态;0:空闲,1:在做糖;
  1295. equipmentDesc.setStatus(status);
  1296. equipmentDescService.updateById(equipmentDesc);
  1297. return "success";
  1298. }
  1299. /**
  1300. * 修改设备状态
  1301. *
  1302. * @param clientId
  1303. * @param eqeStatus 设备状态1开 0关
  1304. * @return
  1305. */
  1306. @RequestMapping(value = "/updateEqeStatus.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1307. @ResponseBody
  1308. public String updateEqeStatus(String clientId, Integer eqeStatus) {
  1309. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1310. query.eq(TEquipment::getClientId, clientId);
  1311. TEquipment equipment = equipmentService.getOne(query);
  1312. if (equipment == null) {
  1313. return "该设备不存在";
  1314. }
  1315. if (eqeStatus != null) {
  1316. equipment.setEqeStatus(eqeStatus);
  1317. equipment.setModifyDate(new Date());
  1318. // if (eqeStatus == 0) {
  1319. // equipment.setCabinetTm("0");
  1320. // equipment.setCabinetHd("0");
  1321. // equipment.setFurnaceTm("0");
  1322. // equipment.setFurnaceSp("0");
  1323. // }
  1324. equipmentService.updateById(equipment);
  1325. }
  1326. return "修改成功";
  1327. }
  1328. /**
  1329. * 新修改设备状态
  1330. *
  1331. * @param clientId
  1332. * @param eqeStatus 设备状态1开 0关
  1333. * @return
  1334. */
  1335. @RequestMapping(value = "/updateEqeStatusNew.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1336. @ResponseBody
  1337. public String updateEqeStatusNew(String clientId, Integer eqeStatus, String netTime) {
  1338. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1339. query.eq(TEquipment::getClientId, clientId);
  1340. TEquipment equipment = equipmentService.getOne(query);
  1341. if (equipment == null) {
  1342. return "该设备不存在";
  1343. }
  1344. // 设备名称
  1345. String name = equipment.getName();
  1346. // 如果为空就拿设备编号后六位
  1347. if (StringUtils.isEmpty(name)) {
  1348. name = equipment.getClientId().substring(equipment.getClientId().length() - 6);
  1349. }
  1350. if (eqeStatus != null) {
  1351. equipment.setNetwork(netTime);
  1352. equipment.setEqeStatus(eqeStatus);
  1353. equipment.setModifyDate(new Date());
  1354. // 查询是否有绑定微信
  1355. LambdaQueryWrapper<TWechat> wechatQuery = Wrappers.lambdaQuery();
  1356. wechatQuery.eq(TWechat::getAdminId, equipment.getAdminId());
  1357. TWechat wechat = wechatService.getOne(wechatQuery);
  1358. // 查询用户
  1359. TAdmin admin = adminService.getById(equipment.getAdminId());
  1360. // 如果有绑定微信
  1361. if (admin != null) {
  1362. // 查询是申泽还是七云的
  1363. String companyType = admin.getCompanyType();
  1364. // 查询用户是否开启设备上线提醒功能
  1365. String onOffNotice = admin.getOnOffNotice();
  1366. if (wechat != null && StringUtils.isNotEmpty(wechat.getOpenId()) && StringUtils.isNotEmpty(onOffNotice) && onOffNotice.equals("1")) {
  1367. // 微信发送设备上下线提醒消息
  1368. wechatService.sendOnOffMessage(wechat.getOpenId(), equipment.getClientId(), netTime, companyType, name, eqeStatus);
  1369. }
  1370. // 查询是否国外账号,国外就发送邮件
  1371. String ifForeign = admin.getIfForeign();
  1372. if(StringUtils.isNotEmpty(ifForeign) && ifForeign.equals("1") && onOffNotice.equals("1")) {
  1373. // 发送邮件提醒
  1374. String machineType = equipment.getMachineType();
  1375. if (StringUtils.isNotEmpty(machineType)) {
  1376. machineType = "0";
  1377. }
  1378. String messageReceiver = equipment.getMessageReceiver();
  1379. String timeZone = admin.getTimeZone();
  1380. // 发送设备设置的报警邮箱,没有设置就发送到账户邮箱
  1381. if (StringUtils.isNotEmpty(messageReceiver)) {
  1382. String[] split = messageReceiver.split(",");
  1383. for (String s : split) {
  1384. WechatSendUtil.sentEmail(s, name, timeZone, machineType, eqeStatus);
  1385. }
  1386. } else {
  1387. String email = admin.getEmail();
  1388. if (email != null) {
  1389. WechatSendUtil.sentEmail(admin.getEmail(), name, timeZone, machineType, eqeStatus);
  1390. }
  1391. }
  1392. }
  1393. }
  1394. equipmentService.updateById(equipment);
  1395. }
  1396. return "修改成功";
  1397. }
  1398. /**
  1399. * 修改设备锁定状态
  1400. *
  1401. * @param clientId
  1402. * @param block
  1403. * @return
  1404. */
  1405. @RequestMapping(value = "/updateBlock.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1406. @ResponseBody
  1407. public String updateBlock(String clientId, Boolean block) {
  1408. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1409. query.eq(TEquipment::getClientId, clientId);
  1410. TEquipment equipment = equipmentService.getOne(query);
  1411. if (equipment == null) {
  1412. return "该设备不存在";
  1413. }
  1414. equipment.setIsBlocked(block);
  1415. equipmentService.updateById(equipment);
  1416. return "修改成功";
  1417. }
  1418. /**
  1419. * 修改设备睡眠状态
  1420. *
  1421. * @param clientId
  1422. * @param is_sleep
  1423. * @return
  1424. */
  1425. @RequestMapping(value = "/updateSleep.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1426. @ResponseBody
  1427. public String updateSleep(String clientId, Boolean is_sleep) {
  1428. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1429. query.eq(TEquipment::getClientId, clientId);
  1430. TEquipment equipment = equipmentService.getOne(query);
  1431. if (equipment == null) {
  1432. return "该设备不存在";
  1433. }
  1434. if (is_sleep != null) {
  1435. equipment.setIsSleep(is_sleep);
  1436. equipmentService.updateById(equipment);
  1437. }
  1438. return "修改成功";
  1439. }
  1440. /**
  1441. * 修改设备生产棉花糖个数
  1442. *
  1443. * @param clientId
  1444. * @param productTotal
  1445. * @return
  1446. */
  1447. @RequestMapping(value = "/updateProductTotal.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1448. @ResponseBody
  1449. public String updateProductTotal(String clientId, Integer productTotal) {
  1450. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1451. query.eq(TEquipment::getClientId, clientId);
  1452. TEquipment equipment = equipmentService.getOne(query);
  1453. if (equipment == null) {
  1454. return "该设备不存在";
  1455. }
  1456. Integer total = equipment.getProductTotal();
  1457. if (total == null) {
  1458. total = 0;
  1459. }
  1460. equipment.setProductTotal(total + productTotal);
  1461. equipmentService.updateById(equipment);
  1462. return "修改成功";
  1463. }
  1464. /**
  1465. * 修改设备共同参数/进阶参数
  1466. *
  1467. * @param
  1468. * @return
  1469. */
  1470. // @PostMapping(value = "/updateParam/{code}/{clientId}", produces = "application/json;charset=UTF-8")
  1471. // @ResponseBody
  1472. // public JsonMessage updateParam(@PathVariable Integer code, @PathVariable String clientId, @RequestBody List<CommonParamVo> commonParamVos) {
  1473. // Equipment equipment = equipmentService.findByClientId(clientId);
  1474. // if (equipment == null) {
  1475. // return JsonMessage.error("设备不存在");
  1476. // }
  1477. // String param = JSONArray.toJSONString(commonParamVos);
  1478. // if (code == 0) {
  1479. // equipment.setCommonParameters(param);
  1480. // } else {
  1481. // equipment.setAdvancedParameters(param);
  1482. // }
  1483. // equipmentService.update(equipment);
  1484. // return JsonMessage.success("修改成功");
  1485. // }
  1486. /**
  1487. * 修改设备共同参数/进阶参数
  1488. * code 0:通用参数;1:进阶参数;2:调试页参数;3:湿度参数
  1489. *
  1490. * @param
  1491. * @return
  1492. */
  1493. @RequestMapping(value = "/updateParamNew", method = RequestMethod.POST)
  1494. @ResponseBody
  1495. public String updateParamNew(Integer code, String clientId, @RequestBody List<CommonParamVo> commonParamVos) {
  1496. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1497. query.eq(TEquipment::getClientId, clientId);
  1498. TEquipment equipment = equipmentService.getOne(query);
  1499. if (equipment == null) {
  1500. return "设备不存在";
  1501. }
  1502. if (commonParamVos.size() <= 0) {
  1503. return "参数为空";
  1504. }
  1505. LambdaQueryWrapper<TParameters> queryParameters = Wrappers.lambdaQuery();
  1506. queryParameters.eq(TParameters::getClientId, clientId);
  1507. queryParameters.eq(TParameters::getStatus, code);
  1508. queryParameters.eq(TParameters::getEquipmentId, equipment.getId());
  1509. List<TParameters> list = parametersService.list(queryParameters);
  1510. if (list.size() > 0) {
  1511. for (TParameters parameters : list) {
  1512. //删除旧的参数
  1513. parametersService.removeById(parameters.getId());
  1514. }
  1515. }
  1516. Date date = new Date();
  1517. for (CommonParamVo commonParamVo : commonParamVos) {
  1518. TParameters parameters = new TParameters();
  1519. parameters.setVal(commonParamVo.getVal());
  1520. parameters.setName(commonParamVo.getName());
  1521. parameters.setStatus(String.valueOf(code));
  1522. parameters.setClientId(clientId);
  1523. parameters.setEquipmentId(equipment.getId());
  1524. parameters.setCreateDate(date);
  1525. parameters.setModifyDate(date);
  1526. parametersService.save(parameters);
  1527. }
  1528. return "修改成功";
  1529. }
  1530. /**
  1531. * 修改单个设备共同参数/进阶参数
  1532. * code 0:通用参数;1:进阶参数;2:调试页参数;3:湿度参数
  1533. *
  1534. * @param
  1535. * @return
  1536. */
  1537. @PostMapping(value = "/updateAloneParam.htm", produces = "text/html;charset=utf-8")
  1538. @ResponseBody
  1539. public String updateAloneParam(String code, String clientId, String name, String val) {
  1540. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1541. query.eq(TEquipment::getClientId, clientId);
  1542. TEquipment equipment = equipmentService.getOne(query);
  1543. if (equipment == null) {
  1544. return "设备不存在";
  1545. }
  1546. LambdaQueryWrapper<TParameters> queryParameters = Wrappers.lambdaQuery();
  1547. queryParameters.eq(TParameters::getClientId, clientId);
  1548. queryParameters.eq(TParameters::getStatus, code);
  1549. queryParameters.eq(TParameters::getName, name);
  1550. queryParameters.eq(TParameters::getEquipmentId, equipment.getId());
  1551. List<TParameters> list1 = parametersService.list(queryParameters);
  1552. if (list1.size() > 0) {
  1553. TParameters parameters = list1.get(0);
  1554. parameters.setVal(val);
  1555. parameters.setModifyDate(new Date());
  1556. parametersService.updateById(parameters);
  1557. }
  1558. return "修改成功";
  1559. }
  1560. /**
  1561. * 获取机器列表
  1562. */
  1563. @RequestMapping(value = "/getEquipmentList.htm", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
  1564. @ResponseBody
  1565. public String getByAdminAndProduct(String adminId, String name) {
  1566. JSONObject jsonObject = new JSONObject();
  1567. if (StringUtils.isEmpty(adminId)) {
  1568. jsonObject.put("code", 1);
  1569. jsonObject.put("errmsg", "adminId为空");
  1570. return jsonObject.toJSONString();
  1571. }
  1572. if (StringUtils.isEmpty(name)) {
  1573. jsonObject.put("code", 1);
  1574. jsonObject.put("errmsg", "name为空");
  1575. return jsonObject.toJSONString();
  1576. }
  1577. TAdmin admin = adminService.getById(adminId);
  1578. if (!admin.getUsername().equals(name)) {
  1579. jsonObject.put("code", 1);
  1580. jsonObject.put("errmsg", "name与adminId不匹配");
  1581. return jsonObject.toJSONString();
  1582. }
  1583. List<EquipmentDTO> list = new ArrayList<>();
  1584. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1585. query.eq(TEquipment::getAdminId, Long.valueOf(adminId));
  1586. List<TEquipment> equipmentList = equipmentService.list(query);
  1587. for (TEquipment equipment : equipmentList) {
  1588. EquipmentDTO equipmentDTO = new EquipmentDTO();
  1589. equipmentDTO.setClientId(equipment.getClientId());
  1590. equipmentDTO.setSn(equipment.getSn());
  1591. equipmentDTO.setName(equipment.getName());
  1592. equipmentDTO.setLatitude(equipment.getLatitude());
  1593. equipmentDTO.setLongitude(equipment.getLongitude());
  1594. equipmentDTO.setFullName(equipment.getFullName());
  1595. equipmentDTO.setEqeStatus(equipment.getEqeStatus());
  1596. list.add(equipmentDTO);
  1597. }
  1598. jsonObject.put("code", 0);
  1599. jsonObject.put("rows", JsonUtils.toJson(list));
  1600. jsonObject.put("errmsg", "");
  1601. jsonObject.put("total", list.size());
  1602. return jsonObject.toJSONString();
  1603. }
  1604. /**
  1605. * 获取商品信息
  1606. */
  1607. @RequestMapping(value = "/getProductions.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1608. @ResponseBody
  1609. public String getProductions(String adminId, String clientId) {
  1610. JSONObject jsonObject = new JSONObject();
  1611. if (StringUtils.isEmpty(adminId)) {
  1612. jsonObject.put("code", 1);
  1613. jsonObject.put("errmsg", "adminId为空");
  1614. return jsonObject.toJSONString();
  1615. }
  1616. if (StringUtils.isEmpty(clientId)) {
  1617. jsonObject.put("code", 1);
  1618. jsonObject.put("errmsg", "clientId为空");
  1619. return jsonObject.toJSONString();
  1620. }
  1621. TAdmin admin = adminService.getById(Long.valueOf(adminId));
  1622. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1623. query.eq(TEquipment::getClientId, clientId);
  1624. TEquipment equipment = equipmentService.getOne(query);
  1625. if (!equipment.getAdminId().toString().equals(admin.getId().toString())) {
  1626. jsonObject.put("code", 1);
  1627. jsonObject.put("errmsg", "clientId与adminId不匹配");
  1628. return jsonObject.toJSONString();
  1629. }
  1630. List<String> list = new ArrayList<>();
  1631. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  1632. queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
  1633. List<TProduct> products = productService.list(queryProduct);
  1634. for (TProduct product : products) {
  1635. list.add(product.getProductName());
  1636. }
  1637. jsonObject.put("code", 0);
  1638. jsonObject.put("productions", JsonUtils.toJson(list));
  1639. jsonObject.put("errmsg", "");
  1640. jsonObject.put("total", list.size());
  1641. return jsonObject.toJSONString();
  1642. }
  1643. /**
  1644. * 根据设备编号获取商品信息
  1645. */
  1646. @RequestMapping(value = "/getproducts", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1647. @ResponseBody
  1648. public String getproducts(String clientId) {
  1649. JSONObject jsonObject = new JSONObject();
  1650. if (StringUtils.isEmpty(clientId)) {
  1651. jsonObject.put("code", 1);
  1652. jsonObject.put("errmsg", "clientId为空");
  1653. return jsonObject.toJSONString();
  1654. }
  1655. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1656. query.eq(TEquipment::getClientId, clientId);
  1657. TEquipment equipment = equipmentService.getOne(query);
  1658. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  1659. if (equipment == null) {
  1660. jsonObject.put("code", 1);
  1661. jsonObject.put("errmsg", "找不到设备");
  1662. return jsonObject.toJSONString();
  1663. }
  1664. queryProduct.eq(TProduct::getEquipmentId, equipment.getId());
  1665. List<TProduct> products = productService.list(queryProduct);
  1666. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  1667. for (TProduct product : products) {
  1668. product.setCreateDate(null);
  1669. product.setModifyDate(null);
  1670. if (StringUtils.isNotEmpty(equipmentDesc.getLanguage()) && !equipmentDesc.getLanguage().equals("zh") && StringUtils.isEmpty(product.getName())) {
  1671. LambdaQueryWrapper<TNameDictionary> queryWrapper = new LambdaQueryWrapper<>();
  1672. queryWrapper.eq(TNameDictionary::getLanguage, "zh");
  1673. queryWrapper.eq(TNameDictionary::getNo, product.getNo());
  1674. TNameDictionary nameDictionary = nameDictionaryService.getOne(queryWrapper);
  1675. if (nameDictionary != null) {
  1676. product.setProductName(nameDictionary.getName());
  1677. }
  1678. }
  1679. }
  1680. JSONObject jsonObject1 = new JSONObject();
  1681. jsonObject1.put("code", 0);
  1682. jsonObject1.put("data", JSONObject.toJSON(products).toString());
  1683. jsonObject1.put("errmsg", "");
  1684. return JSONObject.toJSON(products).toString();
  1685. }
  1686. /**
  1687. * 是否启用物料监控功能
  1688. * 0:不启用,1:启用
  1689. *
  1690. * @param clientId 个推
  1691. * @return
  1692. */
  1693. @RequestMapping(value = "/updateMaterialStatus.htm", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  1694. @ResponseBody
  1695. public String updateMaterialUse(String clientId, String isMaterialUse) {
  1696. if (!StringUtils.isEmpty(clientId) && !StringUtils.isEmpty(isMaterialUse)) {
  1697. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1698. query.eq(TEquipment::getClientId, clientId);
  1699. TEquipment equipment = equipmentService.getOne(query);
  1700. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  1701. equipmentDesc.setIsMaterialUse(isMaterialUse);
  1702. equipmentDescService.updateById(equipmentDesc);
  1703. // 改变参数表里的状态
  1704. LambdaQueryWrapper<TParameters> queryWrapper = Wrappers.lambdaQuery();
  1705. queryWrapper.eq(TParameters::getClientId, clientId);
  1706. queryWrapper.eq(TParameters::getName, "M502");
  1707. TParameters parameters = parametersService.getOne(queryWrapper);
  1708. if (Objects.nonNull(parameters)) {
  1709. parameters.setVal(isMaterialUse);
  1710. parametersService.updateById(parameters);
  1711. }
  1712. return "success";
  1713. }
  1714. return "error";
  1715. }
  1716. //修改优惠码状态
  1717. @RequestMapping(value = "/updateCode.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1718. @ResponseBody
  1719. public String CardPay(String code, String clientId) {
  1720. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1721. query.eq(TEquipment::getClientId, clientId);
  1722. TEquipment equipment = equipmentService.getOne(query);
  1723. LambdaQueryWrapper<TPromoCode> query1 = Wrappers.lambdaQuery();
  1724. query1.eq(TPromoCode::getAdminId, equipment.getAdminId());
  1725. query1.eq(TPromoCode::getCode, code);
  1726. List<TPromoCode> list1 = promoCodeService.list(query1);
  1727. TPromoCode promoCode = list1.get(0);
  1728. promoCode.setIsUse("1");
  1729. promoCode.setUseBy(equipment.getName());
  1730. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1731. String time = sdf.format(new Date());
  1732. promoCode.setUseDate(time);
  1733. promoCodeService.updateById(promoCode);
  1734. return "success";
  1735. }
  1736. //验证优惠码
  1737. @RequestMapping(value = "/selectCode.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1738. @ResponseBody
  1739. public String selectCode(String code, String clientId) {
  1740. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1741. query.eq(TEquipment::getClientId, clientId);
  1742. TEquipment equipment = equipmentService.getOne(query);
  1743. //验证优惠码
  1744. LambdaQueryWrapper<TPromoCode> query1 = Wrappers.lambdaQuery();
  1745. query1.eq(TPromoCode::getCode, code);
  1746. List<TPromoCode> codeList = promoCodeService.list(query1);
  1747. TPromoCode promoCode = new TPromoCode();
  1748. if (codeList.size() == 0) {
  1749. //不存在
  1750. return "1";
  1751. }
  1752. for (TPromoCode cod : codeList) {
  1753. if (!cod.getAdminId().equals("1")) {
  1754. String adminId = cod.getAdminId();
  1755. String adminId1 = String.valueOf(equipment.getAdminId());
  1756. if (adminId.equals(adminId1)) {
  1757. promoCode = cod;
  1758. }
  1759. } else {
  1760. promoCode = cod;
  1761. }
  1762. }
  1763. if (promoCode.getAdminId() == null) {
  1764. //不是本机
  1765. return "3";
  1766. }
  1767. Date lastUseDate = null;
  1768. if (promoCode != null) {
  1769. lastUseDate = promoCode.getLastUseDate();
  1770. }
  1771. if (lastUseDate != null && lastUseDate.getTime() < ((new Date()).getTime())) {
  1772. promoCode.setIsUse("2");
  1773. promoCodeService.updateById(promoCode);
  1774. //过期
  1775. return "4";
  1776. }
  1777. if (promoCode.getId() == null) {
  1778. //不存在
  1779. return "1";
  1780. }
  1781. if (promoCode.getIsUse().equals("1")) {
  1782. //被使用
  1783. return "2";
  1784. }
  1785. if (!promoCode.getAdminId().equals("1")) {
  1786. if (String.valueOf(equipment.getAdminId()).equals(promoCode.getAdminId())) {
  1787. } else {
  1788. //不是本机
  1789. return "3";
  1790. }
  1791. }
  1792. if (promoCode.getDiscount() == null) {
  1793. //旧优惠码
  1794. return "0";
  1795. }
  1796. if (promoCode.getDiscount() == 0) {
  1797. //0折
  1798. return "0";
  1799. }
  1800. return "success";
  1801. }
  1802. //修改机器的分销
  1803. @RequestMapping(value = "/updateProportion.htm", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  1804. @ResponseBody
  1805. public String updateProportion(String clientId) {
  1806. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1807. query.eq(TEquipment::getClientId, clientId);
  1808. TEquipment equipment = equipmentService.getOne(query);
  1809. if (equipment != null && equipment.getId() != null) {
  1810. TAdmin admin = adminService.getById(equipment.getAdminId());
  1811. String name = admin.getName();
  1812. //查询机器是否已经有设置分销
  1813. LambdaQueryWrapper<TProportion> query1 = Wrappers.lambdaQuery();
  1814. query1.eq(TProportion::getClientId, equipment.getClientId());
  1815. query1.eq(TProportion::getEquipmentId, equipment.getId());
  1816. List<TProportion> list1 = proportionService.list(query1);
  1817. if (list1.size() > 0) {
  1818. //已有
  1819. } else {
  1820. //没有,需要创建
  1821. //1,判断是否新机器
  1822. // Date createDate = equipment.getCreateDate();
  1823. // long time = createDate.getTime();
  1824. // DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1825. // String day= "2022-09-21 23:59:59";
  1826. // try {
  1827. // Date parse = simpleDateFormat.parse(day);
  1828. // if(time>parse.getTime()){
  1829. // return "新机器,不能已此方式生成分销!";
  1830. // }
  1831. // } catch (ParseException e) {
  1832. // e.printStackTrace();
  1833. // }
  1834. //先找到原账户的分销
  1835. LambdaQueryWrapper<TProportion> query2 = Wrappers.lambdaQuery();
  1836. query2.eq(TProportion::getAdminId, admin.getId());
  1837. List<TProportion> list2 = proportionService.list(query2);
  1838. if (list2.size() > 0) {
  1839. TProportion adminProportion = list2.get(0);
  1840. if (StringUtils.isEmpty(adminProportion.getClientId())) {
  1841. TProportion equipmentProportion = new TProportion();
  1842. equipmentProportion.setCreateDate(new Date());
  1843. equipmentProportion.setModifyDate(new Date());
  1844. equipmentProportion.setAdminId(admin.getId());
  1845. equipmentProportion.setClientId(equipment.getClientId());
  1846. equipmentProportion.setEquipmentId(equipment.getId());
  1847. equipmentProportion.setAdminProportion(adminProportion.getAdminProportion());
  1848. Integer type = adminProportion.getType();
  1849. switch (type) {
  1850. case 1:
  1851. equipmentProportion.setProportion(adminProportion.getAgencyProportion());
  1852. equipmentProportion.setAgencyProportion(new BigDecimal("0.00"));
  1853. equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
  1854. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  1855. equipmentProportion.setType(0);
  1856. break;
  1857. case 2:
  1858. equipmentProportion.setProportion(adminProportion.getMerchantProportion());
  1859. equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
  1860. equipmentProportion.setAgencyId(admin.getAgencyId());
  1861. TAdmin byId = adminService.getById(admin.getAgencyId());
  1862. equipmentProportion.setAgencyName(byId.getUsername());
  1863. equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
  1864. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  1865. equipmentProportion.setType(1);
  1866. break;
  1867. case 3:
  1868. equipmentProportion.setProportion(adminProportion.getPersonageProportion());
  1869. equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
  1870. equipmentProportion.setAgencyId(admin.getAgencyId());
  1871. TAdmin byId1 = adminService.getById(admin.getAgencyId());
  1872. equipmentProportion.setAgencyName(byId1.getUsername());
  1873. equipmentProportion.setMerchantProportion(adminProportion.getMerchantProportion());
  1874. equipmentProportion.setMerchantId(admin.getMerchantId());
  1875. TAdmin byId2 = adminService.getById(admin.getMerchantId());
  1876. equipmentProportion.setMerchantName(byId2.getUsername());
  1877. equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
  1878. equipmentProportion.setType(2);
  1879. break;
  1880. }
  1881. boolean save = proportionService.save(equipmentProportion);
  1882. }
  1883. } else {
  1884. return "原账户没有设置分销!";
  1885. }
  1886. }
  1887. }
  1888. return "success";
  1889. }
  1890. /**
  1891. * @param clientId
  1892. * @return
  1893. */
  1894. @GetMapping(value = "/getManagerId.htm")
  1895. @ResponseBody
  1896. public String getManagerId(String clientId) {
  1897. if (!StringUtils.isEmpty(clientId)) {
  1898. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1899. query.eq(TEquipment::getClientId, clientId);
  1900. List<TEquipment> list = equipmentService.list(query);
  1901. if (list.size() > 0) {
  1902. TEquipment equipment = list.get(0);
  1903. Long adminId = equipment.getAdminId();
  1904. if (adminId != null) {
  1905. String managerId = AdminUtils.encrypt(false, adminId);
  1906. if (StringUtils.isEmpty(equipment.getManagerId()) || !equipment.getManagerId().equals(managerId)) {
  1907. equipment.setManagerId(managerId);
  1908. equipmentService.updateById(equipment);
  1909. }
  1910. return managerId;
  1911. }
  1912. }
  1913. return "error";
  1914. }
  1915. return "error";
  1916. }
  1917. /**
  1918. * 修改优惠券开关状态
  1919. *
  1920. * @param clientId
  1921. * @return
  1922. */
  1923. @GetMapping(value = "/updateCouponStatus.htm")
  1924. @ResponseBody
  1925. public String updateCouponStatus(String clientId, String couponStatus) {
  1926. if (!StringUtils.isEmpty(clientId) && StringUtils.isNotEmpty(couponStatus)) {
  1927. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1928. query.eq(TEquipment::getClientId, clientId);
  1929. TEquipment equipment = equipmentService.getOne(query);
  1930. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  1931. equipmentDesc.setCouponStatus(couponStatus);
  1932. equipmentDescService.updateById(equipmentDesc);
  1933. TAdmin admin = adminService.getById(equipment.getAdminId());
  1934. //同步数据到鲸准
  1935. if (admin.getId().toString().equals("372") || admin.getRelationAdminId().equals("372") || admin.getId().toString().equals("639") || admin.getId().toString().equals("238")) {
  1936. sendCouponStatus(clientId, equipment.getFullName(), equipment.getEqeStatus(), couponStatus);
  1937. }
  1938. return "success";
  1939. }
  1940. return "error";
  1941. }
  1942. private void sendCouponStatus(String clientId, String fullName, Integer eqeStatus, String couponStatus) {
  1943. String url = "http://47.106.13.109:3000/api/listenDeviceStatusChange";
  1944. Map<String, String> map = new HashMap<>();
  1945. map.put("clientId", clientId);
  1946. map.put("address", fullName);
  1947. map.put("status", String.valueOf(eqeStatus));
  1948. if (StringUtils.isEmpty(couponStatus)) {
  1949. map.put("wxStatus", "1");
  1950. } else {
  1951. map.put("wxStatus", couponStatus);
  1952. }
  1953. String data = JSON.toJSONString(map);
  1954. try {
  1955. String s = HttpClientSslUtils.doPost(url, data);
  1956. System.out.println("发送鲸准:" + s);
  1957. } catch (Exception e) {
  1958. e.printStackTrace();
  1959. }
  1960. }
  1961. /**
  1962. * @param clientId
  1963. * @return
  1964. */
  1965. @GetMapping(value = "/getYouHuiPrice.htm")
  1966. @ResponseBody
  1967. public String getYouHuiPrice(String clientId) {
  1968. LambdaQueryWrapper<TPrice> query = Wrappers.lambdaQuery();
  1969. query.eq(TPrice::getName, "优惠券");
  1970. List<TPrice> list = priceService.list(query);
  1971. if (list.size() > 0) {
  1972. TPrice tPrice = list.get(0);
  1973. Double price = tPrice.getPrice();
  1974. return new BigDecimal(price).setScale(0, RoundingMode.HALF_DOWN).toString();
  1975. } else {
  1976. return "5";
  1977. }
  1978. }
  1979. /**
  1980. * 修改商品名称
  1981. *
  1982. * @param clientId 设备个推Id
  1983. * @param
  1984. * @return
  1985. * @Param
  1986. */
  1987. @RequestMapping(value = "/updateProductName.htm", method = RequestMethod.POST)
  1988. @ResponseBody
  1989. public String updateProductName(String clientId, Long productId, String oldProductName, String newProductName) {
  1990. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  1991. query.eq(TEquipment::getClientId, clientId);
  1992. List<TEquipment> list = equipmentService.list(query);
  1993. if (list.size() > 0) {
  1994. TEquipment equipment = list.get(0);
  1995. if (equipment != null && equipment.getId() != null) {
  1996. TProduct product = productService.getById(productId);
  1997. product.setModifyDate(new Date());
  1998. product.setName(oldProductName);
  1999. product.setProductName(newProductName);
  2000. productService.updateById(product);
  2001. return "修改成功success!";
  2002. }
  2003. }
  2004. return "更新失败error";
  2005. }
  2006. /**
  2007. * 上传机器状态之门的状态:
  2008. * type(类型,0:外门,1:内门),
  2009. * status(状态:0:关闭,1:开启)
  2010. *
  2011. * @param clientId
  2012. * @return status(状态:0:关闭,1:开启)
  2013. */
  2014. @GetMapping("/updateEquipmentStatus")
  2015. public ResponseModel<?> updateEquipmentStatus(String clientId, String type, String status) {
  2016. if (StringUtils.isEmpty(clientId) || StringUtils.isEmpty(type) || StringUtils.isEmpty(status)) {
  2017. return R.fail(ResponseCodesEnum.A0001, "adminId为空");
  2018. }
  2019. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2020. query.eq(TEquipment::getClientId, clientId);
  2021. TEquipment equipment = equipmentService.getOnly(query);
  2022. if (equipment != null && equipment.getId() != null) {
  2023. if (type.equals("0")) {
  2024. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2025. equipmentDesc.setOutDoor(status);
  2026. equipmentDescService.updateById(equipmentDesc);
  2027. return R.ok();
  2028. } else if (type.equals("1")) {
  2029. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2030. equipmentDesc.setInDoor(status);
  2031. equipmentDescService.updateById(equipmentDesc);
  2032. return R.ok();
  2033. }
  2034. }
  2035. return R.fail(ResponseCodesEnum.A0002);
  2036. }
  2037. /**
  2038. * 上传花型显示状态
  2039. *
  2040. * @param clientId 设备编号
  2041. * @param tProductBean 包含花型编号和状态
  2042. * @return
  2043. */
  2044. @RequestMapping(value = "/updateShowGoods", method = RequestMethod.POST)
  2045. @ResponseBody
  2046. public String updateShowGoods(String clientId, @RequestBody List<TProductBean> tProductBean) {
  2047. if (StringUtils.isEmpty(clientId) || tProductBean == null) {
  2048. return "参数为空";
  2049. }
  2050. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2051. query.eq(TEquipment::getClientId, clientId);
  2052. TEquipment equipment = equipmentService.getOnly(query);
  2053. if (equipment == null) {
  2054. return "找不到设备信息";
  2055. }
  2056. Long equipmentId = equipment.getId();
  2057. ArrayList<TProduct> tProducts = new ArrayList<>();
  2058. for (TProductBean productBean : tProductBean) {
  2059. String no = productBean.getNo();
  2060. String showType = productBean.getShowType();
  2061. LambdaQueryWrapper<TProduct> wrapper = new LambdaQueryWrapper<>();
  2062. wrapper.eq(TProduct::getEquipmentId, equipmentId);
  2063. wrapper.eq(TProduct::getNo, no);
  2064. TProduct product = productService.getOnly(wrapper);
  2065. product.setShowType(showType);
  2066. tProducts.add(product);
  2067. }
  2068. boolean res = productService.updateBatchById(tProducts);
  2069. if (!res) {
  2070. return "error";
  2071. }
  2072. return "success";
  2073. }
  2074. /**
  2075. * 上传DIY花型功能开关状态
  2076. *
  2077. * @param clientId:设备编号
  2078. * @param DIYFlowerStatus:开关状态, 0: 关闭, 1: 开启
  2079. * @return
  2080. */
  2081. @GetMapping(value = "/updateDIYFlowerStatus")
  2082. @ResponseBody
  2083. public String updateDIYFlowerStatus(String clientId, String DIYFlowerStatus) {
  2084. if (StringUtils.isNotEmpty(clientId) && StringUtils.isNotEmpty(DIYFlowerStatus)) {
  2085. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2086. query.eq(TEquipment::getClientId, clientId);
  2087. TEquipment equipment = equipmentService.getOne(query);
  2088. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2089. equipmentDesc.setDiyFlowerStatus(DIYFlowerStatus);
  2090. equipmentDescService.updateById(equipmentDesc);
  2091. // 如果为开启状态
  2092. if (DIYFlowerStatus.equals("1")) {
  2093. LambdaQueryWrapper<TDiyFlower> queryWrapper = Wrappers.lambdaQuery();
  2094. queryWrapper.eq(TDiyFlower::getEquipmentId, equipment.getId());
  2095. List<TDiyFlower> list = diyFlowerService.list(queryWrapper);
  2096. // 如何为空就添加新的花型形状和颜色
  2097. if (list.size() == 0) {
  2098. saveDIYProduct(equipment.getId());
  2099. }
  2100. }
  2101. return "success";
  2102. }
  2103. return "error";
  2104. }
  2105. /**
  2106. * 添加DIY花型产品
  2107. *
  2108. * @param id
  2109. */
  2110. private void saveDIYProduct(Long id) {
  2111. String[] str = {"圆五花-S01", "圆心-S02", "心-S03", "圆蝴蝶-S04", "圆四叶草-S05", "圆六花瓣-S06", "圆三叶草-A07", "圆三花瓣-S08", "蘑菇-S09",
  2112. "白糖-T01", "红糖-T02", "黄糖-T03", "蓝糖-T04"};
  2113. for (int i = 0; i < str.length; i++) {
  2114. TDiyFlower diyFlower = new TDiyFlower();
  2115. diyFlower.setCreateDate(new Date());
  2116. diyFlower.setModifyDate(new Date());
  2117. diyFlower.setEquipmentId(id);
  2118. String[] split = str[i].split("-");
  2119. diyFlower.setName(split[0]);
  2120. diyFlower.setNo(split[1]);
  2121. diyFlower.setShowType("1");
  2122. diyFlowerService.save(diyFlower);
  2123. }
  2124. }
  2125. /**
  2126. * 上传DIY花型形状/糖显示状态
  2127. *
  2128. * @param clientId 设备编号
  2129. * @param tProductBean 包含形状/糖的编号和状态
  2130. * @return
  2131. */
  2132. @RequestMapping(value = "/updateDIYFlowerShow", method = RequestMethod.POST)
  2133. @ResponseBody
  2134. public String updateDIYFlowerShow(String clientId, @RequestBody List<TProductBean> tProductBean) {
  2135. if (StringUtils.isEmpty(clientId) || tProductBean == null) {
  2136. return "参数为空";
  2137. }
  2138. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2139. query.eq(TEquipment::getClientId, clientId);
  2140. TEquipment equipment = equipmentService.getOnly(query);
  2141. if (equipment == null) {
  2142. return "找不到设备信息";
  2143. }
  2144. Long equipmentId = equipment.getId();
  2145. ArrayList<TDiyFlower> diyFlowers = new ArrayList<>();
  2146. for (TProductBean productBean : tProductBean) {
  2147. String no = productBean.getNo();
  2148. String showType = productBean.getShowType();
  2149. LambdaQueryWrapper<TDiyFlower> wrapper = new LambdaQueryWrapper<>();
  2150. wrapper.eq(TDiyFlower::getEquipmentId, equipmentId);
  2151. wrapper.eq(TDiyFlower::getNo, no);
  2152. TDiyFlower diyFlower = diyFlowerService.getOne(wrapper);
  2153. diyFlower.setShowType(showType);
  2154. diyFlowers.add(diyFlower);
  2155. }
  2156. boolean res = diyFlowerService.updateBatchById(diyFlowers);
  2157. if (!res) {
  2158. return "error";
  2159. }
  2160. return "success";
  2161. }
  2162. /**
  2163. * 花型数目 开机时上传
  2164. *
  2165. * @param clientId 个推
  2166. * @return
  2167. */
  2168. @RequestMapping(value = "/flowerNumber", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  2169. @ResponseBody
  2170. public String flowerNumber(String clientId, String flowerNumber) {
  2171. if (!StringUtils.isEmpty(flowerNumber)) {
  2172. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2173. query.eq(TEquipment::getClientId, clientId);
  2174. TEquipment equipment = equipmentService.getOne(query);
  2175. equipment.setFlowers(flowerNumber);
  2176. equipmentService.updateById(equipment);
  2177. return "success";
  2178. }
  2179. return "fail";
  2180. }
  2181. /**
  2182. * 设备语言 开机时上传
  2183. *
  2184. * @param clientId 个推
  2185. * @return
  2186. */
  2187. @RequestMapping(value = "/upLoadLanguage", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  2188. @ResponseBody
  2189. public String upLoadLanguage(String clientId, String language) {
  2190. if (!StringUtils.isEmpty(language)) {
  2191. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2192. query.eq(TEquipment::getClientId, clientId);
  2193. TEquipment equipment = equipmentService.getOne(query);
  2194. if (equipment == null) {
  2195. return "fail";
  2196. }
  2197. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2198. equipmentDesc.setLanguage(language);
  2199. equipmentDescService.updateById(equipmentDesc);
  2200. LambdaQueryWrapper<TProduct> wrapper = Wrappers.lambdaQuery();
  2201. wrapper.eq(TProduct::getEquipmentId, equipment.getId());
  2202. List<TProduct> products = productService.list(wrapper);
  2203. for (TProduct product : products) {
  2204. String no = product.getNo();
  2205. // 如果没改过名才更改
  2206. if (StringUtils.isEmpty(product.getName())) {
  2207. LambdaQueryWrapper<TNameDictionary> lambdaQueryWrapper = Wrappers.lambdaQuery();
  2208. lambdaQueryWrapper.eq(TNameDictionary::getLanguage, language);
  2209. lambdaQueryWrapper.eq(TNameDictionary::getNo, no);
  2210. TNameDictionary nameDictionary = nameDictionaryService.getOne(lambdaQueryWrapper);
  2211. if (nameDictionary != null) {
  2212. product.setModifyDate(new Date());
  2213. product.setProductName(nameDictionary.getName());
  2214. productService.updateById(product);
  2215. }
  2216. }
  2217. }
  2218. // if (equipmentDesc.getLanguage() == null || !(equipmentDesc.getLanguage().equals(language))) {
  2219. // }
  2220. return "success";
  2221. }
  2222. return "fail";
  2223. }
  2224. /**
  2225. * 获取DIY使用密码
  2226. *
  2227. * @return
  2228. */
  2229. @RequestMapping(value = "/getDIYPassword", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  2230. @ResponseBody
  2231. public String getDIYPassword() {
  2232. TAdmin admin = adminService.getById(1L);
  2233. String diyPassword = admin.getDiyPassword();
  2234. return diyPassword;
  2235. }
  2236. @ApiOperation(value = "更新雪糕机工作模式")
  2237. @RequestMapping(value = "/upWorkingMode", method = RequestMethod.GET, produces = "text/html;charset=utf-8")
  2238. @ResponseBody
  2239. public String upWorkingMode(String clientId, Integer workingMode) {
  2240. if (workingMode != null) {
  2241. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2242. query.eq(TEquipment::getClientId, clientId);
  2243. TEquipment equipment = equipmentService.getOne(query);
  2244. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2245. equipmentDesc.setWorkingMode(workingMode);
  2246. equipmentDescService.updateById(equipmentDesc);
  2247. return "success";
  2248. }
  2249. return "fail";
  2250. }
  2251. @ApiOperation(value = "修改清洗功能状态")
  2252. @GetMapping(value = "/updateCleanFunction", produces = "text/html;charset=utf-8")
  2253. public String updateCleanFunction(String clientId, Boolean cleanFunction) {
  2254. if (cleanFunction != null) {
  2255. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2256. query.eq(TEquipment::getClientId, clientId);
  2257. TEquipment equipment = equipmentService.getOne(query);
  2258. TEquipmentDesc equipmentDesc = equipmentDescService.getById(equipment.getId());
  2259. equipmentDesc.setCleanFunction(false);
  2260. equipmentDescService.updateById(equipmentDesc);
  2261. return "success";
  2262. }
  2263. return "fail";
  2264. }
  2265. /**
  2266. * 商品调价
  2267. */
  2268. @RequestMapping(value = "/newUpdateProduct", method = RequestMethod.POST, produces = "text/html;charset=utf-8")
  2269. @ResponseBody
  2270. public String newUpdateProduct(@RequestBody List<ProductVo> productVos) {
  2271. for (ProductVo product : productVos) {
  2272. String clientId = product.getClientId();
  2273. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2274. query.eq(TEquipment::getClientId, clientId);
  2275. TEquipment equipment = equipmentService.getOne(query);
  2276. Long id = equipment.getId();
  2277. LambdaQueryWrapper<TProduct> queryProduct = Wrappers.lambdaQuery();
  2278. queryProduct.eq(TProduct::getEquipmentId, id);
  2279. queryProduct.eq(TProduct::getNo, product.getProductNo());
  2280. TProduct tProduct = productService.getOnly(queryProduct);
  2281. if (tProduct == null) {
  2282. return "找不到商品";
  2283. }
  2284. tProduct.setRmbPrice(BigDecimal.valueOf(product.getRmbPrice()));
  2285. tProduct.setCodePrice(BigDecimal.valueOf(product.getCodePrice()));
  2286. tProduct.setShowType(product.getShowType());
  2287. tProduct.setSellStatus(product.getSellStatus());
  2288. productService.updateById(tProduct);
  2289. }
  2290. return "调价成功";
  2291. }
  2292. /**
  2293. * 新修改商品名称
  2294. * @param clientId 设备编号
  2295. * @param productNo 商品编号
  2296. * @param newProductName 新名称
  2297. * @return 修改结果
  2298. */
  2299. @RequestMapping(value = "/newUpdateProductName", method = RequestMethod.POST)
  2300. @ResponseBody
  2301. public String newUpdateProductName(String clientId, String productNo, String newProductName) {
  2302. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  2303. query.eq(TEquipment::getClientId, clientId);
  2304. TEquipment equipment = equipmentService.getOne(query);
  2305. if (equipment != null && equipment.getId() != null) {
  2306. LambdaQueryWrapper<TProduct> queryWrapper = Wrappers.lambdaQuery();
  2307. queryWrapper.eq(TProduct::getEquipmentId, equipment.getId());
  2308. queryWrapper.eq(TProduct::getNo, productNo);
  2309. TProduct product = productService.getOne(queryWrapper);
  2310. product.setModifyDate(new Date());
  2311. product.setName(product.getProductName());
  2312. product.setProductName(newProductName);
  2313. productService.updateById(product);
  2314. return "修改成功(Success)!";
  2315. }
  2316. return "找不到设备";
  2317. }
  2318. @ApiOperation("上传远程退币状态")
  2319. @PostMapping("/uploadReturnCoinStatus")
  2320. public String uploadReturnCoinStatus(@RequestBody ReturnCoinVo returnCoinVo) {
  2321. Long id = returnCoinVo.getId();
  2322. ReturnCoinRecord returnCoinRecord = returnCoinRecordService.getById(id);
  2323. returnCoinRecord.setStatus(returnCoinVo.getStatus());
  2324. returnCoinRecord.setReason(returnCoinVo.getReason());
  2325. returnCoinRecordService.updateById(returnCoinRecord);
  2326. return "success";
  2327. }
  2328. }