package com.platform.yijia.controller; import com.google.gson.Gson; import com.platform.yijia.param.request.LoginBody; import com.platform.yijia.pojo.PayOrder; import com.platform.yijia.pojo.StationClassStructure; import com.platform.yijia.pojo.StationClassesSummary; import com.platform.yijia.pojo.SysUser; import com.platform.yijia.service.IStationClassStructureService; import com.platform.yijia.service.IStationClassesSummaryService; import com.platform.yijia.service.PayOrderService; import com.platform.yijia.service.PosMachineService; import com.platform.yijia.utils.CodeMsg; import com.platform.yijia.utils.ResultData; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * PosMachineController * POS机端控制层 * @Author JK * @Date 2021年3月17日 */ @Controller @RequestMapping("/demo") public class PosMachineController { @Resource private PosMachineService posMachineService; @Resource private IStationClassStructureService stationClassStructureService; @Resource private IStationClassesSummaryService stationClassesSummaryService; @Resource private PayOrderService payOrderService; //POS机端用户登录 @RequestMapping(value = "/loginPosMachine", method = RequestMethod.POST) @ResponseBody public String loginPosMachine(@RequestBody LoginBody loginBody){ //Using generated security password: a78f4bd0-6087-4fff-ae5d-f2e4cd8c7961 Gson gson =new Gson(); //返回结果集 ResultData resultData = null; if(loginBody.getUserName() !=null && loginBody.getPassword() !=null){ SysUser sysUser = posMachineService.selectUserByUserName(loginBody.getUserName()); if(sysUser !=null){ String password = sysUser.getPassword(); BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(); //密码加密判断已加密密码是否与真实密码相同 boolean matches = bCryptPasswordEncoder.matches(loginBody.getPassword(), password); if(matches){ resultData = ResultData.success(sysUser); }else{ resultData = ResultData.error(CodeMsg.PASSWORD_ERROR); } }else { resultData = ResultData.error(CodeMsg.USER_NOT_EXSIST); } } return gson.toJson(resultData); } /** * pos机班结 * @param stationClassStructure * @return * @throws ParseException */ @RequestMapping (value = "/posClassStructure", method = RequestMethod.POST) @ResponseBody public Map posClassStructure (@RequestBody StationClassStructure stationClassStructure) throws ParseException { Map map = new HashMap(); //获取当前班结油站 Integer stationId=stationClassStructure.getStationId(); //String stationName=stationClassStructure.getStationName(); String username = stationClassStructure.getClassStructureMan(); //根据油站查询出油站是否班结过,班结过就需要查询上次班结的时间 StationClassStructure classes =new StationClassStructure(); classes.setStationId(stationId); //查询出上次班结,最后一条数据 StationClassStructure sss =stationClassStructureService.selectStationClassStructureMax(classes); String beginTime=""; //当前时间 Date date= new Date(); StationClassStructure classesStructure =new StationClassStructure(); classesStructure.setStationId(stationId); DateFormat dFormat = new SimpleDateFormat("yyyyMMdd"); String no=dFormat.format(date); classesStructure.setLikeClassStructureNo(no); //查询班结信息中本日班结次数 StationClassStructure structure =stationClassStructureService.selectDistnctClassStructure(classesStructure); if(structure!=null){ if(structure.getNum()==0){ no = no + "0"+1; }else{ int num = structure.getNum()+1; if(num>0 && num<10){ no = no + "0"+num; }else{ no = no +""+ num; } } } int i=0; DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(sss!=null){ //获取上次班结时间 PayOrder order=new PayOrder(); order.setStationId(stationId); order.setStatus("1"); beginTime= dateFormat.format(sss.getClassStructureDate()); order.setBeginTime(beginTime); order.setEndTime( dateFormat.format(date)); List list = payOrderService.selectPayOrderList(order); for(PayOrder payOrder:list){ StationClassStructure stationclass =new StationClassStructure(); stationclass.setStationId(payOrder.getStationId()); stationclass.setStationName(payOrder.getStationName()); stationclass.setClassStartDate(dateFormat.parse(beginTime)); stationclass.setClassStructureMan(username); stationclass.setClassStructureNo(no); stationclass.setClassStructureDate(date); stationclass.setOrderNo(payOrder.getOrderNo()); stationclass.setOilGun(payOrder.getOilGun()); stationclass.setOilName(payOrder.getOilName()); stationclass.setConsumerId(payOrder.getConsumerId()); stationclass.setConsumer(payOrder.getConsumer()); stationclass.setAmt(new BigDecimal(payOrder.getAmt())); if(payOrder.getReceivableAmt()!=null){ stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt())); }else{ stationclass.setReceivableAmt(BigDecimal.valueOf(0)); } if(payOrder.getReceivedAmt()!=null){ stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt())); }else{ stationclass.setReceivedAmt(BigDecimal.valueOf(0)); } if(payOrder.getDiscountAmt()!=null){ stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt())); }else{ stationclass.setDiscountAmt(BigDecimal.valueOf(0)); } if(payOrder.getDiscountCouponAmt()!=null){ stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt())); }else{ stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0)); } if(payOrder.getWxAmt()!=null){ stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt())); }else{ stationclass.setWxAmt(BigDecimal.valueOf(0)); } if(payOrder.getZfbAmt()!=null){ stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt())); }else{ stationclass.setZfbAmt(BigDecimal.valueOf(0)); } if(payOrder.getPosAmt()!=null){ stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt())); }else{ stationclass.setPosAmt(BigDecimal.valueOf(0)); } if(payOrder.getXjAmt()!=null){ stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt())); }else{ stationclass.setXjAmt(BigDecimal.valueOf(0)); } if(payOrder.getDidiAppAmt()!=null){ stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt())); }else{ stationclass.setDidiAppAmt(BigDecimal.valueOf(0)); } if(payOrder.getTyAppAmt()!=null){ stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt())); }else{ stationclass.setDidiAppAmt(BigDecimal.valueOf(0)); } if(payOrder.getOtherAmt()!=null){ stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt())); }else{ stationclass.setOtherAmt(BigDecimal.valueOf(0)); } if(payOrder.getDzkAmt()!=null){ stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt())); }else{ stationclass.setDzkAmt(BigDecimal.valueOf(0)); } if(payOrder.getMemberAmt()!=null){ stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt())); }else{ stationclass.setMemberAmt(BigDecimal.valueOf(0)); } stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters())); stationclass.setPayWay(payOrder.getPayWay()); stationclass.setPayType(payOrder.getPayType()); stationclass.setPayDate(payOrder.getPayDate()); stationclass.setOilPersonnel(payOrder.getOilPersonnel()); stationclass.setOrderType(payOrder.getOrderType()); if(payOrder.getPrintCount()!=null){ stationclass.setPrintNum(payOrder.getPrintCount()); }else{ stationclass.setPrintNum(Integer.valueOf("0")); } i= stationClassStructureService.insertStationClassStructure(stationclass); } }else{ //初次班结 班结时间默认为当前时间,班结人username //根据班结时间查询订单 PayOrder order=new PayOrder(); order.setStationId(stationId); order.setEndTime(dateFormat.format(date)); List list = payOrderService.selectPayOrderList(order); for(PayOrder payOrder:list){ StationClassStructure stationclass =new StationClassStructure(); stationclass.setStationId(payOrder.getStationId()); stationclass.setStationName(payOrder.getStationName()); stationclass.setClassStructureMan(username); stationclass.setClassStructureDate(date); stationclass.setClassStructureNo(no); stationclass.setOrderNo(payOrder.getOrderNo()); stationclass.setOilGun(payOrder.getOilGun()); stationclass.setOilName(payOrder.getOilName()); stationclass.setConsumerId(payOrder.getConsumerId()); stationclass.setConsumer(payOrder.getConsumer()); stationclass.setAmt(new BigDecimal(payOrder.getAmt())); if(payOrder.getReceivableAmt()!=null){ stationclass.setReceivableAmt(new BigDecimal(payOrder.getReceivableAmt())); }else{ stationclass.setReceivableAmt(BigDecimal.valueOf(0)); } if(payOrder.getReceivedAmt()!=null){ stationclass.setReceivedAmt(new BigDecimal(payOrder.getReceivedAmt())); }else{ stationclass.setReceivedAmt(BigDecimal.valueOf(0)); } if(payOrder.getDiscountAmt()!=null){ stationclass.setDiscountAmt(new BigDecimal(payOrder.getDiscountAmt())); }else{ stationclass.setDiscountAmt(BigDecimal.valueOf(0)); } if(payOrder.getDiscountCouponAmt()!=null){ stationclass.setDiscountCouponAmt(new BigDecimal(payOrder.getDiscountCouponAmt())); }else{ stationclass.setDiscountCouponAmt(BigDecimal.valueOf(0)); } if(payOrder.getWxAmt()!=null){ stationclass.setWxAmt(new BigDecimal(payOrder.getWxAmt())); }else{ stationclass.setWxAmt(BigDecimal.valueOf(0)); } if(payOrder.getZfbAmt()!=null){ stationclass.setZfbAmt(new BigDecimal(payOrder.getZfbAmt())); }else{ stationclass.setZfbAmt(BigDecimal.valueOf(0)); } if(payOrder.getPosAmt()!=null){ stationclass.setPosAmt(new BigDecimal(payOrder.getPosAmt())); }else{ stationclass.setPosAmt(BigDecimal.valueOf(0)); } if(payOrder.getXjAmt()!=null){ stationclass.setXjAmt(new BigDecimal(payOrder.getXjAmt())); }else{ stationclass.setXjAmt(BigDecimal.valueOf(0)); } if(payOrder.getDidiAppAmt()!=null){ stationclass.setDidiAppAmt(new BigDecimal(payOrder.getDidiAppAmt())); }else{ stationclass.setDidiAppAmt(BigDecimal.valueOf(0)); } if(payOrder.getTyAppAmt()!=null){ stationclass.setDidiAppAmt(new BigDecimal(payOrder.getTyAppAmt())); }else{ stationclass.setDidiAppAmt(BigDecimal.valueOf(0)); } if(payOrder.getOtherAmt()!=null){ stationclass.setOtherAmt(new BigDecimal(payOrder.getOtherAmt())); }else{ stationclass.setOtherAmt(BigDecimal.valueOf(0)); } if(payOrder.getDzkAmt()!=null){ stationclass.setDzkAmt(new BigDecimal(payOrder.getDzkAmt())); }else{ stationclass.setDzkAmt(BigDecimal.valueOf(0)); } if(payOrder.getMemberAmt()!=null){ stationclass.setMemberAmt(new BigDecimal(payOrder.getMemberAmt())); }else{ stationclass.setMemberAmt(BigDecimal.valueOf(0)); } if(payOrder.getOrderLiters() !=null){ stationclass.setOrderLiters(new BigDecimal(payOrder.getOrderLiters())); }else { stationclass.setOrderLiters(new BigDecimal(0)); } stationclass.setPayWay(payOrder.getPayWay()); stationclass.setPayType(payOrder.getPayType()); stationclass.setPayDate(payOrder.getPayDate()); stationclass.setOilPersonnel(payOrder.getOilPersonnel()); stationclass.setOrderType(payOrder.getOrderType()); if(payOrder.getPrintCount()!=null){ stationclass.setPrintNum(payOrder.getPrintCount()); }else{ stationclass.setPrintNum(Integer.valueOf("0")); } i= stationClassStructureService.insertStationClassStructure(stationclass); } } StationClassStructure scs =new StationClassStructure(); scs.setClassStructureNo(no); //汇总班结数据将汇总的数据插入到汇总数据中 StationClassStructure stationclass = stationClassStructureService.selectSummyClassStructure(scs); if(stationclass!=null){ StationClassesSummary stationClassesSummary =new StationClassesSummary(); stationClassesSummary.setClassesNo(stationclass.getClassStructureNo()); if(stationclass.getClassStartDate()!=null){ stationClassesSummary.setStartDate(stationclass.getClassStartDate()); } if(stationclass.getClassStructureDate()!=null){ stationClassesSummary.setEndDate(stationclass.getClassStructureDate()); } stationClassesSummary.setStationName(stationclass.getStationName()); if(stationclass.getStationId()!=null){ stationClassesSummary.setStationId(stationclass.getStationId()); } if(stationclass.getNum()!=null){ stationClassesSummary.setOrderNum(Integer.valueOf(stationclass.getNum())); } if(stationclass.getPrintNum()!=null){ stationClassesSummary.setPrintNum(stationclass.getPrintNum()); } if(stationclass.getOrderLiters()!=null){ stationClassesSummary.setSaleLiters(stationclass.getOrderLiters()); } if(stationclass.getAmt()!=null){ stationClassesSummary.setSaleAmt(stationclass.getAmt()); } if(stationclass.getDzkAmt()!=null){ stationClassesSummary.setDzkAmt(stationclass.getDzkAmt()); }else{ stationClassesSummary.setDzkAmt(BigDecimal.valueOf(0)); } if(stationclass.getZfbAmt()!=null){ stationClassesSummary.setZfbAmt(stationclass.getZfbAmt()); }else{ stationClassesSummary.setZfbAmt(BigDecimal.valueOf(0)); } if(stationclass.getWxAmt()!=null){ stationClassesSummary.setWxAmt(stationclass.getWxAmt()); }else{ stationClassesSummary.setWxAmt(BigDecimal.valueOf(0)); } stationClassesSummary.setClassesMan(stationclass.getClassStructureMan()); i=stationClassesSummaryService.insertStationClassesSummary(stationClassesSummary); if(i==1){ //查询班结小票数据 StationClassStructure classStructure= new StationClassStructure(); classStructure.setClassStructureNo(no); classStructure.setStationId(stationId); //根据油品汇总数据 List list= stationClassStructureService.listOilStructure(classStructure); if(list!=null && list.size()>0){ map.put("code","200"); map.put("msg","班结成功"); map.put("oilList",list); }else{ map.put("code","500"); map.put("msg","班结失败"); } } }else{ map.put("code","500"); map.put("msg","班结失败"); } return map; } }