PosMachineController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  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. String password = sysUser.getPassword();
  55. BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
  56. //密码加密判断已加密密码是否与真实密码相同
  57. boolean matches = bCryptPasswordEncoder.matches(loginBody.getPassword(), password);
  58. if(matches){
  59. resultData = ResultData.success(sysUser);
  60. }else{
  61. resultData = ResultData.error(CodeMsg.PASSWORD_ERROR);
  62. }
  63. }else {
  64. resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
  65. }
  66. }
  67. return gson.toJson(resultData);
  68. }
  69. /**
  70. * pos机班结
  71. * @param stationClassStructure
  72. * @return
  73. * @throws ParseException
  74. */
  75. @RequestMapping (value = "/posClassStructure", method = RequestMethod.POST)
  76. @ResponseBody
  77. public Map posClassStructure (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
  78. Map map = new HashMap();
  79. //获取当前班结油站
  80. Integer stationId=stationClassStructure.getStationId();
  81. //String stationName=stationClassStructure.getStationName();
  82. String username = stationClassStructure.getClassStructureMan();
  83. //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间
  84. StationClassStructure classes =new StationClassStructure();
  85. classes.setStationId(stationId);
  86. //查询出上次班结,最后一条数据
  87. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  88. String beginTime="";
  89. //当前时间
  90. Date date= new Date();
  91. StationClassStructure classesStructure =new StationClassStructure();
  92. classesStructure.setStationId(stationId);
  93. DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
  94. String no=dFormat.format(date);
  95. classesStructure.setLikeClassStructureNo(no);
  96. //查询班结信息中本日班结次数
  97. StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure);
  98. if(structure!=null){
  99. if(structure.getNum()==0){
  100. no = no + "0"+1;
  101. }else{
  102. int num = structure.getNum()+1;
  103. if(num>0 && num<10){
  104. no = no + "0"+num;
  105. }else{
  106. no = no +""+ num;
  107. }
  108. }
  109. }
  110. int i=0;
  111. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  112. if(sss!=null){
  113. //获取上次班结时间
  114. PayOrder order=new PayOrder();
  115. order.setStationId(stationId);
  116. order.setStatus("1");
  117. beginTime= dateFormat.format(sss.getClassStructureDate());
  118. order.setBeginTime(beginTime);
  119. order.setEndTime( dateFormat.format(date));
  120. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  121. for(PayOrder payOrder:list){
  122. StationClassStructure stationclass =new StationClassStructure();
  123. stationclass.setStationId(payOrder.getStationId());
  124. stationclass.setStationName(payOrder.getStationName());
  125. stationclass.setClassStartDate(dateFormat.parse(beginTime));
  126. stationclass.setClassStructureMan(username);
  127. stationclass.setClassStructureNo(no);
  128. stationclass.setClassStructureDate(date);
  129. stationclass.setOrderNo(payOrder.getOrderNo());
  130. stationclass.setOilGun(payOrder.getOilGun());
  131. stationclass.setOilName(payOrder.getOilName());
  132. stationclass.setConsumerId(payOrder.getConsumerId());
  133. stationclass.setConsumer(payOrder.getConsumer());
  134. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  135. if(payOrder.getReceivableAmt()!=null){
  136. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  137. }else{
  138. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  139. }
  140. if(payOrder.getReceivedAmt()!=null){
  141. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  142. }else{
  143. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  144. }
  145. if(payOrder.getDiscountAmt()!=null){
  146. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  147. }else{
  148. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  149. }
  150. if(payOrder.getDiscountCouponAmt()!=null){
  151. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  152. }else{
  153. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  154. }
  155. if(payOrder.getWxAmt()!=null){
  156. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  157. }else{
  158. stationclass.setWxAmt(BigDecimal.valueOf(0));
  159. }
  160. if(payOrder.getZfbAmt()!=null){
  161. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  162. }else{
  163. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  164. }
  165. if(payOrder.getPosAmt()!=null){
  166. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  167. }else{
  168. stationclass.setPosAmt(BigDecimal.valueOf(0));
  169. }
  170. if(payOrder.getXjAmt()!=null){
  171. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  172. }else{
  173. stationclass.setXjAmt(BigDecimal.valueOf(0));
  174. }
  175. if(payOrder.getDidiAppAmt()!=null){
  176. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  177. }else{
  178. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  179. }
  180. if(payOrder.getTyAppAmt()!=null){
  181. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  182. }else{
  183. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  184. }
  185. if(payOrder.getOtherAmt()!=null){
  186. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  187. }else{
  188. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  189. }
  190. if(payOrder.getDzkAmt()!=null){
  191. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  192. }else{
  193. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  194. }
  195. if(payOrder.getMemberAmt()!=null){
  196. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  197. }else{
  198. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  199. }
  200. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  201. stationclass.setPayWay(payOrder.getPayWay());
  202. stationclass.setPayType(payOrder.getPayType());
  203. stationclass.setPayDate(payOrder.getPayDate());
  204. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  205. stationclass.setOrderType(payOrder.getOrderType());
  206. if(payOrder.getPrintCount()!=null){
  207. stationclass.setPrintNum(payOrder.getPrintCount());
  208. }else{
  209. stationclass.setPrintNum(Integer.valueOf("0"));
  210. }
  211. i= stationClassStructureService.insertStationClassStructure(stationclass);
  212. }
  213. }else{
  214. //初次班结 班结时间默认为当前时间,班结人username
  215. //根据班结时间查询订单
  216. PayOrder order=new PayOrder();
  217. order.setStationId(stationId);
  218. order.setEndTime(dateFormat.format(date));
  219. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  220. for(PayOrder payOrder:list){
  221. StationClassStructure stationclass =new StationClassStructure();
  222. stationclass.setStationId(payOrder.getStationId());
  223. stationclass.setStationName(payOrder.getStationName());
  224. stationclass.setClassStructureMan(username);
  225. stationclass.setClassStructureDate(date);
  226. stationclass.setClassStructureNo(no);
  227. stationclass.setOrderNo(payOrder.getOrderNo());
  228. stationclass.setOilGun(payOrder.getOilGun());
  229. stationclass.setOilName(payOrder.getOilName());
  230. stationclass.setConsumerId(payOrder.getConsumerId());
  231. stationclass.setConsumer(payOrder.getConsumer());
  232. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  233. if(payOrder.getReceivableAmt()!=null){
  234. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  235. }else{
  236. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  237. }
  238. if(payOrder.getReceivedAmt()!=null){
  239. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  240. }else{
  241. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  242. }
  243. if(payOrder.getDiscountAmt()!=null){
  244. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  245. }else{
  246. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  247. }
  248. if(payOrder.getDiscountCouponAmt()!=null){
  249. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  250. }else{
  251. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  252. }
  253. if(payOrder.getWxAmt()!=null){
  254. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  255. }else{
  256. stationclass.setWxAmt(BigDecimal.valueOf(0));
  257. }
  258. if(payOrder.getZfbAmt()!=null){
  259. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  260. }else{
  261. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  262. }
  263. if(payOrder.getPosAmt()!=null){
  264. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  265. }else{
  266. stationclass.setPosAmt(BigDecimal.valueOf(0));
  267. }
  268. if(payOrder.getXjAmt()!=null){
  269. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  270. }else{
  271. stationclass.setXjAmt(BigDecimal.valueOf(0));
  272. }
  273. if(payOrder.getDidiAppAmt()!=null){
  274. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  275. }else{
  276. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  277. }
  278. if(payOrder.getTyAppAmt()!=null){
  279. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  280. }else{
  281. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  282. }
  283. if(payOrder.getOtherAmt()!=null){
  284. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  285. }else{
  286. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  287. }
  288. if(payOrder.getDzkAmt()!=null){
  289. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  290. }else{
  291. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  292. }
  293. if(payOrder.getMemberAmt()!=null){
  294. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  295. }else{
  296. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  297. }
  298. if(payOrder.getOrderLiters() !=null){
  299. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  300. }else {
  301. stationclass.setOrderLiters(new BigDecimal(0));
  302. }
  303. stationclass.setPayWay(payOrder.getPayWay());
  304. stationclass.setPayType(payOrder.getPayType());
  305. stationclass.setPayDate(payOrder.getPayDate());
  306. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  307. stationclass.setOrderType(payOrder.getOrderType());
  308. if(payOrder.getPrintCount()!=null){
  309. stationclass.setPrintNum(payOrder.getPrintCount());
  310. }else{
  311. stationclass.setPrintNum(Integer.valueOf("0"));
  312. }
  313. i= stationClassStructureService.insertStationClassStructure(stationclass);
  314. }
  315. }
  316. StationClassStructure scs =new StationClassStructure();
  317. scs.setClassStructureNo(no);
  318. //汇总班结数据将汇总的数据插入到汇总数据中
  319. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  320. if(stationclass!=null){
  321. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  322. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  323. if(stationclass.getClassStartDate()!=null){
  324. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  325. }
  326. if(stationclass.getClassStructureDate()!=null){
  327. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  328. }
  329. stationClassesSummary.setStationName(stationclass.getStationName());
  330. if(stationclass.getStationId()!=null){
  331. stationClassesSummary.setStationId(stationclass.getStationId());
  332. }
  333. if(stationclass.getNum()!=null){
  334. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  335. }
  336. if(stationclass.getPrintNum()!=null){
  337. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  338. }
  339. if(stationclass.getOrderLiters()!=null){
  340. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  341. }
  342. if(stationclass.getAmt()!=null){
  343. stationClassesSummary.setSaleAmt(stationclass.getAmt());
  344. }
  345. if(stationclass.getDzkAmt()!=null){
  346. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  347. }else{
  348. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  349. }
  350. if(stationclass.getZfbAmt()!=null){
  351. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  352. }else{
  353. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  354. }
  355. if(stationclass.getWxAmt()!=null){
  356. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  357. }else{
  358. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  359. }
  360. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  361. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  362. if(i==1){
  363. //查询班结小票数据
  364. StationClassStructure classStructure= new StationClassStructure();
  365. classStructure.setClassStructureNo(no);
  366. classStructure.setStationId(stationId);
  367. //根据油品汇总数据
  368. List<StationClassStructure> list= stationClassStructureService.listOilStructure(classStructure);
  369. if(list!=null && list.size()>0){
  370. map.put("code","200");
  371. map.put("msg","班结成功");
  372. map.put("oilList",list);
  373. }else{
  374. map.put("code","500");
  375. map.put("msg","班结失败");
  376. }
  377. }
  378. }else{
  379. map.put("code","500");
  380. map.put("msg","班结失败");
  381. }
  382. return map;
  383. }
  384. }