PosMachineController.java 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946
  1. package com.platform.yijia.controller;
  2. import com.github.pagehelper.PageHelper;
  3. import com.github.pagehelper.PageInfo;
  4. import com.google.gson.Gson;
  5. import com.platform.yijia.param.request.LoginBody;
  6. import com.platform.yijia.pojo.*;
  7. import com.platform.yijia.service.*;
  8. import com.platform.yijia.utils.CodeMsg;
  9. import com.platform.yijia.utils.CryptUtil;
  10. import com.platform.yijia.utils.DESUtils;
  11. import com.platform.yijia.utils.ResultData;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.apache.ibatis.annotations.Param;
  14. import org.omg.CORBA.ObjectHelper;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  17. import org.springframework.stereotype.Controller;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import org.springframework.web.bind.annotation.*;
  20. import javax.annotation.Resource;
  21. import java.math.BigDecimal;
  22. import java.text.DateFormat;
  23. import java.text.ParseException;
  24. import java.text.SimpleDateFormat;
  25. import java.util.*;
  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 StationService stationService;
  39. @Resource
  40. private IStationClassStructureService stationClassStructureService;
  41. @Resource
  42. private IStationClassesSummaryService stationClassesSummaryService;
  43. @Resource
  44. private PayOrderService payOrderService;
  45. @Value("${3des.pwd}")
  46. private String pwd;
  47. //POS机端用户登录
  48. @RequestMapping(value = "/loginPosMachine", method = RequestMethod.POST)
  49. @ResponseBody
  50. public String loginPosMachine(@RequestBody LoginBody loginBody){
  51. //Using generated security password: a78f4bd0-6087-4fff-ae5d-f2e4cd8c7961
  52. Gson gson =new Gson();
  53. //返回结果集
  54. ResultData resultData = null;
  55. if(loginBody.getUserName() !=null && loginBody.getPassword() !=null){
  56. SysUser sysUser = posMachineService.selectUserByUserName(loginBody.getUserName());
  57. if(sysUser !=null){
  58. if(sysUser.getStatus().equals("0")){
  59. String password = sysUser.getPassword();
  60. String webPassword = loginBody.getPassword(); //前端传来加密码
  61. String ps= DESUtils.decrypt(webPassword, pwd);
  62. BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
  63. //密码加密判断已加密密码是否与真实密码相同
  64. boolean matches = bCryptPasswordEncoder.matches(ps, password);
  65. if(matches){
  66. SysUser s = new SysUser();
  67. s.setNickName(sysUser.getNickName());
  68. s.setDeptId(sysUser.getDeptId());
  69. s.setAvatar(sysUser.getAvatar());
  70. s.setUserName(sysUser.getUserName());
  71. s.setPhonenumber(sysUser.getPhonenumber());
  72. s.setSex(sysUser.getSex());
  73. s.setUserId(sysUser.getUserId());
  74. s.setDeptId(sysUser.getDeptId());
  75. resultData = ResultData.success(s);
  76. }else{
  77. resultData = ResultData.error(CodeMsg.PASSWORD_ERROR);
  78. }
  79. }else if(sysUser.getStatus().equals("1")){
  80. resultData = ResultData.error(CodeMsg.ACCOUNT_DISABLE);
  81. }
  82. }else {
  83. resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST);
  84. }
  85. }
  86. return gson.toJson(resultData);
  87. }
  88. //获取该油站油枪绑定的POS机信息
  89. @RequestMapping (value = "/getStationDeviceManager", method = RequestMethod.GET)
  90. @ResponseBody
  91. public String getStationDeviceManager(@RequestParam Integer stationId, String oilGun, String deviceType){
  92. Gson gson =new Gson();
  93. //返回结果集
  94. ResultData resultData = null;
  95. if(stationId !=null && StringUtils.isNotBlank(deviceType)){
  96. StationDeviceManager stationDeviceManager = new StationDeviceManager();
  97. stationDeviceManager.setGunNo(oilGun);
  98. stationDeviceManager.setStationId(stationId);
  99. stationDeviceManager.setDeviceType(deviceType);
  100. //获取油枪绑定的打印设备信息
  101. StationDeviceManager stationDeviceManagerList = stationService.getStationDeviceManager(stationDeviceManager);
  102. resultData = ResultData.success(stationDeviceManagerList);
  103. }else {
  104. resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
  105. }
  106. return gson.toJson(resultData);
  107. }
  108. //根据POS机tusn获取该油站油枪绑定的POS机信息
  109. @RequestMapping (value = "/getStationDeviceManagerBytusn", method = RequestMethod.GET)
  110. @ResponseBody
  111. public String getStationDeviceManagerBytusn(@RequestParam String tusn){
  112. Gson gson =new Gson();
  113. //返回结果集
  114. ResultData resultData = null;
  115. if(StringUtils.isNotBlank(tusn)){
  116. StationDeviceManager stationDeviceManager = new StationDeviceManager();
  117. stationDeviceManager.setDeviceNo(tusn);
  118. //获取油枪绑定的打印设备信息
  119. StationDeviceManager stationDeviceManagerList = stationService.getStationDeviceManager(stationDeviceManager);
  120. resultData = ResultData.success(stationDeviceManagerList);
  121. }else {
  122. resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
  123. }
  124. return gson.toJson(resultData);
  125. }
  126. //查询POS机昨天和近七天数据
  127. @RequestMapping (value = "/selectPosYesterDayAndSevenData", method = RequestMethod.GET)
  128. @ResponseBody
  129. public String selectPosYesterDayAndSevenData(@RequestParam Integer stationId){
  130. Gson gson =new Gson();
  131. //返回结果集
  132. ResultData resultData = null;
  133. if(stationId !=null){
  134. PayOrder payOrder = new PayOrder();
  135. payOrder.setStatus("1");
  136. payOrder.setStationId(stationId);
  137. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  138. payOrder.setEndTime(sdf.format(new Date()));
  139. Calendar c = new GregorianCalendar();
  140. c.setTime(new Date());
  141. c.add(Calendar.DATE, -8);
  142. payOrder.setBeginTime(sdf.format(c.getTime()));
  143. //获取近七天数据
  144. List<Map<String, Object>> mapList = payOrderService.selectPosRecentlySevenData(payOrder);
  145. //获取昨日数据
  146. Calendar cc = new GregorianCalendar();
  147. payOrder.setEndTime(sdf.format(new Date()));
  148. cc.add(Calendar.DATE, -1);
  149. payOrder.setBeginTime(sdf.format(cc.getTime()));
  150. cc.add(Calendar.DATE, -6);
  151. payOrder.setEndTimeQOQ(sdf.format(cc.getTime()));
  152. cc.add(Calendar.DATE, -1);
  153. payOrder.setBeginTimeQOQ(sdf.format(cc.getTime()));
  154. Map<String, Object> map = payOrderService.selectPosYesterDayData(payOrder);
  155. //存放结果集
  156. Map<String, Object> resultMap = new HashMap<>();
  157. resultMap.put("yesterDayData", map);
  158. resultMap.put("recentlySevenData", mapList);
  159. resultData = ResultData.success(resultMap);
  160. }else {
  161. resultData = ResultData.error(CodeMsg.REQUEST_FAIL);
  162. }
  163. return gson.toJson(resultData);
  164. }
  165. // 获取订单的支付方式列表
  166. @RequestMapping (value = "/selectPayTypeList")
  167. @ResponseBody
  168. public String selectPayTypeList(){
  169. Gson gson =new Gson();
  170. //返回结果集
  171. ResultData resultData = null;
  172. List<PayType> payTypeList = payOrderService.selectPayTypeList();
  173. Map<String, Object> map = new HashMap<>();
  174. map.put("payTypeList", payTypeList);
  175. resultData = ResultData.success(map);
  176. return gson.toJson(resultData);
  177. }
  178. /*
  179. * 查询订单列表
  180. * @param stationId
  181. * @param userName
  182. * @return
  183. */
  184. @RequestMapping (value = "/selectPosPayOrdersList", method = RequestMethod.POST)
  185. @ResponseBody
  186. public String selectPosPayOrdersList(@RequestBody PayOrder request){
  187. Gson gson =new Gson();
  188. //返回结果集
  189. ResultData resultData = null;
  190. if(request.getStationId() !=null){
  191. PayOrder payOrder = new PayOrder();
  192. payOrder.setStationId(request.getStationId());
  193. payOrder.setBeginTime(request.getBeginTime());
  194. payOrder.setEndTime(request.getEndTime());
  195. payOrder.setPayType(request.getPayType());
  196. payOrder.setStatus("1");
  197. Map<String, Object> resultMap = new HashMap<>();
  198. //分页
  199. if(request.getPageNum() !=null && request.getPageSize() !=null){
  200. PageHelper.startPage(request.getPageNum(), request.getPageSize());
  201. List<PayOrder> payOrderList = payOrderService.selectPayOrderListFormater(payOrder);
  202. PageInfo pageInfo = new PageInfo(payOrderList);
  203. resultMap.put("orderList", pageInfo);
  204. resultData = ResultData.success(resultMap);
  205. }else {
  206. resultData = ResultData.error(CodeMsg.PARAMS_NUll);
  207. }
  208. }else {
  209. resultData = ResultData.error(CodeMsg.PARAMS_NUll);
  210. }
  211. return gson.toJson(resultData);
  212. }
  213. /*
  214. * 查询班结后总数据
  215. * @param stationId
  216. * @param userName
  217. * @return
  218. */
  219. @RequestMapping (value = "/getStationClassesSummaryList", method = RequestMethod.GET)
  220. @ResponseBody
  221. public String getStationClassesSummaryList(@RequestParam String classStructureTime, Integer stationId) throws ParseException {
  222. Gson gson =new Gson();
  223. //返回结果集
  224. ResultData resultData = null;
  225. if(stationId !=null){
  226. StationClassesSummary stationClassesSummary = new StationClassesSummary();
  227. stationClassesSummary.setStationId(stationId);
  228. if(classStructureTime !=null && classStructureTime !=""){
  229. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  230. stationClassesSummary.setStartDate(sdf.parse(classStructureTime));
  231. Calendar c = Calendar.getInstance();
  232. c.setTime(sdf.parse(classStructureTime));
  233. c.add(Calendar.DAY_OF_MONTH,+1);
  234. stationClassesSummary.setEndDate(c.getTime());
  235. }
  236. List<Map> stationClassesSummariesList = stationClassesSummaryService.getStationClassesSummaryList(stationClassesSummary);
  237. Map map = new HashMap();
  238. map.put("listSum", stationClassesSummariesList);
  239. resultData = ResultData.success(map);
  240. }else {
  241. resultData = ResultData.success(CodeMsg.REQUEST_FAIL);
  242. }
  243. return gson.toJson(resultData);
  244. }
  245. /*
  246. * 获取班结人要班结的订单总和信息
  247. * @param stationId
  248. * @param userName
  249. * @return
  250. */
  251. @RequestMapping (value = "/getClassStructureListByClassStructureNo", method = RequestMethod.GET)
  252. @ResponseBody
  253. public String getClassStructureListByClassStructureNo(@RequestParam Integer stationId, String classStructureNo){
  254. Gson gson =new Gson();
  255. //返回结果集
  256. ResultData resultData = null;
  257. if(stationId !=null && classStructureNo !=null){
  258. StationClassStructure classes =new StationClassStructure();
  259. classes.setStationId(stationId);
  260. classes.setClassStructureNo(classStructureNo);
  261. classes.setGroupBy("");
  262. List<Map<String, String>> listSum = stationClassStructureService.selectClassStructureSum(classes);
  263. classes.setGroupBy("oilName");
  264. List<Map<String, String>> listSumGroupByOilName = stationClassStructureService.selectClassStructureSum(classes);
  265. classes.setGroupBy("payType");
  266. List<Map<String, String>> listSumGroupByPayType = stationClassStructureService.selectClassStructureSum(classes);
  267. classes.setGroupBy("timeAndMan");
  268. List<Map<String, String>> timeList = stationClassStructureService.selectClassStructureSum(classes);
  269. // if(timeList !=null && listSum.size() ==0){
  270. // //第一次班结
  271. // if(timeList.get(0).get("beginTime").equals("")){
  272. // PayOrder payOrder = new PayOrder();
  273. // payOrder.setStatus("1");
  274. // payOrder.setStationId(stationId);
  275. // PayOrder payOrderInfoMin = payOrderService.getPayOrderInfoMin(payOrder);
  276. // DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  277. // //没有班结过:第一次班结
  278. // timeList.get(0).replace("beginTime", dateFormat.format(payOrderInfoMin.getPayDate()));
  279. // }
  280. // }
  281. Map<String, Object> map = new HashMap();
  282. map.put("listSumGroupByOilName", listSumGroupByOilName);
  283. map.put("listSum", listSum);
  284. map.put("timeList", timeList);
  285. map.put("listSumGroupByPayType", listSumGroupByPayType);
  286. resultData = ResultData.success(map);
  287. }
  288. return gson.toJson(resultData);
  289. }
  290. /*
  291. * 获取班结人要班结的订单总和信息
  292. * @param stationId
  293. * @param userName
  294. * @return
  295. */
  296. @RequestMapping (value = "/getClassStructureList", method = RequestMethod.GET)
  297. @ResponseBody
  298. public String getClassStructureList(@RequestParam Integer stationId) throws ParseException {
  299. Gson gson =new Gson();
  300. //返回结果集
  301. ResultData resultData = null;
  302. if(stationId !=null){
  303. StationClassStructure classes =new StationClassStructure();
  304. classes.setStationId(stationId);
  305. //查询出上次班结,最后一条数据
  306. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  307. String beginTime="";
  308. //当前时间
  309. Date date= new Date();
  310. StationClassStructure classesStructure =new StationClassStructure();
  311. classesStructure.setStationId(stationId);
  312. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  313. if(sss != null){
  314. //班结过
  315. beginTime= dateFormat.format(sss.getClassStructureDate());
  316. }else {
  317. PayOrder payOrder = new PayOrder();
  318. payOrder.setStatus("1");
  319. payOrder.setStationId(stationId);
  320. PayOrder payOrderInfoMin = payOrderService.getPayOrderInfoMin(payOrder);
  321. //没有班结过:第一次班结
  322. beginTime =dateFormat.format(payOrderInfoMin.getPayDate());
  323. }
  324. //获取上次班结时间
  325. PayOrder order=new PayOrder();
  326. order.setStationId(stationId);
  327. order.setStatus("1");
  328. order.setBeginTime(beginTime);
  329. order.setEndTime(dateFormat.format(date));
  330. //查询要班结订单总和
  331. order.setGroupBy("");
  332. List<Map> listSum = payOrderService.selectSum(order);
  333. //班结时间
  334. List<Map> timeList = new ArrayList<>();
  335. Map<String, String> m = new HashMap<>();
  336. m.put("beginTime", beginTime);
  337. m.put("endTime", dateFormat.format(date));
  338. timeList.add(m);
  339. //查询要班结订单总和按油品分类
  340. order.setGroupBy("oilName");
  341. List<Map> listSumGroupByOilName = payOrderService.selectSum(order);
  342. //查询要班结订单总和按支付方式
  343. order.setGroupBy("payType");
  344. List<Map> listSumGroupByPayType = payOrderService.selectSum(order);
  345. Map<String, Object> map = new HashMap();
  346. map.put("listSumGroupByOilName", listSumGroupByOilName);
  347. map.put("listSum", listSum);
  348. map.put("timeList", timeList);
  349. map.put("listSumGroupByPayType", listSumGroupByPayType);
  350. resultData =ResultData.success(map);
  351. }else {
  352. resultData =ResultData.error(CodeMsg.PARAMS_NUll);
  353. }
  354. return gson.toJson(resultData);
  355. }
  356. /*
  357. * pos机班结
  358. * @param stationClassStructure
  359. * @return
  360. * @throws ParseException
  361. */
  362. @RequestMapping (value = "/posClassStructure", method = RequestMethod.POST)
  363. @ResponseBody
  364. @Transactional
  365. public Map posClassStructure (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
  366. Map map = new HashMap();
  367. //获取当前班结油站
  368. Integer stationId=stationClassStructure.getStationId();
  369. //String stationName=stationClassStructure.getStationName();
  370. String username = stationClassStructure.getClassStructureMan();
  371. //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间
  372. StationClassStructure classes =new StationClassStructure();
  373. classes.setStationId(stationId);
  374. //查询出上次班结,最后一条数据
  375. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  376. String beginTime="";
  377. //当前时间
  378. Date date= new Date();
  379. StationClassStructure classesStructure =new StationClassStructure();
  380. classesStructure.setStationId(stationId);
  381. DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
  382. String no=dFormat.format(date);
  383. classesStructure.setLikeClassStructureNo(no);
  384. //查询班结信息中本日班结次数
  385. StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure);
  386. if(structure!=null){
  387. if(structure.getNum()==0){
  388. no = no + "0"+1;
  389. }else{
  390. int num = structure.getNum()+1;
  391. if(num>0 && num<10){
  392. no = no + "0"+num;
  393. }else{
  394. no = no +""+ num;
  395. }
  396. }
  397. }
  398. int i=0;
  399. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  400. if(sss!=null){
  401. //获取上次班结时间
  402. PayOrder order=new PayOrder();
  403. order.setStationId(stationId);
  404. order.setStatus("1");
  405. beginTime= dateFormat.format(sss.getClassStructureDate());
  406. order.setBeginTime(beginTime);
  407. order.setEndTime( dateFormat.format(date));
  408. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  409. for(PayOrder payOrder:list){
  410. StationClassStructure stationclass =new StationClassStructure();
  411. stationclass.setStationId(payOrder.getStationId());
  412. stationclass.setStationName(payOrder.getStationName());
  413. stationclass.setClassStartDate(dateFormat.parse(beginTime));
  414. stationclass.setClassStructureMan(username);
  415. stationclass.setClassStructureNo(no);
  416. stationclass.setClassStructureDate(date);
  417. stationclass.setOrderNo(payOrder.getOrderNo());
  418. stationclass.setOilGun(payOrder.getOilGun());
  419. stationclass.setOilName(payOrder.getOilName());
  420. stationclass.setConsumerId(payOrder.getConsumerId());
  421. stationclass.setConsumer(payOrder.getConsumer());
  422. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  423. if(payOrder.getReceivableAmt()!=null){
  424. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  425. }else{
  426. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  427. }
  428. if(payOrder.getReceivedAmt()!=null){
  429. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  430. }else{
  431. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  432. }
  433. if(payOrder.getDiscountAmt()!=null){
  434. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  435. }else{
  436. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  437. }
  438. if(payOrder.getDiscountCouponAmt()!=null){
  439. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  440. }else{
  441. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  442. }
  443. if(payOrder.getWxAmt()!=null){
  444. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  445. }else{
  446. stationclass.setWxAmt(BigDecimal.valueOf(0));
  447. }
  448. if(payOrder.getZfbAmt()!=null){
  449. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  450. }else{
  451. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  452. }
  453. if(payOrder.getPosAmt()!=null){
  454. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  455. }else{
  456. stationclass.setPosAmt(BigDecimal.valueOf(0));
  457. }
  458. if(payOrder.getXjAmt()!=null){
  459. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  460. }else{
  461. stationclass.setXjAmt(BigDecimal.valueOf(0));
  462. }
  463. if(payOrder.getDidiAppAmt()!=null){
  464. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  465. }else{
  466. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  467. }
  468. if(payOrder.getTyAppAmt()!=null){
  469. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  470. }else{
  471. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  472. }
  473. if(payOrder.getOtherAmt()!=null){
  474. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  475. }else{
  476. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  477. }
  478. if(payOrder.getDzkAmt()!=null){
  479. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  480. }else{
  481. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  482. }
  483. if(payOrder.getMemberAmt()!=null){
  484. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  485. }else{
  486. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  487. }
  488. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  489. stationclass.setPayWay(payOrder.getPayWay());
  490. stationclass.setPayType(payOrder.getPayType());
  491. stationclass.setPayDate(payOrder.getPayDate());
  492. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  493. stationclass.setOrderType(payOrder.getOrderType());
  494. if(payOrder.getPrintCount()!=null){
  495. stationclass.setPrintNum(payOrder.getPrintCount());
  496. }else{
  497. stationclass.setPrintNum(Integer.valueOf("0"));
  498. }
  499. i= stationClassStructureService.insertStationClassStructure(stationclass);
  500. }
  501. }else{
  502. //初次班结 班结时间默认为当前时间,班结人username
  503. //根据班结时间查询订单
  504. PayOrder order=new PayOrder();
  505. order.setStationId(stationId);
  506. order.setStatus("1");
  507. //获取第一个最早时间的订单
  508. PayOrder payOrderInfoMin = payOrderService.getPayOrderInfoMin(order);
  509. //没有班结过:第一次班结获取第一个订单的下单时间
  510. beginTime =dateFormat.format(payOrderInfoMin.getPayDate());
  511. order.setBeginTime(beginTime);
  512. order.setEndTime(dateFormat.format(date));
  513. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  514. for(PayOrder payOrder:list){
  515. StationClassStructure stationclass =new StationClassStructure();
  516. stationclass.setClassStartDate(payOrderInfoMin.getPayDate());
  517. stationclass.setStationId(payOrder.getStationId());
  518. stationclass.setStationName(payOrder.getStationName());
  519. stationclass.setClassStructureMan(username);
  520. stationclass.setClassStructureDate(date);
  521. stationclass.setClassStructureNo(no);
  522. stationclass.setOrderNo(payOrder.getOrderNo());
  523. stationclass.setOilGun(payOrder.getOilGun());
  524. stationclass.setOilName(payOrder.getOilName());
  525. stationclass.setConsumerId(payOrder.getConsumerId());
  526. stationclass.setConsumer(payOrder.getConsumer());
  527. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  528. if(payOrder.getReceivableAmt()!=null){
  529. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  530. }else{
  531. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  532. }
  533. if(payOrder.getReceivedAmt()!=null){
  534. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  535. }else{
  536. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  537. }
  538. if(payOrder.getDiscountAmt()!=null){
  539. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  540. }else{
  541. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  542. }
  543. if(payOrder.getDiscountCouponAmt()!=null){
  544. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  545. }else{
  546. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  547. }
  548. if(payOrder.getWxAmt()!=null){
  549. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  550. }else{
  551. stationclass.setWxAmt(BigDecimal.valueOf(0));
  552. }
  553. if(payOrder.getZfbAmt()!=null){
  554. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  555. }else{
  556. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  557. }
  558. if(payOrder.getPosAmt()!=null){
  559. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  560. }else{
  561. stationclass.setPosAmt(BigDecimal.valueOf(0));
  562. }
  563. if(payOrder.getXjAmt()!=null){
  564. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  565. }else{
  566. stationclass.setXjAmt(BigDecimal.valueOf(0));
  567. }
  568. if(payOrder.getDidiAppAmt()!=null){
  569. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  570. }else{
  571. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  572. }
  573. if(payOrder.getTyAppAmt()!=null){
  574. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  575. }else{
  576. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  577. }
  578. if(payOrder.getOtherAmt()!=null){
  579. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  580. }else{
  581. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  582. }
  583. if(payOrder.getDzkAmt()!=null){
  584. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  585. }else{
  586. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  587. }
  588. if(payOrder.getMemberAmt()!=null){
  589. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  590. }else{
  591. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  592. }
  593. if(payOrder.getOrderLiters() !=null){
  594. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  595. }else {
  596. stationclass.setOrderLiters(new BigDecimal(0));
  597. }
  598. stationclass.setPayWay(payOrder.getPayWay());
  599. stationclass.setPayType(payOrder.getPayType());
  600. stationclass.setPayDate(payOrder.getPayDate());
  601. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  602. stationclass.setOrderType(payOrder.getOrderType());
  603. if(payOrder.getPrintCount()!=null){
  604. stationclass.setPrintNum(payOrder.getPrintCount());
  605. }else{
  606. stationclass.setPrintNum(Integer.valueOf("0"));
  607. }
  608. i= stationClassStructureService.insertStationClassStructure(stationclass);
  609. }
  610. }
  611. StationClassStructure scs =new StationClassStructure();
  612. scs.setClassStructureNo(no);
  613. //汇总班结数据将汇总的数据插入到汇总数据中
  614. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  615. if(stationclass!=null){
  616. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  617. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  618. if(stationclass.getClassStartDate()!=null){
  619. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  620. }
  621. if(stationclass.getClassStructureDate()!=null){
  622. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  623. }
  624. stationClassesSummary.setStationName(stationclass.getStationName());
  625. if(stationclass.getStationId()!=null){
  626. stationClassesSummary.setStationId(stationclass.getStationId());
  627. }
  628. if(stationclass.getNum()!=null){
  629. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  630. }
  631. if(stationclass.getPrintNum()!=null){
  632. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  633. }else {
  634. stationClassesSummary.setPrintNum(Integer.valueOf(0));
  635. }
  636. if(stationclass.getOrderLiters()!=null){
  637. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  638. }
  639. if(stationclass.getAmt()!=null){
  640. stationClassesSummary.setSaleAmt(stationclass.getAmt());
  641. }
  642. if(stationclass.getDzkAmt()!=null){
  643. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  644. }else{
  645. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  646. }
  647. if(stationclass.getZfbAmt()!=null){
  648. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  649. }else{
  650. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  651. }
  652. if(stationclass.getWxAmt()!=null){
  653. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  654. }else{
  655. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  656. }
  657. if(stationclass.getAmt() !=null){
  658. stationClassesSummary.setAmt(stationclass.getAmt());
  659. }else {
  660. stationClassesSummary.setAmt(BigDecimal.valueOf(0));
  661. }
  662. if(stationclass.getDiscountAmt() !=null){
  663. stationClassesSummary.setDiscountAmt(stationclass.getDiscountAmt());
  664. }else {
  665. stationClassesSummary.setDiscountAmt(BigDecimal.valueOf(0));
  666. }
  667. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  668. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  669. if(i==1){
  670. map.put("retCode","0");
  671. map.put("msg","班结成功");
  672. }
  673. }else{
  674. map.put("retCode","-1");
  675. map.put("msg","已班结");
  676. }
  677. return map;
  678. }
  679. /*
  680. * pos机班结
  681. * @param stationClassStructure
  682. * @return
  683. * @throws ParseException
  684. */
  685. @RequestMapping (value = "/posClassStructureNew", method = RequestMethod.POST)
  686. @ResponseBody
  687. @Transactional
  688. public Map posClassStructureNew (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
  689. Map map = new HashMap();
  690. //获取当前班结油站
  691. Integer stationId=stationClassStructure.getStationId();
  692. String username = stationClassStructure.getClassStructureMan();
  693. //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间
  694. StationClassStructure classes =new StationClassStructure();
  695. classes.setStationId(stationId);
  696. //查询出上次班结,最后一条数据
  697. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  698. String beginTime="";
  699. //当前时间
  700. Date date= new Date();
  701. StationClassStructure classesStructure =new StationClassStructure();
  702. classesStructure.setStationId(stationId);
  703. DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
  704. String no=dFormat.format(date);
  705. classesStructure.setLikeClassStructureNo(no);
  706. //查询班结信息中本日班结次数
  707. StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure);
  708. if(structure!=null){
  709. if(structure.getNum()==0){
  710. no = no + "0"+1;
  711. }else{
  712. int num = structure.getNum()+1;
  713. if(num>0 && num<10){
  714. no = no + "0"+num;
  715. }else{
  716. no = no +""+ num;
  717. }
  718. }
  719. }
  720. int i=0;
  721. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  722. PayOrder order=new PayOrder();
  723. order.setStationId(stationId);
  724. order.setStatus("1");
  725. PayOrder payOrderInfoMin = new PayOrder();
  726. if(sss!=null){
  727. //获取上次班结时间
  728. beginTime= dateFormat.format(sss.getClassStructureDate());
  729. order.setBeginTime(beginTime);
  730. order.setEndTime( dateFormat.format(date));
  731. }else{
  732. //获取第一个最早时间的订单
  733. payOrderInfoMin = payOrderService.getPayOrderInfoMin(order);
  734. //初次班结 班结时间默认为当前时间,班结人username
  735. //根据班结时间查询订单
  736. //没有班结过:第一次班结获取第一个订单的下单时间
  737. beginTime =dateFormat.format(payOrderInfoMin.getPayDate());
  738. order.setBeginTime(beginTime);
  739. order.setEndTime(dateFormat.format(date));
  740. }
  741. List<PayOrder> orderList = payOrderService.selectPayOrderList(order);
  742. //批量插入要班结的订单
  743. List<StationClassStructure> stationClassStructureList= new ArrayList<>();
  744. for (PayOrder payOrder: orderList){
  745. StationClassStructure stationclass =new StationClassStructure();
  746. stationclass.setClassStartDate(payOrderInfoMin.getPayDate());
  747. stationclass.setStationId(payOrder.getStationId());
  748. stationclass.setStationName(payOrder.getStationName());
  749. stationclass.setClassStructureMan(username);
  750. stationclass.setClassStructureDate(date);
  751. stationclass.setClassStructureNo(no);
  752. stationclass.setOrderNo(payOrder.getOrderNo());
  753. stationclass.setOilGun(payOrder.getOilGun());
  754. stationclass.setOilName(payOrder.getOilName());
  755. stationclass.setConsumerId(payOrder.getConsumerId());
  756. stationclass.setConsumer(payOrder.getConsumer());
  757. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  758. if(payOrder.getReceivableAmt()!=null){
  759. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  760. }else{
  761. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  762. }
  763. if(payOrder.getReceivedAmt()!=null){
  764. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  765. }else{
  766. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  767. }
  768. if(payOrder.getDiscountAmt()!=null){
  769. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  770. }else{
  771. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  772. }
  773. if(payOrder.getDiscountCouponAmt()!=null){
  774. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  775. }else{
  776. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  777. }
  778. if(payOrder.getWxAmt()!=null){
  779. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  780. }else{
  781. stationclass.setWxAmt(BigDecimal.valueOf(0));
  782. }
  783. if(payOrder.getZfbAmt()!=null){
  784. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  785. }else{
  786. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  787. }
  788. if(payOrder.getPosAmt()!=null){
  789. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  790. }else{
  791. stationclass.setPosAmt(BigDecimal.valueOf(0));
  792. }
  793. if(payOrder.getXjAmt()!=null){
  794. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  795. }else{
  796. stationclass.setXjAmt(BigDecimal.valueOf(0));
  797. }
  798. if(payOrder.getDidiAppAmt()!=null){
  799. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  800. }else{
  801. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  802. }
  803. if(payOrder.getTyAppAmt()!=null){
  804. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  805. }else{
  806. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  807. }
  808. if(payOrder.getOtherAmt()!=null){
  809. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  810. }else{
  811. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  812. }
  813. if(payOrder.getDzkAmt()!=null){
  814. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  815. }else{
  816. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  817. }
  818. if(payOrder.getMemberAmt()!=null){
  819. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  820. }else{
  821. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  822. }
  823. if(payOrder.getOrderLiters() !=null){
  824. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  825. }else {
  826. stationclass.setOrderLiters(new BigDecimal(0));
  827. }
  828. stationclass.setPayWay(payOrder.getPayWay());
  829. stationclass.setPayType(payOrder.getPayType());
  830. stationclass.setPayDate(payOrder.getPayDate());
  831. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  832. stationclass.setOrderType(payOrder.getOrderType());
  833. if(payOrder.getPrintCount()!=null){
  834. stationclass.setPrintNum(payOrder.getPrintCount());
  835. }else{
  836. stationclass.setPrintNum(Integer.valueOf("0"));
  837. }
  838. stationClassStructureList.add(stationclass);
  839. }
  840. int insertSize = stationClassStructureService.insertStationClassStructureBatch(stationClassStructureList);
  841. if(insertSize == orderList.size()){
  842. StationClassStructure scs =new StationClassStructure();
  843. scs.setClassStructureNo(no);
  844. //汇总班结数据将汇总的数据插入到汇总数据中
  845. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  846. if(stationclass!=null){
  847. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  848. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  849. if(stationclass.getClassStartDate()!=null){
  850. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  851. }
  852. if(stationclass.getClassStructureDate()!=null){
  853. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  854. }
  855. stationClassesSummary.setStationName(stationclass.getStationName());
  856. if(stationclass.getStationId()!=null){
  857. stationClassesSummary.setStationId(stationclass.getStationId());
  858. }
  859. if(stationclass.getNum()!=null){
  860. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  861. }
  862. if(stationclass.getPrintNum()!=null){
  863. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  864. }else {
  865. stationClassesSummary.setPrintNum(Integer.valueOf(0));
  866. }
  867. if(stationclass.getOrderLiters()!=null){
  868. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  869. }
  870. if(stationclass.getAmt()!=null){
  871. stationClassesSummary.setSaleAmt(stationclass.getAmt());
  872. }
  873. if(stationclass.getDzkAmt()!=null){
  874. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  875. }else{
  876. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  877. }
  878. if(stationclass.getZfbAmt()!=null){
  879. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  880. }else{
  881. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  882. }
  883. if(stationclass.getWxAmt()!=null){
  884. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  885. }else{
  886. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  887. }
  888. if(stationclass.getAmt() !=null){
  889. stationClassesSummary.setAmt(stationclass.getAmt());
  890. }else {
  891. stationClassesSummary.setAmt(BigDecimal.valueOf(0));
  892. }
  893. if(stationclass.getDiscountAmt() !=null){
  894. stationClassesSummary.setDiscountAmt(stationclass.getDiscountAmt());
  895. }else {
  896. stationClassesSummary.setDiscountAmt(BigDecimal.valueOf(0));
  897. }
  898. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  899. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  900. if(i==1){
  901. map.put("retCode","0");
  902. map.put("msg","班结成功");
  903. }
  904. }else{
  905. map.put("retCode","-1");
  906. map.put("msg","已班结");
  907. }
  908. }else {
  909. map.put("retCode","-2");
  910. map.put("msg","班结失败");
  911. }
  912. return map;
  913. }
  914. }