PosMachineController.java 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968
  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.setOilPersonnelId(payOrder.getOilPersonnelId());
  510. stationclass.setOrderType(payOrder.getOrderType());
  511. if(payOrder.getPrintCount()!=null){
  512. stationclass.setPrintNum(payOrder.getPrintCount());
  513. }else{
  514. stationclass.setPrintNum(Integer.valueOf("0"));
  515. }
  516. i= stationClassStructureService.insertStationClassStructure(stationclass);
  517. }
  518. }else{
  519. //初次班结 班结时间默认为当前时间,班结人username
  520. //根据班结时间查询订单
  521. PayOrder order=new PayOrder();
  522. order.setStationId(stationId);
  523. order.setStatus("1");
  524. //获取第一个最早时间的订单
  525. PayOrder payOrderInfoMin = payOrderService.getPayOrderInfoMin(order);
  526. //没有班结过:第一次班结获取第一个订单的下单时间
  527. beginTime =dateFormat.format(payOrderInfoMin.getPayDate());
  528. order.setBeginTime(beginTime);
  529. order.setEndTime(dateFormat.format(date));
  530. List<PayOrder> list = payOrderService.selectPayOrderList(order);
  531. for(PayOrder payOrder:list){
  532. StationClassStructure stationclass =new StationClassStructure();
  533. stationclass.setClassStartDate(payOrderInfoMin.getPayDate());
  534. stationclass.setStationId(payOrder.getStationId());
  535. stationclass.setStationName(payOrder.getStationName());
  536. stationclass.setClassStructureMan(username);
  537. stationclass.setClassStructureDate(date);
  538. stationclass.setClassStructureNo(no);
  539. stationclass.setOrderNo(payOrder.getOrderNo());
  540. stationclass.setOilGun(payOrder.getOilGun());
  541. stationclass.setOilName(payOrder.getOilName());
  542. stationclass.setConsumerId(payOrder.getConsumerId());
  543. stationclass.setConsumer(payOrder.getConsumer());
  544. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  545. if(payOrder.getReceivableAmt()!=null){
  546. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  547. }else{
  548. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  549. }
  550. if(payOrder.getReceivedAmt()!=null){
  551. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  552. }else{
  553. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  554. }
  555. if(payOrder.getDiscountAmt()!=null){
  556. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  557. }else{
  558. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  559. }
  560. if(payOrder.getDiscountCouponAmt()!=null){
  561. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  562. }else{
  563. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  564. }
  565. if(payOrder.getWxAmt()!=null){
  566. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  567. }else{
  568. stationclass.setWxAmt(BigDecimal.valueOf(0));
  569. }
  570. if(payOrder.getZfbAmt()!=null){
  571. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  572. }else{
  573. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  574. }
  575. if(payOrder.getPosAmt()!=null){
  576. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  577. }else{
  578. stationclass.setPosAmt(BigDecimal.valueOf(0));
  579. }
  580. if(payOrder.getXjAmt()!=null){
  581. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  582. }else{
  583. stationclass.setXjAmt(BigDecimal.valueOf(0));
  584. }
  585. if(payOrder.getDidiAppAmt()!=null){
  586. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  587. }else{
  588. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  589. }
  590. if(payOrder.getTyAppAmt()!=null){
  591. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  592. }else{
  593. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  594. }
  595. if(payOrder.getOtherAmt()!=null){
  596. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  597. }else{
  598. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  599. }
  600. if(payOrder.getDzkAmt()!=null){
  601. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  602. }else{
  603. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  604. }
  605. if(payOrder.getMemberAmt()!=null){
  606. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  607. }else{
  608. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  609. }
  610. if(payOrder.getOrderLiters() !=null){
  611. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  612. }else {
  613. stationclass.setOrderLiters(new BigDecimal(0));
  614. }
  615. stationclass.setPayWay(payOrder.getPayWay());
  616. stationclass.setPayType(payOrder.getPayType());
  617. stationclass.setPayDate(payOrder.getPayDate());
  618. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  619. stationclass.setOilPersonnelId(payOrder.getOilPersonnelId());
  620. stationclass.setOrderType(payOrder.getOrderType());
  621. if(payOrder.getPrintCount()!=null){
  622. stationclass.setPrintNum(payOrder.getPrintCount());
  623. }else{
  624. stationclass.setPrintNum(Integer.valueOf("0"));
  625. }
  626. i= stationClassStructureService.insertStationClassStructure(stationclass);
  627. }
  628. }
  629. StationClassStructure scs =new StationClassStructure();
  630. scs.setClassStructureNo(no);
  631. scs.setStationId(stationId);
  632. //汇总班结数据将汇总的数据插入到汇总数据中
  633. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  634. if(stationclass!=null){
  635. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  636. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  637. if(stationclass.getClassStartDate()!=null){
  638. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  639. }
  640. if(stationclass.getClassStructureDate()!=null){
  641. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  642. }
  643. stationClassesSummary.setStationName(stationclass.getStationName());
  644. if(stationclass.getStationId()!=null){
  645. stationClassesSummary.setStationId(stationclass.getStationId());
  646. }
  647. if(stationclass.getNum()!=null){
  648. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  649. }
  650. if(stationclass.getPrintNum()!=null){
  651. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  652. }else {
  653. stationClassesSummary.setPrintNum(Integer.valueOf(0));
  654. }
  655. if(stationclass.getOrderLiters()!=null){
  656. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  657. }
  658. if(stationclass.getReceivableAmt()!=null){
  659. stationClassesSummary.setSaleAmt(stationclass.getReceivableAmt());
  660. }
  661. if(stationclass.getDzkAmt()!=null){
  662. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  663. }else{
  664. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  665. }
  666. if(stationclass.getZfbAmt()!=null){
  667. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  668. }else{
  669. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  670. }
  671. if(stationclass.getWxAmt()!=null){
  672. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  673. }else{
  674. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  675. }
  676. if(stationclass.getAmt() !=null){
  677. stationClassesSummary.setAmt(stationclass.getAmt());
  678. }else {
  679. stationClassesSummary.setAmt(BigDecimal.valueOf(0));
  680. }
  681. if(stationclass.getDiscountAmt() !=null){
  682. stationClassesSummary.setDiscountAmt(stationclass.getDiscountAmt());
  683. }else {
  684. stationClassesSummary.setDiscountAmt(BigDecimal.valueOf(0));
  685. }
  686. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  687. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  688. if(i==1){
  689. map.put("retCode","0");
  690. map.put("msg","班结成功");
  691. }
  692. }else{
  693. map.put("retCode","-1");
  694. map.put("msg","已班结");
  695. }
  696. return map;
  697. }
  698. /*
  699. * pos机班结
  700. * @param stationClassStructure
  701. * @return
  702. * @throws ParseException
  703. */
  704. @RequestMapping (value = "/posClassStructureNew", method = RequestMethod.POST)
  705. @ResponseBody
  706. @Transactional
  707. public Map posClassStructureNew (@RequestBody StationClassStructure stationClassStructure) throws ParseException {
  708. Map map = new HashMap();
  709. //获取当前班结油站
  710. Integer stationId=stationClassStructure.getStationId();
  711. String username = stationClassStructure.getClassStructureMan();
  712. //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间
  713. StationClassStructure classes =new StationClassStructure();
  714. classes.setStationId(stationId);
  715. //查询出上次班结,最后一条数据
  716. StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes);
  717. String beginTime="";
  718. //当前时间
  719. Date date= new Date();
  720. StationClassStructure classesStructure =new StationClassStructure();
  721. classesStructure.setStationId(stationId);
  722. DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
  723. String no=dFormat.format(date);
  724. classesStructure.setLikeClassStructureNo(no);
  725. //查询班结信息中本日班结次数
  726. StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure);
  727. if(structure!=null){
  728. if(structure.getNum()==0){
  729. no = no + "0"+1;
  730. }else{
  731. int num = structure.getNum()+1;
  732. if(num>0 && num<10){
  733. no = no + "0"+num;
  734. }else{
  735. no = no +""+ num;
  736. }
  737. }
  738. }
  739. int i=0;
  740. DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  741. PayOrder order=new PayOrder();
  742. order.setStationId(stationId);
  743. order.setStatus("1");
  744. PayOrder payOrderInfoMin = new PayOrder();
  745. if(sss!=null){
  746. //获取上次班结时间
  747. beginTime= dateFormat.format(sss.getClassStructureDate());
  748. order.setBeginTime(beginTime);
  749. order.setEndTime( dateFormat.format(date));
  750. }else{
  751. //获取第一个最早时间的订单
  752. payOrderInfoMin = payOrderService.getPayOrderInfoMin(order);
  753. //初次班结 班结时间默认为当前时间,班结人username
  754. //根据班结时间查询订单
  755. //没有班结过:第一次班结获取第一个订单的下单时间
  756. beginTime =dateFormat.format(payOrderInfoMin.getPayDate());
  757. order.setBeginTime(beginTime);
  758. order.setEndTime(dateFormat.format(date));
  759. }
  760. List<PayOrder> orderList = payOrderService.selectPayOrderList(order);
  761. //批量插入要班结的订单
  762. List<StationClassStructure> stationClassStructureList= new ArrayList<>();
  763. for (PayOrder payOrder: orderList){
  764. StationClassStructure stationclass =new StationClassStructure();
  765. stationclass.setClassStartDate(payOrderInfoMin.getPayDate());
  766. stationclass.setStationId(payOrder.getStationId());
  767. stationclass.setStationName(payOrder.getStationName());
  768. stationclass.setClassStructureMan(username);
  769. stationclass.setClassStructureDate(date);
  770. stationclass.setClassStructureNo(no);
  771. stationclass.setOrderNo(payOrder.getOrderNo());
  772. stationclass.setOilGun(payOrder.getOilGun());
  773. stationclass.setOilName(payOrder.getOilName());
  774. stationclass.setConsumerId(payOrder.getConsumerId());
  775. stationclass.setConsumer(payOrder.getConsumer());
  776. stationclass.setAmt(new BigDecimal(payOrder.getAmt()));
  777. if(payOrder.getReceivableAmt()!=null){
  778. stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt()));
  779. }else{
  780. stationclass.setReceivableAmt(BigDecimal.valueOf(0));
  781. }
  782. if(payOrder.getReceivedAmt()!=null){
  783. stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt()));
  784. }else{
  785. stationclass.setReceivedAmt(BigDecimal.valueOf(0));
  786. }
  787. if(payOrder.getDiscountAmt()!=null){
  788. stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt()));
  789. }else{
  790. stationclass.setDiscountAmt(BigDecimal.valueOf(0));
  791. }
  792. if(payOrder.getDiscountCouponAmt()!=null){
  793. stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt()));
  794. }else{
  795. stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0));
  796. }
  797. if(payOrder.getWxAmt()!=null){
  798. stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt()));
  799. }else{
  800. stationclass.setWxAmt(BigDecimal.valueOf(0));
  801. }
  802. if(payOrder.getZfbAmt()!=null){
  803. stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt()));
  804. }else{
  805. stationclass.setZfbAmt(BigDecimal.valueOf(0));
  806. }
  807. if(payOrder.getPosAmt()!=null){
  808. stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt()));
  809. }else{
  810. stationclass.setPosAmt(BigDecimal.valueOf(0));
  811. }
  812. if(payOrder.getXjAmt()!=null){
  813. stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt()));
  814. }else{
  815. stationclass.setXjAmt(BigDecimal.valueOf(0));
  816. }
  817. if(payOrder.getDidiAppAmt()!=null){
  818. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt()));
  819. }else{
  820. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  821. }
  822. if(payOrder.getTyAppAmt()!=null){
  823. stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt()));
  824. }else{
  825. stationclass.setDidiAppAmt(BigDecimal.valueOf(0));
  826. }
  827. if(payOrder.getOtherAmt()!=null){
  828. stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt()));
  829. }else{
  830. stationclass.setOtherAmt(BigDecimal.valueOf(0));
  831. }
  832. if(payOrder.getDzkAmt()!=null){
  833. stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt()));
  834. }else{
  835. stationclass.setDzkAmt(BigDecimal.valueOf(0));
  836. }
  837. if(payOrder.getMemberAmt()!=null){
  838. stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt()));
  839. }else{
  840. stationclass.setMemberAmt(BigDecimal.valueOf(0));
  841. }
  842. if(payOrder.getOrderLiters() !=null){
  843. stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters()));
  844. }else {
  845. stationclass.setOrderLiters(new BigDecimal(0));
  846. }
  847. stationclass.setPayWay(payOrder.getPayWay());
  848. stationclass.setPayType(payOrder.getPayType());
  849. stationclass.setPayDate(payOrder.getPayDate());
  850. stationclass.setOilPersonnel(payOrder.getOilPersonnel());
  851. stationclass.setOrderType(payOrder.getOrderType());
  852. if(payOrder.getPrintCount()!=null){
  853. stationclass.setPrintNum(payOrder.getPrintCount());
  854. }else{
  855. stationclass.setPrintNum(Integer.valueOf("0"));
  856. }
  857. stationClassStructureList.add(stationclass);
  858. }
  859. int insertSize = stationClassStructureService.insertStationClassStructureBatch(stationClassStructureList);
  860. if(insertSize == orderList.size()){
  861. StationClassStructure scs =new StationClassStructure();
  862. scs.setClassStructureNo(no);
  863. //汇总班结数据将汇总的数据插入到汇总数据中
  864. StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs);
  865. if(stationclass!=null){
  866. StationClassesSummary stationClassesSummary =new StationClassesSummary();
  867. stationClassesSummary.setClassesNo(stationclass.getClassStructureNo());
  868. if(stationclass.getClassStartDate()!=null){
  869. stationClassesSummary.setStartDate(stationclass.getClassStartDate());
  870. }
  871. if(stationclass.getClassStructureDate()!=null){
  872. stationClassesSummary.setEndDate(stationclass.getClassStructureDate());
  873. }
  874. stationClassesSummary.setStationName(stationclass.getStationName());
  875. if(stationclass.getStationId()!=null){
  876. stationClassesSummary.setStationId(stationclass.getStationId());
  877. }
  878. if(stationclass.getNum()!=null){
  879. stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum()));
  880. }
  881. if(stationclass.getPrintNum()!=null){
  882. stationClassesSummary.setPrintNum(stationclass.getPrintNum());
  883. }else {
  884. stationClassesSummary.setPrintNum(Integer.valueOf(0));
  885. }
  886. if(stationclass.getOrderLiters()!=null){
  887. stationClassesSummary.setSaleLiters(stationclass.getOrderLiters());
  888. }
  889. if(stationclass.getReceivableAmt()!=null){
  890. stationClassesSummary.setSaleAmt(stationclass.getReceivableAmt());
  891. }
  892. if(stationclass.getDzkAmt()!=null){
  893. stationClassesSummary.setDzkAmt(stationclass.getDzkAmt());
  894. }else{
  895. stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0));
  896. }
  897. if(stationclass.getZfbAmt()!=null){
  898. stationClassesSummary.setZfbAmt(stationclass.getZfbAmt());
  899. }else{
  900. stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0));
  901. }
  902. if(stationclass.getWxAmt()!=null){
  903. stationClassesSummary.setWxAmt(stationclass.getWxAmt());
  904. }else{
  905. stationClassesSummary.setWxAmt(BigDecimal.valueOf(0));
  906. }
  907. if(stationclass.getAmt() !=null){
  908. stationClassesSummary.setAmt(stationclass.getAmt());
  909. }else {
  910. stationClassesSummary.setAmt(BigDecimal.valueOf(0));
  911. }
  912. if(stationclass.getDiscountAmt() !=null){
  913. stationClassesSummary.setDiscountAmt(stationclass.getDiscountAmt());
  914. }else {
  915. stationClassesSummary.setDiscountAmt(BigDecimal.valueOf(0));
  916. }
  917. stationClassesSummary.setClassesMan(stationclass.getClassStructureMan());
  918. i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary);
  919. if(i==1){
  920. map.put("retCode","0");
  921. map.put("msg","班结成功");
  922. }
  923. }else{
  924. map.put("retCode","-1");
  925. map.put("msg","已班结");
  926. }
  927. }else {
  928. map.put("retCode","-2");
  929. map.put("msg","班结失败");
  930. }
  931. return map;
  932. }
  933. }