PosMachineController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. package com.platform.yijia.controller;
  2. import com.google.gson.Gson;
  3. import com.platform.yijia.param.request.LoginBody;
  4. import com.platform.yijia.pojo.PayOrder;
  5. import com.platform.yijia.pojo.StationClassStructure;
  6. import com.platform.yijia.pojo.StationClassesSummary;
  7. import com.platform.yijia.pojo.SysUser;
  8. import com.platform.yijia.service.IStationClassStructureService;
  9. import com.platform.yijia.service.IStationClassesSummaryService;
  10. import com.platform.yijia.service.PayOrderService;
  11. import com.platform.yijia.service.PosMachineService;
  12. import com.platform.yijia.utils.CodeMsg;
  13. import com.platform.yijia.utils.ResultData;
  14. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  15. import org.springframework.stereotype.Controller;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.annotation.Resource;
  18. import java.math.BigDecimal;
  19. import java.text.DateFormat;
  20. import java.text.ParseException;
  21. import java.text.SimpleDateFormat;
  22. import java.util.Date;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * <Title> PosMachineController </Title>
  28. * <Description> POS机端模块功能 </Description>
  29. * @Author JK
  30. * @Date 2021年3月17日
  31. */
  32. @Controller
  33. @RequestMapping("/demo")
  34. public class PosMachineController {
  35. @Resource
  36. private PosMachineService posMachineService;
  37. @Resource
  38. private IStationClassStructureService stationClassStructureService;
  39. @Resource
  40. private IStationClassesSummaryService stationClassesSummaryService;
  41. @Resource
  42. private PayOrderService payOrderService;
  43. //POS机端用户登录
  44. @RequestMapping(value = "/loginPosMachine", method = RequestMethod.POST)
  45. @ResponseBody
  46. public String loginPosMachine(@RequestBody LoginBody loginBody){
  47. //Using generated security password: a78f4bd0-6087-4fff-ae5d-f2e4cd8c7961
  48. Gson gson =new Gson();
  49. //返回结果集
  50. ResultData resultData = null;
  51. if(loginBody.getUserName() !=null && loginBody.getPassword() !=null){
  52. SysUser sysUser = posMachineService.selectUserByUserName(loginBody.getUserName());
  53. if(sysUser !=null){
  54. if(sysUser.getStatus().equals("0")){
  55. String password = sysUser.getPassword();
  56. BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
  57. //密码加密判断已加密密码是否与真实密码相同
  58. boolean matches = bCryptPasswordEncoder.matches(loginBody.getPassword(), password);
  59. if(matches){
  60. SysUser s = new SysUser();
  61. s.setNickName(sysUser.getNickName());
  62. s.setDeptId(sysUser.getDeptId());
  63. s.setAvatar(sysUser.getAvatar());
  64. s.setUserName(sysUser.getUserName());
  65. s.setPhonenumber(sysUser.getPhonenumber());
  66. s.setSex(sysUser.getSex());
  67. s.setUserId(sysUser.getUserId());
  68. s.setDeptId(sysUser.getDeptId());
  69. resultData = ResultData.success(s);
  70. }else{
  71. resultData = ResultData.error(CodeMsg.PASSWORD_ERROR);
  72. }
  73. }else if(sysUser.getStatus().equals("1")){
  74. resultData = ResultData.error(CodeMsg.ACCOUNT_DISABLE);
  75. }
  76. }else {
  77. resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
  78. }
  79. }
  80. return gson.toJson(resultData);
  81. }
  82. /*
  83. * 查询订单列表
  84. * @param stationId
  85. * @param userName
  86. * @return
  87. */
  88. @RequestMapping (value = "/selectPosPayOrdersList", method = RequestMethod.GET)
  89. @ResponseBody
  90. public String selectPosPayOrdersList(@RequestParam Integer stationId, String beginTime, String endTime){
  91. Gson gson =new Gson();
  92. //返回结果集
  93. ResultData resultData = null;
  94. PayOrder payOrder = new PayOrder();
  95. payOrder.setStationId(stationId);
  96. payOrder.setBeginTime(beginTime);
  97. payOrder.setEndTime(endTime);
  98. payOrder.setStatus("1");
  99. List<PayOrder> payOrders = payOrderService.selectPayOrderList(payOrder);
  100. resultData = ResultData.success(payOrders);
  101. return gson.toJson(resultData);
  102. }
  103. /*
  104. * 获取班结人要班结的订单总和信息
  105. * @param stationId
  106. * @param userName
  107. * @return
  108. */
  109. @RequestMapping (value = "/getClassStructureList", method = RequestMethod.GET)
  110. @ResponseBody
  111. public String getClassStructureList(@RequestParam Integer stationId) throws ParseException {
  112. Gson gson =new Gson();
  113. //返回结果集
  114. ResultData resultData = null;
  115. if(stationId !=null){
  116. StationClassStructure classes =new StationClassStructure();
  117. classes.setStationId(stationId);
  118. //查询出上次班结,最后一条数据
  119. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  120. String beginTime="";
  121. //当前时间
  122. Date date= new Date();
  123. StationClassStructure classesStructure =new StationClassStructure();
  124. classesStructure.setStationId(stationId);
  125. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  126. if(sss != null){
  127. //班结过
  128. beginTime= dateFormat.format(sss.getClassStructureDate());
  129. }else {
  130. //没有班结过:第一次班结
  131. beginTime =null;
  132. }
  133. //获取上次班结时间
  134. PayOrder order=new PayOrder();
  135. order.setStationId(stationId);
  136. order.setStatus("1");
  137. order.setBeginTime(beginTime);
  138. order.setEndTime(dateFormat.format(date));
  139. //查询要班结订单总和
  140. order.setGroupBy("");
  141. List<Map> listSum = payOrderService.selectSum(order);
  142. //查询要班结订单总和按油品分类
  143. order.setGroupBy("oilName");
  144. List<Map> listSumGroupByOilName = payOrderService.selectSum(order);
  145. //查询要班结订单总和按支付方式
  146. order.setGroupBy("payType");
  147. List<Map> listSumGroupByPayType = payOrderService.selectSum(order);
  148. Map<String, Object> map = new HashMap();
  149. map.put("listSumGroupByOilName", listSumGroupByOilName);
  150. map.put("listSum", listSum);
  151. map.put("listSumGroupByPayType", listSumGroupByPayType);
  152. resultData =ResultData.success(map);
  153. }else {
  154. resultData =ResultData.error(CodeMsg.PARAMS_NUll);
  155. }
  156. return gson.toJson(resultData);
  157. }
  158. /*
  159. * pos机班结
  160. * @param stationClassStructure
  161. * @return
  162. * @throws ParseException
  163. */
  164. @RequestMapping (value = "/posClassStructure", method = RequestMethod.POST)
  165. @ResponseBody
  166. public Map posClassStructure (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
  167. Map map = new HashMap();
  168. //获取当前班结油站
  169. Integer stationId=stationClassStructure.getStationId();
  170. //String stationName=stationClassStructure.getStationName();
  171. String username = stationClassStructure.getClassStructureMan();
  172. //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间
  173. StationClassStructure classes =new StationClassStructure();
  174. classes.setStationId(stationId);
  175. //查询出上次班结,最后一条数据
  176. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  177. String beginTime="";
  178. //当前时间
  179. Date date= new Date();
  180. StationClassStructure classesStructure =new StationClassStructure();
  181. classesStructure.setStationId(stationId);
  182. DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
  183. String no=dFormat.format(date);
  184. classesStructure.setLikeClassStructureNo(no);
  185. //查询班结信息中本日班结次数
  186. StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure);
  187. if(structure!=null){
  188. if(structure.getNum()==0){
  189. no = no + "0"+1;
  190. }else{
  191. int num = structure.getNum()+1;
  192. if(num>0 && num<10){
  193. no = no + "0"+num;
  194. }else{
  195. no = no +""+ num;
  196. }
  197. }
  198. }
  199. int i=0;
  200. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  201. if(sss!=null){
  202. //获取上次班结时间
  203. PayOrder order=new PayOrder();
  204. order.setStationId(stationId);
  205. order.setStatus("1");
  206. beginTime= dateFormat.format(sss.getClassStructureDate());
  207. order.setBeginTime(beginTime);
  208. order.setEndTime( dateFormat.format(date));
  209. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  210. for(PayOrder payOrder:list){
  211. StationClassStructure stationclass =new StationClassStructure();
  212. stationclass.setStationId(payOrder.getStationId());
  213. stationclass.setStationName(payOrder.getStationName());
  214. stationclass.setClassStartDate(dateFormat.parse(beginTime));
  215. stationclass.setClassStructureMan(username);
  216. stationclass.setClassStructureNo(no);
  217. stationclass.setClassStructureDate(date);
  218. stationclass.setOrderNo(payOrder.getOrderNo());
  219. stationclass.setOilGun(payOrder.getOilGun());
  220. stationclass.setOilName(payOrder.getOilName());
  221. stationclass.setConsumerId(payOrder.getConsumerId());
  222. stationclass.setConsumer(payOrder.getConsumer());
  223. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  224. if(payOrder.getReceivableAmt()!=null){
  225. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  226. }else{
  227. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  228. }
  229. if(payOrder.getReceivedAmt()!=null){
  230. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  231. }else{
  232. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  233. }
  234. if(payOrder.getDiscountAmt()!=null){
  235. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  236. }else{
  237. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  238. }
  239. if(payOrder.getDiscountCouponAmt()!=null){
  240. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  241. }else{
  242. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  243. }
  244. if(payOrder.getWxAmt()!=null){
  245. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  246. }else{
  247. stationclass.setWxAmt(BigDecimal.valueOf(0));
  248. }
  249. if(payOrder.getZfbAmt()!=null){
  250. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  251. }else{
  252. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  253. }
  254. if(payOrder.getPosAmt()!=null){
  255. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  256. }else{
  257. stationclass.setPosAmt(BigDecimal.valueOf(0));
  258. }
  259. if(payOrder.getXjAmt()!=null){
  260. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  261. }else{
  262. stationclass.setXjAmt(BigDecimal.valueOf(0));
  263. }
  264. if(payOrder.getDidiAppAmt()!=null){
  265. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  266. }else{
  267. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  268. }
  269. if(payOrder.getTyAppAmt()!=null){
  270. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  271. }else{
  272. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  273. }
  274. if(payOrder.getOtherAmt()!=null){
  275. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  276. }else{
  277. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  278. }
  279. if(payOrder.getDzkAmt()!=null){
  280. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  281. }else{
  282. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  283. }
  284. if(payOrder.getMemberAmt()!=null){
  285. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  286. }else{
  287. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  288. }
  289. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  290. stationclass.setPayWay(payOrder.getPayWay());
  291. stationclass.setPayType(payOrder.getPayType());
  292. stationclass.setPayDate(payOrder.getPayDate());
  293. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  294. stationclass.setOrderType(payOrder.getOrderType());
  295. if(payOrder.getPrintCount()!=null){
  296. stationclass.setPrintNum(payOrder.getPrintCount());
  297. }else{
  298. stationclass.setPrintNum(Integer.valueOf("0"));
  299. }
  300. i= stationClassStructureService.insertStationClassStructure(stationclass);
  301. }
  302. }else{
  303. //初次班结 班结时间默认为当前时间,班结人username
  304. //根据班结时间查询订单
  305. PayOrder order=new PayOrder();
  306. order.setStationId(stationId);
  307. order.setEndTime(dateFormat.format(date));
  308. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  309. for(PayOrder payOrder:list){
  310. StationClassStructure stationclass =new StationClassStructure();
  311. stationclass.setStationId(payOrder.getStationId());
  312. stationclass.setStationName(payOrder.getStationName());
  313. stationclass.setClassStructureMan(username);
  314. stationclass.setClassStructureDate(date);
  315. stationclass.setClassStructureNo(no);
  316. stationclass.setOrderNo(payOrder.getOrderNo());
  317. stationclass.setOilGun(payOrder.getOilGun());
  318. stationclass.setOilName(payOrder.getOilName());
  319. stationclass.setConsumerId(payOrder.getConsumerId());
  320. stationclass.setConsumer(payOrder.getConsumer());
  321. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  322. if(payOrder.getReceivableAmt()!=null){
  323. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  324. }else{
  325. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  326. }
  327. if(payOrder.getReceivedAmt()!=null){
  328. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  329. }else{
  330. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  331. }
  332. if(payOrder.getDiscountAmt()!=null){
  333. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  334. }else{
  335. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  336. }
  337. if(payOrder.getDiscountCouponAmt()!=null){
  338. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  339. }else{
  340. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  341. }
  342. if(payOrder.getWxAmt()!=null){
  343. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  344. }else{
  345. stationclass.setWxAmt(BigDecimal.valueOf(0));
  346. }
  347. if(payOrder.getZfbAmt()!=null){
  348. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  349. }else{
  350. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  351. }
  352. if(payOrder.getPosAmt()!=null){
  353. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  354. }else{
  355. stationclass.setPosAmt(BigDecimal.valueOf(0));
  356. }
  357. if(payOrder.getXjAmt()!=null){
  358. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  359. }else{
  360. stationclass.setXjAmt(BigDecimal.valueOf(0));
  361. }
  362. if(payOrder.getDidiAppAmt()!=null){
  363. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  364. }else{
  365. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  366. }
  367. if(payOrder.getTyAppAmt()!=null){
  368. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  369. }else{
  370. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  371. }
  372. if(payOrder.getOtherAmt()!=null){
  373. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  374. }else{
  375. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  376. }
  377. if(payOrder.getDzkAmt()!=null){
  378. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  379. }else{
  380. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  381. }
  382. if(payOrder.getMemberAmt()!=null){
  383. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  384. }else{
  385. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  386. }
  387. if(payOrder.getOrderLiters() !=null){
  388. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  389. }else {
  390. stationclass.setOrderLiters(new BigDecimal(0));
  391. }
  392. stationclass.setPayWay(payOrder.getPayWay());
  393. stationclass.setPayType(payOrder.getPayType());
  394. stationclass.setPayDate(payOrder.getPayDate());
  395. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  396. stationclass.setOrderType(payOrder.getOrderType());
  397. if(payOrder.getPrintCount()!=null){
  398. stationclass.setPrintNum(payOrder.getPrintCount());
  399. }else{
  400. stationclass.setPrintNum(Integer.valueOf("0"));
  401. }
  402. i= stationClassStructureService.insertStationClassStructure(stationclass);
  403. }
  404. }
  405. StationClassStructure scs =new StationClassStructure();
  406. scs.setClassStructureNo(no);
  407. //汇总班结数据将汇总的数据插入到汇总数据中
  408. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  409. if(stationclass!=null){
  410. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  411. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  412. if(stationclass.getClassStartDate()!=null){
  413. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  414. }
  415. if(stationclass.getClassStructureDate()!=null){
  416. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  417. }
  418. stationClassesSummary.setStationName(stationclass.getStationName());
  419. if(stationclass.getStationId()!=null){
  420. stationClassesSummary.setStationId(stationclass.getStationId());
  421. }
  422. if(stationclass.getNum()!=null){
  423. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  424. }
  425. if(stationclass.getPrintNum()!=null){
  426. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  427. }
  428. if(stationclass.getOrderLiters()!=null){
  429. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  430. }
  431. if(stationclass.getAmt()!=null){
  432. stationClassesSummary.setSaleAmt(stationclass.getAmt());
  433. }
  434. if(stationclass.getDzkAmt()!=null){
  435. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  436. }else{
  437. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  438. }
  439. if(stationclass.getZfbAmt()!=null){
  440. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  441. }else{
  442. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  443. }
  444. if(stationclass.getWxAmt()!=null){
  445. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  446. }else{
  447. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  448. }
  449. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  450. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  451. if(i==1){
  452. //查询班结小票数据
  453. StationClassStructure classStructure= new StationClassStructure();
  454. classStructure.setClassStructureNo(no);
  455. classStructure.setStationId(stationId);
  456. //根据油品汇总数据
  457. List<StationClassStructure> list= stationClassStructureService.listOilStructure(classStructure);
  458. if(list!=null && list.size()>0){
  459. map.put("code","200");
  460. map.put("msg","班结成功");
  461. map.put("oilList",list);
  462. }
  463. }
  464. }else{
  465. map.put("code","100");
  466. map.put("msg","已班结");
  467. }
  468. return map;
  469. }
  470. }