package com.stylefeng.guns.modular.system.controller.general; import cn.hutool.crypto.SecureUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.base.tips.SuccessTip; import com.stylefeng.guns.core.common.constant.state.ManagerStatus; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.controller.resp.TBranchOfficeResp; import com.stylefeng.guns.modular.system.controller.resp.TDriverResp; import com.stylefeng.guns.modular.system.enums.StatusEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.RedisUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import com.stylefeng.guns.core.log.LogObjectHolder; import org.springframework.web.bind.annotation.RequestParam; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 控制器 * * @author fengshuonan * @Date 2023-02-21 11:17:18 */ @Controller @RequestMapping("/tBranchOffice") public class TBranchOfficeController extends BaseController { private String PREFIX = "/system/tBranchOffice/"; @Autowired private ITBranchOfficeService tBranchOfficeService; @Autowired private ITSystemConfigService tSystemConfigService; @Autowired private ITRegionService tRegionService; @Autowired private ITDriverService tDriverService; @Autowired private ITDriverWorkService tDriverWorkService; @Autowired private IUserService userService; @Autowired private RedisUtil redisUtil; /** * 跳转到首页 */ @RequestMapping("") public String index(Model model) { model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); return PREFIX + "tBranchOffice.html"; } /** * 跳转到添加 */ @RequestMapping("/tBranchOffice_add") public String tBranchOfficeAdd() { return PREFIX + "tBranchOffice_add.html"; } /** * 跳转到修改 */ @RequestMapping("/tBranchOffice_update/{tBranchOfficeId}") public String tBranchOfficeUpdate(@PathVariable Integer tBranchOfficeId, Model model) { TBranchOffice tBranchOffice = tBranchOfficeService.selectById(tBranchOfficeId); TBranchOfficeResp tBranchOfficeResp = new TBranchOfficeResp(); BeanUtils.copyProperties(tBranchOffice,tBranchOfficeResp); // 查询区域 TRegion city = tRegionService.selectOne(new EntityWrapper().eq("code", tBranchOffice.getCityCode()) .last("LIMIT 1")); TRegion district = tRegionService.selectOne(new EntityWrapper().eq("code", tBranchOffice.getDistrictCode()) .last("LIMIT 1")); if(StringUtils.hasLength(tBranchOffice.getDistrictName()) && !tBranchOffice.getDistrictName().equals(tBranchOffice.getCityName())){ tBranchOfficeResp.setArea(tBranchOffice.getProvinceName()+"/"+tBranchOffice.getCityName()+"/"+tBranchOffice.getDistrictName()); }else { tBranchOfficeResp.setArea(tBranchOffice.getProvinceName()+"/"+tBranchOffice.getCityName()); } if(Objects.nonNull(city)){ if(Objects.nonNull(district) && !district.getCode().equals(city.getCode())){ tBranchOfficeResp.setAreaId(city.getParentId()+"/"+city.getId()+"/"+district.getId()); }else { tBranchOfficeResp.setAreaId(city.getParentId()+"/"+city.getId()); } } model.addAttribute("item",tBranchOfficeResp); LogObjectHolder.me().set(tBranchOffice); return PREFIX + "tBranchOffice_edit.html"; } /** * 跳转到详情 */ @RequestMapping("/tBranchOfficeDetail") public String tBranchOfficeDetail(Integer tBranchOfficeId, Model model) { tBranchOfficeService.tBranchOfficeDetail(tBranchOfficeId,model); TSystemConfig tSystemConfig = tSystemConfigService.selectOne(new EntityWrapper().eq("type", 3)); JSONObject jsonObject = JSONObject.parseObject(tSystemConfig.getContent()); model.addAttribute("num2",jsonObject.getInteger("num2")); model.addAttribute("num3",jsonObject.getInteger("num3")); return PREFIX + "tBranchOfficeDetail.html"; } /** * 跳转区域页面新增 */ @RequestMapping("/areaPageAdd") public String areaPageAdd(String area,String areaId,Model model) { String[] split1 = areaId.split("/"); List tRegions = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",tRegions); // List provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList()); // // 查询市 // List tRegions1 = tRegionService.selectList(new EntityWrapper().eq("parent_id", split1[0])); // model.addAttribute("cityList",tRegions1); // // // 查询区 // List cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList()); // List tRegions2 = tRegionService.selectList(new EntityWrapper().in("parent_id", cityIds)); // model.addAttribute("districtList",tRegions2); if(StringUtils.hasLength(area) && StringUtils.hasLength(areaId)){ String[] split = area.split("/"); model.addAttribute("provinceName",split[0]); model.addAttribute("cityName",split[1]); if(split.length>2){ model.addAttribute("districtName",split[2]); }else { model.addAttribute("districtName",""); } model.addAttribute("provinceId",split1[0]); model.addAttribute("cityId",split1[1]); if(split1.length>2) { model.addAttribute("districtId", split1[2]); }else { model.addAttribute("districtId", ""); } List tRegions1 = tRegionService.selectList(new EntityWrapper().eq("parent_id", split1[0])); model.addAttribute("cityList",tRegions1); // 查询区 List tRegions2 = tRegionService.selectList(new EntityWrapper().in("parent_id", split1[1])); model.addAttribute("districtList",tRegions2); }else { model.addAttribute("cityList",new ArrayList<>()); model.addAttribute("districtList",new ArrayList<>()); model.addAttribute("provinceName",""); model.addAttribute("cityName",""); model.addAttribute("districtName",""); model.addAttribute("provinceId",""); model.addAttribute("cityId",""); model.addAttribute("districtId", ""); } return PREFIX + "tBranchOfficeAreaAdd.html"; } /** * 跳转区域页面编辑 */ @RequestMapping("/areaPageUpdate") public String areaPageUpdate(String area,String areaId,Model model) { String[] split = area.split("/"); model.addAttribute("provinceName",split[0]); model.addAttribute("cityName",split[1]); if(split.length>2){ model.addAttribute("districtName",split[2]); }else { model.addAttribute("districtName",""); } String[] split1 = areaId.split("/"); String provinceId = split1[0]; model.addAttribute("provinceId",split1[0]); model.addAttribute("cityId",split1[1]); if(split1.length>2) { model.addAttribute("districtId", split1[2]); }else { model.addAttribute("districtId", ""); } List tRegions = tRegionService.selectList(new EntityWrapper().eq("parent_id", 0)); model.addAttribute("provinceList",tRegions); // List provinceIds = tRegions.stream().map(TRegion::getId).collect(Collectors.toList()); // 查询市 List tRegions1 = tRegionService.selectList(new EntityWrapper().eq("parent_id", provinceId)); model.addAttribute("cityList",tRegions1); // 查询区 List cityIds = tRegions1.stream().map(TRegion::getId).collect(Collectors.toList()); List tRegions2 = tRegionService.selectList(new EntityWrapper().in("parent_id", split1[1])); model.addAttribute("districtList",tRegions2); return PREFIX + "tBranchOfficeAreaUpdate.html"; } /** * 获取列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String branchOfficeName,String principal,String principalPhone,Integer operatingBusiness ,Integer status) { List tBranchOfficeRespList = tBranchOfficeService.getPageList(branchOfficeName,principal,principalPhone,operatingBusiness,status); for (TBranchOfficeResp tBranchOfficeResp : tBranchOfficeRespList) { tBranchOfficeResp.setUserType(Objects.requireNonNull(ShiroKit.getUser()).getRoleType()); } // 分公司查询优惠券,订单,司机等信息 tBranchOfficeService.queryOtherInfo(tBranchOfficeRespList); return tBranchOfficeRespList; } @ApiOperation(value = "市区查询",notes="市区查询") @RequestMapping(value = "/areaCity") @ResponseBody public Object areaCity(Integer parentId,Model model) { List tRegions = tRegionService.selectList(new EntityWrapper().eq("parent_id", parentId)); /*if(CollectionUtils.isEmpty(tRegions) && StringUtils.hasLength(parentName)){ TRegion parent = tRegionService.selectOne(new EntityWrapper().eq("name", parentName)); tRegions = tRegionService.selectList(new EntityWrapper().eq("parent_id", parentId)); }*/ model.addAttribute("list",tRegions); return tRegions; } /** * 启用分公司 */ @RequestMapping(value = "/start") @ResponseBody public Object start(Integer id) { TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id); tBranchOffice.setStatus(StatusEnum.NORMAL.getCode()); tBranchOfficeService.updateById(tBranchOffice); return SUCCESS_TIP; } /** * 冻结分公司 */ @RequestMapping(value = "/stop") @ResponseBody public Object updateStatus(Integer id) { TBranchOffice tBranchOffice = tBranchOfficeService.selectById(id); tBranchOffice.setStatus(StatusEnum.FREEZE.getCode()); tBranchOfficeService.updateById(tBranchOffice); List list = tDriverService.selectList(new EntityWrapper() .eq("branchOfficeId", tBranchOffice.getId())); for (TDriver tDriver : list) { String value = redisUtil.getValue("DRIVER_" + tDriver.getPhone()); redisUtil.remove(value); redisUtil.remove("DRIVER_" + tDriver.getPhone()); TDriverWork tDriverWork = tDriverWorkService.selectOne(new EntityWrapper() .eq("driverId", tDriver.getId()) .eq("status", 1) .orderBy("workTime", false) .last("LIMIT 1")); if(Objects.nonNull(tDriverWork)){ tDriverWork.setStatus(2); tDriverWork.setOffWorkTime(new Date()); tDriverWorkService.updateById(tDriverWork); } } return SUCCESS_TIP; } /** * 获取列表 */ @RequestMapping(value = "/list-back") @ResponseBody public Object listBack(String condition) { return tBranchOfficeService.selectList(null); } /** * 新增 */ @RequestMapping(value = "/add") @ResponseBody @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public Object add(TBranchOffice tBranchOffice) { int count = tBranchOfficeService.selectCount(new EntityWrapper().eq("branchOfficeName", tBranchOffice.getBranchOfficeName())); if(count>0){ return new SuccessTip(500,"该分公司名称已存在!"); } int count1 = userService.selectCount(new EntityWrapper().eq("account", tBranchOffice.getAccount())); if (count1 > 0){ return new SuccessTip(500,"该账号已存在!"); } Object o = tBranchOfficeService.addOrUpdate(tBranchOffice); if(Objects.nonNull(o)){ return o; } tBranchOffice.setPrincipal(tBranchOffice.getPrincipal().replace(" ","")); tBranchOffice.setStatus(StatusEnum.NORMAL.getCode()); tBranchOfficeService.insert(tBranchOffice); //添加User对象 User user = new User(); user.setAccount(tBranchOffice.getAccount()); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(tBranchOffice.getPassword(), user.getSalt())); user.setStatus(ManagerStatus.OK.getCode()); user.setRoleid("3"); user.setDeptid(25); user.setCreatetime(new Date()); user.setRoleType(2); user.setObjectId(tBranchOffice.getId()); user.setName(tBranchOffice.getPrincipal()); user.setSex(1); userService.insert(user); return SUCCESS_TIP; } /** * 删除 */ @RequestMapping(value = "/delete") @ResponseBody public Object delete(@RequestParam Integer tBranchOfficeId) { TBranchOffice tBranchOffice = tBranchOfficeService.selectById(tBranchOfficeId); tBranchOffice.setStatus(StatusEnum.DELETE.getCode()); tBranchOfficeService.updateById(tBranchOffice); return SUCCESS_TIP; } /** * 修改 */ @RequestMapping(value = "/update") @ResponseBody @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW) public Object update(TBranchOffice tBranchOffice) { TBranchOffice branchOffice = tBranchOfficeService.selectById(tBranchOffice.getId()); User user = userService.selectOne(new EntityWrapper() .eq("role_type", 2) .eq("object_id", branchOffice.getId()) .last("LIMIT 1")); //判断账号是否已存在 if (SinataUtil.isNotEmpty(tBranchOffice.getAccount()) && SinataUtil.isNotEmpty(tBranchOffice.getPassword())){ if(Objects.isNull(user)){ //添加User对象 user.setAccount(tBranchOffice.getAccount()); user.setSalt(ShiroKit.getRandomSalt(5)); user.setPassword(ShiroKit.md5(tBranchOffice.getPassword(), user.getSalt())); user.setStatus(ManagerStatus.OK.getCode()); user.setRoleid("3"); user.setDeptid(25); user.setCreatetime(new Date()); user.setRoleType(2); user.setObjectId(tBranchOffice.getId()); user.setName(tBranchOffice.getPrincipal()); user.setSex(1); userService.insert(user); }else { if (!tBranchOffice.getAccount().equals(user.getAccount())){ //判断账号是否已存在 int count = userService.selectCount(new EntityWrapper().eq("account", tBranchOffice.getAccount())); if (count > 0){ return new SuccessTip(500,"该账号已存在!"); } } user.setAccount(tBranchOffice.getAccount()); user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); userService.updateById(user); } } TBranchOffice office = tBranchOfficeService.selectOne(new EntityWrapper().eq("branchOfficeName", tBranchOffice.getBranchOfficeName()) .last("LIMIT 1")); if(Objects.nonNull(office) && !tBranchOffice.getId().equals(office.getId())){ return new SuccessTip(500,"该分公司名称已存在!"); } // Object ocr = ocr("E:\\071bf986db0b00355c0ed190bbd3b16.png"); // System.err.println(ocr); Object o = tBranchOfficeService.addOrUpdate(tBranchOffice); if(Objects.nonNull(o)){ return o; } tBranchOffice.setPrincipal(tBranchOffice.getPrincipal().replace(" ","")); tBranchOfficeService.updateById(tBranchOffice); return SUCCESS_TIP; } /** * 详情 */ @RequestMapping(value = "/detail/{tBranchOfficeId}") @ResponseBody public Object detail(@PathVariable("tBranchOfficeId") Integer tBranchOfficeId) { return tBranchOfficeService.selectById(tBranchOfficeId); } }