PosMachineController.java 45 KB

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