PublicInquiryServiceImpl.java 70 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531
  1. package com.uas.ps.inquiry.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.uas.ps.core.logging.BufferedLoggerManager;
  5. import com.uas.ps.core.util.ContextUtils;
  6. import com.uas.ps.entity.Product;
  7. import com.uas.ps.entity.ProductUsers;
  8. import com.uas.ps.entity.Status;
  9. import com.uas.ps.inquiry.AccessConfiguration;
  10. import com.uas.ps.inquiry.dao.*;
  11. import com.uas.ps.inquiry.domain.IPage;
  12. import com.uas.ps.inquiry.entity.*;
  13. import com.uas.ps.inquiry.exception.NotFoundException;
  14. import com.uas.ps.inquiry.model.*;
  15. import com.uas.ps.inquiry.page.PageInfo;
  16. import com.uas.ps.inquiry.page.SearchFilter;
  17. import com.uas.ps.inquiry.page.criteria.*;
  18. import com.uas.ps.inquiry.page.exception.IllegalOperatorException;
  19. import com.uas.ps.inquiry.service.PublicInquiryService;
  20. import com.uas.ps.inquiry.support.InquiryBufferedLogger;
  21. import com.uas.ps.inquiry.util.*;
  22. import org.apache.log4j.Logger;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.dao.DataAccessException;
  25. import org.springframework.data.domain.Page;
  26. import org.springframework.data.domain.Sort;
  27. import org.springframework.data.jpa.domain.Specification;
  28. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  29. import org.springframework.jdbc.core.JdbcTemplate;
  30. import org.springframework.stereotype.Service;
  31. import org.springframework.ui.ModelMap;
  32. import org.springframework.util.CollectionUtils;
  33. import org.springframework.util.StringUtils;
  34. import javax.persistence.criteria.*;
  35. import java.text.SimpleDateFormat;
  36. import java.util.*;
  37. /**
  38. * 公共询价接口实现
  39. * <p>
  40. * Created by hejq on 2018-01-13.
  41. */
  42. @Service
  43. public class PublicInquiryServiceImpl implements PublicInquiryService {
  44. @Autowired
  45. private PublicInquiryDao publicInquiryDao;
  46. @Autowired
  47. private PurcInquiryDao purcInquiryDao;
  48. @Autowired
  49. private ProductDao productDao;
  50. @Autowired
  51. private PurcInquiryItemDao purcInquiryItemDao;
  52. @Autowired
  53. private JdbcTemplate jdbcTemplate;
  54. @Autowired
  55. private PublicInquiryReplyDao publicInquiryReplyDao;
  56. @Autowired
  57. private PurcInquiryItemInfoDao inquiryItemInfoDao;
  58. @Autowired
  59. private PublicInquiryItemInfoDao itemInfoDao;
  60. @Autowired
  61. private PublicInquiryItemDao publicInquiryItemDao;
  62. @Autowired
  63. private UserDao userDao;
  64. @Autowired
  65. private EnterpriseDao enterpriseDao;
  66. @Autowired
  67. private InquiryRemindDao remindDao;
  68. @Autowired
  69. private ProductReplaceDao productReplaceDao;
  70. @Autowired
  71. private InquiryEnRemindDao inquiryEnRemindDao;
  72. @Autowired
  73. private KindConcernDao kindConcernDao;
  74. private static final Logger log = Logger.getLogger(Logger.class);
  75. /**
  76. * 应用来源
  77. */
  78. private final String SOURCERAPP = "B2B";
  79. /**
  80. * 接收应用(以","拼接应用名称)
  81. */
  82. private final String CONSUMERAPP = "MALL,B2B";
  83. /**
  84. * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
  85. */
  86. private final String INQUIRY_TYPE = "公共询价";
  87. /**
  88. * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
  89. */
  90. private final String INQUIRY_TYPE_MALL = "MALL跳转买家已报价页面";
  91. /**
  92. * 消息类型 (在MALL消息中拼接求购询价待报价)
  93. */
  94. private final String INQUIRY_TYPE_SELLER_MALL = "MALL公共询价";
  95. /**
  96. * 消息类型,公共询价的采纳结果
  97. */
  98. private final String INQUIRY_DECIDE_TYPE = "公共询价采纳结果";
  99. /**
  100. * 消息类型,公共询价的采纳结果
  101. */
  102. private final String INQUIRY_DECIDE_TYPE_MALL = "商城公共询价采纳结果";
  103. /**
  104. * 询价种类
  105. */
  106. private final String INQUIRYKIND = "publicInquiry";
  107. /**
  108. * 消息推送邮件模板id
  109. */
  110. private final String MAIL_TEMP_ID = "d94e931b-b699-46d7-8bb2-94604a3352c0";
  111. /**
  112. * 消息推送短信模板id
  113. */
  114. private final String SMS_TEMP_ID = "6e094dcf-f2c7-462a-9686-b2d32d684a78";
  115. /**
  116. * 消息推送方式:邮件、短信、im
  117. */
  118. private final String SMS_TYPE = "MAIL_AND_SM_AND_IM";
  119. /**
  120. * 来源应用,ERP
  121. */
  122. private final String PRODUCERAPP = "ERP";
  123. /**
  124. * 消费类型: 多个,MULTI
  125. */
  126. private final String CUST_TYPE = "MULTI";
  127. /**
  128. * 公共物料访问地址
  129. */
  130. private final String PS_PRODUCT_URL = ContextUtils.getBean(AccessConfiguration.class).getPsProductUrl();
  131. /**
  132. * 公共消息访问地址
  133. */
  134. private final String PS_MESSAGE_URL = ContextUtils.getBean(AccessConfiguration.class).getPsMessageUrl();
  135. /**
  136. * 商城链接
  137. */
  138. private final String USOFTMALL_URL = ContextUtils.getBean(AccessConfiguration.class).getMallUrl();
  139. /**
  140. * 日志
  141. */
  142. private final static InquiryBufferedLogger logger = BufferedLoggerManager.getLogger(InquiryBufferedLogger.class);
  143. /**
  144. * 保存公共询价信息
  145. *
  146. * @param inquiries erp传入公共询价的信息
  147. * @param enuu 询价企业UU号
  148. * @param address 询价企业地址
  149. */
  150. @Override
  151. public void save(List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException {
  152. List<PurcInquiry> purcInquiries = covert(inquiries, enuu, address);
  153. if (!CollectionUtils.isEmpty(purcInquiries)) {
  154. for (PurcInquiry inquiry : purcInquiries) {
  155. // 判断单号是否已存在
  156. List<PurcInquiry> old = purcInquiryDao.findByCodeAndEnUU(inquiry.getCode(), enuu);
  157. List<PurcInquiryItem> items = new ArrayList<PurcInquiryItem>();
  158. if (CollectionUtils.isEmpty(old) && !CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
  159. for (PurcInquiryItem item : inquiry.getInquiryItems()) {
  160. item.setInquiry(inquiry);
  161. items.add(item);
  162. }
  163. }
  164. try {
  165. items = purcInquiryItemDao.save(items);
  166. if (!CollectionUtils.isEmpty(items)) {
  167. final List<PurcInquiryItem> purcInquiryItems = items;
  168. ThreadUtils.task(new Runnable() {
  169. @Override
  170. public void run() {
  171. try {
  172. notifyMessage(purcInquiryItems, PRODUCERAPP);
  173. } catch (Exception e) {
  174. e.printStackTrace();
  175. }
  176. }
  177. }).run();
  178. }
  179. } catch (Exception e) {
  180. e.printStackTrace();
  181. }
  182. }
  183. }
  184. }
  185. /**
  186. * 消息推送
  187. *
  188. * @param inquiryItems 询价明细
  189. * @param sourceApp 消息来源应用
  190. */
  191. @Override
  192. public void notifyMessage(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception {
  193. for (PurcInquiryItem item : inquiryItems) {
  194. String cmpCode = null;
  195. if (item.getCmpCode() != null) {
  196. cmpCode = item.getCmpCode();
  197. } else if (null != item.getProductId()) {
  198. Product product = productDao.findOne(item.getProductId());
  199. cmpCode = product.getCmpCode();
  200. }
  201. if (null != cmpCode) {
  202. String url = PS_PRODUCT_URL + "/productuser/getProductUsersByEnUUAndCmpCode";
  203. JSONObject formData = new JSONObject();
  204. formData.put("enUU", item.getInquiry().getEnUU());
  205. formData.put("cmpCode", cmpCode);
  206. try {
  207. HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
  208. if (res.getStatusCode() == 200) {
  209. List<ProductUsers> users = FlexJsonUtils.fromJsonArray(res.getResponseText(), ProductUsers.class);
  210. users = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getRecorderUU(), cmpCode, users);
  211. if (!CollectionUtils.isEmpty(users)) {
  212. List<MessageModel> models = new ArrayList<MessageModel>();
  213. for (ProductUsers user : users) {
  214. User buyerUser = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
  215. Enterprise buyerEnterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  216. String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
  217. String content = "发布关于“型号:" + cmp + "”的公共询价信息,邀请您参与报价。";
  218. MessageModel model = new MessageModel();
  219. if (null != buyerEnterprise) {
  220. content = buyerEnterprise.getEnName() + content;
  221. model.setBuyerName(buyerEnterprise.getEnName());
  222. } else if (null != buyerUser) {
  223. content = buyerUser.getUserName() + content;
  224. model.setBuyerName(buyerUser.getUserName());
  225. }
  226. // 询价方信息
  227. if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
  228. model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
  229. } else {
  230. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  231. model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
  232. }
  233. model.setSenderEnuu(item.getInquiry().getEnUU());
  234. model.setCmpCode(cmpCode);
  235. model.setType(INQUIRY_TYPE);
  236. model.setType(INQUIRY_TYPE_SELLER_MALL);
  237. model.setProducerApp(sourceApp);
  238. model.setConsumerType(CUST_TYPE);
  239. model.setConsumerApp(CONSUMERAPP);
  240. model.setContent(content);
  241. model.setRemark(String.valueOf(item.getInquiry().getId()));
  242. model.setSourceId(item.getId());
  243. // 供应商信息
  244. Enterprise vendEnterprise = enterpriseDao.findOne(user.getEnuu());
  245. if (vendEnterprise != null) {
  246. model.setVendName(vendEnterprise.getEnName());
  247. }
  248. model.setReceiverEnuu(user.getEnuu());
  249. model.setReceiverUu(user.getUseruu());
  250. model.setSmsType("DONT_SEND");
  251. model.setMailTemplate(MAIL_TEMP_ID);
  252. model.setSmTemplate(SMS_TEMP_ID);
  253. models.add(model);
  254. logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人", "关联询价单明细【" + item.getId() + "】", user.getUseruu(), user.getEnuu(), InquirySource.ERP.name());
  255. }
  256. if (!CollectionUtils.isEmpty(models)) {
  257. sendMessage(models);
  258. sendWechatMessage(models);
  259. }
  260. }
  261. // 生成推荐信息
  262. remindInquiry(item, users);
  263. }
  264. } catch (Exception e) {
  265. String reason = e.getMessage().length() > 10 ? e.getMessage().substring(0, 1000).concat("") : e.getMessage();
  266. logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人失败,id" + item.getId(), reason, Constant.UU, Constant.UU, InquirySource.ERP.name());
  267. e.printStackTrace();
  268. }
  269. }
  270. }
  271. }
  272. /**
  273. * 微信消息发送
  274. * @param models
  275. */
  276. private void sendWechatMessage(final List<MessageModel> models) {
  277. ThreadUtils.task(new Runnable() {
  278. @Override
  279. public void run() {
  280. try {
  281. log.info("发送微信消息实体" + JSON.toJSONString(models));
  282. String res = HttpUtil.doPost(USOFTMALL_URL + "/wx/sendTemplateMessage", FlexJsonUtils.toJsonDeep(models));
  283. log.info("微信消息请求发送日志" + res);
  284. } catch (Exception e) {
  285. e.printStackTrace();
  286. }
  287. }
  288. }).run();
  289. }
  290. /**
  291. * 根据企业UU和物料原厂型号cmpCode获取替代物料信息
  292. *
  293. * @param cmpCode 物料原厂型号
  294. * @return
  295. */
  296. public List<ProductUsers> getProductReplaceByEnUUAndCmpCode(final Long userUU, final String cmpCode, List<ProductUsers> productUsers) {
  297. List<ProductReplace> productReplacesList = productReplaceDao.findAll(new Specification<ProductReplace>() {
  298. @Override
  299. public Predicate toPredicate(Root<ProductReplace> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  300. final PredicateFactory<ProductReplace> factory = new PredicateFactory<>();
  301. factory.add(PredicateUtils.ne("userUU", userUU, false));
  302. factory.add(PredicateUtils.and(PredicateUtils.isNotNull("ptrCmpcode"), PredicateUtils.eq("ptrCmpcode", cmpCode, false)));
  303. query.where(factory.toPredicate(root, query, cb));
  304. return null;
  305. }
  306. });
  307. if (!CollectionUtils.isEmpty(productReplacesList)) {
  308. for (ProductReplace productReplace : productReplacesList) {
  309. ProductUsers user = new ProductUsers();
  310. user.setEnuu(productReplace.getEnuu());
  311. user.setUseruu(productReplace.getUserUU());
  312. productUsers.add(user);
  313. }
  314. }
  315. // 去掉同一企业下同一个人相同原厂型号的不同物料的记录,保证一个原厂型号只发一条
  316. List<ProductUsers> returnList = new ArrayList<>();
  317. Set<String> enUUAndUserUUs = new HashSet<>();
  318. for (ProductUsers user : productUsers) {
  319. String receiverInfo = user.getEnuu().toString() + user.getUseruu().toString();
  320. if (!enUUAndUserUUs.contains(receiverInfo)) {
  321. returnList.add(user);
  322. enUUAndUserUUs.add(receiverInfo);
  323. }
  324. }
  325. return returnList;
  326. }
  327. /**
  328. * 通过查询的个人物料相关联的信息,自动生成推荐的报价的数据
  329. *
  330. * @param item 报价明细
  331. * @param users 用户信息
  332. */
  333. private void remindInquiry(final PurcInquiryItem item, final List<ProductUsers> users) {
  334. ThreadUtils.task(new Runnable() {
  335. @Override
  336. public void run() {
  337. try {
  338. Map<Long, ProductUsers> productUsersMap = new HashMap<>();
  339. if (!CollectionUtils.isEmpty(users)) {
  340. for (ProductUsers u : users) {
  341. List<InquiryRemind> remindList = remindDao.findByVendUserUUAndVendUUAndItemId(u.getUseruu(), u.getEnuu(), item.getId());
  342. if (remindList.size() == 0 && item.getInquiry().getEnUU() != null) {
  343. productUsersMap.put(u.getEnuu(), u);
  344. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  345. InquiryRemind remind = new InquiryRemind();
  346. remind.setEnName(enterprise.getEnName());
  347. remind.setEnUU(item.getInquiry().getEnUU());
  348. remind.setUserName(item.getUserName());
  349. remind.setUserTel(item.getUserTel());
  350. remind.setCode(item.getInquiry().getCode());
  351. remind.setBrand(item.getInbrand());
  352. remind.setInbrand(item.getInbrand());
  353. remind.setCmpCode(item.getCmpCode());
  354. remind.setSpec(item.getSpec());
  355. remind.setProdTitle(item.getProdTitle());
  356. remind.setInid(item.getInquiry().getId());
  357. if (item.getProduct() != null) {
  358. remind.setBrand(item.getProduct().getBrand());
  359. remind.setCmpCode(item.getProduct().getCmpCode());
  360. remind.setSpec(item.getProduct().getSpec());
  361. remind.setProdTitle(item.getProduct().getTitle());
  362. }
  363. remind.setItemId(item.getId());
  364. remind.setNeedQty(item.getNeedquantity());
  365. remind.setReDate(item.getInquiry().getDate());
  366. remind.setEndDate(item.getInquiry().getEndDate());
  367. remind.setVendUU(u.getEnuu());
  368. remind.setVendUserUU(u.getUseruu());
  369. remind.setDate(new Date(System.currentTimeMillis()));
  370. remind.setStatus(Status.INPUTTING.value());
  371. remindDao.save(remind);
  372. }
  373. }
  374. }
  375. // 查询已关注类目中是否有当前类目
  376. String kind = item.getProdTitle();
  377. Set<Long> enuuSet = new HashSet<>();
  378. if (!StringUtils.isEmpty(kind)) {
  379. enuuSet = kindConcernDao.findByNameCnAndNeEnuu(kind, item.getInquiry().getEnUU());
  380. }
  381. String url = PS_PRODUCT_URL + "/product/businessOpportunity";
  382. JSONObject formData = new JSONObject();
  383. formData.put("enUU", item.getInquiry().getEnUU());
  384. formData.put("pCmpCode", item.getCmpCode());
  385. HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
  386. if (res.getStatusCode() == 200) {
  387. Map<String, Object> result = FlexJsonUtils.fromJson(res.getResponseText());
  388. if (!StringUtils.isEmpty(result.get("enUUs"))) {
  389. List<Long> enuus = (List<Long>) result.get("enUUs");
  390. enuuSet.addAll(enuus);
  391. }
  392. if (!CollectionUtils.isEmpty(enuuSet)) {
  393. List<InquiryEnRemind> inquiryEnReminds = new ArrayList<>();
  394. for (Long enuu : enuuSet) {
  395. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  396. InquiryEnRemind remind = new InquiryEnRemind();
  397. remind.setEnName(enterprise.getEnName());
  398. remind.setEnUU(item.getInquiry().getEnUU());
  399. remind.setUserName(item.getUserName());
  400. remind.setUserTel(item.getUserTel());
  401. remind.setCode(item.getInquiry().getCode());
  402. remind.setBrand(item.getInbrand());
  403. remind.setInbrand(item.getInbrand());
  404. remind.setCmpCode(item.getCmpCode());
  405. remind.setSpec(item.getSpec());
  406. remind.setProdTitle(item.getProdTitle());
  407. remind.setInid(item.getInquiry().getId());
  408. if (item.getProduct() != null) {
  409. remind.setBrand(item.getProduct().getBrand());
  410. remind.setCmpCode(item.getProduct().getCmpCode());
  411. remind.setSpec(item.getProduct().getSpec());
  412. remind.setProdTitle(item.getProduct().getTitle());
  413. }
  414. remind.setItemId(item.getId());
  415. remind.setNeedQty(item.getNeedquantity());
  416. remind.setReDate(item.getInquiry().getDate());
  417. remind.setEndDate(item.getInquiry().getEndDate());
  418. remind.setVendUU(enuu);
  419. if (productUsersMap.containsKey(enuu)) {
  420. remind.setRemindStatus(1);
  421. } else {
  422. remind.setRemindStatus(0);
  423. }
  424. remind.setDate(new Date(System.currentTimeMillis()));
  425. remind.setStatus(Status.INPUTTING.value());
  426. inquiryEnReminds.add(remind);
  427. }
  428. if (!CollectionUtils.isEmpty(inquiryEnReminds)) {
  429. inquiryEnRemindDao.save(inquiryEnReminds);
  430. }
  431. }
  432. }
  433. } catch (Exception e) {
  434. e.printStackTrace();
  435. }
  436. }
  437. }).run();
  438. }
  439. /**
  440. * 通过id查询询价信息
  441. *
  442. * @param id 公共询价主表id
  443. * @return
  444. */
  445. @Override
  446. public PurcInquiry findInquiryById(Long id) {
  447. PurcInquiry inquiry = purcInquiryDao.findOne(id);
  448. if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
  449. for (PurcInquiryItem item : inquiry.getInquiryItems()) {
  450. if (null == item.getProductId()) {
  451. Product product = new Product();
  452. product.setTitle(item.getProdTitle());
  453. product.setCmpCode(item.getCmpCode());
  454. product.setBrand(item.getInbrand());
  455. product.setSpec(item.getSpec());
  456. item.setProduct(product);
  457. }
  458. }
  459. }
  460. return inquiry;
  461. }
  462. /**
  463. * 发送消息推送
  464. *
  465. * @param models 封装的消息信息
  466. */
  467. private void sendMessage(final List<MessageModel> models) {
  468. ThreadUtils.task(new Runnable() {
  469. @Override
  470. public void run() {
  471. try {
  472. log.info("发送消息实体" + JSON.toJSONString(models));
  473. String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
  474. log.info("消息请求发送日志" + res);
  475. } catch (Exception e) {
  476. e.printStackTrace();
  477. }
  478. }
  479. }).run();
  480. }
  481. /**
  482. * 将ERP传入的inquiry信息转成公共询价服务中心需要的信息
  483. *
  484. * @param inquiries 将ERP传入的inquiry信息
  485. * @param enuu 询价企业UU号
  486. * @param address 询价企业地址
  487. * @return
  488. */
  489. @Override
  490. public List<PurcInquiry> covert(List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException {
  491. List<PurcInquiry> purcInquiries = new ArrayList<PurcInquiry>();
  492. if (!CollectionUtils.isEmpty(inquiries)) {
  493. for (BatchInquiry inquiry : inquiries) {
  494. List<PurcInquiry> old = purcInquiryDao.findByCodeAndEnUU(inquiry.getBi_code(), enuu);
  495. //先判断是否已经存在,不存在才进行存储
  496. if (CollectionUtils.isEmpty(old)) {
  497. PurcInquiry purcInquiry = inquiry.covert();
  498. purcInquiry.setEnUU(enuu);
  499. purcInquiry.setShip(address);
  500. Enterprise e = enterpriseDao.findOne(enuu);
  501. if (null != e) {
  502. purcInquiry.setEnName(e.getEnName());
  503. }
  504. Set<PurcInquiryItem> purcInquiryItems = new HashSet<PurcInquiryItem>();
  505. if (!CollectionUtils.isEmpty(inquiry.getInProducts())) {
  506. for (BatchInProduct batch : inquiry.getInProducts()) {
  507. PurcInquiryItem item = new PurcInquiryItem();
  508. List<Product> products = productDao.findByEnUUAndCode(enuu, batch.getBip_prodcode());
  509. if (!CollectionUtils.isEmpty(products)) {
  510. item.setProductId(products.get(0).getId());
  511. item.setCmpCode(products.get(0).getCmpCode());
  512. item.setInbrand(products.get(0).getBrand());
  513. item.setProdTitle(products.get(0).getTitle());
  514. item.setSpec(products.get(0).getSpec());
  515. } else {
  516. item.setCmpCode(batch.getPr_orispeccode());
  517. item.setInbrand(batch.getPr_brand());
  518. item.setProdTitle(batch.getPr_detail());
  519. item.setSpec(batch.getPr_spec());
  520. }
  521. item.setProdCode(batch.getBip_prodcode());
  522. item.setRemark(batch.getBip_remark());
  523. item.setNumber(batch.getBip_detno());
  524. item.setFromDate(new Date(System.currentTimeMillis()));
  525. item.setToDate(purcInquiry.getEndDate());
  526. item.setStatus((short) Status.NOT_REPLY.value());
  527. item.setIsOpen(Constant.YES);
  528. item.setSource("ERP");
  529. item.setSourceid(batch.getBip_id());
  530. item.setCurrency(batch.getBip_currency());
  531. item.setUserName(batch.getEm_name());
  532. item.setUserTel(batch.getBip_mobile());
  533. item.setUserCode(batch.getBip_buyercode());
  534. item.setOfferAmount(0);
  535. item.setEndDate(inquiry.getBi_enddate());
  536. item.setNeedquantity(batch.getYcgqty());
  537. if (null == item.getCmpCode() || item.getCmpCode().equals("无")) {
  538. item.setCmpCode(item.getSpec());
  539. }
  540. if (null != inquiry.getBi_date()) {
  541. item.setDate(inquiry.getBi_date());
  542. } else {
  543. item.setDate(new Date(System.currentTimeMillis()));
  544. }
  545. if (item.getCustCurrency() == null) {
  546. item.setCustCurrency("RMB");
  547. }
  548. purcInquiryItems.add(item);
  549. }
  550. }
  551. purcInquiry.setInquiryItems(purcInquiryItems);
  552. purcInquiries.add(purcInquiry);
  553. }
  554. }
  555. }
  556. return purcInquiries;
  557. }
  558. /**
  559. * erp提交审核时,公共询价服务中心单据禁用报价功能
  560. *
  561. * @param inquiries erp询价信息
  562. * @param enuu 询价企业UU号
  563. */
  564. @Override
  565. public void updateStatus(List<BatchInquiry> inquiries, Long enuu) {
  566. if (!CollectionUtils.isEmpty(inquiries)) {
  567. for (BatchInquiry inquiry : inquiries) {
  568. List<PurcInquiry> purcInquiryList = purcInquiryDao.findByCodeAndEnUU(inquiry.getBi_code(), enuu);
  569. for (PurcInquiry purcInquiry : purcInquiryList) {
  570. purcInquiryItemDao.updateStatus(purcInquiry.getId());
  571. }
  572. }
  573. }
  574. }
  575. /**
  576. * 查询供应商的报价信息
  577. *
  578. * @return
  579. */
  580. @Override
  581. public List<InquiryDetail> findNotUploadReply(Long enuu) {
  582. List<PublicInquiryItem> items = publicInquiryItemDao.findByEnUUAndBackStatus(enuu, (short) Status.NOT_UPLOAD.value());
  583. if (!CollectionUtils.isEmpty(items)) {
  584. // 防止下载过程中进行操作,这里设置一个下载中的状态
  585. Set<Long> ids = new HashSet<>();
  586. for (PublicInquiryItem item : items) {
  587. ids.add(item.getId());
  588. }
  589. if (ids.size() > 0) {
  590. publicInquiryItemDao.updateBackStatus(ids);
  591. }
  592. return convertPublicInquiryReply(items);
  593. }
  594. return new ArrayList<>();
  595. }
  596. /**
  597. * 将公共询价服务中心的公共询价转成ERP的对应的字段
  598. *
  599. * @param notUploadReply 未下载的供应商报价信息
  600. * @return
  601. * @author hejq
  602. * @date 2018-01-14 11:51
  603. */
  604. @Override
  605. public List<InquiryDetail> convertPublicInquiryReply(List<PublicInquiryItem> notUploadReply) {
  606. List<InquiryDetail> details = new ArrayList<InquiryDetail>();
  607. if (!CollectionUtils.isEmpty(notUploadReply)) {
  608. for (PublicInquiryItem item : notUploadReply) {
  609. details.add(new InquiryDetail(item));
  610. }
  611. }
  612. return details;
  613. }
  614. /**
  615. * 下载完成后更新公共询价服务中心询价单明细的下载状态
  616. *
  617. * @param idArray 询价单明细id
  618. * @author hejq
  619. * @date 2018-01-14 12:12
  620. */
  621. @Override
  622. public void onReplyUploadSuccess(String[] idArray) {
  623. for (String id : idArray) {
  624. PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
  625. if (item != null) {
  626. item.setBackStatus((short) Status.DOWNLOADED.value());
  627. item.setErpstatus(Constant.YES);
  628. publicInquiryItemDao.save(item);
  629. }
  630. }
  631. }
  632. /**
  633. * ERP提交公共询价单之后,更新平台状态,让公共询价服务中心询价单不能进行报价操作
  634. *
  635. * @param details 询价信息
  636. * @author hejq
  637. * @date 2018-01-14 12:20
  638. */
  639. @Override
  640. public void updateInquiryStatus(List<InquiryDetail> details, Long enuu) {
  641. if (!CollectionUtils.isEmpty(details)) {
  642. for (InquiryDetail detail : details) {
  643. // 更新为过期状态,不能进行报价处理
  644. String sql = "update purc$puInquiryItems set id_overdue = 1 where id_id = " +
  645. "(select id_sourceid from public$inquiryItems where id_id = " + detail.getB2b_id_id() + ")";
  646. jdbcTemplate.update(sql);
  647. // 更新已转报价的询价单明细状态
  648. jdbcTemplate.update("update public$inquiryItems set id_checked = 1 where id_id = " + detail.getB2b_id_id());
  649. }
  650. }
  651. }
  652. /**
  653. * ERP对报价信息的采纳状态上传到公共询价服务中心
  654. *
  655. * @param decides 采纳信息
  656. */
  657. @Override
  658. public void onReplyDecide(List<InquiryDecide> decides, Long enuu) {
  659. List<PublicInquiryItem> publicInquiryItems = convertInquiryDecide(decides);
  660. if (!CollectionUtils.isEmpty(publicInquiryItems)) {
  661. for (PublicInquiryItem inquiryItem : publicInquiryItems) {
  662. publicInquiryItemDao.updateDecideStatusByID(inquiryItem.getAgreed(), inquiryItem.getDecideStatus(), inquiryItem.getId());
  663. notifyDecide(inquiryItem, PRODUCERAPP);
  664. }
  665. }
  666. }
  667. /**
  668. * 针对供应商,客户对报价结果发送消息通知
  669. *
  670. * @param item 询价明细
  671. * @param sourceApp 应用来源
  672. */
  673. @Override
  674. public void notifyDecide(PublicInquiryItem item, String sourceApp) {
  675. final String SMS_TYPE = "IM"; //只推送消息
  676. List<MessageModel> models = new ArrayList<MessageModel>();
  677. User u = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
  678. Enterprise e = enterpriseDao.findOne(item.getInquiry().getEnUU());
  679. Product product = new Product();
  680. if (null != item.getProductId()) {
  681. product = productDao.findOne(item.getProductId());
  682. }
  683. String cmpCode = product.getCmpCode() != null ? product.getCmpCode() : item.getCmpCode();
  684. String content = item.getAgreed() == 1 ? "【已采纳】" : "【未采纳】";
  685. content = content + "您关于“" + cmpCode + "”的报价";
  686. if (null != e) {
  687. content = e.getEnName() + content;
  688. } else if (null != u) {
  689. content = u.getUserName() + content;
  690. } else if (null == e && null == u) {
  691. content = "您关于“" + cmpCode + "”的报价已被";
  692. String result = item.getAgreed() == 1 ? "【已采纳】" : "【拒绝】";
  693. content = content + result;
  694. }
  695. MessageModel model = new MessageModel();
  696. model.setType(INQUIRY_DECIDE_TYPE);
  697. model.setProducerApp(sourceApp);
  698. model.setConsumerType(CUST_TYPE);
  699. model.setConsumerApp(CONSUMERAPP);
  700. model.setContent(content);
  701. model.setRemark(String.valueOf(item.getInquiry().getId()));
  702. model.setSourceId(item.getId());
  703. model.setReceiverEnuu(item.getVendUU());
  704. model.setReceiverUu(item.getVendUserUU());
  705. model.setSenderEnuu(item.getInquiry().getEnUU());
  706. if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
  707. model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
  708. } else {
  709. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  710. model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
  711. }
  712. model.setSmsType(SMS_TYPE);
  713. models.add(model);
  714. if (!CollectionUtils.isEmpty(models)) {
  715. sendMessage(models);
  716. }
  717. }
  718. /**
  719. * 将ERP的报价采纳信息转为公共询价服务中心需要的信息
  720. *
  721. * @param decides erp报价采纳信息
  722. * @author hejq
  723. * @date 2018-01-14 12:25
  724. */
  725. @Override
  726. public List<PublicInquiryItem> convertInquiryDecide(List<InquiryDecide> decides) {
  727. List<PublicInquiryItem> inquiryItems = new ArrayList<PublicInquiryItem>();
  728. if (!CollectionUtils.isEmpty(decides)) {
  729. for (InquiryDecide decide : decides) {
  730. PublicInquiryItem item = publicInquiryItemDao.findOne(decide.getB2b_id());
  731. if (null != item) {
  732. item.setAgreed(decide.getId_agreed());
  733. item.setDecideStatus((short) Status.NOT_UPLOAD.value());
  734. inquiryItems.add(item);
  735. }
  736. }
  737. }
  738. return inquiryItems;
  739. }
  740. /**
  741. * 买家ERP作废询价单后,修改公共询价服务中心里面的状态
  742. *
  743. * @param inquiries 询价信息
  744. * @param enuu 企业UU
  745. * @author hejq
  746. * @date 2018-01-14 12:28
  747. */
  748. @Override
  749. public void onReplyInvalid(List<Inquiry> inquiries, final Long enuu) {
  750. final List<PublicInquiryItem> newInquiryItems = new ArrayList<>();
  751. ThreadUtils.tasks(new IRunnable<Inquiry>() {
  752. @Override
  753. public void run(Inquiry inquiry) {
  754. List<PublicInquiry> purchaseInquiries = publicInquiryDao.findByEnUUAndCode(enuu, inquiry.getIn_code());
  755. if (!CollectionUtils.isEmpty(purchaseInquiries)) {
  756. PublicInquiry publicInquiry = purchaseInquiries.get(0);
  757. for (PublicInquiryItem item : publicInquiry.getInquiryItems()) {
  758. item.setStatus((short) Status.DISABLED.value());
  759. // 获取作废信息时,更新作废上传状态为 待上传
  760. item.setInvalidStatus((short) Status.NOT_UPLOAD.value());
  761. synchronized (newInquiryItems) {
  762. newInquiryItems.add(item);
  763. }
  764. }
  765. }
  766. }
  767. }, inquiries).run();
  768. }
  769. /**
  770. * 将公共询价列表转成需要报价的询价单,类型是公共询价
  771. *
  772. * @param id 询价明细id
  773. * @param enuu 报价企业UU
  774. * @param useruu 报价人uu
  775. * @return
  776. * @author hejq
  777. * @date 2018-01-14 14:46
  778. */
  779. @Override
  780. public ModelMap transtoInquiry(Long id, Long enuu, Long useruu) {
  781. ModelMap map = new ModelMap();
  782. PurcInquiryItem purcInquiryItem = purcInquiryItemDao.findOne(id);
  783. PurcInquiry purcInquiry = purcInquiryItem.getInquiry();
  784. // 先判断客户询价单是否存在这张单据
  785. PublicInquiry inquiry = publicInquiryDao.findBySourceIdAndSourceApp(purcInquiry.getId(), SOURCERAPP);
  786. if (null == inquiry) {// 新增
  787. PublicInquiry saleInquiry = new PublicInquiry();
  788. saleInquiry.setDate(new Date());
  789. saleInquiry.setCode(purcInquiry.getCode());
  790. saleInquiry.setEnUU(purcInquiry.getEnUU());
  791. saleInquiry.setRecorder(purcInquiry.getRecorder());
  792. saleInquiry.setRecorderUU(purcInquiry.getRecorderUU());
  793. saleInquiry.setAuditor(purcInquiry.getAuditor());
  794. saleInquiry.setSourceApp(SOURCERAPP);
  795. saleInquiry.setKind(INQUIRYKIND);
  796. saleInquiry.setSourceId(purcInquiry.getId());
  797. saleInquiry.setPriceType(purcInquiry.getPriceType());
  798. saleInquiry.setInvoice(purcInquiry.getInvoice());
  799. saleInquiry.setShip(purcInquiry.getShip());
  800. saleInquiry.setEndDate(purcInquiry.getEndDate());
  801. if (!CollectionUtils.isEmpty(purcInquiry.getAttachs())) {
  802. Set<com.uas.ps.inquiry.model.Attach> attachs = new HashSet<com.uas.ps.inquiry.model.Attach>();
  803. for (com.uas.ps.inquiry.model.Attach attach : purcInquiry.getAttachs()) {
  804. com.uas.ps.inquiry.model.Attach newAttach = new com.uas.ps.inquiry.model.Attach();
  805. newAttach.setDate(new Date());
  806. newAttach.setDescription(attach.getDescription());
  807. newAttach.setName(attach.getName());
  808. newAttach.setPath(attach.getPath());
  809. newAttach.setRelatedKey(attach.getRelatedKey());
  810. newAttach.setSize(attach.getSize());
  811. newAttach.setRelatedKey(attach.getRelatedKey());
  812. attachs.add(newAttach);
  813. }
  814. saleInquiry.setAttachs(attachs);
  815. }
  816. saleInquiry.setEnvironment(purcInquiry.getEnvironment());
  817. saleInquiry.setRemark(purcInquiry.getRemark());
  818. saleInquiry.setInquirytype(purcInquiry.getInquirytype());
  819. Set<PublicInquiryItem> items = new HashSet<PublicInquiryItem>();
  820. Short i = 0;
  821. if (null != purcInquiryItem) {
  822. PublicInquiryItem item = new PublicInquiryItem();
  823. Product product = productDao.findOne(purcInquiryItem.getProductId());
  824. item.setProductId(product.getId());
  825. item.setInquiry(saleInquiry);
  826. item.setNumber(i);
  827. item.setCurrency(purcInquiryItem.getCurrency());
  828. item.setFromDate(new Date());
  829. item.setToDate(purcInquiryItem.getToDate());
  830. item.setTaxrate(purcInquiryItem.getTaxrate());
  831. item.setRemark(purcInquiryItem.getRemark());
  832. item.setProductId(purcInquiryItem.getProductId());
  833. item.setStatus((short) Status.NOT_REPLY.value());
  834. item.setVendUU(enuu);
  835. item.setVendUserUU(useruu);
  836. item.setSource(purcInquiryItem.getSource());
  837. item.setCustLap(Constant.NO);
  838. item.setSendStatus((short) Status.NOT_UPLOAD.value());
  839. item.setSourceId(id);
  840. List<PublicInquiryReply> replies = new ArrayList<PublicInquiryReply>();
  841. PublicInquiryReply reply = new PublicInquiryReply();
  842. reply.setLapQty((double) 0);
  843. replies.add(reply);
  844. item.setReplies(replies);
  845. item.setNeedquantity(purcInquiryItem.getNeedquantity());
  846. item.setKind(INQUIRYKIND);
  847. item.setProdCode(purcInquiryItem.getProdCode());
  848. items.add(item);
  849. i++;
  850. }
  851. List<PublicInquiryItem> purcitems = publicInquiryItemDao.save(items);
  852. if (purcitems.get(0).getId() != null) {
  853. map.put("success", "转客户询价单成功");
  854. map.put("id", purcitems.get(0).getInquiry().getId());
  855. } else {
  856. map.put("success", "转客户询价单失败");
  857. }
  858. } else {// 插入
  859. PublicInquiryItem purcItem = publicInquiryItemDao.findByVendUUAndSourceId(enuu, id);
  860. if (purcItem != null) {
  861. map.put("info", "询价单已存在");
  862. map.put("inid", purcItem.getId());
  863. } else {
  864. if (!CollectionUtils.isEmpty(purcInquiry.getInquiryItems())) {
  865. if (null != purcInquiryItem) {
  866. // 涉及到级联存储及ERP转入单据的操作,用主表id存储存在问题,这里先用sql语句直接插入
  867. PublicInquiryItem item = new PublicInquiryItem();
  868. Product product = productDao.findOne(purcInquiryItem.getProductId());
  869. item.setProductId(product.getId());
  870. item.setNumber((short) (purcInquiry.getInquiryItems().size() + 1));
  871. item.setCurrency(purcInquiryItem.getCurrency());
  872. item.setFromDate(new Date());
  873. item.setToDate(purcInquiryItem.getToDate());
  874. item.setTaxrate(purcInquiryItem.getTaxrate());
  875. item.setRemark(purcInquiryItem.getRemark());
  876. item.setProductId(purcInquiryItem.getProductId());
  877. item.setVendUU(enuu);
  878. item.setVendUserUU(useruu);
  879. item.setSource(purcInquiryItem.getSource());
  880. item.setStatus((short) Status.NOT_REPLY.value());
  881. item.setCustLap(Constant.NO);
  882. item.setSendStatus((short) Status.NOT_UPLOAD.value());
  883. item.setSourceId(id);
  884. item.setProdCode(purcInquiryItem.getProdCode());
  885. item.setKind(INQUIRYKIND);
  886. item.setNeedquantity(purcInquiryItem.getNeedquantity());
  887. List<PublicInquiryReply> replies = new ArrayList<PublicInquiryReply>();
  888. List<PublicInquiryReply> purcReplies = new ArrayList<PublicInquiryReply>();
  889. PublicInquiryReply reply = new PublicInquiryReply();
  890. reply.setLapQty((double) 0);
  891. purcReplies.add(reply);
  892. purcReplies = publicInquiryReplyDao.save(purcReplies);
  893. replies.addAll(purcReplies);
  894. item.setReplies(replies);
  895. Long idid = jdbcTemplate.queryForObject("select public$inquiryitems_seq.nextval from dual", Long.class);
  896. try {
  897. jdbcTemplate.update(
  898. "insert into public$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
  899. + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
  900. idid, item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
  901. item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
  902. item.getSource(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
  903. item.getSourceId(), inquiry.getId(), inquiry.getKind());
  904. } catch (DataAccessException e) {
  905. map.put("info", "转客户询价单失败");
  906. }
  907. item = publicInquiryItemDao.findOne(idid);
  908. //回复清单更新
  909. if (replies.size() > 0) {
  910. for (PublicInquiryReply reply1 : replies) {
  911. jdbcTemplate.update("update public$inquiryreply set ir_idid = " + idid + "where ir_id = " + reply1.getId());
  912. }
  913. }
  914. if (item != null) {
  915. map.put("success", "转客户询价单成功");
  916. map.put("id", item.getInquiry().getId());
  917. } else {
  918. map.put("info", "转客户询价单失败");
  919. }
  920. }
  921. }
  922. }
  923. }
  924. return map;
  925. }
  926. /**
  927. * 通过分页参数和过滤条件查询报价信息
  928. *
  929. * @param info 分页参数
  930. * @param filter 过滤条件
  931. * @return
  932. * @author hejq
  933. * @date 2018-01-17 10:30
  934. */
  935. @Override
  936. public IPage<PublicInquiryItemInfo> findByPageInfo(final PageInfo info, final SearchFilter filter) {
  937. Sort sort = new Sort(Sort.Direction.DESC, "date");
  938. if (info.getOffset() == 0) {
  939. info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
  940. }
  941. info.setSort(sort);
  942. if (null != filter) {
  943. if (StringUtils.hasText(filter.getKeyword())) {
  944. SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  945. SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  946. SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  947. SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  948. SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  949. SimpleExpression inquiryEnName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  950. SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, inquiryEnName, spec};
  951. LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
  952. info.expression(logical);
  953. }
  954. if (filter.getFromDate() != null) {
  955. info.expression(PredicateUtils.gte("offerTime", new Date(filter.getFromDate()), false));
  956. }
  957. if (filter.getEndDate() != null) {
  958. info.expression(PredicateUtils.lte("offerTime", new Date(filter.getEndDate()), false));
  959. }
  960. }
  961. Page<PublicInquiryItemInfo> itemInfoPage = itemInfoDao.findAll(new Specification<PublicInquiryItemInfo>() {
  962. @Override
  963. public Predicate toPredicate(Root<PublicInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
  964. query.where(info.getPredicates(root, query, builder));
  965. return null;
  966. }
  967. }, info);
  968. if (!CollectionUtils.isEmpty(itemInfoPage.getContent())) {
  969. for (PublicInquiryItemInfo itemInfo : itemInfoPage) {
  970. String sql = "select at_path,at_name from attachs a left join public$inquiryitems$attach p on a.at_id = p.at_id " +
  971. "left join public$inquiryitems i on p.id_id = i.id_id where i.id_id = " + itemInfo.getId();
  972. List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
  973. if (!CollectionUtils.isEmpty(maps)) {
  974. Map<String, Object> map = maps.get(0);
  975. itemInfo.setAttachUrl(map.get("at_path").toString());
  976. itemInfo.setAttachName(map.get("at_name").toString());
  977. }
  978. if (null == itemInfo.getProductId()) {
  979. Product product = new Product();
  980. product.setTitle(itemInfo.getProdTitle());
  981. product.setCmpCode(itemInfo.getCmpCode());
  982. product.setBrand(itemInfo.getInbrand());
  983. product.setSpec(itemInfo.getSpec());
  984. product.setCode(itemInfo.getProdCode());
  985. if (null == product.getCode()) {
  986. product.setCode(itemInfo.getCmpCode());
  987. }
  988. itemInfo.setProduct(product);
  989. }
  990. }
  991. }
  992. return IPageUtils.covert(itemInfoPage);
  993. }
  994. @Override
  995. public Page<PublicInquiryItemInfo> findListByPageInfo(final PageInfo info, SearchFilter filter) {
  996. Sort sort = new Sort(Sort.Direction.DESC, "date");
  997. if (info.getOffset() == 0) {
  998. info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
  999. }
  1000. info.setSort(sort);
  1001. return itemInfoDao.findAll(new Specification<PublicInquiryItemInfo>() {
  1002. @Override
  1003. public Predicate toPredicate(Root<PublicInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
  1004. query.where(info.getPredicates(root, query, builder));
  1005. return null;
  1006. }
  1007. }, info);
  1008. }
  1009. /**
  1010. * 查询公共询价列表信息
  1011. *
  1012. * @param info 分页参数
  1013. * @param filter 过滤条件
  1014. * @return
  1015. */
  1016. @Override
  1017. public IPage<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, final SearchFilter filter) {
  1018. Sort sort = new Sort(Sort.Direction.DESC, "id", "date");
  1019. if (info.getOffset() == 0) {
  1020. info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
  1021. }
  1022. info.setSort(sort);
  1023. Long enUU = null;
  1024. if (null != filter) {
  1025. if (filter.getFromDate() != null) {
  1026. info.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
  1027. }
  1028. if (filter.getEndDate() != null) {
  1029. info.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
  1030. }
  1031. if (!CollectionUtils.isEmpty(filter.getDistribute())) {
  1032. info.expression(PredicateUtils.in("inquiry.enUU", filter.getDistribute(), false));
  1033. }
  1034. // 将当前uu设置
  1035. enUU = filter.getEnUU();
  1036. if (!StringUtils.isEmpty(filter.getIsAll()) && filter.getIsAll() == 0 && !StringUtils.isEmpty(filter.getEnUU())) {
  1037. info.expression(PredicateUtils.ne("inquiry.enUU", filter.getEnUU(), false));
  1038. }
  1039. if (!StringUtils.isEmpty(filter.getKeyword())) {
  1040. SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1041. SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1042. SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1043. SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1044. SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1045. SimpleExpression enName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
  1046. SimpleExpression[] simpleExpressions = null;
  1047. if (!StringUtils.isEmpty(filter.getIsLogin()) && filter.getIsLogin() == 0) {
  1048. simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, spec};
  1049. } else {
  1050. simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, enName, spec};
  1051. }
  1052. LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
  1053. info.expression(logical);
  1054. }
  1055. }
  1056. Page<PurcInquiryItemInfo> orders = inquiryItemInfoDao.findAll(new Specification<PurcInquiryItemInfo>() {
  1057. @Override
  1058. public Predicate toPredicate(Root<PurcInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
  1059. query.where(info.getPredicates(root, query, builder));
  1060. return null;
  1061. }
  1062. }, info);
  1063. // 将当前企业报价信息设置进去
  1064. if (null != filter && !StringUtils.isEmpty(enUU)) {
  1065. for (PurcInquiryItemInfo itemInfo : orders) {
  1066. PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(filter.getEnUU(), itemInfo.getId());
  1067. List<InquiryEnRemind> inquiryEnRemind = inquiryEnRemindDao.findByItemIdAndVendUU(itemInfo.getId(), filter.getEnUU());
  1068. if (!CollectionUtils.isEmpty(inquiryEnRemind) && inquiryEnRemind.size() > 0) {
  1069. itemInfo.setAllotStatus((short) 1);
  1070. } else {
  1071. itemInfo.setAllotStatus((short) 0);
  1072. }
  1073. itemInfo.setQuotation(item);
  1074. }
  1075. }
  1076. return covert(orders, enUU);
  1077. }
  1078. /**
  1079. * 将数据库查询的数据进行封装处理
  1080. *
  1081. * @param orders 查询的数据信息
  1082. * @return
  1083. */
  1084. private IPage<PurcInquiryItemInfo> covert(Page<PurcInquiryItemInfo> orders, Long enuu) {
  1085. if (!CollectionUtils.isEmpty(orders.getContent()) && null != enuu) {
  1086. for (PurcInquiryItemInfo itemInfo : orders.getContent()) {
  1087. PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
  1088. itemInfo.setQuoted(Constant.NO);
  1089. if (null != item) {
  1090. itemInfo.setAgreed(item.getAgreed());
  1091. itemInfo.setQuteId(item.getId());
  1092. itemInfo.setQuoted(Constant.YES);
  1093. }
  1094. if (null == itemInfo.getProductId()) {
  1095. Product product = new Product();
  1096. product.setTitle(itemInfo.getProdTitle());
  1097. product.setCmpCode(itemInfo.getCmpCode());
  1098. product.setBrand(itemInfo.getInbrand());
  1099. product.setSpec(itemInfo.getSpec());
  1100. product.setCode(itemInfo.getProdCode());
  1101. if (null == product.getCode()) {
  1102. product.setCode(itemInfo.getCmpCode());
  1103. }
  1104. itemInfo.setProduct(product);
  1105. } else {
  1106. Product product = productDao.findOne(itemInfo.getProductId());
  1107. itemInfo.setProduct(product);
  1108. }
  1109. }
  1110. }
  1111. return IPageUtils.covert(orders);
  1112. }
  1113. /**
  1114. * 根据传入条件封装查询条件
  1115. *
  1116. * @param pageInfo 分页参数
  1117. * @param state 过滤条件
  1118. * @return
  1119. */
  1120. @Override
  1121. public PageInfo covert(PageInfo pageInfo, String state, Short overdue) {
  1122. Sort sort = new Sort(Sort.Direction.DESC, "date");
  1123. if (pageInfo.getOffset() == 0) {
  1124. pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
  1125. }
  1126. pageInfo.setSort(sort);
  1127. if (state.equals(OrderStatus.todo.name())) {
  1128. pageInfo.filter("status", Status.NOT_REPLY.value());
  1129. pageInfo.filter("overdue", Constant.NO);
  1130. pageInfo.filter("invalid", Constant.NO);
  1131. } else if (state.equals(OrderStatus.done.name())) {
  1132. if (StringUtils.isEmpty(overdue) || !overdue.equals(Constant.YES)) {
  1133. pageInfo.filter("overdue", Constant.NO);
  1134. }
  1135. pageInfo.filter("status", Status.REPLIED.value());
  1136. pageInfo.filter("invalid", Constant.NO);
  1137. pageInfo.filter("decideStatus", Status.UNAUDIT.value());
  1138. } else if (state.equals(OrderStatus.end.name())) {
  1139. pageInfo.filter("overdue", Constant.YES);
  1140. pageInfo.filter("invalid", Constant.NO);
  1141. } else if (state.equals(OrderStatus.invalid.name())) {
  1142. SimpleExpression overdue1 = new SimpleExpression("overdue", Constant.NO, CriterionExpression.Operator.NE, true);
  1143. SimpleExpression invalid = new SimpleExpression("invalid", Constant.NO, CriterionExpression.Operator.NE, true);
  1144. SimpleExpression[] simpleExpressions = new SimpleExpression[]{invalid, overdue1};
  1145. LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
  1146. pageInfo.expression(logical);
  1147. } else if (state.equals(OrderStatus.agreed.name())) {
  1148. pageInfo.filter("agreed", Constant.YES);
  1149. pageInfo.filter("status", Status.REPLIED.value());
  1150. pageInfo.filter("invalid", Constant.NO);
  1151. } else if (state.equals(OrderStatus.refused.name())) {
  1152. pageInfo.filter("agreed", Constant.NO);
  1153. pageInfo.filter("status", Status.REPLIED.value());
  1154. pageInfo.filter("invalid", Constant.NO);
  1155. }
  1156. return pageInfo;
  1157. }
  1158. /**
  1159. * 获取公共询价列表信息
  1160. *
  1161. * @param enuu 当前企业UU
  1162. * @param size 大小
  1163. * @return
  1164. */
  1165. @Override
  1166. public List<InquiryMessage> getMessageList(Long enuu, Integer size) {
  1167. if (size == 0 || size == null) {
  1168. size = 10;
  1169. }
  1170. String sql = "select * from (select p.id_id id, p.id_prodtitle prodTitle, p.id_date as date, i.in_enuu enuu from purc$puinquiryitems p left join purc$puinquiry i on i.in_id = p.id_inid where 1=1";
  1171. if (enuu != null) {
  1172. sql = sql + " and i.in_enuu <> " + enuu;
  1173. }
  1174. sql = sql + " and COALESCE(p.id_overdue, 0) <> 1 order by p.id_id desc) i limit " + size;
  1175. List<PurcInquiryItem> items = jdbcTemplate.query(sql, new BeanPropertyRowMapper<PurcInquiryItem>(PurcInquiryItem.class));
  1176. List<InquiryMessage> messages = new ArrayList<InquiryMessage>();
  1177. if (!CollectionUtils.isEmpty(items)) {
  1178. for (PurcInquiryItem item : items) {
  1179. InquiryMessage message = new InquiryMessage();
  1180. if (null != item.getEnuu()) {
  1181. Enterprise enterprise = enterpriseDao.findOne(item.getEnuu());
  1182. message.setEnName(enterprise.getEnName());
  1183. }
  1184. item = purcInquiryItemDao.findOne(item.getId());
  1185. message.setPordName(item.getProdTitle());
  1186. message.setInid(item.getId());
  1187. PublicInquiryItem publicInquiryItem = publicInquiryItemDao.findByVendUUAndSourceId(enuu, item.getId());
  1188. if (null != publicInquiryItem) {
  1189. message.setQuteId(publicInquiryItem.getId());
  1190. }
  1191. message.setLastest(isToday(item.getDate()));
  1192. messages.add(message);
  1193. }
  1194. }
  1195. return messages;
  1196. }
  1197. /**
  1198. * 判断该条单据是否当天单据
  1199. *
  1200. * @param date 询价时间
  1201. * @return
  1202. */
  1203. private boolean isToday(Date date) {
  1204. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  1205. String inDate = sdf.format(date);
  1206. String nowDate = sdf.format(new Date());
  1207. return inDate.equals(nowDate);
  1208. }
  1209. /**
  1210. * 商城-采购排行榜
  1211. *
  1212. * @return
  1213. */
  1214. @Override
  1215. public List<Map<String, Object>> findCodeRankingList() {
  1216. String sql = "select * from(SELECT sum(1) AS seekAmount, id_cmpcode FROM `purc$puinquiryitems` where id_cmpcode is not null group by id_cmpcode ) "
  1217. + " a order by seekAmount desc limit 0,5";
  1218. return jdbcTemplate.queryForList(sql);
  1219. }
  1220. /**
  1221. * 通过明细id查询询价详情
  1222. *
  1223. * @param itemId 明细id
  1224. * @return
  1225. */
  1226. @Override
  1227. public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) {
  1228. PurcInquiryItemInfo itemInfo = inquiryItemInfoDao.findOne(itemId);
  1229. PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
  1230. itemInfo.setQuoted(Constant.NO);
  1231. if (null != item) {
  1232. itemInfo.setAgreed(item.getAgreed());
  1233. itemInfo.setQuteId(item.getId());
  1234. itemInfo.setQuoted(Constant.YES);
  1235. }
  1236. if (null == itemInfo.getProductId()) {
  1237. Product product = new Product();
  1238. product.setTitle(itemInfo.getProdTitle());
  1239. product.setCmpCode(itemInfo.getCmpCode());
  1240. product.setBrand(itemInfo.getInbrand());
  1241. product.setSpec(itemInfo.getSpec());
  1242. itemInfo.setProduct(product);
  1243. }
  1244. return itemInfo;
  1245. }
  1246. /**
  1247. * 通过id查询单个已转报价的信息
  1248. *
  1249. * @param id
  1250. * @return
  1251. */
  1252. @Override
  1253. public PublicInquiryItemInfo findOneInfo(Long id, Long enuu, Long useruu) {
  1254. PublicInquiryItemInfo itemInfo = itemInfoDao.findOne(id);
  1255. if (!itemInfo.getVendUU().equals(enuu)) {
  1256. throw new IllegalOperatorException("访问受限");
  1257. }
  1258. return itemInfo;
  1259. }
  1260. /**
  1261. * 将推荐信息转成UU互联需要的数据
  1262. *
  1263. * @param content 推荐信息
  1264. * @return
  1265. */
  1266. @Override
  1267. public List<PurcInquiryItemInfo> covertRemindToInquiry(List<InquiryRemind> content) {
  1268. List<PurcInquiryItemInfo> infoList = new ArrayList<>();
  1269. if (!CollectionUtils.isEmpty(content)) {
  1270. for (InquiryRemind remind : content) {
  1271. PurcInquiryItemInfo itemInfo = inquiryItemInfoDao.findOne(remind.getItemId());
  1272. if (null != itemInfo) {
  1273. Product product = new Product();
  1274. product.setTitle(itemInfo.getProdTitle());
  1275. product.setCmpCode(itemInfo.getCmpCode());
  1276. product.setCode(itemInfo.getCmpCode());
  1277. product.setBrand(itemInfo.getInbrand());
  1278. product.setSpec(itemInfo.getSpec());
  1279. itemInfo.setProduct(product);
  1280. if (remind.getStatus().equals(Status.NOTALLOW.value())) {
  1281. itemInfo.setAgreed(Constant.NO);
  1282. } else if (remind.getStatus().equals(Status.ALLOW.value())) {
  1283. itemInfo.setAgreed(Constant.YES);
  1284. }
  1285. itemInfo.setQuoted(Constant.NO);
  1286. if (remind.getStatus().equals(Status.SUBMITTED.value())) {
  1287. itemInfo.setQuoted(Constant.YES);
  1288. itemInfo.setQuteId(remind.getNewId());
  1289. }
  1290. if (itemInfo.getRemainingTime() <= 0) {
  1291. itemInfo.setOverdue(Constant.YES);
  1292. }
  1293. infoList.add(itemInfo);
  1294. }
  1295. }
  1296. }
  1297. return infoList;
  1298. }
  1299. /**
  1300. * 针对供应商,客户将拒绝理由发送信息给供应商
  1301. *
  1302. * @param item 询价明细
  1303. * @param sourceApp 应用来源
  1304. * @throws Exception
  1305. */
  1306. @Override
  1307. public Page<MessageModel> refuseMessage(PublicInquiryItem item, String sourceApp) {
  1308. if (null != item.getVendUU() && null != item.getVendUserUU()) {
  1309. final String SMS_TYPE = "SM"; //发送信息
  1310. List<MessageModel> models = new ArrayList<MessageModel>();
  1311. String Buyer = item.getInquiry().getEnName() == null ? item.getInquiry().getRecorder() : item.getInquiry().getEnName();
  1312. String cmpCode = item.getCmpCode();
  1313. String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
  1314. String content = "因" + item.getRefusereason() + "," + Buyer + "【未采纳】您关于“型号:" + cmp + "”的报价。期待与您的下次合作!";
  1315. MessageModel model = new MessageModel();
  1316. model.setType(INQUIRY_DECIDE_TYPE_MALL);
  1317. model.setProducerApp(sourceApp);
  1318. model.setConsumerType(CUST_TYPE);
  1319. model.setConsumerApp(CONSUMERAPP);
  1320. model.setContent(content);
  1321. model.setRemark(String.valueOf(item.getInquiry().getId()));
  1322. model.setSourceId(item.getId());
  1323. model.setReceiverEnuu(item.getVendUU());
  1324. model.setReceiverUu(item.getVendUserUU());
  1325. model.setSenderEnuu(item.getInquiry().getEnUU());
  1326. if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
  1327. model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
  1328. } else {
  1329. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  1330. model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
  1331. }
  1332. model.setSmsType(SMS_TYPE);
  1333. models.add(model);
  1334. if (!CollectionUtils.isEmpty(models)) {
  1335. sendMessage(models);
  1336. }
  1337. }
  1338. return null;
  1339. }
  1340. /**
  1341. * 针对供应商,把客户采纳报价的消息发送给供应商
  1342. *
  1343. * @param item 询价明细
  1344. * @param sourceApp 应用来源
  1345. * @throws Exception
  1346. */
  1347. @Override
  1348. public Page<MessageModel> adoptMessage(PublicInquiryItem item, String sourceApp) {
  1349. if (null != item.getVendUU() && null != item.getVendUserUU()) {
  1350. final String SMS_TYPE = "SM"; //发送信息
  1351. List<MessageModel> models = new ArrayList<MessageModel>();
  1352. String cmpCode = item.getCmpCode();
  1353. String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
  1354. String content = item.getInquiry().getEnName() + "【已采纳】您关于'型号:'" + cmp + "的报价,期待与您的合作!";
  1355. MessageModel model = new MessageModel();
  1356. model.setType(INQUIRY_DECIDE_TYPE_MALL);
  1357. model.setProducerApp(sourceApp);
  1358. model.setConsumerType(CUST_TYPE);
  1359. model.setConsumerApp(CONSUMERAPP);
  1360. model.setContent(content);
  1361. model.setRemark(String.valueOf(item.getInquiry().getId()));
  1362. model.setSourceId(item.getId());
  1363. model.setReceiverEnuu(item.getVendUU());
  1364. model.setReceiverUu(item.getVendUserUU());
  1365. model.setSenderEnuu(item.getInquiry().getEnUU());
  1366. if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
  1367. model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
  1368. } else {
  1369. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  1370. model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
  1371. }
  1372. model.setSmsType(SMS_TYPE);
  1373. models.add(model);
  1374. if (!CollectionUtils.isEmpty(models)) {
  1375. sendMessage(models);
  1376. }
  1377. }
  1378. return null;
  1379. }
  1380. @Override
  1381. public Page<MessageModel> ReceiveMessage(PublicInquiryItem item, String sourceApp) {
  1382. if (null != item.getVendUU() && null != item.getVendUserUU() && !StringUtils.isEmpty(item.getCmpCode())) {
  1383. final String SMS_TYPE = "SM"; //发送信息
  1384. List<MessageModel> models = new ArrayList<MessageModel>();
  1385. String cmpCode = item.getCmpCode();
  1386. String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
  1387. String content = "您收到了" + item.getVendName() + "关于“型号:" + cmp + "“的报价,马上去看一看吧!";
  1388. MessageModel model = new MessageModel();
  1389. model.setType(INQUIRY_TYPE_MALL);
  1390. model.setProducerApp(sourceApp);
  1391. model.setConsumerType(CUST_TYPE);
  1392. model.setConsumerApp(CONSUMERAPP);
  1393. model.setContent(content);
  1394. model.setRemark(String.valueOf(item.getInquiry().getId()));
  1395. model.setSourceId(item.getId());
  1396. model.setReceiverEnuu(item.getInquiry().getEnUU());
  1397. model.setReceiverUu(item.getInquiry().getRecorderUU());
  1398. model.setSenderEnuu(item.getVendUU());
  1399. if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
  1400. model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
  1401. } else {
  1402. Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
  1403. model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
  1404. }
  1405. model.setSmsType(SMS_TYPE);
  1406. models.add(model);
  1407. if (!CollectionUtils.isEmpty(models)) {
  1408. sendMessage(models);
  1409. }
  1410. }
  1411. return null;
  1412. }
  1413. @Override
  1414. public ModelMap getPurcInquiryItemCount() {
  1415. ModelMap result = null;
  1416. try {
  1417. result = new ModelMap();
  1418. Long count = inquiryItemInfoDao.count();
  1419. result.put("count", count);
  1420. } catch (Exception e) {
  1421. e.printStackTrace();
  1422. }
  1423. return result;
  1424. }
  1425. /**
  1426. * 查询某年某月的询价明细总数
  1427. *
  1428. * @param month
  1429. * @return
  1430. */
  1431. @Override
  1432. public ModelMap countByMonth(Integer year, Integer month) {
  1433. ModelMap result = null;
  1434. try {
  1435. result = new ModelMap();
  1436. Long count = inquiryItemInfoDao.countByMonth(year, month);
  1437. result.put("count", count);
  1438. result.put("success", "true");
  1439. } catch (Exception e) {
  1440. result.put("message", e.getMessage());
  1441. result.put("success", false);
  1442. e.printStackTrace();
  1443. }
  1444. return result;
  1445. }
  1446. }