| | |
| | | package com.java110.job.adapt.Repair; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.factory.CommunitySettingFactory; |
| | | import com.java110.core.factory.WechatFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.dto.community.CommunityDto; |
| | | import com.java110.dto.file.FileRelDto; |
| | | import com.java110.dto.owner.OwnerAppUserDto; |
| | | import com.java110.dto.machine.MachinePrinterDto; |
| | | import com.java110.dto.printerRule.PrinterRuleDto; |
| | | import com.java110.dto.printerRule.PrinterRuleMachineDto; |
| | | import com.java110.dto.printerRule.PrinterRuleRepairDto; |
| | | import com.java110.dto.repair.RepairDto; |
| | | import com.java110.dto.repair.RepairUserDto; |
| | | import com.java110.dto.smallWeChat.SmallWeChatDto; |
| | | import com.java110.dto.smallWechatAttr.SmallWechatAttrDto; |
| | | import com.java110.dto.staffAppAuth.StaffAppAuthDto; |
| | | import com.java110.dto.wechat.SmallWeChatDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.entity.order.Business; |
| | | import com.java110.entity.wechat.Content; |
| | | import com.java110.entity.wechat.Data; |
| | | import com.java110.entity.wechat.PropertyFeeTemplateMessage; |
| | | import com.java110.intf.common.IFileRelInnerServiceSMO; |
| | | import com.java110.dto.system.Business; |
| | | import com.java110.intf.common.*; |
| | | import com.java110.intf.community.ICommunityInnerServiceSMO; |
| | | import com.java110.intf.community.IRepairInnerServiceSMO; |
| | | import com.java110.intf.community.IRepairUserInnerServiceSMO; |
| | |
| | | import com.java110.intf.user.IStaffAppAuthInnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.job.adapt.DatabusAdaptImpl; |
| | | import com.java110.job.msgNotify.MsgNotifyFactory; |
| | | import com.java110.job.printer.IPrinter; |
| | | import com.java110.po.owner.RepairUserPo; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.cache.UrlCache; |
| | | import com.java110.utils.constant.MappingConstant; |
| | | import com.java110.utils.exception.CmdException; |
| | | import com.java110.utils.factory.ApplicationContextFactory; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.ImageUtils; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.slf4j.Logger; |
| | |
| | | @Autowired |
| | | private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl; |
| | | |
| | | //模板信息推送地址 |
| | | private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="; |
| | | |
| | | @Autowired |
| | | private IPrinterRuleRepairV1InnerServiceSMO printerRuleRepairV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IPrinterRuleV1InnerServiceSMO printerRuleV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IPrinterRuleMachineV1InnerServiceSMO printerRuleMachineV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IMachinePrinterV1InnerServiceSMO machinePrinterV1InnerServiceSMOImpl; |
| | | |
| | | |
| | | @Override |
| | | public void execute(Business business, List<Business> businesses) { |
| | | RepairUserDto repairUserDto = new RepairUserDto(); |
| | | repairUserDto.setbId(business.getbId()); |
| | | repairUserDto.setStatusCd("0"); |
| | | List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMO.queryRepairUsers(repairUserDto); |
| | | //获取员工处理状态(10001 处理中;10002 结单;10003 退单;10004 转单;10005 提交) |
| | | String state = repairUserDtos.get(0).getState(); |
| | | if (!state.equals("10005")) { |
| | | //获取报修id |
| | | String repairId = repairUserDtos.get(0).getRepairId(); |
| | | RepairDto repairDto = new RepairDto(); |
| | | repairDto.setRepairId(repairId); |
| | | repairDto.setStatusCd("0"); |
| | | List<RepairDto> repairDtos = repairInnerServiceSMO.queryRepairs(repairDto); |
| | | //查询报修状态(1000 未派单;1100 接单;1200 退单;1300 转单;1400 申请支付;1500 支付失败;1700 待评价;1800 电话回访;1900 办理完成;2000 未办理结单) |
| | | String repairState = repairDtos.get(0).getState(); |
| | | //获取联系人姓名 |
| | | String repairName = repairDtos.get(0).getRepairName(); |
| | | //获取联系人电话 |
| | | String tel = repairDtos.get(0).getTel(); |
| | | //获取位置信息 |
| | | String repairObjName = repairDtos.get(0).getRepairObjName(); |
| | | //报修对象ID |
| | | String repairObjId = repairDtos.get(0).getRepairObjId(); |
| | | //获取报修内容 |
| | | String context = repairDtos.get(0).getContext(); |
| | | //获取派单时间 |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String time = format.format(repairUserDtos.get(0).getCreateTime()); |
| | | //获取小区id |
| | | String communityId = repairDtos.get(0).getCommunityId(); |
| | | //查询小区信息 |
| | | CommunityDto communityDto = new CommunityDto(); |
| | | communityDto.setCommunityId(communityId); |
| | | List<CommunityDto> communityDtos = communityInnerServiceSMO.queryCommunitys(communityDto); |
| | | //派单方式(100表示抢单;200表示指派;300表示轮训) |
| | | String repairWay = repairDtos.get(0).getRepairWay(); |
| | | if (repairState.equals("1100") && repairWay.equals("200")) { |
| | | //获取维修员工的id |
| | | String staffId = repairUserDtos.get(1).getStaffId(); |
| | | //获取用户id |
| | | String preStaffId = repairUserDtos.get(0).getPreStaffId(); |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("communityId", communityId); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("staffId", staffId); |
| | | paramIn.put("repairObjId", repairObjId); |
| | | paramIn.put("preStaffId", preStaffId); |
| | | paramIn.put("repairId", repairId); |
| | | //给维修师傅推送信息 |
| | | sendMsg(paramIn, communityDtos.get(0)); |
| | | //派单成功给业主推送信息 |
| | | publishMsg(paramIn, communityDtos.get(0)); |
| | | //为企业微信群发消息 |
| | | sendMsgToWechatGroup(paramIn, communityDtos.get(0)); |
| | | } else if (repairState.equals("1100") && (repairWay.equals("100") || repairWay.equals("300"))) { |
| | | String staffId = ""; |
| | | if (repairUserDtos.size() > 1) { |
| | | staffId = repairUserDtos.get(1).getStaffId(); |
| | | } else { |
| | | //获取维修员工的id |
| | | staffId = repairUserDtos.get(0).getStaffId(); |
| | | } |
| | | //获取用户id |
| | | String preStaffId = repairUserDtos.get(0).getPreStaffId(); |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("staffId", staffId); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("repairObjId", repairObjId); |
| | | paramIn.put("preStaffId", preStaffId); |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | //抢单成功给业主推送信息 |
| | | publishMsg(paramIn, communityDtos.get(0)); |
| | | if (repairUserDtos.size() > 1) { |
| | | //给维修师傅推送信息 |
| | | sendMsg(paramIn, communityDtos.get(0)); |
| | | } else { |
| | | //抢单成功给维修师傅推送信息 |
| | | publishMessage(paramIn, communityDtos.get(0)); |
| | | } |
| | | } else if (repairState.equals("1300")) { //转单 |
| | | //获取维修员工id |
| | | String staffId = repairUserDtos.get(0).getStaffId(); |
| | | //获取上级用户姓名 |
| | | String preStaffName = repairUserDtos.get(0).getPreStaffName(); |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("staffId", staffId); |
| | | paramIn.put("preStaffName", preStaffName); |
| | | //给维修师傅推送信息 |
| | | sendMessage(paramIn, communityDtos.get(0)); |
| | | JSONObject data = business.getData(); |
| | | JSONArray businessRepairUsers = new JSONArray(); |
| | | System.out.println("收到日志:>>>>>>>>>>>>>" + data.toJSONString()); |
| | | if (data.containsKey(RepairUserPo.class.getSimpleName())) { |
| | | Object bObj = data.get(RepairUserPo.class.getSimpleName()); |
| | | if (bObj instanceof JSONObject) { |
| | | businessRepairUsers.add(bObj); |
| | | } else if (bObj instanceof List) { |
| | | businessRepairUsers = JSONArray.parseArray(JSONObject.toJSONString(bObj)); |
| | | } else { |
| | | businessRepairUsers = (JSONArray) bObj; |
| | | } |
| | | } else { |
| | | if (data instanceof JSONObject) { |
| | | businessRepairUsers.add(data); |
| | | } |
| | | } |
| | | for (int bOwnerRepairIndex = 0; bOwnerRepairIndex < businessRepairUsers.size(); bOwnerRepairIndex++) { |
| | | JSONObject businessRepairUser = businessRepairUsers.getJSONObject(bOwnerRepairIndex); |
| | | doDealOwnerRepair(businesses, businessRepairUser); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 转单给维修师傅推送信息 |
| | | * |
| | | * @param paramIn |
| | | * @param communityDto |
| | | */ |
| | | private void sendMessage(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | | smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY); |
| | | smallWeChatDto.setObjId(communityDto.getCommunityId()); |
| | | List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto); |
| | | if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | private void doDealOwnerRepair(List<Business> businesses, JSONObject businessRepairUser) { |
| | | RepairUserDto repairUserDto = new RepairUserDto(); |
| | | repairUserDto.setRuId(businessRepairUser.getString("ruId")); |
| | | List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMO.queryRepairUsers(repairUserDto); |
| | | //获取员工处理状态(10001 处理中;10002 结单;10003 退单;10004 转单;10005 提交;10006 已派单;10007 已评价;10008 已回访;10009 待支付;11000 待评价;12000 已支付;12001 暂停) |
| | | String state = repairUserDtos.get(0).getState(); |
| | | if (RepairUserDto.STATE_SUBMIT.equals(state)) { |
| | | return; |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_DISPATCH_REMIND_TEMPLATE); |
| | | List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); |
| | | if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号消息模板"); |
| | | return; |
| | | //获取报修id |
| | | String repairId = repairUserDtos.get(0).getRepairId(); |
| | | RepairDto repairDto = new RepairDto(); |
| | | repairDto.setRepairId(repairId); |
| | | List<RepairDto> repairDtos = repairInnerServiceSMO.queryRepairs(repairDto); |
| | | //查询报修状态(1000 未派单;1100 接单;1200 退单;1300 转单;1400 申请支付;1500 支付失败;1700 待评价;1800 电话回访;1900 办理完成;2000 未办理结单) |
| | | String repairState = repairDtos.get(0).getState(); |
| | | //获取联系人姓名 |
| | | String repairName = repairDtos.get(0).getRepairName(); |
| | | //获取联系人电话 |
| | | String tel = repairDtos.get(0).getTel(); |
| | | //获取位置信息 |
| | | String repairObjName = repairDtos.get(0).getRepairObjName(); |
| | | //报修对象ID |
| | | String repairObjId = repairDtos.get(0).getRepairObjId(); |
| | | //获取报修内容 |
| | | String context = repairDtos.get(0).getContext(); |
| | | //获取派单时间 |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | String time = format.format(repairUserDtos.get(0).getCreateTime()); |
| | | //获取小区id |
| | | String communityId = repairDtos.get(0).getCommunityId(); |
| | | //查询小区信息 |
| | | CommunityDto communityDto = new CommunityDto(); |
| | | communityDto.setCommunityId(communityId); |
| | | List<CommunityDto> communityDtos = communityInnerServiceSMO.queryCommunitys(communityDto); |
| | | if (repairState.equals("1100") && businessRepairUser.getString("state").equals("10006")) { //派单 |
| | | JSONObject paramIn = new JSONObject(); |
| | | for (Business business : businesses) { |
| | | String businessTypeCd = business.getBusinessTypeCd(); |
| | | if (!StringUtil.isEmpty(businessTypeCd) && businessTypeCd.equals("130200030001")) { |
| | | JSONObject data = business.getData(); |
| | | if (!StringUtil.isEmpty(data.getString("state")) && data.getString("state").equals("10001")) { |
| | | paramIn.put("staffId", data.getString("staffId")); |
| | | paramIn.put("staffName", data.getString("staffName")); |
| | | } else if (data.getString("state").equals("10006")) { |
| | | paramIn.put("preStaffId", data.getString("preStaffId")); |
| | | paramIn.put("preStaffName", data.getString("preStaffName")); |
| | | } |
| | | } |
| | | } |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("communityId", communityId); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("repairObjId", repairObjId); |
| | | paramIn.put("repairId", repairId); |
| | | //给维修师傅推送信息 |
| | | sendStaffMsg(paramIn, communityDtos.get(0)); |
| | | //派单成功给业主推送信息 |
| | | sendOwnerMsg(paramIn, communityDtos.get(0)); |
| | | |
| | | // 自动打印小票 |
| | | autoPrintRepair(repairUserDtos.get(0).getRuId(), repairDtos.get(0).getRepairType(), communityDtos.get(0)); |
| | | |
| | | //为企业微信群发消息 |
| | | sendMsgToWechatGroup(paramIn, communityDtos.get(0)); |
| | | |
| | | |
| | | } else if (repairState.equals("1100") && !businessRepairUser.getString("state").equals("10006")) { |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("staffId", businessRepairUser.getString("staffId")); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("repairObjId", repairObjId); |
| | | paramIn.put("preStaffId", businessRepairUser.getString("preStaffId")); |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | //抢单成功给维修师傅推送信息 |
| | | sendStaffMsg(paramIn, communityDtos.get(0)); |
| | | //抢单成功给业主推送信息 |
| | | sendOwnerMsg(paramIn, communityDtos.get(0)); |
| | | } else if (repairState.equals("1300")) { //转单 |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | paramIn.put("tel", tel); |
| | | paramIn.put("context", context); |
| | | paramIn.put("time", time); |
| | | paramIn.put("staffId", businessRepairUser.getString("staffId")); |
| | | paramIn.put("preStaffName", businessRepairUser.getString("preStaffName")); |
| | | //给维修师傅推送信息 |
| | | sendStaffMsg(paramIn, communityDtos.get(0)); |
| | | } |
| | | String templateId = smallWechatAttrDtos.get(0).getValue(); |
| | | String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); |
| | | if (StringUtil.isEmpty(accessToken)) { |
| | | logger.info("推送微信模板,获取accessToken失败:{}", accessToken); |
| | | return; |
| | | } |
| | | String url = sendMsgUrl + accessToken; |
| | | //根据 userId 查询到openId |
| | | StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto(); |
| | | staffAppAuthDto.setStaffId(paramIn.getString("staffId")); |
| | | staffAppAuthDto.setAppType("WECHAT"); |
| | | List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto); |
| | | if (staffAppAuthDtos.size() > 0) { |
| | | String openId = staffAppAuthDtos.get(0).getOpenId(); |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content("您有新的维修任务,维修信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("repairName"))); |
| | | data.setKeyword2(new Content(paramIn.getString("tel"))); |
| | | data.setKeyword3(new Content(paramIn.getString("time"))); |
| | | data.setKeyword4(new Content(paramIn.getString("context") + "\r\n" + "报修位置:" + paramIn.getString("repairObjName"))); |
| | | data.setRemark(new Content(paramIn.getString("preStaffName") + "转单给您,请及时登录公众号接单确认!")); |
| | | templateMessage.setData(data); |
| | | //获取员工公众号地址 |
| | | String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 派单给维修师傅推送信息 |
| | |
| | | * @param paramIn |
| | | * @param communityDto |
| | | */ |
| | | private void sendMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | private void sendStaffMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | JSONObject content = new JSONObject(); |
| | | content.put("repairName", paramIn.getString("repairName")); |
| | | content.put("tel", paramIn.getString("tel")); |
| | | content.put("time", paramIn.getString("time")); |
| | | String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL"); |
| | | content.put("url", wechatUrl); |
| | | //获取具体位置 |
| | | String address = ""; |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | address = paramIn.getString("repairObjName"); |
| | | } else { |
| | | address = communityDto.getName() + paramIn.getString("repairObjName"); |
| | | } |
| | | content.put("address", address); |
| | | MsgNotifyFactory.sendDistributeRepairStaffMsg(communityDto.getCommunityId(), paramIn.getString("staffId"), content); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 派单(抢单)成功后给业主推送信息 |
| | | * |
| | | * @param paramIn |
| | | * @param communityDto |
| | | */ |
| | | private void sendOwnerMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | return; |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_DISPATCH_REMIND_TEMPLATE); |
| | | List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); |
| | | if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号消息模板"); |
| | | //查询维修员工信息 |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(paramIn.getString("staffId")); |
| | | userDto.setStatusCd("0"); |
| | | List<UserDto> users = userInnerServiceSMO.getUsers(userDto); |
| | | //获取维修员工姓名 |
| | | String name = users.get(0).getName(); |
| | | //获取维修员工联系方式 |
| | | String tel = users.get(0).getTel(); |
| | | //获取用户id |
| | | String preStaffId = paramIn.getString("preStaffId"); |
| | | if (StringUtil.isEmpty(preStaffId)) { |
| | | return; |
| | | } |
| | | String templateId = smallWechatAttrDtos.get(0).getValue(); |
| | | String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); |
| | | if (StringUtil.isEmpty(accessToken)) { |
| | | logger.info("推送微信模板,获取accessToken失败:{}", accessToken); |
| | | return; |
| | | } |
| | | //获取具体位置 |
| | | String address = ""; |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | address = paramIn.getString("repairObjName"); |
| | | } else { |
| | | address = communityDto.getName() + paramIn.getString("repairObjName"); |
| | | } |
| | | String url = sendMsgUrl + accessToken; |
| | | //根据 userId 查询到openId |
| | | StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto(); |
| | | staffAppAuthDto.setStaffId(paramIn.getString("staffId")); |
| | | staffAppAuthDto.setAppType("WECHAT"); |
| | | List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto); |
| | | if (staffAppAuthDtos.size() > 0) { |
| | | String openId = staffAppAuthDtos.get(0).getOpenId(); |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content("您有新的维修任务,维修信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("repairName"))); |
| | | data.setKeyword2(new Content(paramIn.getString("tel"))); |
| | | data.setKeyword3(new Content(paramIn.getString("time"))); |
| | | data.setKeyword4(new Content(paramIn.getString("context") + "\r\n" + "报修位置:" + address)); |
| | | data.setRemark(new Content("请及时登录公众号接单确认!")); |
| | | templateMessage.setData(data); |
| | | //获取员工公众号地址 |
| | | String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } |
| | | } |
| | | |
| | | JSONObject content = new JSONObject(); |
| | | content.put("name", name); |
| | | content.put("tel", tel); |
| | | content.put("time", paramIn.getString("time")); |
| | | String wechatUrl = UrlCache.getOwnerUrl(); |
| | | if (!StringUtil.isEmpty(wechatUrl) && wechatUrl.contains("?")) { |
| | | wechatUrl += ("&wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } else { |
| | | wechatUrl += ("?wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } |
| | | content.put("url", wechatUrl); |
| | | |
| | | MsgNotifyFactory.sendDistributeRepairOwnerMsg(communityDto.getCommunityId(), preStaffId, content); |
| | | |
| | | } |
| | | |
| | | private void sendMsgToWechatGroup(JSONObject paramIn, CommunityDto communityDto) { |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | String imgUrl = MappingCache.getValue("IMG_PATH"); |
| | | imgUrl += (!StringUtil.isEmpty(imgUrl) && imgUrl.endsWith("/") ? "" : "/"); |
| | | String imgUrl = MappingCache.getValue(MappingConstant.FILE_DOMAIN, "IMG_PATH"); |
| | | FileRelDto fileRelDto = new FileRelDto(); |
| | | fileRelDto.setObjId(paramIn.getString("repairId")); |
| | | List<FileRelDto> fileRelDtos = fileRelInnerServiceSMOImpl.queryFileRels(fileRelDto); |
| | |
| | | image.put("base64", ImageUtils.getBase64ByImgUrl(imageUrl)); |
| | | image.put("md5", ImageUtils.getMd5ByImgUrl(imageUrl)); |
| | | responseEntity = outRestTemplate.postForEntity(url, rebootParam.toJSONString(), String.class); |
| | | logger.debug("返回信息:"+responseEntity); |
| | | logger.debug("返回信息:" + responseEntity); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 派单(抢单)成功后给业主推送信息 |
| | | * // 自动打印小票 |
| | | * |
| | | * @param paramIn |
| | | * @param ruId |
| | | * @param repairType |
| | | * @param communityDto |
| | | */ |
| | | private void publishMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | | smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY); |
| | | smallWeChatDto.setObjId(communityDto.getCommunityId()); |
| | | List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto); |
| | | if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | private void autoPrintRepair(String ruId, String repairType, CommunityDto communityDto) { |
| | | |
| | | PrinterRuleRepairDto printerRuleRepairDto = new PrinterRuleRepairDto(); |
| | | printerRuleRepairDto.setCommunityId(communityDto.getCommunityId()); |
| | | printerRuleRepairDto.setRepairType(repairType); |
| | | List<PrinterRuleRepairDto> printerRuleRepairDtos = printerRuleRepairV1InnerServiceSMOImpl.queryPrinterRuleRepairs(printerRuleRepairDto); |
| | | |
| | | if (printerRuleRepairDtos == null || printerRuleRepairDtos.size() < 1) { |
| | | return; |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_SCHEDULE_TEMPLATE); |
| | | List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); |
| | | if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号消息模板"); |
| | | |
| | | PrinterRuleDto printerRuleDto = new PrinterRuleDto(); |
| | | printerRuleDto.setRuleId(printerRuleRepairDtos.get(0).getRuleId()); |
| | | printerRuleDto.setCommunityId(communityDto.getCommunityId()); |
| | | printerRuleDto.setState(PrinterRuleDto.STATE_NORMAL); |
| | | int count = printerRuleV1InnerServiceSMOImpl.queryPrinterRulesCount(printerRuleDto); |
| | | |
| | | if (count < 1) { |
| | | return; |
| | | } |
| | | String templateId = smallWechatAttrDtos.get(0).getValue(); |
| | | String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); |
| | | if (StringUtil.isEmpty(accessToken)) { |
| | | logger.info("推送微信模板,获取accessToken失败:{}", accessToken); |
| | | |
| | | PrinterRuleMachineDto printerRuleMachineDto = new PrinterRuleMachineDto(); |
| | | printerRuleMachineDto.setCommunityId(communityDto.getCommunityId()); |
| | | printerRuleMachineDto.setRuleId(printerRuleRepairDtos.get(0).getRuleId()); |
| | | List<PrinterRuleMachineDto> printerRuleMachineDtos = printerRuleMachineV1InnerServiceSMOImpl.queryPrinterRuleMachines(printerRuleMachineDto); |
| | | if (printerRuleMachineDtos == null || printerRuleMachineDtos.size() < 1) { |
| | | return; |
| | | } |
| | | //查询维修员工信息 |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(paramIn.getString("staffId")); |
| | | userDto.setStatusCd("0"); |
| | | List<UserDto> users = userInnerServiceSMO.getUsers(userDto); |
| | | //获取维修员工姓名 |
| | | String name = users.get(0).getName(); |
| | | //获取维修员工联系方式 |
| | | String tel = users.get(0).getTel(); |
| | | //获取用户id |
| | | String preStaffId = paramIn.getString("preStaffId"); |
| | | if (!StringUtil.isEmpty(preStaffId)) { |
| | | OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); |
| | | ownerAppUserDto.setUserId(preStaffId); |
| | | ownerAppUserDto.setAppType("WECHAT"); |
| | | //查询绑定业主 |
| | | List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMO.queryOwnerAppUsers(ownerAppUserDto); |
| | | if (ownerAppUserDtos.size() > 0) { |
| | | //获取openId |
| | | String openId = ownerAppUserDtos.get(0).getOpenId(); |
| | | String url = sendMsgUrl + accessToken; |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content("您的报修受理成功,维修人员信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("context"))); |
| | | data.setKeyword2(new Content(name)); |
| | | data.setKeyword3(new Content(tel)); |
| | | data.setKeyword4(new Content(paramIn.getString("time"))); |
| | | data.setRemark(new Content("您的报修已受理,请保持电话畅通,以便维修人员及时跟您取得联系!感谢您的使用!")); |
| | | templateMessage.setData(data); |
| | | //获取业主公众号地址 |
| | | String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | |
| | | for (PrinterRuleMachineDto tmpPrinterRuleMachineDto : printerRuleMachineDtos) { |
| | | try { |
| | | doPrint(tmpPrinterRuleMachineDto, ruId); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 抢单成功后给维修师傅推送信息 |
| | | * |
| | | * @param paramIn |
| | | * @param communityDto |
| | | */ |
| | | private void publishMessage(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | | smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY); |
| | | smallWeChatDto.setObjId(communityDto.getCommunityId()); |
| | | List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto); |
| | | if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | return; |
| | | |
| | | private void doPrint(PrinterRuleMachineDto tmpPrinterRuleMachineDto, String ruId) { |
| | | MachinePrinterDto machinePrinterDto = new MachinePrinterDto(); |
| | | machinePrinterDto.setCommunityId(tmpPrinterRuleMachineDto.getCommunityId()); |
| | | machinePrinterDto.setMachineId(tmpPrinterRuleMachineDto.getMachineId()); |
| | | List<MachinePrinterDto> machinePrinterDtos = machinePrinterV1InnerServiceSMOImpl.queryMachinePrinters(machinePrinterDto); |
| | | |
| | | Assert.listOnlyOne(machinePrinterDtos, "云打印机不存在"); |
| | | |
| | | IPrinter printer = ApplicationContextFactory.getBean(machinePrinterDtos.get(0).getImplBean(), IPrinter.class); |
| | | |
| | | if (printer == null) { |
| | | throw new CmdException("打印机异常,未包含适配器"); |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_DISPATCH_REMIND_TEMPLATE); |
| | | List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); |
| | | if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号消息模板"); |
| | | return; |
| | | } |
| | | String templateId = smallWechatAttrDtos.get(0).getValue(); |
| | | String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); |
| | | if (StringUtil.isEmpty(accessToken)) { |
| | | logger.info("推送微信模板,获取accessToken失败:{}", accessToken); |
| | | return; |
| | | } |
| | | //获取具体位置 |
| | | String address = ""; |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | address = paramIn.getString("repairObjName"); |
| | | } else { |
| | | address = communityDto.getName() + paramIn.getString("repairObjName"); |
| | | } |
| | | //根据 userId 查询到openId |
| | | StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto(); |
| | | staffAppAuthDto.setStaffId(paramIn.getString("staffId")); |
| | | staffAppAuthDto.setAppType("WECHAT"); |
| | | List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto); |
| | | String openId = staffAppAuthDtos.get(0).getOpenId(); |
| | | String url = sendMsgUrl + accessToken; |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content("恭喜您抢单成功,报修信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("repairName"))); |
| | | data.setKeyword2(new Content(paramIn.getString("tel"))); |
| | | data.setKeyword3(new Content(paramIn.getString("time"))); |
| | | data.setKeyword4(new Content(paramIn.getString("context") + "\r\n" + "报修位置:" + address)); |
| | | data.setRemark(new Content("请及时与客户取得联系!")); |
| | | templateMessage.setData(data); |
| | | //获取员工公众号地址 |
| | | String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | |
| | | printer.printRepair(ruId, tmpPrinterRuleMachineDto.getCommunityId(), Integer.parseInt(tmpPrinterRuleMachineDto.getQuantity()), machinePrinterDtos.get(0)); |
| | | |
| | | } |
| | | } |