From fc17ca4f6b87d5a08f67544bac3e5175fbb53085 Mon Sep 17 00:00:00 2001 From: fengjin <1435304038@qq.com> Date: 星期一, 17 十月 2022 18:39:20 +0800 Subject: [PATCH] 1.提交订单给导办人员消息推送 2.提交设置超时时间 3.修改bug --- flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java | 321 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 195 insertions(+), 126 deletions(-) diff --git a/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java b/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java index 388de7c..870c228 100644 --- a/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java +++ b/flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java @@ -1,18 +1,25 @@ package com.dg.core.service.impl; +import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dg.core.db.gen.entity.*; import com.dg.core.db.gen.mapper.*; import com.dg.core.service.IGuideRepairOrderService; +import com.dg.core.service.ISysSettingsService; import com.dg.core.util.SmsUtil; import com.dg.core.util.Snowflake; +import com.dg.core.util.TestDate; +import com.dg.core.util.WxUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; @Service @@ -23,22 +30,25 @@ private TransactionEventMapper transactionEventMapper; @Resource - private GuideRepairOrderImageMapper guideRepairOrderImageMapper; + private GuideRepairOrderImageMapper guideRepairOrderImageMapper; @Resource private SysUserMapper sysUserMapper; - - @Resource - private OrganizationChartMapper organizationChartMapper; @Resource - private GuideEvolveMapper guideEvolveMapper; + private OrganizationChartMapper organizationChartMapper; + + @Resource + private GuideEvolveMapper guideEvolveMapper; + + @Resource + private AutomessageSysSettingsMapper iSysSettingsMapper; @Resource SmsUtil smsUtil; @Override - public int addOrder(GuideRepairOrder guideRepairOrder){ + public int addOrder(GuideRepairOrder guideRepairOrder) { TransactionEvent transactionEvent = transactionEventMapper.selectOne(new QueryWrapper<TransactionEvent>().lambda(). eq(TransactionEvent::getId, guideRepairOrder.getMatterId())); @@ -46,131 +56,141 @@ guideRepairOrder.setMatterName(transactionEvent.getMatterName()); guideRepairOrder.setDepartmentId(transactionEvent.getDepartmentId()); guideRepairOrder.setClassifyId(transactionEvent.getClassifyId()); - List<String> departmentIds=new ArrayList<>(); - Boolean isAdd=true;//是否能够新建工单 + List<String> departmentIds = new ArrayList<>(); + Boolean isAdd = true;//是否能够新建工单 List<GuideRepairOrder> guideRepairOrders = baseMapper.selectList(new QueryWrapper<GuideRepairOrder>().lambda() .eq(GuideRepairOrder::getMatterId, guideRepairOrder.getMatterId()) .eq(GuideRepairOrder::getConsultContent, guideRepairOrder.getConsultContent())); - if (guideRepairOrders.size()==0){ - isAdd=true; - }else { - for (GuideRepairOrder guideRepair:guideRepairOrders) { - if (guideRepair.getState().equals("1")||guideRepair.getState().equals("2")||guideRepair.getState().equals("6")||guideRepair.getState().equals("7")){ - isAdd=false; + if (guideRepairOrders.size() == 0) { + isAdd = true; + } else { + for (GuideRepairOrder guideRepair : guideRepairOrders) { + if (guideRepair.getState().equals("1") || guideRepair.getState().equals("2") || guideRepair.getState().equals("6") || guideRepair.getState().equals("7")) { + isAdd = false; break; } } } - if (isAdd) { - //自动分配业务代码开始 - List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode()); - if (organizationChartEntities!=null){ - for (OrganizationChartEntity organizationChart:organizationChartEntities) { - departmentIds.add(organizationChart.getId().toString()); - } - List<SysUser> sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员 - if (sysUsers.size()==0) {//如果此所属地区部门没有导半人员则看其下级地区有没有相关分类导办人员 - for (OrganizationChartEntity organizationChart:organizationChartEntities) { - //获取下级部门 - List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda() - .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString())); - if (organizationChartEntitiesUser!=null) - departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds); + if (isAdd) { + //自动分配业务代码开始 + List<OrganizationChartEntity> organizationChartEntities = organizationChartMapper.selectByCode(guideRepairOrder.getAreaCode()); + if (organizationChartEntities != null) { + for (OrganizationChartEntity organizationChart : organizationChartEntities) { + departmentIds.add(organizationChart.getId().toString()); } - sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员 - if (sysUsers.size()==0){//如果其下级部门仍没有该分类的导半人员则查询所以该所属地区的导办人员 - sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds,null,null);//获取导半人员 - if(sysUsers.size()==0)//如果该所属地区没有导办人员则为特殊单据需要手动分配 - guideRepairOrder.setState("1"); + List<SysUser> sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员 + if (sysUsers.size() == 0) {//如果此所属地区部门没有导半人员则看其下级地区有没有相关分类导办人员 + for (OrganizationChartEntity organizationChart : organizationChartEntities) { + //获取下级部门 + List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda() + .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString())); + if (organizationChartEntitiesUser != null) + departmentIds = this.getDepartmentIds(organizationChartEntitiesUser, departmentIds); + } + sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, "," + transactionEvent.getClassifyId(), transactionEvent.getClassifyId() + ",");//获取导半人员 + if (sysUsers.size() == 0) {//如果其下级部门仍没有该分类的导半人员则查询所以该所属地区的导办人员 + sysUsers = sysUserMapper.selectListByDepartmentId(departmentIds, null, null);//获取导半人员 + if (sysUsers.size() == 0)//如果该所属地区没有导办人员则为特殊单据需要手动分配 + guideRepairOrder.setState("1"); + } } + if (sysUsers.size() > 0) {//系统分配导办人员 + SysUser sysUser = sysUsers.get(0);//因为sql用了升序排序所以第一条就是待办结最少的人员之一 + guideRepairOrder.setState("2"); + sysUser.setTransactionNum(sysUser.getTransactionNum() + 1); + sysUserMapper.updateById(sysUser); + guideRepairOrder.setGuideUserId(sysUser.getUserId().toString()); + guideRepairOrder.setGuideDepartmentId(sysUser.getDepartmentId()); + //新增分配记录 + GuideEvolveEntity entity = new GuideEvolveEntity(); + entity.setCreateTime(LocalDateTime.now()); + entity.setUpdateTime(LocalDateTime.now()); + entity.setState("10"); + entity.setDepartmentalId(sysUser.getDepartmentId()); + entity.setToUserId(guideRepairOrder.getGuideUserId() + ""); + entity.setFromUserId(guideRepairOrder.getSubmitUserId()); + entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId()); + entity.setGuidOrderNum(guideRepairOrder.getOrderNum()); + //超时时间设置业务开始 + guideRepairOrder=this.setTimeoutTim(guideRepairOrder); + //超时时间设置业务结束 + //消息推送 + WxUtil wxUtil=new WxUtil(); + String accessToken="0"; + try { + accessToken= wxUtil.getBatteryCarAccessToken(); + } catch (Exception e) { + throw new RuntimeException(e); + } + wxUtil.sendGuideRepairOrderSubmit(sysUser.getOpenid(),accessToken,"WggWK_yG7_qfrTj8bQe-2co4ATgpXamLzT1xvrTu4K0",guideRepairOrder); +// smsUtil.sendSmsOvertime(sysUser.getPhonenumber(),guideRepairOrder.getMatterName()); + guideEvolveMapper.insertConfig(entity); + } + } else {//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配 + guideRepairOrder.setState("1"); } - if (sysUsers.size()>0){//系统分配导办人员 - SysUser sysUser = sysUsers.get(0);//因为sql用了升序排序所以第一条就是待办结最少的人员之一 - guideRepairOrder.setState("2"); - sysUser.setTransactionNum(sysUser.getTransactionNum()+1); - sysUserMapper.updateById(sysUser); - guideRepairOrder.setGuideUserId(sysUser.getUserId().toString()); - guideRepairOrder.setGuideDepartmentId(sysUser.getDepartmentId()); - //新增分配记录 - GuideEvolveEntity entity=new GuideEvolveEntity(); - entity.setCreateTime(LocalDateTime.now()); - entity.setUpdateTime(LocalDateTime.now()); - entity.setState("10"); - entity.setDepartmentalId(sysUser.getDepartmentId()); - entity.setToUserId(guideRepairOrder.getGuideUserId()+""); - entity.setFromUserId(guideRepairOrder.getSubmitUserId()); - entity.setFromDepartmentalId(guideRepairOrder.getGuideDepartmentId()); - entity.setGuidOrderNum(guideRepairOrder.getOrderNum()); -// smsUtil.sendSmsOvertime(sysUser.getPhonenumber(),guideRepairOrder.getMatterName()); - guideEvolveMapper.insertConfig(entity); - } - } - else{//如果该办事指南用户所选所属地区无导半部门则为特殊单据需要手动分配 - guideRepairOrder.setState("1"); - } - //自动分配业务代码结束 - guideRepairOrder.setCreateTime(LocalDateTime.now()); - guideRepairOrder.setUpdateTime(LocalDateTime.now()); - transactionEvent.setTransactionNum(transactionEvent.getTransactionNum()+1); - //保存图片地址 - if (guideRepairOrder.getImages()!=null){ - String[] images = guideRepairOrder.getImages().split(","); - for (String image: images) { - GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage(); - guideRepairOrderImage.setId(Snowflake.getId()); - guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum()); - guideRepairOrderImage.setUrl(image); - guideRepairOrderImage.setCreateTime(LocalDateTime.now()); - guideRepairOrderImage.setType(1); - guideRepairOrderImageMapper.insert(guideRepairOrderImage); - } - } - //保存视频地址 - if (guideRepairOrder.getVideo()!=null){ - if (guideRepairOrder.getOrderNum()!=null){ - GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage(); - guideRepairOrderImage.setId(Snowflake.getId()); - guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum()); - guideRepairOrderImage.setUrl(guideRepairOrder.getVideo()); - guideRepairOrderImage.setCreateTime(LocalDateTime.now()); - guideRepairOrderImage.setType(2); - guideRepairOrderImageMapper.insert(guideRepairOrderImage); - } - } + //自动分配业务代码结束 - int ans= baseMapper.insert(guideRepairOrder); - int i = transactionEventMapper.updateById(transactionEvent); - if (ans>0&&i>0) - return 1; - else + guideRepairOrder.setCreateTime(LocalDateTime.now()); + guideRepairOrder.setUpdateTime(LocalDateTime.now()); + transactionEvent.setTransactionNum(transactionEvent.getTransactionNum() + 1); + //保存图片地址 + if (guideRepairOrder.getImages() != null) { + String[] images = guideRepairOrder.getImages().split(","); + for (String image : images) { + GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage(); + guideRepairOrderImage.setId(Snowflake.getId()); + guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum()); + guideRepairOrderImage.setUrl(image); + guideRepairOrderImage.setCreateTime(LocalDateTime.now()); + guideRepairOrderImage.setType(1); + guideRepairOrderImageMapper.insert(guideRepairOrderImage); + } + } + //保存视频地址 + if (guideRepairOrder.getVideo() != null) { + if (guideRepairOrder.getOrderNum() != null) { + GuideRepairOrderImage guideRepairOrderImage = new GuideRepairOrderImage(); + guideRepairOrderImage.setId(Snowflake.getId()); + guideRepairOrderImage.setGuideRepairOrderId(guideRepairOrder.getOrderNum()); + guideRepairOrderImage.setUrl(guideRepairOrder.getVideo()); + guideRepairOrderImage.setCreateTime(LocalDateTime.now()); + guideRepairOrderImage.setType(2); + guideRepairOrderImageMapper.insert(guideRepairOrderImage); + } + } + + int ans = baseMapper.insert(guideRepairOrder); + int i = transactionEventMapper.updateById(transactionEvent); + if (ans > 0 && i > 0) + return 1; + else + return 0; + } else { return 0; - } - else { - return 0; - } + } } - public List<String> getDepartmentIds( List<OrganizationChartEntity> organizationChartEntities,List<String> departmentIds){ - for (OrganizationChartEntity organizationChart:organizationChartEntities) { + public List<String> getDepartmentIds(List<OrganizationChartEntity> organizationChartEntities, List<String> departmentIds) { + for (OrganizationChartEntity organizationChart : organizationChartEntities) { departmentIds.add(organizationChart.getId().toString()); List<OrganizationChartEntity> organizationChartEntitiesUser = organizationChartMapper.selectList(new QueryWrapper<OrganizationChartEntity>().lambda() .eq(OrganizationChartEntity::getParentId, organizationChart.getId().toString())); - if (organizationChartEntitiesUser!=null) - departmentIds=this.getDepartmentIds(organizationChartEntitiesUser,departmentIds); + if (organizationChartEntitiesUser != null) + departmentIds = this.getDepartmentIds(organizationChartEntitiesUser, departmentIds); } - return departmentIds; + return departmentIds; } @Override public GuideRepairOrder selectConfigData(String Id, String orderNum) { - return baseMapper.selectConfigData(Id,orderNum); + return baseMapper.selectConfigData(Id, orderNum); } @Override public int updateConfig(GuideRepairOrder order) { - if ( order.getGuideUserId()!=null&&!order.getGuideUserId().equals("")) - { + if (order.getGuideUserId() != null && !order.getGuideUserId().equals("")) { SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getGuideUserId())); order.setGuideUserPhone(sysUser.getPhonenumber()); } @@ -183,57 +203,106 @@ } @Override - public List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state, String matterName,List<String> ids) { - return baseMapper.selectConfigList(page,state,matterName, ids); + public List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state, String matterName, List<String> ids) { + return baseMapper.selectConfigList(page, state, matterName, ids); } @Override - public int countConfigList(String matterName,List<String> ids) { - return baseMapper.countConfigList(matterName,ids); + public int countConfigList(String matterName, List<String> ids) { + return baseMapper.countConfigList(matterName, ids); } @Override public int countUser(String userId, String state) { - return baseMapper.countUser(userId,state); + return baseMapper.countUser(userId, state); } @Override public int updateSysUserOrderNum(GuideEvolveEntity order) { - if(order.getState().equals("13")){ - SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId())); - sysUser.setTransactionNum(sysUser.getTransactionNum()+1); - return sysUserMapper.updateById(sysUser); - }else if(order.getState().equals("12")){ - SysUser sysUserTo= sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId())); - SysUser sysUserFrom= sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId())); - sysUserTo.setTransactionNum(sysUserTo.getTransactionNum()+1); - sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum()-1); + if (order.getState().equals("13")) { + SysUser sysUser = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId())); + sysUser.setTransactionNum(sysUser.getTransactionNum() + 1); + return sysUserMapper.updateById(sysUser); + } else if (order.getState().equals("12")) { + SysUser sysUserTo = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getToUserId())); + SysUser sysUserFrom = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId())); + sysUserTo.setTransactionNum(sysUserTo.getTransactionNum() + 1); + sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum() - 1); sysUserMapper.updateById(sysUserFrom); - return sysUserMapper.updateById(sysUserTo); - } + return sysUserMapper.updateById(sysUserTo); + } else if (order.getState().equals("7")) { + SysUser sysUserFrom = sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, order.getFromUserId())); + sysUserFrom.setTransactionNum(sysUserFrom.getTransactionNum() - 1); + return sysUserMapper.updateById(sysUserFrom); + } return 0; } /** * 1 今天 2昨天 3本月 4本年度 String time + * * @param state * @param ids * @return */ @Override - public int countStatisticsNum(String state,List<String> ids,String time, - String isTimeout,String evaluateState,List<String> classifyIds) { - return baseMapper.countStatisticsNum(state,ids,time,isTimeout,evaluateState,classifyIds); + public int countStatisticsNum(String state, List<String> ids, String time, + String isTimeout, String evaluateState, List<String> classifyIds) { + return baseMapper.countStatisticsNum(state, ids, time, isTimeout, evaluateState, classifyIds); } @Override public List<CountListNum> countListNum(String state, List<String> ids, Integer time) { - return baseMapper.countListNum(state, ids,time); + return baseMapper.countListNum(state, ids, time); } @Override - public SysUser getSubmitUser(GuideRepairOrder guideRepairOrder){ - return sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId,guideRepairOrder.getSubmitUserId())); + public SysUser getSubmitUser(GuideRepairOrder guideRepairOrder) { + return sysUserMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId, guideRepairOrder.getSubmitUserId())); + } + + @Override + public GuideRepairOrder setTimeoutTim(GuideRepairOrder guideRepairOrder){ + AutomessageSysSettings automessageSysSettings = iSysSettingsMapper.selectOne( + new QueryWrapper<AutomessageSysSettings>().lambda() + .eq(AutomessageSysSettings::getSettingName,"系统超时基础设置")); + LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0);//今天开始时间 + LocalDateTime morningStartTime = LocalDate.now().atTime(9, 0, 0);//上午工作开始时间 + LocalDateTime morningEndTime = LocalDate.now().atTime(12, 0, 0);//上午工作结束时间 + LocalDateTime afternoonStartTime = LocalDate.now().atTime(13, 30, 0);//下午工作开始时间 + LocalDateTime afternoonEndTime = LocalDate.now().atTime(17, 0, 0);//下午工作结束时间 + LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59);//今天结束时间 + TestDate td = new TestDate(); + DateTime dateTimeUser= DateTime.now(); + if (td.isWeekday(dateTimeUser)){ + if ( LocalDateTime.now().isAfter(startTime)&&LocalDateTime.now().isBefore(morningStartTime)){//提交时间是上午上班前 + guideRepairOrder.setTimeoutTime(LocalDate.now(). + atTime(9+automessageSysSettings.getTimeoutNotificationNum(),0,0)); + }else if (LocalDateTime.now().isAfter(morningStartTime)&&LocalDateTime.now().isBefore(morningEndTime)){//提交时间在上午工作日内 + guideRepairOrder.setTimeoutTime(LocalDateTime.now().plusHours(automessageSysSettings.getTimeoutNotificationNum())); + }else if(LocalDateTime.now().isAfter(morningEndTime)&&LocalDateTime.now().isBefore(afternoonStartTime)){//提交时间在工作日午休内 + guideRepairOrder.setTimeoutTime(LocalDate.now(). + atTime(13+automessageSysSettings.getTimeoutNotificationNum(),30,0)); + }else if(LocalDateTime.now().isAfter(afternoonStartTime)&&LocalDateTime.now().isBefore(afternoonEndTime)){//提交时间在下午工作日内 + guideRepairOrder.setTimeoutTime(LocalDateTime.now().plusHours(automessageSysSettings.getTimeoutNotificationNum())); + }else if(LocalDateTime.now().isAfter(afternoonEndTime)&&LocalDateTime.now().isBefore(endTime)){//提交时间在下午下班后 + DateTime dateTime = td.nextWeekDay(dateTimeUser); + Calendar calendar = dateTime.toCalendar(); + LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), + 9+automessageSysSettings.getTimeoutNotificationNum(),0);//设置时间为下一个工作日时间的9点+设置超时时间 + guideRepairOrder.setTimeoutTime(localDateTime); + } + }else//当前不是工作日则获取下一个工作日 + { + DateTime dateTime = td.nextWeekDay(dateTimeUser); + Calendar calendar = dateTime.toCalendar(); + LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), + 9+automessageSysSettings.getTimeoutNotificationNum(),0);//设置时间为下一个工作日时间的9点+设置超时时间 + guideRepairOrder.setTimeoutTime(localDateTime); + } + return guideRepairOrder; } -- Gitblit v1.7.1