MQTask.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639
  1. package com.iamberry.rst.controllers.mq;
  2. import com.iamberry.rst.core.cm.CompanyInfo;
  3. import com.iamberry.rst.core.cm.Postage;
  4. import com.iamberry.rst.core.cm.PostageAuthority;
  5. import com.iamberry.rst.core.cm.SalesOrder;
  6. import com.iamberry.rst.core.fm.ComplaintDetectInfo;
  7. import com.iamberry.rst.core.order.ProductType;
  8. import com.iamberry.rst.core.sms.OrderMessage;
  9. import com.iamberry.rst.core.sms.SmsMessage;
  10. import com.iamberry.rst.core.sys.Admin;
  11. import com.iamberry.rst.core.tools.KuaiDi100;
  12. import com.iamberry.rst.core.tools.LogisticsInfo;
  13. import com.iamberry.rst.faces.address.AddressService;
  14. import com.iamberry.rst.faces.cm.*;
  15. import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
  16. import com.iamberry.rst.faces.order.EfastOrderService;
  17. import com.iamberry.rst.faces.order.LogisticsInfoService;
  18. import com.iamberry.rst.faces.order.OrderSyncLogService;
  19. import com.iamberry.rst.faces.sms.MessageService;
  20. import com.iamberry.rst.faces.sms.SmsService;
  21. import com.iamberry.rst.faces.sys.SysConfigService;
  22. import com.iamberry.rst.faces.sys.SysService;
  23. import com.iamberry.rst.util.SmsConfig;
  24. import com.iamberry.rst.utils.EfastUtil;
  25. import com.iamberry.wechat.tools.ResponseJson;
  26. import net.sf.json.JSONArray;
  27. import net.sf.json.JSONObject;
  28. import org.slf4j.Logger;
  29. import org.slf4j.LoggerFactory;
  30. import org.springframework.beans.factory.InitializingBean;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.context.annotation.Lazy;
  33. import org.springframework.scheduling.annotation.Scheduled;
  34. import org.springframework.stereotype.Component;
  35. import java.text.MessageFormat;
  36. import java.text.SimpleDateFormat;
  37. import java.util.*;
  38. import static com.iamberry.rst.util.SmsConfig.*;
  39. @Component(value="mqTask")
  40. @Lazy(false)
  41. public class MQTask implements InitializingBean {
  42. private static Logger logger = LoggerFactory.getLogger(MQTask.class);
  43. @Autowired
  44. private MessageService messageService;
  45. @Autowired
  46. private SmsService smsService;
  47. @Autowired
  48. private EfastOrderService efastOrderService;
  49. @Autowired
  50. private SalesOrderService salesOrderService;
  51. @Autowired
  52. private SysService sysService;
  53. @Autowired
  54. private AddressService addressService;
  55. @Autowired
  56. private CustomerService customerService;
  57. @Autowired
  58. private SysConfigService sysConfigService;
  59. @Autowired
  60. private KuaiDi100 kuaidi100;
  61. @Autowired
  62. private LogisticsInfoService logisticsInfoService;
  63. @Autowired
  64. private PostageAuthorityService postageAuthorityService;
  65. @Autowired
  66. private PostageService postageService;
  67. @Autowired
  68. private CompanyInfoService companyInfoService;
  69. @Autowired
  70. private ComplaintDetectInfoService complaintDetectInfoService;
  71. @Autowired
  72. private OrderSyncLogService orderSyncLogService;
  73. @Autowired
  74. private EfastUtil efastUtil;
  75. private Object lock = new Object();
  76. private Object lock1 = new Object();
  77. public void afterPropertiesSet() throws Exception {
  78. }
  79. //@Scheduled(cron = "*/10 * * * * ?")
  80. //@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点
  81. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  82. // @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  83. public void auditMessagePush(){
  84. logger.info("------------执行消息提醒,推送待处理订单短信 start-----------");
  85. List<SmsMessage> smsMessageList = messageService.listOrderMessages();
  86. if(smsMessageList != null && smsMessageList.size() > 0){
  87. //循环推送短信
  88. for(SmsMessage smsMessage : smsMessageList){
  89. ResponseJson json = smsService.sms(smsMessage.getTel(),smsMessage.getTypes(),smsMessage.getCounts());
  90. if(json.getReturnCode() == 200){
  91. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信成功");
  92. //设置审核通过记录为无效
  93. if(smsMessage.getTypes() == 3){
  94. OrderMessage orderMessage = new OrderMessage();
  95. orderMessage.setMessageStatus(2);
  96. orderMessage.setMessageType(3);
  97. messageService.updateOrderMessageStatus(orderMessage);
  98. }
  99. }else{
  100. logger.info("------------推送到+"+smsMessage.getTel()+"一条"+(smsMessage.getTypes() == 1?"待处理":"驳回")+"短信失败"+json.getReturnMsg());
  101. }
  102. }
  103. }
  104. }
  105. /**
  106. * 批量同步百胜订单信息 -- 客诉系统 -- 作废
  107. * @throws Exception
  108. */
  109. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  110. //@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  111. //@Scheduled(cron = "*/10 * * * * ?")
  112. public void syncEfastOrderList() throws Exception {
  113. logger.info("---------------- 批量同步百胜订单开始 ---------------");
  114. int pageNo = 1;
  115. int pageSize = 20;
  116. boolean flag = false; //控制是否还需要获取百胜订单信息
  117. String date = "";
  118. synchronized (lock) {
  119. String configParameter = sysConfigService.getSysConfig(1);
  120. do {
  121. //批量获取百胜订单信息
  122. JSONObject obj = null;
  123. try{
  124. obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, configParameter);
  125. }catch (Exception e){
  126. logger.info("Efast订单获取失败,失败原因:"+e.getMessage());
  127. }
  128. if (obj == null) {
  129. return;
  130. }
  131. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  132. if (pageNo < totalResults) {
  133. flag = true;
  134. pageNo++;
  135. } else {
  136. flag = false;
  137. }
  138. salesOrderService.addSalesOrderList(obj);
  139. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  140. }
  141. logger.info("---------------- 批量同步百胜订单结束 ---------------");
  142. }
  143. /**
  144. * 同步百胜订单状态等信息----客诉系统 -- 作废
  145. * @throws Exception
  146. */
  147. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  148. // @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  149. //@Scheduled(cron = "*/10 * * * * ?")
  150. public void syncEfastOrderStatus() throws Exception {
  151. int pageNo = 1;
  152. int pageSize = 20;
  153. boolean flag = false; //控制是否还需要获取百胜订单信息
  154. /*int returnPageNo = 1;
  155. int returnPageSize = 20;
  156. boolean returnFlag = false; //控制是否还需要获取百胜退单信息*/
  157. synchronized (lock1) {
  158. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  159. Date beginDate = new Date();
  160. SalesOrder order = new SalesOrder();
  161. Calendar date = Calendar.getInstance();
  162. //获取同步百胜订单的开始时间
  163. String configParameter = sysConfigService.getSysConfig(2); //获取客诉订单同步百胜订单状态时间间隔
  164. date.setTime(beginDate);
  165. date.set(Calendar.DATE, date.get(Calendar.DATE) - Integer.valueOf(configParameter));
  166. order.setStartDate(format.parse(format.format(date.getTime())));
  167. order.setSalesCreateTime(format.parse(format.format(date.getTime())));
  168. //根据创建时间获取订单信息
  169. List<SalesOrder> orderlist = salesOrderService.listSalesOrder(order);
  170. logger.info("需要同步订单状态的订单有:" + orderlist.size() + "个;");
  171. if (orderlist == null || orderlist.size() == 0) {
  172. return;
  173. }
  174. do {
  175. //批量获取百胜订单信息
  176. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, format.format(order.getSalesCreateTime()));
  177. if (obj == null) {
  178. return;
  179. }
  180. JSONArray orderList = obj.getJSONArray("list");
  181. if (orderList == null || orderList.size() == 0) {
  182. return;
  183. }
  184. salesOrderService.updateOrderList(orderList, orderlist);
  185. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  186. if (pageNo < totalResults) {
  187. flag = true;
  188. pageNo++;
  189. } else {
  190. flag = false;
  191. }
  192. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  193. //无法实现获取退单信息,只能查出已确认未收货的订单
  194. /*do {
  195. //批量获取百胜退单信息
  196. JSONObject obj = efastOrderService.listReturnOrderFormEfast(returnPageNo, returnPageSize, format.format(date.getTime()));
  197. if (obj == null) {
  198. return;
  199. }
  200. JSONArray orderList = obj.getJSONArray("list");
  201. System.out.println("orderList="+orderList);
  202. if (orderList == null || orderList.size() == 0) {
  203. return;
  204. }
  205. salesOrderService.updateReturnOrderList(orderList, orderlist);
  206. int totalResults = obj.getInt("total_results"); //百胜返回总页数
  207. if (returnPageNo < totalResults) {
  208. returnFlag = true;
  209. returnPageNo++;
  210. } else {
  211. returnFlag = false;
  212. }
  213. } while (returnFlag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页*/
  214. }
  215. }
  216. /**客诉系统 自动追踪发货信息**/
  217. // @Scheduled(cron = "0 0/30 * * * ?")//每30分钟执行一次
  218. /*@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次*/
  219. // public void synchronousDelivery()throws Exception{
  220. //
  221. //
  222. // /*同步维修订单*/
  223. // Repair repair = new Repair();
  224. // List<Repair> listRepair = repairService.listSynchronizingRepair(repair);
  225. // if(listRepair.size() > 0){
  226. // for(Repair re:listRepair){
  227. // JSONObject respData = efastOrderService.getOrderFormEfastByOrderId(re.getRepairBackEfastOrderId());
  228. // EfastOrder efastOrder = efastUtil.respDataConversion(respData);
  229. // if(efastOrder == null){
  230. // return;
  231. // }
  232. // if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
  233. // re.setRepairSendName(efastOrder.getOrderAddressName());
  234. // re.setRepairSendTel(efastOrder.getOrderAddressTel());
  235. // //查询省市县id
  236. // /*Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
  237. // re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
  238. // re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
  239. // re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));*/
  240. // /*re.setRepairSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));*/
  241. // /*re.setRepairSendAddress(efastOrder.getOrderAddress());*/
  242. // re.setRepairSendLogisticsCompany(efastOrder.getOrderPostFirm());
  243. // re.setRepairSendLogisticsNo(efastOrder.getOrderPostNum());
  244. // /*re.setRepairSendStatus(2);*/
  245. // Integer msg = repairService.updateRepairInfo(re,null,null);
  246. // if(msg > 0){
  247. // //发送维修发货通知短信
  248. // sendSMS("<维修业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),re.getRepairBackTel());
  249. // }
  250. // }
  251. //
  252. // }
  253. // }
  254. //
  255. // /*同步换货订单*/
  256. // Renewed renewed = new Renewed();
  257. // List<Renewed> listRenewed = renewedService.listSynchronizingRenewed(renewed);
  258. // if(listRenewed.size() > 0){
  259. // for(Renewed re:listRenewed){
  260. // JSONObject respData = efastOrderService.getOrderFormEfastByOrderId(re.getRenewedBackEfastOrderId());
  261. // EfastOrder efastOrder = efastUtil.respDataConversion(respData);
  262. // if(efastOrder == null){
  263. // return;
  264. // }
  265. // if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
  266. // re.setRenewedSendName(efastOrder.getOrderAddressName());
  267. // re.setRenewedSendTel(efastOrder.getOrderAddressTel());
  268. // /*//查询省市县id
  269. // Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
  270. // re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
  271. // re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
  272. // re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
  273. // re.setRenewedSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
  274. // re.setRenewedSendAddress(efastOrder.getOrderAddress());*/
  275. // re.setRenewedSendLogisticsCompany(efastOrder.getOrderPostFirm());
  276. // re.setRenewedSendLogisticsNo(efastOrder.getOrderPostNum());
  277. // /*re.setRenewedSendStatus(2);*/
  278. // Integer msg = renewedService.updateRenewedInfo(re,null,null);
  279. // if(msg > 0){
  280. // //发送换货发货通知短信
  281. // sendSMS("<换货业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),re.getRenewedBackTel());
  282. // }
  283. // }
  284. // }
  285. // }
  286. // /*同步补发订单*/
  287. // Reissue reissue = new Reissue();
  288. // List<Reissue> listReissue = reissueService.listSynchronizingReissue(reissue);
  289. // if(listReissue.size() > 0){
  290. // for(Reissue re:listReissue){
  291. // JSONObject respData = efastOrderService.getOrderFormEfastByOrderId(re.getReissueBackEfastOrderId());
  292. // EfastOrder efastOrder = efastUtil.respDataConversion(respData);
  293. // if(efastOrder == null){
  294. // return;
  295. // }
  296. // if (efastOrder.getOrderStatus() == 1){//1代表已发货 发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
  297. // re.setReissueSendName(efastOrder.getOrderAddressName());
  298. // re.setReissueSendTel(efastOrder.getOrderAddressTel());
  299. // /*//查询省市县id
  300. // Map<String,String> pccMap = provincesCitiesCounties(efastOrder);
  301. // re.setProvinceNumber(Integer.valueOf(pccMap.get("provinceId")));
  302. // re.setCityNumber(Integer.valueOf(pccMap.get("cityId")));
  303. // re.setAreaNumber(Integer.valueOf(pccMap.get("districtId")));
  304. // re.setReissueSendMergeAddress(pccMap.get("province")+"-"+pccMap.get("city")+"-"+pccMap.get("district"));
  305. // re.setReissueSendAddress(efastOrder.getOrderAddress());*/
  306. // re.setReissueSendLogisticsCompany(efastOrder.getOrderPostFirm());
  307. // re.setReissueSendLogisticsNo(efastOrder.getOrderPostNum());
  308. // /*re.setReissueSendStatus(2);*/
  309. // Integer msg = reissueService.updateReissueInfo(re);
  310. // if(msg > 0){
  311. // //发送补发发货通知短信
  312. // sendSMS("<补发业务>",efastOrder.getOrderPostFirm(),efastOrder.getOrderPostNum(),re.getCustomerId(),re.getReissueSendTel());
  313. //
  314. // }
  315. // }
  316. // }
  317. // }
  318. // }
  319. /**
  320. * 发送发货通知
  321. * @param relation 维修 换货 补发
  322. * @param postFirm 物流公司代码
  323. * @param postNum 物流单号
  324. * @param customerId 客诉主键id
  325. * @param tel 手机号
  326. */
  327. public void sendSMS(String relation,String postFirm,String postNum,Integer customerId,String tel){
  328. if(postFirm != null && !postFirm.equals("") && postNum != null && !postNum.equals("")
  329. && customerId > 0 && !tel.equals("")){
  330. postFirm = KuaiDi100.replace(postFirm);
  331. if(!postFirm.equals("")){
  332. ProductType productType = customerService.getcompanyAffiliation(customerId);
  333. if(productType != null){
  334. String rejected_text = "";
  335. //1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
  336. if (productType.getTypeCompany() == 1){
  337. rejected_text = RELATION_SEND_WATERO;
  338. }
  339. if (productType.getTypeCompany() == 2){
  340. rejected_text = RELATION_SEND_SHANGDUO;
  341. }
  342. if (productType.getTypeCompany() == 3){
  343. rejected_text = RELATION_SEND_YULIA;
  344. }
  345. if (productType.getTypeCompany() == 4){
  346. rejected_text = RELATION_SEND_AIBERLE;
  347. }
  348. String text = MessageFormat.format(rejected_text, relation,postFirm+","+postNum);
  349. smsService.sendOtherCMS(tel,text);
  350. }
  351. }
  352. }
  353. }
  354. /**
  355. * 查询省市县id
  356. * @param
  357. */
  358. // public Map<String,String> provincesCitiesCounties(EfastOrder efastOrder){
  359. // Map<String,String> map = new HashMap<String, String>();
  360. // String province = "";
  361. // String city = "";
  362. // String zone = "";
  363. // //省
  364. // if(efastOrder.getOrderProvince().substring(efastOrder.getOrderProvince().length() - 1,efastOrder.getOrderProvince().length()).equals("省")){
  365. // province = efastOrder.getOrderProvince().substring(0,efastOrder.getOrderProvince().length() - 1);
  366. // }else{
  367. // province = efastOrder.getOrderProvince();
  368. // }
  369. // Province provinceinfo = new Province();
  370. // provinceinfo.setProvince(province);
  371. // List<Province> provinceList = addressService.listProvince(provinceinfo);
  372. // if(provinceList.size() < 1){
  373. // provinceinfo.setProvince(null);
  374. // provinceList = addressService.listProvince(provinceinfo);
  375. // }
  376. // map.put("provinceId",String.valueOf(provinceList.get(0).getProvinceId()));
  377. // map.put("province",provinceList.get(0).getProvince());
  378. //
  379. //
  380. // //市
  381. // city = efastOrder.getOrderCity().substring(0,efastOrder.getOrderCity().length() - 1);
  382. // City cityInfo = new City();
  383. // cityInfo.setCity(city);
  384. // List<City> cityList = addressService.listCity(cityInfo);
  385. // if(cityList.size() < 1){
  386. // cityInfo.setCity(null);
  387. // cityInfo.setProvinceId(provinceList.get(0).getProvinceId());
  388. // cityList = addressService.listCity(cityInfo);
  389. // }
  390. // map.put("cityId",String.valueOf(cityList.get(0).getCityId()));
  391. // map.put("city",cityList.get(0).getCity());
  392. //
  393. // //区
  394. // zone = efastOrder.getOrderArea().substring(0,efastOrder.getOrderArea().length() - 1);
  395. // District district = new District();
  396. // district.setDistrict(zone);
  397. // List<District> districtList = addressService.listDistrict(district);
  398. // if(districtList.size() < 1){
  399. // district.setDistrict(null);
  400. // district.setCityId(cityList.get(0).getCityId());
  401. // districtList = addressService.listDistrict(district);
  402. // }
  403. // map.put("districtId",String.valueOf(districtList.get(0).getDistrictId()));
  404. // map.put("district",districtList.get(0).getDistrict());
  405. // return map;
  406. // }
  407. /**客诉系统 自动追踪发货信息**/
  408. // @Scheduled(cron = "0 0/60 * * * ?")//每60分钟执行一次
  409. // @Scheduled(cron = "0 0/1 * * * ?")//每1分钟执行一次
  410. // public void syncSendBackCustomer()throws Exception{
  411. // CmRelation cmRelation = new CmRelation();
  412. // cmRelation.setRelationBackStatus(2);
  413. // List<CmRelation> cmRelationList = cmRelationService.getCmRelationList(cmRelation);
  414. // for(int i=0;i<cmRelationList.size();i++){
  415. // CmRelation cc = cmRelationList.get(i);
  416. // if(!StringUtils.isEmpty(cc.getRelationBackLogisticsCompany()) && !StringUtils.isEmpty(cc.getRelationBackLogisticsNo())){
  417. // JSONObject rst = kuaidi100.getExpressInfo(cc.getRelationBackLogisticsCompany(),cc.getRelationBackLogisticsNo());
  418. // if(rst.has("state") && rst.getInt("state") == 3){ //当快递状态为已签收的时候
  419. // Integer flag = 0;
  420. // try{
  421. // flag = cmRelationService.updateStatus(cc);
  422. // }catch (RuntimeException e){
  423. // logger.info("====== 客诉寄回签收报错 :客诉id:"+cc.getCustomerId()+" ======"+e.getMessage());
  424. // }
  425. // if(flag < 1){
  426. // logger.info("====== 客诉寄回签收失败 :客诉id:"+cc.getCustomerId()+" ======");
  427. // }else{
  428. // logger.info("====== 客诉寄回签收成功 :客诉id:"+cc.getCustomerId()+" ======");
  429. // }
  430. // }
  431. // }
  432. // }
  433. // }
  434. /**客诉系统 自动追踪发货信息**/
  435. // @Scheduled(cron = "0 0/2 * * * ?")//每2分钟执行一次
  436. @Scheduled(cron = "0 0 9 * * ?")//每天上午午9点触发
  437. public void postageRemind()throws Exception{
  438. Map<Integer,Integer> map = new HashMap<Integer,Integer>();
  439. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  440. for (CompanyInfo ci: companyInfoList ) {
  441. /*权限去重*/
  442. Set<Integer> authorityCustomerManagerSet = new HashSet();
  443. Set<Integer> authorityFinancialManagerSet = new HashSet();
  444. Set<Integer> authorityFinancialPaymentSet = new HashSet();
  445. PostageAuthority postageAuthority = new PostageAuthority();
  446. postageAuthority.setAuthorityStatus(1);
  447. postageAuthority.setCompanyId(ci.getCompanyId());
  448. List<PostageAuthority> postageAuthorityList = postageAuthorityService.getPostageAuthorityList(postageAuthority);
  449. for (int j=0;j<postageAuthorityList.size();j++){
  450. PostageAuthority pa = postageAuthorityList.get(j);
  451. if(pa.getAuthorityCustomerManager() != null && pa.getAuthorityCustomerManager() != 0){
  452. authorityCustomerManagerSet.add(pa.getAuthorityCustomerManager());
  453. }
  454. if(pa.getAuthorityFinancialManager() != null && pa.getAuthorityFinancialManager() != 0){
  455. authorityFinancialManagerSet.add(pa.getAuthorityFinancialManager());
  456. }
  457. if(pa.getAuthorityFinancialPayment() != null && pa.getAuthorityFinancialPayment() != 0){
  458. authorityFinancialPaymentSet.add(pa.getAuthorityFinancialPayment());
  459. }
  460. }
  461. Postage pt = new Postage();
  462. pt.setCompanyId(ci.getCompanyId());
  463. pt.setPostageManagerStatus(1); //客服经理审核 1:审核中
  464. for (Integer customerManager: authorityCustomerManagerSet) { //customerManager 为id
  465. Integer postageNumber = postageService.getPostageNumber(pt);
  466. if(map.get(customerManager) == null){
  467. map.put(customerManager,postageNumber);
  468. }else{
  469. Integer number = map.get(customerManager);
  470. map.put(customerManager,number + postageNumber);
  471. }
  472. }
  473. pt = new Postage();
  474. pt.setCompanyId(ci.getCompanyId());
  475. pt.setPostageFinanceStatus(1); //状态(财务审核) 1:审核中
  476. for (Integer financialManager: authorityFinancialManagerSet) { //financialManager 为id
  477. Integer postageNumber = postageService.getPostageNumber(pt);
  478. if(map.get(financialManager) == null){
  479. map.put(financialManager,postageNumber);
  480. }else{
  481. Integer number = map.get(financialManager);
  482. map.put(financialManager,number + postageNumber);
  483. }
  484. }
  485. pt = new Postage();
  486. pt.setCompanyId(ci.getCompanyId());
  487. pt.setPostageTransferStatus(1); //是否转账:1待转 2:已转
  488. for (Integer financialPayment: authorityFinancialPaymentSet) { //financialPayment 为id
  489. Integer postageNumber = postageService.getPostageNumber(pt);
  490. if(map.get(financialPayment) == null){
  491. map.put(financialPayment,postageNumber);
  492. }else{
  493. Integer number = map.get(financialPayment);
  494. map.put(financialPayment,number + postageNumber);
  495. }
  496. }
  497. }
  498. for (Map.Entry<Integer,Integer> m: map.entrySet()) {
  499. Integer number = m.getValue();
  500. Admin admin = new Admin();
  501. admin.setAdminId(m.getKey());
  502. admin = sysService.get(admin);
  503. String tel = admin.getAdminTel();
  504. if(admin == null || tel == null || "".equals(tel)){
  505. logger.info("邮费转账发送待处理短信,手机号码为空,"+ tel+"===id为"+m.getKey());
  506. continue;
  507. }
  508. if(number == null || number == 0){
  509. continue;
  510. }
  511. String text = MessageFormat.format(REMIND_POSTAGE_PENDING,number);
  512. smsService.sendOtherCMS(tel,text);
  513. }
  514. }
  515. /**
  516. * 查询维修超时数据并短信通知
  517. */
  518. @Scheduled(cron = "0 50 8 * * ?")//每天上午午9点触发
  519. /* @Scheduled(cron = "0 0/1 * * * ?")//每2分钟执行一次*/
  520. public void detectTimeoutNotice() throws Exception {
  521. logger.info("---------------- 询维修超时数据并短信通知开始 ---------------");
  522. //待检测即将超时数据
  523. List<ComplaintDetectInfo> listMaintenanceCut = complaintDetectInfoService.listMaintenanceCutNotice();
  524. //待维修即将超时数据
  525. List<ComplaintDetectInfo> listCompleteCut = complaintDetectInfoService.listCompleteCutNotice();
  526. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  527. if(listMaintenanceCut != null && listMaintenanceCut.size() > 0){
  528. for(ComplaintDetectInfo info : listMaintenanceCut){
  529. if(info.getDetectNumber() != null && info.getMaintenanceCutTime() != null){
  530. //发送短信通知维修检测人员
  531. String text = MessageFormat.format(SmsConfig.DETECTION_TIMEOUT_NOTIFICATION, info.getDetectNumber(),"检测超时",format.format(info.getMaintenanceCutTime()));
  532. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  533. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送检测即将超时数据维修人员:"+result);
  534. }
  535. }
  536. }
  537. if(listCompleteCut != null && listCompleteCut.size() > 0){
  538. for(ComplaintDetectInfo info : listCompleteCut){
  539. //发送短信通知维修检测人员
  540. if(info.getDetectNumber() != null && info.getCompleteCutTime() != null){
  541. String text = MessageFormat.format(SmsConfig.DETECTION_TIMEOUT_NOTIFICATION, info.getDetectNumber(),"维修超时",format.format(info.getCompleteCutTime()));
  542. String result = smsService.sendOtherCMS(SmsConfig.CUSTOMER_PHONE, text);
  543. logger.info("给 " + SmsConfig.CUSTOMER_PHONE + " 手机用户发送短信:" + text+"发送维修即将超时数据维修人员:"+result);
  544. }
  545. }
  546. }
  547. logger.info("---------------- 询维修超时数据并短信通知结束 ---------------");
  548. }
  549. //@Scheduled(cron = "*/10 * * * * ?")
  550. //@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点
  551. //@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
  552. /*@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次*/
  553. @Scheduled(cron = "0 0/30 * * * ?")//每半个小时执行一次
  554. public void orderCaseDate(){
  555. logger.info("查询订单揽件时间");
  556. List<SalesOrder> salesOrderList = salesOrderService.orderAfterCaseDate();
  557. if (salesOrderList == null || salesOrderList.isEmpty()) {
  558. return;
  559. }
  560. for (SalesOrder salesOrder:salesOrderList) {
  561. // 查询订单对应的物流公司
  562. LogisticsInfo log = new LogisticsInfo();
  563. log.setLogisticsRstCode(salesOrder.getSalesPostFirm());
  564. List<LogisticsInfo> listlog = logisticsInfoService.getLogisticsInfoList(log);
  565. if(listlog.size() > 0){
  566. if(listlog.get(0).getLogisticsIsSynchronous() == 1){
  567. // 调用第三方接口查询物流信息
  568. Date date = kuaidi100.selectCourierSignCaseTime(listlog.get(0),salesOrder.getSalesPostNum());
  569. if(date == null){
  570. continue;
  571. }
  572. // 编辑订单的揽件时间
  573. SalesOrder so = new SalesOrder();
  574. so.setSalesId(salesOrder.getSalesId());
  575. so.setOrderCaseDate(date);
  576. if(salesOrderService.update(so) <= 0){
  577. logger.info("修改揽件时间异常,订单号:"+salesOrder.getSalesOrderId());
  578. }
  579. }
  580. }
  581. }
  582. }
  583. /**
  584. * 定时拉取小亚通订单
  585. */
  586. @Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
  587. // @Scheduled(cron = "0 0/30 * * * ?")//每半个小时执行一次
  588. public void syncXytOrder(){
  589. logger.info("-----定时拉取小亚通订单-开始----");
  590. Integer num = orderSyncLogService.syncXYTOrder(1,null);
  591. logger.info("-----定时拉取小亚通订单,拉取订单数量:"+ num +"-结束----");
  592. }
  593. }