flower_city/src/main/java/com/dg/core/api/GuideRepairOrderAppletsController.java
@@ -1,6 +1,7 @@ package com.dg.core.api; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dg.core.ResultData; import com.dg.core.annotation.Authorization; import com.dg.core.annotation.CurrentUser; @@ -10,17 +11,21 @@ import com.dg.core.db.gen.entity.SysUser; import com.dg.core.service.IGuideEvolveService; import com.dg.core.service.IGuideRepairOrderService; import com.dg.core.service.IOrganizationChartService; import com.dg.core.util.PermissionUtil; import com.dg.core.util.SmsUtil; import com.dg.core.util.TableDataInfo; import com.dg.core.util.WxUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; /** @@ -36,6 +41,9 @@ @Autowired private IGuideEvolveService iGuideEvolveService; @Resource IOrganizationChartService iOrganizationChartService; private static String guideRepairOrderCompleteTemplateId = "7ZCHHii87rWPwVkdhZnvNiYbYi_Buq0NXO10cmUhAFk"; @@ -299,4 +307,32 @@ return ResultData.success(iGuideRepairOrderService.selectBySubmitId(sysUser.getUserId().toString())); } /** * 小程序获取导办工单管理列表 * @return */ @ApiOperation(value = "小程序获取导办工单管理列表",response = GuideRepairOrder.class) @GetMapping("/getList") @Authorization public TableDataInfo selectConfigList(@RequestParam(value = "state",required = false) String status, @CurrentUser SysUser sysUser) { List<String> ids=null; String userId=null; if(StringUtils.equals("1",sysUser.getIsDivisionHead())) { userId=null; ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService); } else { userId=sysUser.getUserId()+""; } List<GuideRepairOrder> list = iGuideRepairOrderService.selectConfigList(null,ids,status,userId); int num=iGuideRepairOrderService.countConfigList(null,ids,status,userId); return getDataTable(list,num); } } flower_city/src/main/java/com/dg/core/controller/GuideRepairOrderController.java
@@ -374,16 +374,19 @@ Assert.notNull(pageSize, "pageSize 不能为空"); Page<GuideRepairOrder> pageParam = new Page<>(pageNum,pageSize); List<String> ids=null; List<String> ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); String userId=null; if(StringUtils.equals("1",sysUser.getIsDivisionHead())) if( StringUtils.equals("2",sysUser.getRoleIds())) { userId=null; ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService); } else { userId=sysUser.getUserId()+""; if(StringUtils.equals("1",sysUser.getIsDivisionHead())) { userId=null; } else { ids=null; userId=sysUser.getUserId()+""; } } List<GuideRepairOrder> list = iGuideRepairOrderService.selectConfigList(pageParam,pageSize, @@ -399,18 +402,21 @@ public ResultData getWorkOrder(@CurrentUser SysUser sysUser) { WorkOrder workOrder=new WorkOrder(); List<String> ids=null; List<String> ids=PermissionUtil.getPermission(sysUser,iOrganizationChartService); String userId=null; if(StringUtils.equals("1",sysUser.getIsDivisionHead())) if( StringUtils.equals("2",sysUser.getRoleIds())) { userId=null; ids= PermissionUtil.getPermission(sysUser,iOrganizationChartService); if(StringUtils.equals("1",sysUser.getIsDivisionHead())) { userId=null; } else { ids=null; userId=sysUser.getUserId()+""; } } else { ids=null; userId=sysUser.getUserId()+""; } //状态(1待分配 2 待办结 3 已办结 4 待评价 5 已取消 ) workOrder.setAllNum(iGuideRepairOrderService.countStatisticsNum("",ids,null,null,null,null,null,userId)); workOrder.setWaitDistribution(iGuideRepairOrderService.countStatisticsNum("1",ids,null,null,null,null,null,userId)); flower_city/src/main/java/com/dg/core/db/gen/mapper/GuideRepairOrderMapper.java
@@ -56,6 +56,17 @@ @Param("status") String status, @Param("guideUserId") String guideUserId); /** * 获取工单列表(不分页用于小程序) * @param matterName * @return */ List<GuideRepairOrder> selectConfigList(@Param("matterName") String matterName, @Param("ids") List<String> ids, @Param("status") String status, @Param("guideUserId") String guideUserId); /** * 获取工单列表(求和) * @param matterName flower_city/src/main/java/com/dg/core/service/IGuideRepairOrderService.java
@@ -43,6 +43,14 @@ List<GuideRepairOrder> selectConfigList(IPage<GuideRepairOrder> page, Integer state, String matterName,List<String> ids,String status,String guideUserId); /** * 获取工单列表(不分页用于小程序) * @param matterName * @return */ List<GuideRepairOrder> selectConfigList(String matterName, List<String> ids,String status, String guideUserId); /** * 获取工单列表(求和) flower_city/src/main/java/com/dg/core/service/impl/GuideRepairOrderServiceImpl.java
@@ -208,6 +208,12 @@ } @Override public List<GuideRepairOrder> selectConfigList(String matterName, List<String> ids,String status, String guideUserId) { return baseMapper.selectConfigList(matterName, ids,status,guideUserId); } @Override public int countConfigList(String matterName, List<String> ids,String status,String guideUserId) { return baseMapper.countConfigList(matterName, ids,status,guideUserId); } flower_city/src/main/java/com/dg/core/service/impl/SlideshowServiceImpl.java
@@ -26,53 +26,57 @@ @Override public List<Slideshow> selectList() { return baseMapper.selectList(new QueryWrapper<Slideshow>().lambda()); return baseMapper.selectList(new QueryWrapper<Slideshow>().lambda()); } @Override public Slideshow queryById(Integer id) { return baseMapper.selectOne(new QueryWrapper<Slideshow>().lambda().eq(Slideshow::getId,id)); return baseMapper.selectOne(new QueryWrapper<Slideshow>().lambda().eq(Slideshow::getId, id)); } @Override public ResultData add(Slideshow slideshow){ if (slideshow.getUrl()==null||slideshow.getUrl()=="") return ResultData.error("图片地址不能为空"); if (slideshow.getLinkType()==null) return ResultData.error("跳转链接类型不能为空"); if (slideshow.getTitle()==null||slideshow.getTitle()=="") return ResultData.error("标题不能为空"); if (slideshow.getLinkType().equals(2)&&(slideshow.getContent()==null||slideshow.getContent()=="")) return ResultData.error("类型为富文本时,富文本内容不能为空"); if (slideshow.getLinkType().equals(4)&&(slideshow.getLink()==null||slideshow.getLink()=="")) return ResultData.error("类型为微信文章时,文章链接容不能为空"); public ResultData add(Slideshow slideshow) { if (slideshow.getUrl() == null || slideshow.getUrl() == "") return ResultData.error("图片地址不能为空"); if (slideshow.getLinkType() == null) return ResultData.error("跳转链接类型不能为空"); if (slideshow.getLinkType().equals(2)) { if (slideshow.getTitle() == null || slideshow.getTitle() == "") return ResultData.error("类型为富文本时,标题不能为空"); if (slideshow.getContent() == null || slideshow.getContent() == "") return ResultData.error("类型为富文本时,富文本内容不能为空"); } if (slideshow.getLinkType().equals(3) && (slideshow.getLink() == null || slideshow.getLink() == "")) return ResultData.error("类型为微信文章时,文章链接容不能为空"); slideshow.setCreateTime(LocalDateTime.now()); return ResultData.success( baseMapper.insert(slideshow)) ; return ResultData.success(baseMapper.insert(slideshow)); } @Override public ResultData update(Slideshow slideshow){ if (slideshow.getUrl()==null||slideshow.getUrl()=="") return ResultData.error("图片地址不能为空"); if (slideshow.getLinkType()==null) return ResultData.error("跳转链接类型不能为空"); if (slideshow.getTitle()==null||slideshow.getTitle()=="") return ResultData.error("标题不能为空"); if (slideshow.getLinkType().equals(2)&&(slideshow.getContent()==null||slideshow.getContent()=="")) return ResultData.error("类型为富文本时,富文本内容不能为空"); if (slideshow.getLinkType().equals(4)&&(slideshow.getLink()==null||slideshow.getLink()=="")) return ResultData.error("类型为微信文章时,文章链接容不能为空"); return ResultData.success(baseMapper.updateById(slideshow)); public ResultData update(Slideshow slideshow) { if (slideshow.getUrl() == null || slideshow.getUrl() == "") return ResultData.error("图片地址不能为空"); if (slideshow.getLinkType() == null) return ResultData.error("跳转链接类型不能为空"); if (slideshow.getLinkType().equals(2)) { if (slideshow.getTitle() == null || slideshow.getTitle() == "") return ResultData.error("类型为富文本时,标题不能为空"); if (slideshow.getContent() == null || slideshow.getContent() == "") return ResultData.error("类型为富文本时,富文本内容不能为空"); } if (slideshow.getLinkType().equals(3) && (slideshow.getLink() == null || slideshow.getLink() == "")) return ResultData.error("类型为微信文章时,文章链接容不能为空"); return ResultData.success(baseMapper.updateById(slideshow)); } @Override public ResultData delete(Integer id){ public ResultData delete(Integer id) { int i = baseMapper.deleteById(id); if(i>0) return ResultData.success(); if (i > 0) return ResultData.success(); else return ResultData.error(); return ResultData.error(); } } flower_city/src/main/resources/application-sms.properties
@@ -3,10 +3,22 @@ aliyun.screct=wkyvU72m6JmCFepCzGVuSpsJOsbRV0 aliyun.SignName=???? aliyun.TemplateCode=SMS_254326275 #??????????,??????????????????????????????????? #?????? #aliyun.TemplateCodeOvertime=SMS_254460011 #?????? aliyun.TemplateCodeOvertime=SMS_254460012 aliyun.TemplateCodeComplete=SMS_254875101 #?????? #aliyun.TemplateCodeComplete=SMS_254875101 #?????? aliyun.TemplateCodeComplete=SMS_254875102 #?????? #aliyun.TemplateCodeSubmit=SMS_254880764 #?????? aliyun.TemplateCodeSubmit=SMS_254880763 flower_city/src/main/resources/mapper/GuideRepairOrderMapper.xml
@@ -105,7 +105,7 @@ </select> <select id="countConfigList" resultType="integer"> select count(id) from automessage_guide_repair_order a select count(id) from automessage_guide_repair_order <where> <if test="matterName != null and matterName != ''"> AND (matter_name like concat('%', #{matterName}, '%')) or @@ -123,7 +123,7 @@ </foreach> </if> <if test="guideUserId != null and guideUserId != ''"> AND a.guide_user_id=#{guideUserId} AND automessage_guide_repair_order.guide_user_id=#{guideUserId} </if> </where> </select> springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/SanShuoMessageVO.java
New file @@ -0,0 +1,17 @@ package com.panzhihua.common.model.vos; import lombok.Data; import java.util.Date; @Data public class SanShuoMessageVO { private String touser; private String thing5; private String thing1; private String thing2; private String time3; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComEventTransferRecord.java
@@ -106,4 +106,5 @@ private List<ComEventRequestImageVO> images; @ApiModelProperty("上报等级,4专家上报到社区,3专家到行业分中心2社区上报到街道,1街道上报到三说会堂,5行业分中心上报到区三说会堂") private Integer reportLevel; private String content; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -18,6 +18,7 @@ import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.SanShuoMessageVO; import com.panzhihua.common.model.vos.community.switchs.CommunitySwitchAllAppletsVO; import com.panzhihua.common.model.vos.sanshuo.*; import com.panzhihua.common.service.user.UserService; @@ -26,14 +27,12 @@ import com.panzhihua.common.utlis.Snowflake; import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_community.api.ComSanShuoEventTransferRecordController; import com.panzhihua.service_community.dao.ComActDAO; import com.panzhihua.service_community.dao.ComEventMapper; import com.panzhihua.service_community.dao.ComSanshuoExpertDao; import com.panzhihua.service_community.dao.ComStreetDAO; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.entity.*; import com.panzhihua.service_community.model.dos.ComActDO; import com.panzhihua.service_community.model.dos.ComStreetDO; import com.panzhihua.service_community.service.*; import com.panzhihua.service_community.util.WXMessageUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.RandomUtils; import org.checkerframework.checker.units.qual.A; @@ -87,6 +86,9 @@ @Resource private ComSanshuoExpertDao comSanshuoExpertDao; @Resource private SysUserDao sysUserDao; @Override @@ -370,7 +372,8 @@ comEvent.setEventProcessStatus(2); comEvent.setSolve(0); comEvent.setDistribution(0); comEvent.setChangeExpert(0); //comEvent.setChangeExpert(0); comEvent.setArchive(0); } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ //调解完成,可以归档,查看 @@ -378,12 +381,51 @@ comEvent.setDistribution(0); comEvent.setChangeExpert(0); } }else{ }else if (comEvent.getCurrentProcessType().equals(5)){ //根据事件状态决定权限 if (comEvent.getEventProcessStatus().equals(1) ){ //待受理和待验证状态,可以受理,分配专家 //关闭调解和归档 comEvent.setArchive(0); comEvent.setConciliation(0); comEvent.setChangeExpert(0); } else if(comEvent.getEventProcessStatus().equals(2)){ //待分配和待验证状态,可以受理,分配专家 //关闭调解和归档 comEvent.setArchive(0); //comEvent.setConciliation(0); comEvent.setChangeExpert(0); if (comEvent.getSpecialistName().equals("待分配")){ comEvent.setSolve(0); } } else if (comEvent.getEventProcessStatus().equals(5)){ //调解中,可以查看,调解,更换专家,删除 comEvent.setDistribution(0); comEvent.setSolve(0); comEvent.setArchive(0); }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(2) && comEvent.getEventSucceed().equals(2)){ //调解完成并且成功,可以归档,查看 comEvent.setSolve(0); comEvent.setDistribution(0); comEvent.setChangeExpert(0); comEvent.setConciliation(0); } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ //调解完成,可以归档,查看 comEvent.setSolve(0); comEvent.setDistribution(0); comEvent.setChangeExpert(0); comEvent.setConciliation(0); } } else{ //未上上报到行业分中心,或者已上报到区三说会堂,仅查看 comEvent.setArchive(0); comEvent.setSolve(0); comEvent.setDistribution(0); comEvent.setChangeExpert(0); //comEvent.setConciliation(0); } }else if (userType.equals(5) || isStreet){ //街道权限,操作街道下属社区的所有事件 @@ -596,6 +638,8 @@ comEvent.setUpdateBy(comEvent.getRequestUserId()); comEvent.setUpdateAt(new Date()); boolean flag = save(comEvent); //推送消息到专家微信 sendMessage(comEvent.getSpecialistId(),comEvent); //添加一条对应记录 comEventMapper.insertEventAndExpertRecord(comEvent.getId(),expert.getId(),0); if (!flag) { @@ -604,6 +648,26 @@ //提交不视为一次流转记录,不保存图片 saveEventImageList(comEvent.getImages(), comEvent.getId(),null,1); return R.ok(ReturnMsgConstants.SAVE_SUCCESS); } public void sendMessage(Long expertId,ComEvent comEvent){ //获取专家的openId ComSanshuoExpert expert = comSanShuoExpertService.getById(expertId); SysUser sysUser = sysUserDao.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getPhone, expert.getPhone()).eq(SysUser::getType, 1)); SanShuoMessageVO vo=new SanShuoMessageVO(); if (nonNull(sysUser)){ if (isNull(sysUser.getOpenid())){ log.info("专家未登陆APP,无法推送"); return; } } vo.setTouser(sysUser.getOpenid()); vo.setThing1(commediateTypeService.getById(comEvent.getEventCategory()).getName()); vo.setThing5("您有一个新的调解事件需处理"); vo.setThing2(comEvent.getRequestUserName()); vo.setTime3(DateUtil.now()); WXMessageUtil.sendStatusMessage(vo); } @Transactional(rollbackFor = Exception.class) @@ -681,7 +745,7 @@ ComActDO comActDO = comActDAO.selectById(expert.getCommunityId()); comEvent.setCurrentOrgId(comActDO.getStreetId().toString()); //生成一次流转记录 comEvent.setCurrentEventProcessResult("专家上报到社区"); comEvent.setCurrentEventProcessResult("(专家上报到"+comActDO.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult()); //更改当前处理部门 comEvent.setCurrentOrgName(comActDO.getName()+"调解站"); comEventTransferRecord.setFromId(comEvent.getSpecialistId()); @@ -696,7 +760,8 @@ comEvent.setSpecialistName("待分配"); comEvent.setSpecialistId(99999L); //生成一次流转记录 comEvent.setCurrentEventProcessResult("专家上报到行业分中心"); ComSanshuoIndustryCenter center = comSanShuoIndustryCenterService.getById(comEvent.getCurrentOrgId()); comEvent.setCurrentEventProcessResult("(专家上报到"+center.getName()+")"+comEventConciliationVO.getCurrentEventProcessResult()); comEvent.setCurrentOrgName(expert.getUnit()); comEventTransferRecord.setFromId(comEvent.getSpecialistId()); comEventTransferRecord.setToId(expert.getIndustryCenterId()); @@ -709,7 +774,7 @@ comEvent.setCurrentOrgId("99999"); //生成一次流转记录 comEvent.setReportHall(1); comEvent.setCurrentEventProcessResult("行业分中心上报到区三说会堂"); comEvent.setCurrentEventProcessResult("(行业分中心上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult()); comEvent.setCurrentOrgName("区三说会堂"); comEventTransferRecord.setFromId(comEvent.getSpecialistId()); comEventTransferRecord.setToId(99999L); @@ -723,7 +788,7 @@ ComActDO comActDO = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getCommunityId, comEvent.getRequestUserCommunity()).eq(ComActDO::getAppId, "wx0cef797390444b75")); comEvent.setCurrentOrgId(comActDO.getStreetId().toString()); //生成一次流转记录 comEvent.setCurrentEventProcessResult("社区报到街道"); comEvent.setCurrentEventProcessResult("(社区上报到"+comStreetDAO.selectById(comActDO.getStreetId()).getName()+")"+comEventConciliationVO.getCurrentEventProcessResult()); comEvent.setCurrentOrgName(comStreetDAO.selectById(comActDO.getStreetId()).getName()+"调解站"); comEventTransferRecord.setFromId(comEvent.getRequestUserCommunity()); comEventTransferRecord.setToId(comActDO.getStreetId()); @@ -736,7 +801,7 @@ comEvent.setCurrentOrgId("99999"); comEvent.setCurrentOrgName("区三说会堂"); //生成一次流转记录 comEvent.setCurrentEventProcessResult("街道上报到区三说会堂"); comEvent.setCurrentEventProcessResult("(街道上报到区三说会堂中心)"+comEventConciliationVO.getCurrentEventProcessResult()); comEventTransferRecord.setFromId(Long.parseLong(comEvent.getCurrentOrgId())); comEventTransferRecord.setReportLevel(1); comEvent.setReportLevel(1); @@ -859,6 +924,8 @@ comEvent.setSpecialistName(specter.getName()); comEvent.setEventProcessStatus(SanShuoEventStatusEnum.VALID.getCode()); int flag = baseMapper.updateById(comEvent); ComEvent comEvent1 = comEventMapper.selectById(id); sendMessage(specialistId,comEvent1 ); //添加一条对应记录 comEventMapper.insertEventAndExpertRecord(id, specialistId,1); return flag > 0 ? R.ok() : R.fail(ReturnMsgConstants.UPDATE_FALSE); springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComSanShuoExpertServiceImpl.java
@@ -175,6 +175,13 @@ //街道后台 range=3; id=loginUserInfo.getStreetId(); }else if (loginUserInfo.getType().equals(12)){ range=2; id=comSanshuoIndustryCenterDao.selectOne(new QueryWrapper<ComSanshuoIndustryCenter>().lambda().eq(ComSanshuoIndustryCenter::getAccount,loginUserInfo.getAccount() )).getId(); }else if (loginUserInfo.getType().equals(3)){ //社区后台账号 range=4; id=loginUserInfo.getCommunityId(); } } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/util/WXMessageUtil.java
New file @@ -0,0 +1,56 @@ package com.panzhihua.service_community.util; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; import com.panzhihua.common.model.vos.SanShuoMessageVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import java.util.HashMap; import java.util.Map; @Slf4j public class WXMessageUtil { private static final String APP_ID="wx0cef797390444b75"; private static final String SEND_MESSAGE_URL="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; private static final String TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"; private static final String SECRET="c7ea9aaa7e391a487e8a5b9ba61045d1"; private static final String TEMPLATE_ID="iy8r0YbGlvmysbjGcbEj0yx-kftKBjC-HrXlSeNBrE0"; public static String queryToken(){ String tokenUrl=TOKEN_URL+"&appid="+APP_ID+"&secret="+SECRET; String result= HttpUtil.get(tokenUrl); cn.hutool.json.JSONObject obj = JSONUtil.parseObj(result); String token = obj.get("access_token").toString(); return token; } public static String sendStatusMessage(SanShuoMessageVO vo){ String token = queryToken(); if (StringUtils.isNotEmpty(token)){ //发送消息 String url=SEND_MESSAGE_URL+token; Map<String,Object> param=new HashMap<>(); param.put("touser", vo.getTouser()); param.put("template_id", TEMPLATE_ID); Map<String,Object> data=new HashMap<>(); data.put("thing1", formData(vo.getThing1())); data.put("thing5", formData(vo.getThing5())); data.put("thing2", formData(vo.getThing2())); data.put("time3", formData(vo.getTime3())); param.put("data", data); String paramMap = JSONUtil.toJsonStr(param); log.info("===============推送参数:"+paramMap); String result = HttpUtil.post(url, paramMap); log.info("状态推送结果"+result); return result; } return null; } public static Map<String,Object> formData(String param){ Map<String,Object> data=new HashMap<>(); data.put("value",param ); return data; } }