package com.repair.controller; import com.alibaba.fastjson.JSON; import com.repair.annotation.PassToken; import com.repair.api.RepairUserControllerAPI; import com.repair.common.utils.paramUtils; import com.repair.model.enumModel.eUserZZ; import com.repair.model.pojo.*; import com.repair.model.request.ArticleBuildRequest; import com.repair.model.request.insertRepairUserRequest; import com.repair.model.request.updateAddressBookRequest; import com.repair.model.request.updateUserDataRequest; import com.repair.model.result.CommonResult; import com.repair.model.result.PageUtils; import com.repair.model.vo.*; import com.repair.services.*; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RestController; import java.lang.reflect.Array; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** *

* 前端控制器 *

* * @author ceshi * @since 2023-07-11 */ @RestController public class RepairUserController implements RepairUserControllerAPI { @Autowired private RepairUserService repairUserService; @Autowired private RepairRecordService repairRecordService; @Autowired private RepairArticleBuildService repairArticleBuildService; @Autowired private RepairDispatchRecordService repairDispatchRecordService; @Autowired private RepairCollaborateRecordService repairCollaborateRecordService; /** * 添加员工数据接口 * * @param irur 员工数据 * @return */ @Override @Transactional(rollbackFor = {Exception.class}) public CommonResult InsertRepairUser(insertRepairUserRequest irur) throws Exception { System.out.println("添加员工接口参数:" + JSON.toJSON(irur)); if (irur == null) { return CommonResult.fail("参数不能为空!"); } if (irur.getUserZzid() == null) { return CommonResult.fail("身份不能为空!"); } //无法添加用户 if (irur.getUserZzid().intValue() == eUserZZ.User.getValue()){ return CommonResult.fail("无法添加用户身份!"); } if (irur.getUserName() == null) { return CommonResult.fail("姓名不能为空!"); } if (irur.getTeamId() == null) { return CommonResult.fail("维修班不能为空!"); } if (irur.getSchoolId() == null) { return CommonResult.fail("校区不能为空!"); } //参数判断 if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) { if (irur.getCardNumber() == null) { return CommonResult.fail("微校卡号不能为空!"); } if (irur.getUserPhone() == null) { return CommonResult.fail("手机号码不能为空!"); } if (irur.getArticleBuilds() == null || irur.getArticleBuilds().size() <= 0) { return CommonResult.fail("报修关联楼栋不能为空!"); } } RepairUser data = repairUserService.getRepairByCardNumber(irur.getCardNumber()); RepairUser ru = new RepairUser(); if (data != null && !data.getUserZzid().equals(eUserZZ.User.getValue())) { return CommonResult.fail("该卡号已存在!"); } else if (data != null) { ru.setId(data.getId()); } try { //报修类型关联楼栋新增 修改 删除 List ArticleBuilds = new ArrayList<>();//传进来的报修楼栋 if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue() && data != null) { List oldArticleBuilds = repairArticleBuildService.getRepairArticleBuilds(data.getId()); for (ArticleBuildRequest articleBuild : irur.getArticleBuilds()) { if (articleBuild.getArticleId() == null) { return CommonResult.fail("报修物品ID不能为空"); } if (articleBuild.getBuildIds() == null || articleBuild.getBuildIds().size() <= 0) { return CommonResult.fail("关联楼栋不能为空"); } RepairArticleBuild articleData = new RepairArticleBuild(); articleData.setUserId(data.getId()); articleData.setArticleId(articleBuild.getArticleId()); articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ',')); if (articleBuild.getId() != null && articleBuild.getId() > 0) { articleData.setId(articleBuild.getId()); } ArticleBuilds.add(articleData); } if (ArticleBuilds.size() > 0) { boolean result = repairArticleBuildService.saveorUpdateArticleBuildBatch(ArticleBuilds); if (!result) { throw new Exception("添加失败!"); } } List newDatas = ArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList()); List oldDatas = oldArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList()); //oldData集合不在newDatas集合中的内容 List ids = oldDatas.stream().filter(item -> !newDatas.contains(item)).collect(Collectors.toList());//需要删除的id if (ids.size() > 0) { int deleted = repairArticleBuildService.deletedArticleBuildByIds(ids); if (deleted <= 0) { throw new Exception("添加失败!"); } } } ru.setUserName(irur.getUserName()); ru.setUserZzid(irur.getUserZzid()); ru.setTeamId(irur.getTeamId()); ru.setSchoolId(irur.getSchoolId()); ru.setWorkType(irur.getWorkType()); ru.setState(1);//设置正常接单 if (irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) { ru.setCardNumber(irur.getCardNumber()); ru.setUserPhone(irur.getUserPhone()); ru.setAcceptanceAssessTime(irur.getAcceptanceAssessTime()); ru.setMaintenanceAssessTime(irur.getMaintenanceAssessTime()); } int result = 0; if (data != null) { result = repairUserService.updateRepairUser(ru); } else { result = repairUserService.insertRepairUser(ru); if (result > 0 && irur.getUserZzid().intValue() != eUserZZ.Offline.getValue()) { for (ArticleBuildRequest articleBuild : irur.getArticleBuilds()) { RepairArticleBuild articleData = new RepairArticleBuild(); articleData.setUserId(result); articleData.setArticleId(articleBuild.getArticleId()); articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ',')); ArticleBuilds.add(articleData); } if (ArticleBuilds.size() > 0) { boolean insertBatch = repairArticleBuildService.saveArticleBuildBatch(ArticleBuilds); if (!insertBatch) { throw new Exception("添加失败!"); } } } } if (result <= 0) { throw new Exception("添加失败!"); } } catch (Exception e) { throw new Exception("添加失败!"); } return CommonResult.ok("添加成功"); } /** * 根据ID编辑用户数据的名称、手机号、身份、工种、维修班、楼栋关联ID、是否能转换、接单考核时间、维修考核时间 * * @param ra 员工数据 * @param bindingResult 是否为空判断 * @return */ @Override @Transactional(rollbackFor = {Exception.class}) public CommonResult updateRepairUserById(updateUserDataRequest ra, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } RepairUser data = new RepairUser(); data.setId(ra.getId()); data.setSchoolId(ra.getSchoolId()); data.setUserName(ra.getUserName()); data.setUserPhone(ra.getUserPhone()); data.setUserZzid(ra.getUserZzid()); data.setWorkType(ra.getWorkType()); data.setTeamId(ra.getTeamId()); data.setIsChange(ra.getIsChange()); data.setAcceptanceAssessTime(ra.getAcceptanceAssessTime()); data.setMaintenanceAssessTime(ra.getMaintenanceAssessTime()); try { if (ra.getArticleBuilds() != null && ra.getArticleBuilds().size() > 0) { //报修类型关联楼栋新增 修改 删除 List ArticleBuilds = new ArrayList<>();//传进来的报修楼栋 List oldArticleBuilds = repairArticleBuildService.getRepairArticleBuilds(data.getId()); for (ArticleBuildRequest articleBuild : ra.getArticleBuilds()) { if (articleBuild.getArticleId() == null) { return CommonResult.fail("报修物品ID不能为空"); } if (articleBuild.getBuildIds() == null || articleBuild.getBuildIds().size() <= 0) { return CommonResult.fail("关联楼栋不能为空"); } RepairArticleBuild articleData = new RepairArticleBuild(); articleData.setUserId(ra.getId()); articleData.setArticleId(articleBuild.getArticleId()); articleData.setBuildId(StringUtils.join(articleBuild.getBuildIds(), ',')); if (articleBuild.getId() != null && articleBuild.getId() > 0) { articleData.setId(articleBuild.getId()); } ArticleBuilds.add(articleData); } if(ArticleBuilds.size() > 0){ boolean result = repairArticleBuildService.saveorUpdateArticleBuildBatch(ArticleBuilds); if (!result) { throw new Exception("添加失败!"); } } List newDatas = ArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList()); List oldDatas = oldArticleBuilds.stream().map(RepairArticleBuild::getId).collect(Collectors.toList()); //oldData集合不在newDatas集合中的内容 List ids = oldDatas.stream().filter(item -> !newDatas.contains(item)).collect(Collectors.toList());//需要删除的id if (ids.size() > 0) { int deleted = repairArticleBuildService.deletedArticleBuildByIds(ids); if (deleted <= 0) { throw new Exception("修改失败!"); } } } int result = repairUserService.updateRepairUser(data); if (result <= 0) { throw new Exception("修改失败!"); } } catch (Exception e) { throw new Exception("修改失败!"); } return CommonResult.ok("修改成功"); } /** * 用户分页数据查询 * * @param currentPage 当前页 * @param pageCount 一页数据条数 * @param keyWord 关键字 * @param teamId 维修班 * 校方人员:0 * 第三方人员:1 * @param schoolId 校区ID * 黄家湖校区:1 * 墨轩湖校区:2 * @return */ @Override public CommonResult queryPageRepairUser(int currentPage, int pageCount, String keyWord, Integer teamId, Integer schoolId) { PageUtils result = repairUserService.queryPageRepairUser(currentPage, pageCount, keyWord, teamId, schoolId); List articleBuilds = new ArrayList<>(); if (result.getList() != null && result.getList().size() > 0) { List userIds = result.getList().stream().map(RepairUserVo::getId).collect(Collectors.toList()); articleBuilds = repairUserService.queryArticleBuilds(userIds); } for (RepairUserVo r : result.getList()) { r.setArticleNames(r.getArticleNames() == null ? new ArrayList() : r.getArticleNames()); r.setBuildNames(r.getBuildNames() == null ? new ArrayList() : r.getBuildNames()); r.setArticleBuilds(r.getArticleBuilds() == null ? new ArrayList<>() : r.getArticleBuilds()); r.setUserZzname(eUserZZ.stringOf(r.getUserZzid())); if (articleBuilds.size() > 0) { List ownerArticleBuild = articleBuilds.stream().filter(e -> e.getUserId().intValue() == r.getId()).collect(Collectors.toList()); for (ArticleBuildVo owner : ownerArticleBuild) { r.getArticleNames().add(owner.getArticleName()); r.getBuildNames().add(owner.getArticleName() + ":" + owner.getBuildName()); ArticleBuildRequest data = new ArticleBuildRequest(); data.setId(owner.getId()); data.setArticleId(owner.getArticleId()); List builds = Arrays.asList(owner.getBuildId().split(",")); data.setBuildIds(builds); r.getArticleBuilds().add(data); } } } return CommonResult.ok(result); } /** * 将原有用户表中的报修关联楼栋弄进去 */ @Override @PassToken public CommonResult insertArticleBuild() { List result = repairArticleBuildService.queryRepairArticleBuilds(); List users = repairUserService.queryRepairUserByArticle(); List insertData = new ArrayList<>(); for (RepairUser user : users) { List articleIds = Arrays.asList(user.getArticleId().split(",")); for (String articleId : articleIds) { if (result != null) { long count = result.stream().filter(e -> e.getArticleId().toString().equals(articleId) && e.getUserId().equals(user.getId())).count(); if (count <= 0) { RepairArticleBuild insertD = new RepairArticleBuild(); insertD.setArticleId(Integer.valueOf(articleId)); insertD.setBuildId(user.getBuildId()); insertD.setUserId(user.getId()); insertData.add(insertD); } } } } boolean insertResult = repairArticleBuildService.saveArticleBuildBatch(insertData); return insertResult ? CommonResult.ok("操作成功") : CommonResult.fail("操作失败"); } /** * 根据ID删除用户数据 * * @param id 数据ID * @return */ @Override @Transactional(rollbackFor = {Exception.class}) public CommonResult deleteRepairUserById(int id) throws Exception { RepairUser data = repairUserService.getRepairById(id); if (data == null) { return CommonResult.fail("当前数据不存在,删除失败!"); } //判断是否存在待接单或维修中数据: //接单表中是否存在当前用户ID的数据条数 //维修表中是否存在当前用户ID的数据条数 DisReceCountVo disCount = repairDispatchRecordService.queryDisReceCount(Integer.valueOf(id)); if (disCount != null) { if (disCount.getDisCount() > 0 || disCount.getRecCount() > 0) { return CommonResult.fail("存在待处理工单,无法删除"); } } try { //删除维修关联楼栋数据 if(data.getUserZzid().intValue() != eUserZZ.Offline.getValue()){ int deleteData = repairArticleBuildService.deleteRepairArticleBuildByWrapper(id); if(deleteData <= 0){ throw new Exception("删除失败!"); } } int result = repairUserService.deleteRepairUserById(id); if(result <= 0){ throw new Exception("删除失败!"); } } catch (Exception e) { throw new Exception("删除失败!"); } return CommonResult.ok("删除成功"); } /** * 根据卡号查找用户信息 * * @param cardNumber 卡号 * @return */ @Override public CommonResult queryRepairUserByCardNumber(String cardNumber) { RepairUser result = repairUserService.getRepairByCardNumber(cardNumber); return result == null ? CommonResult.fail("数据不存在") : CommonResult.ok(result); } /** * 员工分页数据查询 * * @param currentPage 当前页数 * @param pageCount 一页数据条数 * @param recordId 报修记录ID * @param keyWord 关键字 * @return */ @Override public CommonResult queryPageRepairUsers(int currentPage, int pageCount, Integer recordId, String keyWord) { RepairRecord rr = repairRecordService.getRepairById(recordId); if (rr == null) { return CommonResult.fail("维修单无效,获取维修师傅数据失败"); } String dateNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); PageUtils users = repairUserService.autoDispatchUser(currentPage, pageCount, rr.getSchoolId(), dateNow, rr.getArticleId(), rr.getBuildId(), keyWord); return CommonResult.ok(users); } /** * 转线下的员工列表分页数据查询 * * @param currentPage 当前页数 * @param pageCount 一页数据条数 * @param recordId 报修记录ID * @param keyWord 关键字 * @return */ @Override public CommonResult queryPageOfflineUsers(Integer currentPage, Integer pageCount, Integer recordId, String keyWord) { currentPage = currentPage == null || currentPage <= 0 ? 1 : currentPage; pageCount = pageCount == null || pageCount <= 0 ? 100 : pageCount; RepairRecord rr = repairRecordService.getRepairById(recordId); if (rr == null) { return CommonResult.fail("维修单无效,获取维修师傅数据失败"); } PageUtils users = repairUserService.autoOfflineRepairUser(currentPage, pageCount, rr.getSchoolId(), keyWord); return CommonResult.ok(users); } /** * 通讯录数据查询 * * @param schoolId 校区ID * @param userId 用户ID * @param keyWord 关键字 * @return */ @Override public CommonResult getAddressBook(Integer schoolId, Integer userId, String keyWord) { List abs = repairUserService.queryAddressBook(userId, schoolId, keyWord); List result = new ArrayList<>(); for (int i = 0; i <= 1; i++) { AddressBookListVo data = new AddressBookListVo(); data.setId(i); data.setName(i == 0 ? "校方人员" : "第三方人员"); List abDatas = abs.stream().filter(e -> e.getTeamId() == data.getId()).collect(Collectors.toList()); data.setList(abDatas); result.add(data); } return CommonResult.ok(result); } /** * 编辑通讯录 * * @param uabp 通讯录数据 * @param bindingResult 是否为空判断 * @return */ @Override public CommonResult updateAddressBook(updateAddressBookRequest uabp, BindingResult bindingResult) { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } RepairUser data = repairUserService.getRepairById(uabp.getId()); if (data == null) { return CommonResult.fail("当前数据不存在,编辑失败!"); } data.setUserPhone(uabp.getPhone()); data.setState(uabp.getState()); data.setWorkType(uabp.getWorkType()); data.setAcceptanceAssessTime(uabp.getAcceptanceTime()); data.setMaintenanceAssessTime(uabp.getMaintenanceTime()); int result = repairUserService.updateRepairUser(data); return result <= 0 ? CommonResult.fail("更新失败") : CommonResult.ok("更新成功"); } /** * 协作人员分页数据查询 * * @param currentPage 当前页数 * @param pageCount 一页数据条数 * @param schoolId 校区ID * @param userId 用户ID * @param keyWord 关键字 * @return */ @Override public CommonResult queryPageCollaborator(Integer currentPage, Integer pageCount, Integer schoolId, Integer userId, String keyWord, Integer recordId) { String dateNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); if (currentPage == null) { currentPage = 1; } if (pageCount == null) { pageCount = 100; } if (recordId != null) { RepairCollaborateRecord cdata = repairCollaborateRecordService.getRepairByRecordId(recordId); if (cdata == null) { return CommonResult.fail("协作申请无效,获取维修师傅数据失败"); } userId = cdata.getUserId(); } PageUtils result = repairUserService.queryCollaboratorUser(currentPage, pageCount, schoolId, userId, dateNow, keyWord); return CommonResult.ok(result); } /** * 后勤首页工单完成排行榜 * * @param currentPage 当前页数 * @param pageCount 一页数据条数 * @param schoolId 校区ID * @return */ @Override public CommonResult queryPositiveReviewPage(int currentPage, int pageCount, Integer schoolId) { PageUtils result = repairUserService.queryPositiveReviewPage(currentPage, pageCount, schoolId); return CommonResult.ok(result); } }