PosMachineController.java 45 KB

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