package com.pj.project.tb_business; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.hutool.log.StaticLog; import com.pj.constants.UserTypeEnum; import com.pj.current.satoken.StpUserUtil; import com.pj.project.tb_account.AutomaticPay; import com.pj.project.tb_business_car.TbBusinessCar; import com.pj.project.tb_business_car.TbBusinessCarService; import com.pj.project.tb_business_item.TbBusinessItem; import com.pj.project.tb_business_item.TbBusinessItemService; import com.pj.project.tb_costomer.TbCostomerService; import com.pj.project.tb_declare.TbDeclareService; import com.pj.project.tb_item.TbItem; import com.pj.project.tb_notices.TbNoticesService; import com.pj.utils.sg.AjaxError; import com.pj.utils.sg.AjaxJson; import com.pj.utils.so.SoMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Date; import java.util.List; /** * Controller: tb_business -- 入境登记 * * @author qzy */ @RestController @RequestMapping("/TbBusiness/") public class TbBusinessController { /** * 底层 Service 对象 */ @Autowired TbBusinessService tbBusinessService; @Resource private TbBusinessItemService tbBusinessItemService; @Resource private TbNoticesService tbNoticesService; @Resource private TbBusinessCarService tbBusinessCarService; @RequestMapping(value = "getMsg") public AjaxJson getMsg() { return AjaxJson.getSuccessData(BusinessMessageManager.get(StpUserUtil.getCustomerId())); } /** * 确认业务 */ @RequestMapping("confirm") @Transactional(rollbackFor = Exception.class) public AjaxJson confirm() { if (!StpUtil.hasPermissionAnd(TbBusiness.PERMISSION_CONFIRM) && ! StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("无确认业务权限"); } SoMap so = SoMap.getRequestSoMap(); List ids = so.getListByComma("ids", String.class); tbBusinessService.confirm(ids); return AjaxJson.getSuccess(); } /** * 确认业务 */ @RequestMapping("adminConfirmPay") @Transactional(rollbackFor = Exception.class) public AjaxJson adminConfirmPay() { if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("无确认支付权限"); } SoMap so = SoMap.getRequestSoMap(); List ids = so.getListByComma("ids", String.class); String ticket = so.getString("payTicket"); tbBusinessService.adminConfirmPay(ids, ticket); return AjaxJson.getSuccess(); } /** * 查 - 根据id */ @RequestMapping("getById") public AjaxJson getById(String id) { TbBusiness t = tbBusinessService.getById(id); List items = tbBusinessItemService.findByBusinessId(id); items.forEach(tbBusinessItem -> tbBusinessItem.setGoodsName(t.getGoodsName()).setCardNo(t.getCardNo()).setChinaCarNo(t.getChinaCarNo())); t.setItems(items); List cars = tbBusinessCarService.findOtherBusinessCar(id); t.setCars(cars); return AjaxJson.getSuccessData(t); } /** * 查 - 根据id */ @RequestMapping("checkReport") public AjaxJson checkReport(String businessCarId) { List businessList = tbBusinessService.findOtherBusinessByCarId(businessCarId); return AjaxJson.getSuccessData(businessList); } /** * 查集合 - 根据条件(参数为空时代表忽略指定条件) */ @RequestMapping("getList") public AjaxJson getList() { SoMap so = SoMap.getRequestSoMap(); String currentCustomerId = StpUserUtil.getCustomerId(); if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { so.put("customerId", currentCustomerId); } List list = tbBusinessService.getList(so.startPage()); return AjaxJson.getPageData(so.getDataCount(), list); } /** * 查集合 - 根据条件(参数为空时代表忽略指定条件) */ @RequestMapping("getCarDisincleList") public AjaxJson getCarDisincleList() { SoMap so = SoMap.getRequestSoMap(); String currentCustomerId = StpUserUtil.getCustomerId(); if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { so.put("customerId", currentCustomerId); } List list = tbBusinessService.getCarDisincleList(so.startPage()); return AjaxJson.getPageData(so.getDataCount(), list); } /** * 查集合 - 根据条件(参数为空时代表忽略指定条件) */ @RequestMapping("getOtherBusiness") public AjaxJson getOtherBusiness() { SoMap so = SoMap.getRequestSoMap(); String currentCustomerId = StpUserUtil.getCustomerId(); if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { so.put("createByCustomerId", currentCustomerId); } List list = tbBusinessService.getList(so.startPage()); return AjaxJson.getPageData(so.getDataCount(), list); } /** * 改 */ @RequestMapping("pay") public AjaxJson pay() { if (!StpUtil.hasPermissionAnd("tb-business-pay") && ! StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("无支付权限"); } SoMap so = SoMap.getRequestSoMap(); String id = so.getString("id"); String payTicket = so.getString("payTicket"); tbBusinessService.pay(id, payTicket); return AjaxJson.getSuccess(); } @RequestMapping("adminSetIn") public AjaxJson adminSetIn() { if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("无入场权限"); } SoMap so = SoMap.getRequestSoMap(); String id = so.getString("id"); Date inTime = so.getDateTime("realInTime"); Date chinaCarInTime = so.getDateTime("chinaCarInTime"); TbBusiness tbBusiness = tbBusinessService.getById(id); tbBusiness.setChinaCarInTime(chinaCarInTime).setRealInTime(inTime).setAdminConfirmIn(1); tbBusinessService.updateById(tbBusiness); //更新境外车入场记录 //更新中国车入场记录 //发送消息 String text = "您的车辆已入场,业务单号[" + tbBusiness.getNo() + "]"; tbNoticesService.sendNotice(tbBusiness.getId(), tbBusiness.getNo(), tbBusiness.getCustomerId(), text); return AjaxJson.getSuccess(); } @RequestMapping("complete") public AjaxJson complete(TbBusiness business) { if (!StrUtil.equals(StpUserUtil.getCustomerId(), UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("无生成账单权限"); } business.setComplete(1); tbBusinessService.updateById(business); tbBusinessService.storeMsg(business.getCustomerId(), "业务订单【" + business.getNo() + "】账单已生成!" + DateUtil.now() + "。"); //发送消息 String text = "您的账单已生成,业务单号[" + business.getNo() + "]"; tbNoticesService.sendNotice(business.getId(), business.getNo(), business.getCustomerId(), text); return AjaxJson.getSuccessData(business); } @RequestMapping("uploadReport") public AjaxJson uploadReport(@RequestBody TbBusiness tbBusiness) { tbBusinessService.uploadReport(tbBusiness); return AjaxJson.getSuccess(); } @RequestMapping("getOtherBusinessById") public AjaxJson getOtherBusinessById(String id) { return AjaxJson.getSuccessData(tbBusinessService.getOtherBusinessById(id)); } @RequestMapping("getZxBusinessById") public AjaxJson getZxBusinessById(String id) { return AjaxJson.getSuccessData(tbBusinessService.getZxBusinessById(id)); } @RequestMapping("deleteOtherBusiness") public AjaxJson deleteOtherBusiness(String id, String businessCarId) { tbBusinessService.deleteOtherBusiness(id); return AjaxJson.getSuccess(); } /** * 线下收费 * * @return */ @RequestMapping("manualConfirm") @SaCheckPermission(TbBusiness.PERMISSION_MANUAL_PAY) public AjaxJson manualConfirm() { SoMap so = SoMap.getRequestSoMap(); String id = so.getString("id"); String remark = so.getString("remark"); String cars = so.getString("cars"); Date payTime = so.getDateTime("payTime"); int payChannelType = so.getInt("payChannelType"); int payType = so.getInt("payType"); String transactionId = so.getString("transactionId"); List carList = JSONUtil.toList(cars, TbBusinessCar.class); tbBusinessService.manualConfirmPay(id, carList, remark,payTime,payChannelType,payType,transactionId); return AjaxJson.getSuccess(); } @RequestMapping(value = "unBindCar") public AjaxJson unBindCar(String id, String businessCarId) { tbBusinessService.unBindCar(id, businessCarId); return AjaxJson.getSuccess(); } @RequestMapping(value = "addOtherBusiness") @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_ADD) public AjaxJson addOtherBusiness(OtherBusinessBO otherBusinessBO) { List items = JSONUtil.toList(otherBusinessBO.getItemJson(), TbItem.class); List cars = JSONUtil.toList(otherBusinessBO.getCarJson(), TbBusinessCar.class); otherBusinessBO.setItems(items).setCars(cars); tbBusinessService.addOtherBusiness(otherBusinessBO); return AjaxJson.getSuccess(); } @RequestMapping(value = "editOtherBusiness") @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT) public AjaxJson editOtherBusiness(OtherBusinessBO otherBusinessBO) { List items = JSONUtil.toList(otherBusinessBO.getItemJson(), TbItem.class); List cars = JSONUtil.toList(otherBusinessBO.getCarJson(), TbBusinessCar.class); otherBusinessBO.setItems(items).setCars(cars); tbBusinessService.editOtherBusiness(otherBusinessBO); return AjaxJson.getSuccess(); } @RequestMapping(value = "bindOtherBusinessCar") @SaCheckPermission(value = TbBusiness.PERMISSION_FLAX_BUSINESS_EDIT) public AjaxJson bindOtherBusinessCar() { SoMap soMap = SoMap.getRequestSoMap(); String businessId = soMap.getString("businessId"); String businessCarIds = soMap.getString("businessCarIds"); tbBusinessService.bindOtherBusinessCar(businessId, StrUtil.splitTrim(businessCarIds, ",")); return AjaxJson.getSuccess(); } /** * 选择的方式添加异常单 * * @return */ @RequestMapping("selectErrorBusiness") @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH}) public AjaxJson selectErrorBusiness(ErrorBusinessBO errorBusinessBO) { if (StrUtil.isEmpty(errorBusinessBO.getSupplementReason())) { throw new AjaxError("填写补录原因"); } List cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class); errorBusinessBO.setCars(cars); errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy()); String currentCustomerId = StpUserUtil.getCustomerId(); StaticLog.info("currentCustomerId============= :{}", currentCustomerId); tbBusinessService.selectErrorBusiness(errorBusinessBO, currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())); return AjaxJson.getSuccess(); } /** * 添加异常单 * * @param errorBusinessBO * @return */ @RequestMapping(value = "addErrorBusiness") @SaCheckPermission(value = TbBusiness.TB_SUPPLEMENT_ADD) public AjaxJson addErrorBusiness(ErrorBusinessBO errorBusinessBO) { List items = JSONUtil.toList(errorBusinessBO.getItemJson(), TbItem.class); List cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class); errorBusinessBO.setItems(items).setCars(cars); errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy()); String currentCustomerId = StpUserUtil.getCustomerId(); tbBusinessService.addErrorBusiness(errorBusinessBO, currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())); return AjaxJson.getSuccess(); } /** * 编辑异常单 * * @param errorBusinessBO * @return */ @RequestMapping(value = "editErrorBusiness") @SaCheckPermission(value = TbBusiness.TB_SUPPLEMENT_EDIT) public AjaxJson editErrorBusiness(ErrorBusinessBO errorBusinessBO) { List items = JSONUtil.toList(errorBusinessBO.getItemJson(), TbItem.class); List cars = JSONUtil.toList(errorBusinessBO.getCarJson(), TbBusinessCar.class); errorBusinessBO.setItems(items).setCars(cars); errorBusinessBO.setSupplementBy(StpUserUtil.getCreateBy()); tbBusinessService.editErrorBusiness(errorBusinessBO); return AjaxJson.getSuccess(); } /** * 发起OA流程 * * @param id * @return */ @RequestMapping("applyOA") @SaCheckPermission(value = {TbBusiness.TB_SUPPLEMENT_ADD, TbBusiness.TB_SUPPLEMENT_PUSH}) public AjaxJson applyOA(@RequestParam String id) { String currentCustomerId = StpUserUtil.getCustomerId(); if (!currentCustomerId.equals(UserTypeEnum.PLATFORM_ADMIN.getCustomerId())) { return AjaxJson.getError("您无权发起流程"); } tbBusinessService.applyOA(id, StpUserUtil.getAdmin().getNickname()); return AjaxJson.getSuccess(); } // ------------------------- 前端接口 ------------------------- /** * 根据车辆记录查找业务 * * @param businessCarId * @return */ @RequestMapping("getByBusinessCarId") public AjaxJson getByBusinessCarId(@RequestParam String businessCarId) { return AjaxJson.getSuccessData(tbBusinessService.findOtherBusinessByCarId(businessCarId)); } }