| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763 |
- package com.uas.ps.inquiry.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.uas.ps.core.util.ContextUtils;
- import com.uas.ps.entity.Product;
- import com.uas.ps.entity.ProductUsers;
- import com.uas.ps.entity.Status;
- import com.uas.ps.inquiry.AccessConfiguration;
- import com.uas.ps.inquiry.dao.*;
- import com.uas.ps.inquiry.domain.IPage;
- import com.uas.ps.inquiry.entity.*;
- import com.uas.ps.inquiry.exception.NotFoundException;
- import com.uas.ps.inquiry.model.*;
- import com.uas.ps.inquiry.page.PageInfo;
- import com.uas.ps.inquiry.page.SearchFilter;
- import com.uas.ps.inquiry.page.criteria.*;
- import com.uas.ps.inquiry.page.exception.IllegalOperatorException;
- import com.uas.ps.inquiry.service.PublicInquiryService;
- import com.uas.ps.inquiry.util.*;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.DataAccessException;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Sort;
- import org.springframework.data.jpa.domain.Specification;
- import org.springframework.http.HttpStatus;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.stereotype.Service;
- import org.springframework.ui.ModelMap;
- import org.springframework.util.CollectionUtils;
- import org.springframework.util.StringUtils;
- import javax.persistence.criteria.CriteriaBuilder;
- import javax.persistence.criteria.CriteriaQuery;
- import javax.persistence.criteria.Predicate;
- import javax.persistence.criteria.Root;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * 公共询价接口实现
- * <p>
- * Created by hejq on 2018-01-13.
- */
- @Service
- public class PublicInquiryServiceImpl implements PublicInquiryService {
- @Autowired
- private PublicInquiryDao publicInquiryDao;
- @Autowired
- private PurcInquiryDao purcInquiryDao;
- @Autowired
- private ProductDao productDao;
- @Autowired
- private PurcInquiryItemDao purcInquiryItemDao;
- @Autowired
- private JdbcTemplate jdbcTemplate;
- @Autowired
- private PublicInquiryReplyDao publicInquiryReplyDao;
- @Autowired
- private PurcInquiryItemInfoDao inquiryItemInfoDao;
- @Autowired
- private PublicInquiryItemInfoDao itemInfoDao;
- @Autowired
- private PublicInquiryItemDao publicInquiryItemDao;
- @Autowired
- private UserDao userDao;
- @Autowired
- private EnterpriseDao enterpriseDao;
- @Autowired
- private InquiryRemindDao remindDao;
- @Autowired
- private ProductReplaceDao productReplaceDao;
- @Autowired
- private InquiryEnRemindDao inquiryEnRemindDao;
- @Autowired
- private KindConcernDao kindConcernDao;
- @Autowired
- private InquiryDataDao inquiryDataDao;
- /**
- * 应用来源
- */
- private final String SOURCERAPP = "B2B";
- /**
- * 接收应用(以","拼接应用名称)
- */
- private final String CONSUMERAPP = "MALL,B2B";
- /**
- * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
- */
- private final String INQUIRY_TYPE = "公共询价";
- /**
- * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
- */
- private final String INQUIRY_TYPE_MALL = "MALL跳转买家已报价页面";
- /**
- * 消息类型 (在MALL消息中拼接求购询价待报价)
- */
- private final String INQUIRY_TYPE_SELLER_MALL = "MALL公共询价";
- /**
- * 消息类型,公共询价的采纳结果
- */
- private final String INQUIRY_DECIDE_TYPE = "公共询价采纳结果";
- /**
- * 消息类型,公共询价的采纳结果
- */
- private final String INQUIRY_DECIDE_TYPE_MALL = "商城公共询价采纳结果";
- /**
- * 询价种类
- */
- private final String INQUIRYKIND = "publicInquiry";
- /**
- * 消息推送邮件模板id
- */
- private final String MAIL_TEMP_ID = "d94e931b-b699-46d7-8bb2-94604a3352c0";
- /**
- * 消息推送短信模板id
- */
- private final String SMS_TEMP_ID = "6e094dcf-f2c7-462a-9686-b2d32d684a78";
- /**
- * 消息推送方式:邮件、短信、im
- */
- private final String SMS_TYPE = "MAIL_AND_SM_AND_IM";
- /**
- * 来源应用,ERP
- */
- private final String PRODUCERAPP = "ERP";
- /**
- * 消费类型: 多个,MULTI
- */
- private final String CUST_TYPE = "MULTI";
- /**
- * 公共物料访问地址
- */
- private final String PS_PRODUCT_URL = ContextUtils.getBean(AccessConfiguration.class).getPsProductUrl();
- /**
- * 公共消息访问地址
- */
- private final String PS_MESSAGE_URL = ContextUtils.getBean(AccessConfiguration.class).getPsMessageUrl();
- /**
- * 商城链接
- */
- private final String USOFTMALL_URL = ContextUtils.getBean(AccessConfiguration.class).getMallUrl();
- /**
- * 日志
- */
- private static final Logger log = LoggerFactory.getLogger(PublicInquiryServiceImpl.class);
- /**
- * 保存公共询价信息
- *
- * @param inquiries erp传入公共询价的信息
- * @param enuu 询价企业UU号
- * @param address 询价企业地址
- */
- @Override
- public void save(List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException {
- List<PurcInquiry> purcInquiries = covert(inquiries, enuu, address);
- if (!CollectionUtils.isEmpty(purcInquiries)) {
- for (PurcInquiry inquiry : purcInquiries) {
- // 判断单号是否已存在
- List<PurcInquiry> old = purcInquiryDao.findByCodeAndEnUU(inquiry.getCode(), enuu);
- List<PurcInquiryItem> items = new ArrayList<PurcInquiryItem>();
- if (CollectionUtils.isEmpty(old) && !CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
- for (PurcInquiryItem item : inquiry.getInquiryItems()) {
- item.setInquiry(inquiry);
- items.add(item);
- }
- }
- try {
- items = purcInquiryItemDao.save(items);
- if (!CollectionUtils.isEmpty(items)) {
- final List<PurcInquiryItem> purcInquiryItems = items;
- ThreadUtils.task(new Runnable() {
- @Override
- public void run() {
- try {
- notifyMessage(purcInquiryItems, PRODUCERAPP);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 消息推送
- *
- * @param inquiryItems 询价明细
- * @param sourceApp 消息来源应用
- */
- @Override
- public void notifyMessage(List<PurcInquiryItem> inquiryItems, String sourceApp) throws Exception {
- for (PurcInquiryItem item : inquiryItems) {
- String cmpCode = null;
- if (item.getCmpCode() != null) {
- cmpCode = item.getCmpCode();
- } else if (null != item.getProductId()) {
- Product product = productDao.findOne(item.getProductId());
- cmpCode = product.getCmpCode();
- }
- if (null != cmpCode) {
- String url = PS_PRODUCT_URL + "/productuser/getProductUsersByEnUUAndCmpCode";
- JSONObject formData = new JSONObject();
- formData.put("enUU", item.getInquiry().getEnUU());
- formData.put("cmpCode", cmpCode);
- try {
- long start = System.currentTimeMillis();
- HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
- log.info("/productuser/getProductUsersByEnUUAndCmpCode,耗时:{}", (System.currentTimeMillis() - start));
- if (res.getStatusCode() == 200) {
- List<ProductUsers> users = FlexJsonUtils.fromJsonArray(res.getResponseText(), ProductUsers.class);
- users = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getRecorderUU(), cmpCode, users);
- if (!CollectionUtils.isEmpty(users)) {
- List<MessageModel> models = new ArrayList<MessageModel>();
- User buyerUser = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
- Enterprise buyerEnterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- for (ProductUsers user : users) {
- String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
- String content = "发布关于“型号:" + cmp + "”的公共询价信息,邀请您参与报价。";
- MessageModel model = new MessageModel();
- if (null != buyerEnterprise) {
- content = buyerEnterprise.getEnName() + content;
- model.setBuyerName(buyerEnterprise.getEnName());
- } else if (null != buyerUser) {
- content = buyerUser.getUserName() + content;
- model.setBuyerName(buyerUser.getUserName());
- }
- // 询价方信息
- if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
- model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
- } else {
- model.setSenderUu(null != buyerEnterprise ? buyerEnterprise.getAdminUU() : 0L);
- }
- model.setSenderEnuu(item.getInquiry().getEnUU());
- model.setCmpCode(cmpCode);
- model.setType(INQUIRY_TYPE);
- model.setType(INQUIRY_TYPE_SELLER_MALL);
- model.setProducerApp(sourceApp);
- model.setConsumerType(CUST_TYPE);
- model.setConsumerApp(CONSUMERAPP);
- model.setContent(content);
- model.setRemark(String.valueOf(item.getInquiry().getId()));
- model.setSourceId(item.getId());
- // 供应商信息
- Enterprise vendEnterprise = enterpriseDao.findOne(user.getEnuu());
- if (vendEnterprise != null) {
- model.setVendName(vendEnterprise.getEnName());
- }
- model.setReceiverEnuu(user.getEnuu());
- model.setReceiverUu(user.getUseruu());
- model.setSmsType("DONT_SEND");
- model.setMailTemplate(MAIL_TEMP_ID);
- model.setSmTemplate(SMS_TEMP_ID);
- models.add(model);
- // log.info("公共询价产生消息", "根据物料型号【{}】查询接收人,关联询价单明细【{}】,UserUU:{},Enuu:{},报价的应用来源:{}", cmpCode, item.getId(), user.getUseruu(), user.getEnuu(), InquirySource.ERP.name());
- }
- if (!CollectionUtils.isEmpty(models)) {
- sendMessage(models);
- sendWechatMessage(models);
- }
- }
- // 生成推荐信息
- remindInquiry(item, users);
- }
- } catch (Exception e) {
- String reason = e.getMessage().length() > 10 ? e.getMessage().substring(0, 1000).concat("") : e.getMessage();
- log.info("公共询价产生消息,根据物料型号【{}】查询接收人失败,id:{},原因:{}, Constant:{}, 报价的应用来源:{}", cmpCode, item.getId(), reason, Constant.UU, InquirySource.ERP.name());
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 微信消息发送
- * @param models
- */
- private void sendWechatMessage(final List<MessageModel> models) {
- ThreadUtils.task(new Runnable() {
- @Override
- public void run() {
- try {
- long start = System.currentTimeMillis();
- log.info("发送微信消息");
- String res = HttpUtil.doPost(USOFTMALL_URL + "/wx/sendTemplateMessage", FlexJsonUtils.toJsonDeep(models));
- log.info("微信消息请求发送日志, {}", res);
- log.info("微信消息请求发送,数量:{}, 耗时:{}", models.size(), (System.currentTimeMillis() - start));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * 根据企业UU和物料原厂型号cmpCode获取替代物料信息
- *
- * @param cmpCode 物料原厂型号
- * @return
- */
- public List<ProductUsers> getProductReplaceByEnUUAndCmpCode(final Long userUU, final String cmpCode, List<ProductUsers> productUsers) {
- List<ProductReplace> productReplacesList = productReplaceDao.findAll(new Specification<ProductReplace>() {
- @Override
- public Predicate toPredicate(Root<ProductReplace> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
- final PredicateFactory<ProductReplace> factory = new PredicateFactory<>();
- factory.add(PredicateUtils.ne("userUU", userUU, false));
- factory.add(PredicateUtils.and(PredicateUtils.isNotNull("ptrCmpcode"), PredicateUtils.eq("ptrCmpcode", cmpCode, false)));
- query.where(factory.toPredicate(root, query, cb));
- return null;
- }
- });
- if (!CollectionUtils.isEmpty(productReplacesList)) {
- for (ProductReplace productReplace : productReplacesList) {
- ProductUsers user = new ProductUsers();
- user.setEnuu(productReplace.getEnuu());
- user.setUseruu(productReplace.getUserUU());
- productUsers.add(user);
- }
- }
- // 去掉同一企业下同一个人相同原厂型号的不同物料的记录,保证一个原厂型号只发一条
- List<ProductUsers> returnList = new ArrayList<>();
- Set<String> enUUAndUserUUs = new HashSet<>();
- for (ProductUsers user : productUsers) {
- String receiverInfo = user.getEnuu().toString() + user.getUseruu().toString();
- if (!enUUAndUserUUs.contains(receiverInfo)) {
- returnList.add(user);
- enUUAndUserUUs.add(receiverInfo);
- }
- }
- return returnList;
- }
- /**
- * 通过查询的个人物料相关联的信息,自动生成推荐的报价的数据
- *
- * @param item 报价明细
- * @param users 用户信息
- */
- private void remindInquiry(final PurcInquiryItem item, final List<ProductUsers> users) {
- ThreadUtils.task(new Runnable() {
- @Override
- public void run() {
- try {
- Map<Long, ProductUsers> productUsersMap = new HashMap<>();
- Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- if (!CollectionUtils.isEmpty(users)) {
- List<InquiryRemind> inquiryReminds = new ArrayList<>();
- for (ProductUsers u : users) {
- List<InquiryRemind> remindList = remindDao.findByVendUserUUAndVendUUAndItemId(u.getUseruu(), u.getEnuu(), item.getId());
- if (remindList.size() == 0 && item.getInquiry().getEnUU() != null) {
- productUsersMap.put(u.getEnuu(), u);
- InquiryRemind remind = new InquiryRemind();
- remind.setEnName(enterprise.getEnName());
- remind.setEnUU(item.getInquiry().getEnUU());
- remind.setUserName(item.getUserName());
- remind.setUserTel(item.getUserTel());
- remind.setCode(item.getInquiry().getCode());
- remind.setBrand(item.getInbrand());
- remind.setInbrand(item.getInbrand());
- remind.setCmpCode(item.getCmpCode());
- remind.setSpec(item.getSpec());
- remind.setProdTitle(item.getProdTitle());
- remind.setInid(item.getInquiry().getId());
- if (item.getProduct() != null) {
- remind.setBrand(item.getProduct().getBrand());
- remind.setCmpCode(item.getProduct().getCmpCode());
- remind.setSpec(item.getProduct().getSpec());
- remind.setProdTitle(item.getProduct().getTitle());
- }
- remind.setItemId(item.getId());
- remind.setNeedQty(item.getNeedquantity());
- remind.setReDate(item.getInquiry().getDate());
- remind.setEndDate(item.getInquiry().getEndDate());
- remind.setVendUU(u.getEnuu());
- remind.setVendUserUU(u.getUseruu());
- remind.setDate(new Date(System.currentTimeMillis()));
- remind.setStatus(Status.INPUTTING.value());
- inquiryReminds.add(remind);
- }
- }
- if (!CollectionUtils.isEmpty(inquiryReminds)) {
- remindDao.save(inquiryReminds);
- }
- }
- // 查询已关注类目中是否有当前类目
- String kind = item.getProdTitle();
- Set<Long> enuuSet = new HashSet<>();
- if (!StringUtils.isEmpty(kind)) {
- enuuSet = kindConcernDao.findByNameCnAndNeEnuu(kind, item.getInquiry().getEnUU());
- }
- String url = PS_PRODUCT_URL + "/product/businessOpportunity";
- JSONObject formData = new JSONObject();
- formData.put("enUU", item.getInquiry().getEnUU());
- formData.put("pCmpCode", item.getCmpCode());
- long start = System.currentTimeMillis();
- HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
- log.info("/product/businessOpportunity , 型号:{}, 耗时:{}", item.getCmpCode(), (System.currentTimeMillis() - start));
- if (res.getStatusCode() == HttpStatus.OK.value()) {
- Map<String, Object> result = FlexJsonUtils.fromJson(res.getResponseText());
- if (!StringUtils.isEmpty(result.get("enUUs"))) {
- List<Long> enuus = (List<Long>) result.get("enUUs");
- enuuSet.addAll(enuus);
- }
- if (!CollectionUtils.isEmpty(enuuSet)) {
- List<InquiryEnRemind> inquiryEnReminds = new ArrayList<>();
- for (Long enuu : enuuSet) {
- InquiryEnRemind remind = new InquiryEnRemind();
- remind.setEnName(enterprise.getEnName());
- remind.setEnUU(item.getInquiry().getEnUU());
- remind.setUserName(item.getUserName());
- remind.setUserTel(item.getUserTel());
- remind.setCode(item.getInquiry().getCode());
- remind.setBrand(item.getInbrand());
- remind.setInbrand(item.getInbrand());
- remind.setCmpCode(item.getCmpCode());
- remind.setSpec(item.getSpec());
- remind.setProdTitle(item.getProdTitle());
- remind.setInid(item.getInquiry().getId());
- if (item.getProduct() != null) {
- remind.setBrand(item.getProduct().getBrand());
- remind.setCmpCode(item.getProduct().getCmpCode());
- remind.setSpec(item.getProduct().getSpec());
- remind.setProdTitle(item.getProduct().getTitle());
- }
- remind.setItemId(item.getId());
- remind.setNeedQty(item.getNeedquantity());
- remind.setReDate(item.getInquiry().getDate());
- remind.setEndDate(item.getInquiry().getEndDate());
- remind.setVendUU(enuu);
- if (productUsersMap.containsKey(enuu)) {
- remind.setRemindStatus(1);
- } else {
- remind.setRemindStatus(0);
- }
- remind.setDate(new Date(System.currentTimeMillis()));
- remind.setStatus(Status.INPUTTING.value());
- inquiryEnReminds.add(remind);
- }
- if (!CollectionUtils.isEmpty(inquiryEnReminds)) {
- inquiryEnRemindDao.save(inquiryEnReminds);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * 通过id查询询价信息
- *
- * @param id 公共询价主表id
- * @return
- */
- @Override
- public PurcInquiry findInquiryById(Long id) {
- PurcInquiry inquiry = purcInquiryDao.findOne(id);
- if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
- for (PurcInquiryItem item : inquiry.getInquiryItems()) {
- if (null == item.getProductId()) {
- Product product = new Product();
- product.setTitle(item.getProdTitle());
- product.setCmpCode(item.getCmpCode());
- product.setBrand(item.getInbrand());
- product.setSpec(item.getSpec());
- item.setProduct(product);
- }
- }
- }
- return inquiry;
- }
- /**
- * 发送消息推送
- *
- * @param models 封装的消息信息
- */
- private void sendMessage(final List<MessageModel> models) {
- ThreadUtils.task(new Runnable() {
- @Override
- public void run() {
- try {
- long start = System.currentTimeMillis();
- log.info("发送消息");
- String res = HttpUtil.doPost(PS_MESSAGE_URL + "/messages", FlexJsonUtils.toJsonDeep(models));
- log.info("消息请求发送");
- log.info("/messages , 条数:{},耗时:{}", models.size(), (System.currentTimeMillis() - start));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- /**
- * 将ERP传入的inquiry信息转成公共询价服务中心需要的信息
- *
- * @param inquiries 将ERP传入的inquiry信息
- * @param enuu 询价企业UU号
- * @param address 询价企业地址
- * @return
- */
- @Override
- public List<PurcInquiry> covert(List<BatchInquiry> inquiries, Long enuu, String address) throws NotFoundException {
- List<PurcInquiry> purcInquiries = new ArrayList<PurcInquiry>();
- if (!CollectionUtils.isEmpty(inquiries)) {
- for (BatchInquiry inquiry : inquiries) {
- List<PurcInquiry> old = purcInquiryDao.findByCodeAndEnUU(inquiry.getBi_code(), enuu);
- //先判断是否已经存在,不存在才进行存储
- if (CollectionUtils.isEmpty(old)) {
- PurcInquiry purcInquiry = inquiry.covert();
- purcInquiry.setEnUU(enuu);
- purcInquiry.setShip(address);
- Enterprise e = enterpriseDao.findOne(enuu);
- if (null != e) {
- purcInquiry.setEnName(e.getEnName());
- }
- Set<PurcInquiryItem> purcInquiryItems = new HashSet<PurcInquiryItem>();
- if (!CollectionUtils.isEmpty(inquiry.getInProducts())) {
- for (BatchInProduct batch : inquiry.getInProducts()) {
- PurcInquiryItem item = new PurcInquiryItem();
- List<Product> products = productDao.findByEnUUAndCode(enuu, batch.getBip_prodcode());
- if (!CollectionUtils.isEmpty(products)) {
- item.setProductId(products.get(0).getId());
- item.setCmpCode(products.get(0).getCmpCode());
- item.setInbrand(products.get(0).getBrand());
- item.setProdTitle(products.get(0).getTitle());
- item.setSpec(products.get(0).getSpec());
- } else {
- item.setCmpCode(batch.getPr_orispeccode());
- item.setInbrand(batch.getPr_brand());
- item.setProdTitle(batch.getPr_detail());
- item.setSpec(batch.getPr_spec());
- }
- item.setProdCode(batch.getBip_prodcode());
- item.setRemark(batch.getBip_remark());
- item.setNumber(batch.getBip_detno());
- item.setFromDate(new Date(System.currentTimeMillis()));
- item.setToDate(purcInquiry.getEndDate());
- item.setStatus((short) Status.NOT_REPLY.value());
- item.setIsOpen(Constant.YES);
- item.setSource("ERP");
- item.setSourceid(batch.getBip_id());
- item.setCurrency(batch.getBip_currency());
- item.setUserName(batch.getEm_name());
- item.setUserTel(batch.getBip_mobile());
- item.setUserCode(batch.getBip_buyercode());
- item.setOfferAmount(0);
- item.setEndDate(inquiry.getBi_enddate());
- item.setNeedquantity(batch.getYcgqty());
- if (null == item.getCmpCode() || item.getCmpCode().equals("无")) {
- item.setCmpCode(item.getSpec());
- }
- if (null != inquiry.getBi_date()) {
- item.setDate(inquiry.getBi_date());
- } else {
- item.setDate(new Date(System.currentTimeMillis()));
- }
- if (item.getCustCurrency() == null) {
- item.setCustCurrency("RMB");
- }
- purcInquiryItems.add(item);
- }
- }
- purcInquiry.setInquiryItems(purcInquiryItems);
- purcInquiries.add(purcInquiry);
- }
- }
- }
- return purcInquiries;
- }
- /**
- * erp提交审核时,公共询价服务中心单据禁用报价功能
- *
- * @param inquiries erp询价信息
- * @param enuu 询价企业UU号
- */
- @Override
- public void updateStatus(List<BatchInquiry> inquiries, Long enuu) {
- if (!CollectionUtils.isEmpty(inquiries)) {
- for (BatchInquiry inquiry : inquiries) {
- List<PurcInquiry> purcInquiryList = purcInquiryDao.findByCodeAndEnUU(inquiry.getBi_code(), enuu);
- for (PurcInquiry purcInquiry : purcInquiryList) {
- purcInquiryItemDao.updateStatus(purcInquiry.getId());
- }
- }
- }
- }
- /**
- * 查询供应商的报价信息
- *
- * @return
- */
- @Override
- public List<InquiryDetail> findNotUploadReply(Long enuu) {
- List<PublicInquiryItem> items = publicInquiryItemDao.findByEnUUAndBackStatus(enuu, (short) Status.NOT_UPLOAD.value());
- if (!CollectionUtils.isEmpty(items)) {
- // 防止下载过程中进行操作,这里设置一个下载中的状态
- Set<Long> ids = new HashSet<>();
- for (PublicInquiryItem item : items) {
- ids.add(item.getId());
- }
- if (ids.size() > 0) {
- publicInquiryItemDao.updateBackStatus(ids);
- }
- return convertPublicInquiryReply(items);
- }
- return new ArrayList<>();
- }
- /**
- * 查找报价的单据,上传到卖家UAS
- *
- * @param enUU 企业UU
- * @return
- */
- @Override
- public List<PublicInquiryItem> findNotUploadToUas(Long enUU) {
- return publicInquiryItemDao.findByVendUUAndReplySendStatus(enUU, (short) Status.NOT_UPLOAD.value());
- }
- /**
- * UAS获取商城账套下企业商机
- *
- * @param vendUU 报价企业UU
- * @return 待下载的企业商机
- * @author dongbw
- */
- @Override
- public List<InquiryEnRemind> findNotUploadEnRemind(Long vendUU) {
- return inquiryEnRemindDao.findNotUploadEnRemind(vendUU);
- }
- /**
- * UAS获取商城账套下企业商机之后 回调 修改状态
- *
- * @param idArray 报价单明细id list
- * @param vendUU 报价企业UU
- */
- @Override
- public void downEnRemindSuccess(String[] idArray, Long vendUU) {
- List<InquiryEnRemind> items = new ArrayList<>();
- for (String id : idArray) {
- InquiryEnRemind item = inquiryEnRemindDao.findOne(Long.parseLong(id));
- if (item != null && vendUU.equals(item.getVendUU())) {
- item.setErpDownStatus((short) Status.DOWNLOADED.value());
- items.add(item);
- }
- }
- if (!CollectionUtils.isEmpty(items)) {
- inquiryEnRemindDao.save(items);
- }
- }
- /**
- * 获取当前月和上个月询价单数量
- *
- * @return 数量map
- */
- @Override
- public ModelMap getCountOfLastAndThisMonth() {
- Calendar now = Calendar.getInstance();
- Integer year = now.get(Calendar.YEAR);
- Integer month = now.get(Calendar.MONTH) + 1;
- ModelMap result = new ModelMap();
- try {
- Long current = inquiryItemInfoDao.countByMonth(year, month);
- result.put("current", current);
- if (month == 1) {
- year = year - 1;
- month = 12;
- } else {
- month = month - 1;
- }
- Long last = inquiryItemInfoDao.countByMonth(year, month);
- result.put("last", last);
- result.put("success", "true");
- } catch (Exception e) {
- result.put("message", e.getMessage());
- result.put("success", false);
- e.printStackTrace();
- }
- return result;
- }
- /**
- * 查询单条bom询价单的报价情况
- *
- * @param inquiry 询价单
- * @return 询价单
- */
- @Override
- public PurcInquiry getQuotedDetail(PurcInquiry inquiry) {
- List<Long> itemIds = new ArrayList<>();
- for (PurcInquiryItem item : inquiry.getInquiryItems()) {
- itemIds.add(item.getId());
- }
- Long[] itemIdArray = new Long[inquiry.getInquiryItems().size()];
- Integer quotedAmount = publicInquiryItemDao.getQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
- Integer replaceQuotedAmount =publicInquiryItemDao.getReplaceQuotedAmountBySourceId(itemIds.toArray(itemIdArray));
- inquiry.setQuotedAmount(quotedAmount);
- inquiry.setReplaceQuotedAmount(replaceQuotedAmount);
- return inquiry;
- }
- /**
- * 将公共询价服务中心的公共询价转成ERP的对应的字段
- *
- * @param notUploadReply 未下载的供应商报价信息
- * @return
- * @author hejq
- * @date 2018-01-14 11:51
- */
- @Override
- public List<InquiryDetail> convertPublicInquiryReply(List<PublicInquiryItem> notUploadReply) {
- List<InquiryDetail> details = new ArrayList<InquiryDetail>();
- if (!CollectionUtils.isEmpty(notUploadReply)) {
- for (PublicInquiryItem item : notUploadReply) {
- details.add(new InquiryDetail(item));
- }
- }
- return details;
- }
- /**
- * 下载完成后更新公共询价服务中心询价单明细的下载状态
- *
- * @param idArray 询价单明细id
- * @author hejq
- * @date 2018-01-14 12:12
- */
- @Override
- public void onReplyUploadSuccess(String[] idArray) {
- List<PublicInquiryItem> items = new ArrayList<>();
- for (String id : idArray) {
- PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
- if (item != null) {
- item.setBackStatus((short) Status.DOWNLOADED.value());
- item.setErpstatus(Constant.YES);
- items.add(item);
- }
- }
- if (!CollectionUtils.isEmpty(items)) {
- publicInquiryItemDao.save(items);
- }
- }
- /**
- * 下载完成后更新公共询价服务中心询价单明细的下载状态
- *
- * @param idArray 询价单明细id
- * @author hejq
- * @date 2018-01-14 12:12
- */
- @Override
- public void onReplyDownLoadSuccess(String[] idArray) {
- List<PublicInquiryItem> items = new ArrayList<>();
- for (String id : idArray) {
- PublicInquiryItem item = publicInquiryItemDao.findOne(Long.parseLong(id));
- if (item != null) {
- item.setReplySendStatus((short) Status.DOWNLOADED.value());
- items.add(item);
- }
- }
- if (!CollectionUtils.isEmpty(items)) {
- publicInquiryItemDao.save(items);
- }
- }
- /**
- * ERP提交公共询价单之后,更新平台状态,让公共询价服务中心询价单不能进行报价操作
- *
- * @param details 询价信息
- * @author hejq
- * @date 2018-01-14 12:20
- */
- @Override
- public void updateInquiryStatus(List<InquiryDetail> details, Long enuu) {
- if (!CollectionUtils.isEmpty(details)) {
- for (InquiryDetail detail : details) {
- // 更新为过期状态,不能进行报价处理
- String sql = "update purc$puInquiryItems set id_overdue = 1 where id_id = " +
- "(select id_sourceid from public$inquiryItems where id_id = " + detail.getB2b_id_id() + ")";
- jdbcTemplate.update(sql);
- // 更新已转报价的询价单明细状态
- jdbcTemplate.update("update public$inquiryItems set id_checked = 1 where id_id = " + detail.getB2b_id_id());
- }
- }
- }
- /**
- * ERP对报价信息的采纳状态上传到公共询价服务中心
- *
- * @param decides 采纳信息
- */
- @Override
- public void onReplyDecide(List<InquiryDecide> decides, Long enuu) {
- List<PublicInquiryItem> publicInquiryItems = convertInquiryDecide(decides);
- if (!CollectionUtils.isEmpty(publicInquiryItems)) {
- for (PublicInquiryItem inquiryItem : publicInquiryItems) {
- publicInquiryItemDao.updateDecideStatusByID(inquiryItem.getAgreed(), inquiryItem.getDecideStatus(), inquiryItem.getId());
- notifyDecide(inquiryItem, PRODUCERAPP);
- }
- }
- }
- /**
- * 针对供应商,客户对报价结果发送消息通知
- *
- * @param item 询价明细
- * @param sourceApp 应用来源
- */
- @Override
- public void notifyDecide(PublicInquiryItem item, String sourceApp) {
- final String SMS_TYPE = "IM"; //只推送消息
- List<MessageModel> models = new ArrayList<MessageModel>();
- User u = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
- Enterprise e = enterpriseDao.findOne(item.getInquiry().getEnUU());
- Product product = new Product();
- if (null != item.getProductId()) {
- product = productDao.findOne(item.getProductId());
- }
- String cmpCode = product.getCmpCode() != null ? product.getCmpCode() : item.getCmpCode();
- String content = item.getAgreed() == 1 ? "【已采纳】" : "【未采纳】";
- content = content + "您关于“" + cmpCode + "”的报价";
- if (null != e) {
- content = e.getEnName() + content;
- } else if (null != u) {
- content = u.getUserName() + content;
- } else if (null == e && null == u) {
- content = "您关于“" + cmpCode + "”的报价已被";
- String result = item.getAgreed() == 1 ? "【已采纳】" : "【拒绝】";
- content = content + result;
- }
- MessageModel model = new MessageModel();
- model.setType(INQUIRY_DECIDE_TYPE);
- model.setProducerApp(sourceApp);
- model.setConsumerType(CUST_TYPE);
- model.setConsumerApp(CONSUMERAPP);
- model.setContent(content);
- model.setRemark(String.valueOf(item.getInquiry().getId()));
- model.setSourceId(item.getId());
- model.setReceiverEnuu(item.getVendUU());
- model.setReceiverUu(item.getVendUserUU());
- model.setSenderEnuu(item.getInquiry().getEnUU());
- if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
- model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
- } else {
- Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
- }
- model.setSmsType(SMS_TYPE);
- models.add(model);
- if (!CollectionUtils.isEmpty(models)) {
- sendMessage(models);
- }
- }
- /**
- * 将ERP的报价采纳信息转为公共询价服务中心需要的信息
- *
- * @param decides erp报价采纳信息
- * @author hejq
- * @date 2018-01-14 12:25
- */
- @Override
- public List<PublicInquiryItem> convertInquiryDecide(List<InquiryDecide> decides) {
- List<PublicInquiryItem> inquiryItems = new ArrayList<PublicInquiryItem>();
- if (!CollectionUtils.isEmpty(decides)) {
- for (InquiryDecide decide : decides) {
- PublicInquiryItem item = publicInquiryItemDao.findOne(decide.getB2b_id());
- if (null != item) {
- item.setAgreed(decide.getId_agreed());
- item.setDecideStatus((short) Status.NOT_UPLOAD.value());
- inquiryItems.add(item);
- }
- }
- }
- return inquiryItems;
- }
- /**
- * 买家ERP作废询价单后,修改公共询价服务中心里面的状态
- *
- * @param inquiries 询价信息
- * @param enuu 企业UU
- * @author hejq
- * @date 2018-01-14 12:28
- */
- @Override
- public void onReplyInvalid(List<Inquiry> inquiries, final Long enuu) {
- final List<PublicInquiryItem> newInquiryItems = new ArrayList<>();
- ThreadUtils.tasks(new IRunnable<Inquiry>() {
- @Override
- public void run(Inquiry inquiry) {
- List<PublicInquiry> purchaseInquiries = publicInquiryDao.findByEnUUAndCode(enuu, inquiry.getIn_code());
- if (!CollectionUtils.isEmpty(purchaseInquiries)) {
- PublicInquiry publicInquiry = purchaseInquiries.get(0);
- for (PublicInquiryItem item : publicInquiry.getInquiryItems()) {
- item.setStatus((short) Status.DISABLED.value());
- // 获取作废信息时,更新作废上传状态为 待上传
- item.setInvalidStatus((short) Status.NOT_UPLOAD.value());
- synchronized (newInquiryItems) {
- newInquiryItems.add(item);
- }
- }
- }
- }
- }, inquiries);
- }
- /**
- * 将公共询价列表转成需要报价的询价单,类型是公共询价
- *
- * @param id 询价明细id
- * @param enuu 报价企业UU
- * @param useruu 报价人uu
- * @return
- * @author hejq
- * @date 2018-01-14 14:46
- */
- @Override
- public ModelMap transtoInquiry(Long id, Long enuu, Long useruu) {
- ModelMap map = new ModelMap();
- PurcInquiryItem purcInquiryItem = purcInquiryItemDao.findOne(id);
- PurcInquiry purcInquiry = purcInquiryItem.getInquiry();
- // 先判断客户询价单是否存在这张单据
- PublicInquiry inquiry = publicInquiryDao.findBySourceIdAndSourceApp(purcInquiry.getId(), SOURCERAPP);
- if (null == inquiry) {// 新增
- PublicInquiry saleInquiry = new PublicInquiry();
- saleInquiry.setDate(new Date());
- saleInquiry.setCode(purcInquiry.getCode());
- saleInquiry.setEnUU(purcInquiry.getEnUU());
- saleInquiry.setRecorder(purcInquiry.getRecorder());
- saleInquiry.setRecorderUU(purcInquiry.getRecorderUU());
- saleInquiry.setAuditor(purcInquiry.getAuditor());
- saleInquiry.setSourceApp(SOURCERAPP);
- saleInquiry.setKind(INQUIRYKIND);
- saleInquiry.setSourceId(purcInquiry.getId());
- saleInquiry.setPriceType(purcInquiry.getPriceType());
- saleInquiry.setInvoice(purcInquiry.getInvoice());
- saleInquiry.setShip(purcInquiry.getShip());
- saleInquiry.setEndDate(purcInquiry.getEndDate());
- if (!CollectionUtils.isEmpty(purcInquiry.getAttachs())) {
- Set<com.uas.ps.inquiry.model.Attach> attachs = new HashSet<com.uas.ps.inquiry.model.Attach>();
- for (com.uas.ps.inquiry.model.Attach attach : purcInquiry.getAttachs()) {
- com.uas.ps.inquiry.model.Attach newAttach = new com.uas.ps.inquiry.model.Attach();
- newAttach.setDate(new Date());
- newAttach.setDescription(attach.getDescription());
- newAttach.setName(attach.getName());
- newAttach.setPath(attach.getPath());
- newAttach.setRelatedKey(attach.getRelatedKey());
- newAttach.setSize(attach.getSize());
- newAttach.setRelatedKey(attach.getRelatedKey());
- attachs.add(newAttach);
- }
- saleInquiry.setAttachs(attachs);
- }
- saleInquiry.setEnvironment(purcInquiry.getEnvironment());
- saleInquiry.setRemark(purcInquiry.getRemark());
- saleInquiry.setInquirytype(purcInquiry.getInquirytype());
- Set<PublicInquiryItem> items = new HashSet<PublicInquiryItem>();
- Short i = 0;
- if (null != purcInquiryItem) {
- PublicInquiryItem item = new PublicInquiryItem();
- Product product = productDao.findOne(purcInquiryItem.getProductId());
- item.setProductId(product.getId());
- item.setInquiry(saleInquiry);
- item.setNumber(i);
- item.setCurrency(purcInquiryItem.getCurrency());
- item.setFromDate(new Date());
- item.setToDate(purcInquiryItem.getToDate());
- item.setTaxrate(purcInquiryItem.getTaxrate());
- item.setRemark(purcInquiryItem.getRemark());
- item.setProductId(purcInquiryItem.getProductId());
- item.setStatus((short) Status.NOT_REPLY.value());
- item.setVendUU(enuu);
- item.setVendUserUU(useruu);
- item.setSource(purcInquiryItem.getSource());
- item.setCustLap(Constant.NO);
- item.setSendStatus((short) Status.NOT_UPLOAD.value());
- item.setSourceId(id);
- List<PublicInquiryReply> replies = new ArrayList<PublicInquiryReply>();
- PublicInquiryReply reply = new PublicInquiryReply();
- reply.setLapQty((double) 0);
- replies.add(reply);
- item.setReplies(replies);
- item.setNeedquantity(purcInquiryItem.getNeedquantity());
- item.setKind(INQUIRYKIND);
- item.setProdCode(purcInquiryItem.getProdCode());
- items.add(item);
- i++;
- }
- List<PublicInquiryItem> purcitems = publicInquiryItemDao.save(items);
- if (purcitems.get(0).getId() != null) {
- map.put("success", "转客户询价单成功");
- map.put("id", purcitems.get(0).getInquiry().getId());
- } else {
- map.put("success", "转客户询价单失败");
- }
- } else {// 插入
- PublicInquiryItem purcItem = publicInquiryItemDao.findByVendUUAndSourceId(enuu, id);
- if (purcItem != null) {
- map.put("info", "询价单已存在");
- map.put("inid", purcItem.getId());
- } else {
- if (!CollectionUtils.isEmpty(purcInquiry.getInquiryItems())) {
- if (null != purcInquiryItem) {
- // 涉及到级联存储及ERP转入单据的操作,用主表id存储存在问题,这里先用sql语句直接插入
- PublicInquiryItem item = new PublicInquiryItem();
- Product product = productDao.findOne(purcInquiryItem.getProductId());
- item.setProductId(product.getId());
- item.setNumber((short) (purcInquiry.getInquiryItems().size() + 1));
- item.setCurrency(purcInquiryItem.getCurrency());
- item.setFromDate(new Date());
- item.setToDate(purcInquiryItem.getToDate());
- item.setTaxrate(purcInquiryItem.getTaxrate());
- item.setRemark(purcInquiryItem.getRemark());
- item.setProductId(purcInquiryItem.getProductId());
- item.setVendUU(enuu);
- item.setVendUserUU(useruu);
- item.setSource(purcInquiryItem.getSource());
- item.setStatus((short) Status.NOT_REPLY.value());
- item.setCustLap(Constant.NO);
- item.setSendStatus((short) Status.NOT_UPLOAD.value());
- item.setSourceId(id);
- item.setProdCode(purcInquiryItem.getProdCode());
- item.setKind(INQUIRYKIND);
- item.setNeedquantity(purcInquiryItem.getNeedquantity());
- List<PublicInquiryReply> replies = new ArrayList<PublicInquiryReply>();
- List<PublicInquiryReply> purcReplies = new ArrayList<PublicInquiryReply>();
- PublicInquiryReply reply = new PublicInquiryReply();
- reply.setLapQty((double) 0);
- purcReplies.add(reply);
- purcReplies = publicInquiryReplyDao.save(purcReplies);
- replies.addAll(purcReplies);
- item.setReplies(replies);
- Long idid = jdbcTemplate.queryForObject("select public$inquiryitems_seq.nextval from dual", Long.class);
- try {
- jdbcTemplate.update(
- "insert into public$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
- + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
- idid, item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
- item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
- item.getSource(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
- item.getSourceId(), inquiry.getId(), inquiry.getKind());
- } catch (DataAccessException e) {
- map.put("info", "转客户询价单失败");
- }
- item = publicInquiryItemDao.findOne(idid);
- //回复清单更新
- if (replies.size() > 0) {
- for (PublicInquiryReply reply1 : replies) {
- jdbcTemplate.update("update public$inquiryreply set ir_idid = " + idid + "where ir_id = " + reply1.getId());
- }
- }
- if (item != null) {
- map.put("success", "转客户询价单成功");
- map.put("id", item.getInquiry().getId());
- } else {
- map.put("info", "转客户询价单失败");
- }
- }
- }
- }
- }
- return map;
- }
- /**
- * 通过分页参数和过滤条件查询报价信息
- *
- * @param info 分页参数
- * @param filter 过滤条件
- * @return
- * @author hejq
- * @date 2018-01-17 10:30
- */
- @Override
- public IPage<PublicInquiryItemInfo> findByPageInfo(final PageInfo info, final SearchFilter filter) {
- Sort sort = new Sort(Sort.Direction.DESC, "date");
- if (info.getOffset() == 0) {
- info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
- }
- info.setSort(sort);
- if (null != filter) {
- if (filter.getFromDate() != null) {
- info.expression(PredicateUtils.gte("offerTime", new Date(filter.getFromDate()), false));
- }
- if (filter.getEndDate() != null) {
- info.expression(PredicateUtils.lte("offerTime", new Date(filter.getEndDate()), false));
- }
- // 此处的 fromDelivery 作为发布时间过滤
- if (filter.getFromDelivery() != null) {
- info.expression(PredicateUtils.gte("date", new Date(filter.getFromDelivery()), false));
- }
- if (filter.getEndDelivery() != null) {
- info.expression(PredicateUtils.lte("date", new Date(filter.getEndDelivery()), false));
- }
- if (filter.getUserUU() != null) {
- info.expression(PredicateUtils.gte("vendUserUU", filter.getUserUU(), false));
- }
- if (StringUtils.hasText(filter.getKeyword())) {
- SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression inquiryEnName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression[] simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, inquiryEnName, spec};
- LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
- info.expression(logical);
- }
- }
- Page<PublicInquiryItemInfo> itemInfoPage = itemInfoDao.findAll(new Specification<PublicInquiryItemInfo>() {
- @Override
- public Predicate toPredicate(Root<PublicInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
- query.where(info.getPredicates(root, query, builder));
- return null;
- }
- }, info);
- if (!CollectionUtils.isEmpty(itemInfoPage.getContent())) {
- for (PublicInquiryItemInfo itemInfo : itemInfoPage) {
- String sql = "select at_path,at_name from attachs a left join public$inquiryitems$attach p on a.at_id = p.at_id " +
- "left join public$inquiryitems i on p.id_id = i.id_id where i.id_id = " + itemInfo.getId();
- List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
- if (!CollectionUtils.isEmpty(maps)) {
- Map<String, Object> map = maps.get(0);
- itemInfo.setAttachUrl(map.get("at_path").toString());
- itemInfo.setAttachName(map.get("at_name").toString());
- }
- if (null == itemInfo.getProductId()) {
- Product product = new Product();
- product.setTitle(itemInfo.getProdTitle());
- product.setCmpCode(itemInfo.getCmpCode());
- product.setBrand(itemInfo.getInbrand());
- product.setSpec(itemInfo.getSpec());
- product.setCode(itemInfo.getProdCode());
- if (null == product.getCode()) {
- product.setCode(itemInfo.getCmpCode());
- }
- itemInfo.setProduct(product);
- }
- }
- }
- return IPageUtils.covert(itemInfoPage);
- }
- @Override
- public Page<PublicInquiryItemInfo> findListByPageInfo(final PageInfo info, SearchFilter filter) {
- Sort sort = new Sort(Sort.Direction.DESC, "date");
- if (info.getOffset() == 0) {
- info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
- }
- info.setSort(sort);
- return itemInfoDao.findAll(new Specification<PublicInquiryItemInfo>() {
- @Override
- public Predicate toPredicate(Root<PublicInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
- query.where(info.getPredicates(root, query, builder));
- return null;
- }
- }, info);
- }
- /**
- * 查询公共询价列表信息
- *
- * @param info 分页参数
- * @param filter 过滤条件
- * @return
- */
- @Override
- public IPage<PurcInquiryItemInfo> findTodoByPageInfo(final PageInfo info, final SearchFilter filter) {
- Sort sort = new Sort(Sort.Direction.DESC, "id", "date");
- if (info.getOffset() == 0) {
- info.setOffset(info.getPageSize() * (info.getPageNumber() - 1));
- }
- info.setSort(sort);
- Long enUU = null;
- if (null != filter) {
- if (filter.getFromDate() != null) {
- info.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
- }
- if (filter.getEndDate() != null) {
- info.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
- }
- if (!CollectionUtils.isEmpty(filter.getDistribute())) {
- info.expression(PredicateUtils.in("inquiry.enUU", filter.getDistribute(), false));
- }
- // 将当前uu设置
- enUU = filter.getEnUU();
- if (!StringUtils.isEmpty(filter.getIsAll()) && filter.getIsAll() == 0 && !StringUtils.isEmpty(filter.getEnUU())) {
- info.expression(PredicateUtils.ne("inquiry.enUU", filter.getEnUU(), false));
- }
- if (!StringUtils.isEmpty(filter.getKeyword())) {
- SimpleExpression cmpCode = new SimpleExpression("cmpCode", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression brand = new SimpleExpression("inbrand", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression title = new SimpleExpression("prodTitle", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression spec = new SimpleExpression("spec", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression code = new SimpleExpression("inquiry.code", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression enName = new SimpleExpression("inquiry.enName", filter.getKeyword(), CriterionExpression.Operator.LIKE, true);
- SimpleExpression[] simpleExpressions = null;
- if (!StringUtils.isEmpty(filter.getIsLogin()) && filter.getIsLogin() == 0) {
- simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, spec};
- } else {
- simpleExpressions = new SimpleExpression[]{cmpCode, brand, code, title, enName, spec};
- }
- LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
- info.expression(logical);
- }
- }
- Page<PurcInquiryItemInfo> orders = inquiryItemInfoDao.findAll(new Specification<PurcInquiryItemInfo>() {
- @Override
- public Predicate toPredicate(Root<PurcInquiryItemInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
- query.where(info.getPredicates(root, query, builder));
- return null;
- }
- }, info);
- // 将当前企业报价信息设置进去
- if (null != filter && !StringUtils.isEmpty(enUU)) {
- for (PurcInquiryItemInfo itemInfo : orders) {
- PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(filter.getEnUU(), itemInfo.getId());
- List<InquiryEnRemind> inquiryEnRemind = inquiryEnRemindDao.findByItemIdAndVendUU(itemInfo.getId(), filter.getEnUU());
- if (!CollectionUtils.isEmpty(inquiryEnRemind) && inquiryEnRemind.size() > 0) {
- itemInfo.setAllotStatus((short) 1);
- } else {
- itemInfo.setAllotStatus((short) 0);
- }
- itemInfo.setQuotation(item);
- }
- }
- return covert(orders, enUU);
- }
- /**
- * 将数据库查询的数据进行封装处理
- *
- * @param orders 查询的数据信息
- * @return
- */
- private IPage<PurcInquiryItemInfo> covert(Page<PurcInquiryItemInfo> orders, Long enuu) {
- if (!CollectionUtils.isEmpty(orders.getContent()) && null != enuu) {
- for (PurcInquiryItemInfo itemInfo : orders.getContent()) {
- PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
- itemInfo.setQuoted(Constant.NO);
- if (null != item) {
- itemInfo.setAgreed(item.getAgreed());
- itemInfo.setQuteId(item.getId());
- itemInfo.setQuoted(Constant.YES);
- }
- if (null == itemInfo.getProductId()) {
- Product product = new Product();
- product.setTitle(itemInfo.getProdTitle());
- product.setCmpCode(itemInfo.getCmpCode());
- product.setBrand(itemInfo.getInbrand());
- product.setSpec(itemInfo.getSpec());
- product.setCode(itemInfo.getProdCode());
- if (null == product.getCode()) {
- product.setCode(itemInfo.getCmpCode());
- }
- itemInfo.setProduct(product);
- } else {
- Product product = productDao.findOne(itemInfo.getProductId());
- itemInfo.setProduct(product);
- }
- }
- }
- return IPageUtils.covert(orders);
- }
- /**
- * 根据传入条件封装查询条件
- *
- * @param pageInfo 分页参数
- * @param state 过滤条件
- * @return
- */
- @Override
- public PageInfo covert(PageInfo pageInfo, String state, Short overdue) {
- Sort sort = new Sort(Sort.Direction.DESC, "date");
- if (pageInfo.getOffset() == 0) {
- pageInfo.setOffset(pageInfo.getPageSize() * (pageInfo.getPageNumber() - 1));
- }
- pageInfo.setSort(sort);
- if (state.equals(OrderStatus.todo.name())) {
- pageInfo.filter("status", Status.NOT_REPLY.value());
- pageInfo.filter("overdue", Constant.NO);
- pageInfo.filter("invalid", Constant.NO);
- } else if (state.equals(OrderStatus.done.name())) {
- if (StringUtils.isEmpty(overdue) || !overdue.equals(Constant.YES)) {
- pageInfo.filter("overdue", Constant.NO);
- }
- pageInfo.filter("status", Status.REPLIED.value());
- pageInfo.filter("invalid", Constant.NO);
- pageInfo.filter("decideStatus", Status.UNAUDIT.value());
- } else if (state.equals(OrderStatus.end.name())) {
- pageInfo.filter("overdue", Constant.YES);
- pageInfo.filter("invalid", Constant.NO);
- } else if (state.equals(OrderStatus.invalid.name())) {
- SimpleExpression overdue1 = new SimpleExpression("overdue", Constant.NO, CriterionExpression.Operator.NE, true);
- SimpleExpression invalid = new SimpleExpression("invalid", Constant.NO, CriterionExpression.Operator.NE, true);
- SimpleExpression[] simpleExpressions = new SimpleExpression[]{invalid, overdue1};
- LogicalExpression logical = new LogicalExpression(simpleExpressions, CriterionExpression.Operator.OR);
- pageInfo.expression(logical);
- } else if (state.equals(OrderStatus.agreed.name())) {
- pageInfo.filter("agreed", Constant.YES);
- pageInfo.filter("status", Status.REPLIED.value());
- pageInfo.filter("invalid", Constant.NO);
- } else if (state.equals(OrderStatus.refused.name())) {
- pageInfo.filter("agreed", Constant.NO);
- pageInfo.filter("status", Status.REPLIED.value());
- pageInfo.filter("invalid", Constant.NO);
- }
- return pageInfo;
- }
- /**
- * 获取公共询价列表信息
- *
- * @param enuu 当前企业UU
- * @param size 大小
- * @return
- */
- @Override
- public List<InquiryMessage> getMessageList(Long enuu, Integer size) {
- if (size == 0 || size == null) {
- size = 10;
- }
- 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";
- if (enuu != null) {
- sql = sql + " and i.in_enuu <> " + enuu;
- }
- sql = sql + " and COALESCE(p.id_overdue, 0) <> 1 order by p.id_id desc) i limit " + size;
- List<PurcInquiryItem> items = jdbcTemplate.query(sql, new BeanPropertyRowMapper<PurcInquiryItem>(PurcInquiryItem.class));
- List<InquiryMessage> messages = new ArrayList<InquiryMessage>();
- if (!CollectionUtils.isEmpty(items)) {
- for (PurcInquiryItem item : items) {
- InquiryMessage message = new InquiryMessage();
- if (null != item.getEnuu()) {
- Enterprise enterprise = enterpriseDao.findOne(item.getEnuu());
- message.setEnName(enterprise.getEnName());
- }
- item = purcInquiryItemDao.findOne(item.getId());
- message.setPordName(item.getProdTitle());
- message.setInid(item.getId());
- PublicInquiryItem publicInquiryItem = publicInquiryItemDao.findByVendUUAndSourceId(enuu, item.getId());
- if (null != publicInquiryItem) {
- message.setQuteId(publicInquiryItem.getId());
- }
- message.setLastest(isToday(item.getDate()));
- messages.add(message);
- }
- }
- return messages;
- }
- /**
- * 判断该条单据是否当天单据
- *
- * @param date 询价时间
- * @return
- */
- private boolean isToday(Date date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- String inDate = sdf.format(date);
- String nowDate = sdf.format(new Date());
- return inDate.equals(nowDate);
- }
- /**
- * 商城-采购排行榜
- *
- * @return
- */
- @Override
- public List<Map<String, Object>> findCodeRankingList() {
- String name = "采购排行榜";
- InquiryData inquiryData = inquiryDataDao.findByName(name);
- List<Map<String, Object>> result = FlexJsonUtils.fromJsonArray(inquiryData.getData(), HashMap.class);
- return result;
- }
- /**
- * 通过明细id查询询价详情
- *
- * @param itemId 明细id
- * @return
- */
- @Override
- public PurcInquiryItemInfo findItemByItemId(Long itemId, Long enuu) {
- PurcInquiryItemInfo itemInfo = inquiryItemInfoDao.findOne(itemId);
- PublicInquiryItem item = publicInquiryItemDao.findByVendUUAndSourceId(enuu, itemInfo.getId());
- itemInfo.setQuoted(Constant.NO);
- if (null != item) {
- itemInfo.setAgreed(item.getAgreed());
- itemInfo.setQuteId(item.getId());
- itemInfo.setQuoted(Constant.YES);
- }
- if (null == itemInfo.getProductId()) {
- Product product = new Product();
- product.setTitle(itemInfo.getProdTitle());
- product.setCmpCode(itemInfo.getCmpCode());
- product.setBrand(itemInfo.getInbrand());
- product.setSpec(itemInfo.getSpec());
- itemInfo.setProduct(product);
- }
- return itemInfo;
- }
- /**
- * 通过id查询单个已转报价的信息
- *
- * @param id
- * @return
- */
- @Override
- public PublicInquiryItemInfo findOneInfo(Long id, Long enuu, Long useruu) {
- PublicInquiryItemInfo itemInfo = itemInfoDao.findOne(id);
- if (!itemInfo.getVendUU().equals(enuu)) {
- throw new IllegalOperatorException("访问受限");
- }
- return itemInfo;
- }
- /**
- * 将推荐信息转成UU互联需要的数据
- *
- * @param content 推荐信息
- * @return
- */
- @Override
- public List<PurcInquiryItemInfo> covertRemindToInquiry(List<InquiryRemind> content) {
- List<PurcInquiryItemInfo> infoList = new ArrayList<>();
- if (!CollectionUtils.isEmpty(content)) {
- for (InquiryRemind remind : content) {
- PurcInquiryItemInfo itemInfo = inquiryItemInfoDao.findOne(remind.getItemId());
- if (null != itemInfo) {
- Product product = new Product();
- product.setTitle(itemInfo.getProdTitle());
- product.setCmpCode(itemInfo.getCmpCode());
- product.setCode(itemInfo.getCmpCode());
- product.setBrand(itemInfo.getInbrand());
- product.setSpec(itemInfo.getSpec());
- itemInfo.setProduct(product);
- if (remind.getStatus().equals(Status.NOTALLOW.value())) {
- itemInfo.setAgreed(Constant.NO);
- } else if (remind.getStatus().equals(Status.ALLOW.value())) {
- itemInfo.setAgreed(Constant.YES);
- }
- itemInfo.setQuoted(Constant.NO);
- if (remind.getStatus().equals(Status.SUBMITTED.value())) {
- itemInfo.setQuoted(Constant.YES);
- itemInfo.setQuteId(remind.getNewId());
- }
- if (null != itemInfo.getRemainingTime() && itemInfo.getRemainingTime() <= 0) {
- itemInfo.setOverdue(Constant.YES);
- }
- infoList.add(itemInfo);
- }
- }
- }
- return infoList;
- }
- /**
- * 针对供应商,客户将拒绝理由发送信息给供应商
- *
- * @param item 询价明细
- * @param sourceApp 应用来源
- * @throws Exception
- */
- @Override
- public Page<MessageModel> refuseMessage(PublicInquiryItem item, String sourceApp) {
- if (null != item.getVendUU() && null != item.getVendUserUU()) {
- final String SMS_TYPE = "SM"; //发送信息
- List<MessageModel> models = new ArrayList<MessageModel>();
- String Buyer = item.getInquiry().getEnName() == null ? item.getInquiry().getRecorder() : item.getInquiry().getEnName();
- String cmpCode = item.getCmpCode();
- String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
- String content = "因" + item.getRefusereason() + "," + Buyer + "【未采纳】您关于“型号:" + cmp + "”的报价。期待与您的下次合作!";
- MessageModel model = new MessageModel();
- model.setType(INQUIRY_DECIDE_TYPE_MALL);
- model.setProducerApp(sourceApp);
- model.setConsumerType(CUST_TYPE);
- model.setConsumerApp(CONSUMERAPP);
- model.setContent(content);
- model.setRemark(String.valueOf(item.getInquiry().getId()));
- model.setSourceId(item.getId());
- model.setReceiverEnuu(item.getVendUU());
- model.setReceiverUu(item.getVendUserUU());
- model.setSenderEnuu(item.getInquiry().getEnUU());
- if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
- model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
- } else {
- Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
- }
- model.setSmsType(SMS_TYPE);
- models.add(model);
- if (!CollectionUtils.isEmpty(models)) {
- sendMessage(models);
- }
- }
- return null;
- }
- /**
- * 针对供应商,把客户采纳报价的消息发送给供应商
- *
- * @param item 询价明细
- * @param sourceApp 应用来源
- * @throws Exception
- */
- @Override
- public Page<MessageModel> adoptMessage(PublicInquiryItem item, String sourceApp) {
- if (null != item.getVendUU() && null != item.getVendUserUU()) {
- final String SMS_TYPE = "SM"; //发送信息
- List<MessageModel> models = new ArrayList<MessageModel>();
- String cmpCode = item.getCmpCode();
- String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
- String content = item.getInquiry().getEnName() + "【已采纳】您关于'型号:'" + cmp + "的报价,期待与您的合作!";
- MessageModel model = new MessageModel();
- model.setType(INQUIRY_DECIDE_TYPE_MALL);
- model.setProducerApp(sourceApp);
- model.setConsumerType(CUST_TYPE);
- model.setConsumerApp(CONSUMERAPP);
- model.setContent(content);
- model.setRemark(String.valueOf(item.getInquiry().getId()));
- model.setSourceId(item.getId());
- model.setReceiverEnuu(item.getVendUU());
- model.setReceiverUu(item.getVendUserUU());
- model.setSenderEnuu(item.getInquiry().getEnUU());
- if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
- model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
- } else {
- Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
- }
- model.setSmsType(SMS_TYPE);
- models.add(model);
- if (!CollectionUtils.isEmpty(models)) {
- sendMessage(models);
- }
- }
- return null;
- }
- @Override
- public Page<MessageModel> ReceiveMessage(PublicInquiryItem item, String sourceApp) {
- if (null != item.getVendUU() && null != item.getVendUserUU() && !StringUtils.isEmpty(item.getCmpCode())) {
- final String SMS_TYPE = "SM"; //发送信息
- List<MessageModel> models = new ArrayList<MessageModel>();
- String cmpCode = item.getCmpCode();
- String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
- String content = "您收到了" + item.getVendName() + "关于“型号:" + cmp + "“的报价,马上去看一看吧!";
- MessageModel model = new MessageModel();
- model.setType(INQUIRY_TYPE_MALL);
- model.setProducerApp(sourceApp);
- model.setConsumerType(CUST_TYPE);
- model.setConsumerApp(CONSUMERAPP);
- model.setContent(content);
- model.setRemark(String.valueOf(item.getInquiry().getId()));
- model.setSourceId(item.getId());
- model.setReceiverEnuu(item.getInquiry().getEnUU());
- model.setReceiverUu(item.getInquiry().getRecorderUU());
- model.setSenderEnuu(item.getVendUU());
- if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
- model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
- } else {
- Enterprise enterprise = enterpriseDao.findOne(item.getInquiry().getEnUU());
- model.setSenderUu(null != enterprise ? enterprise.getAdminUU() : 0L);
- }
- model.setSmsType(SMS_TYPE);
- models.add(model);
- if (!CollectionUtils.isEmpty(models)) {
- sendMessage(models);
- }
- }
- return null;
- }
- @Override
- public ModelMap getPurcInquiryItemCount() {
- ModelMap result = null;
- try {
- result = new ModelMap();
- Long count = inquiryItemInfoDao.count();
- result.put("count", count);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
- /**
- * 查询某年某月的询价明细总数
- *
- * @param month
- * @return
- */
- @Override
- public ModelMap countByMonth(Integer year, Integer month) {
- ModelMap result = null;
- try {
- result = new ModelMap();
- Long count = inquiryItemInfoDao.countByMonth(year, month);
- result.put("count", count);
- result.put("success", "true");
- } catch (Exception e) {
- result.put("message", e.getMessage());
- result.put("success", false);
- e.printStackTrace();
- }
- return result;
- }
- /**
- * 根据年份和月份字符串获取条数
- *
- * @param year 年份
- * @param months 月份字符串 6,7,8
- * @return map
- */
- @Override
- public List<ModelMap> countByMonths(Integer year, String months) {
- List<ModelMap> results = new ArrayList<>();
- try {
- String[] monthArray = months.split(",");
- for (String month : monthArray) {
- ModelMap result = new ModelMap();
- Long count = inquiryItemInfoDao.countByMonth(year, Integer.valueOf(month));
- result.put("count", count);
- result.put("success", "true");
- result.put("month", Integer.valueOf(month));
- results.add(result);
- }
- } catch (Exception e) {
- ModelMap result = new ModelMap();
- result.put("message", e.getMessage());
- result.put("success", false);
- results.add(result);
- e.printStackTrace();
- }
- return results;
- }
- /**
- * 根据enUU获取
- *
- * @param enUU 报价企业UU
- * @return
- */
- @Override
- public List<PublicInquiryItem> findDecideNotUploadReply(Long enUU) {
- String sql = "select id_id id, id_sourceid sourceId, id_agreed agreed, id_refusereason refusereason, id_status status from public$inquiryitems " +
- "where id_venduu = " + enUU + " and id_decidedownstatus = " + Status.NOT_UPLOAD.value() + " limit 200";
- return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(PublicInquiryItem.class));
- }
- /**
- * 已被采纳或拒绝的报价单明细 上传买方UAS之后,回调
- *
- * @param ids 报价单明细ids
- * @param enUU 报价企业UU
- * @return
- */
- @Override
- public ModelMap downloadDecideBack(List<Long> ids, Long enUU) {
- List<PublicInquiryItem> items = publicInquiryItemDao.findAll(ids);
- List<PublicInquiryItem> saveList = new ArrayList<>();
- ModelMap map = new ModelMap();
- for (PublicInquiryItem item : items) {
- if (enUU.equals(item.getVendUU())) {
- item.setDecideDownStatus((short) Status.DOWNLOADED.value());
- saveList.add(item);
- }
- }
- publicInquiryItemDao.save(saveList);
- map.put("success", true);
- return map;
- }
- @Override
- public ModelMap getInquiryCountData(String startDate, String endDate) {
- ModelMap result = new ModelMap();
- if (StringUtils.isEmpty(startDate) && StringUtils.isEmpty(endDate)) {
- throw new IllegalOperatorException("缺失参数");
- }
- // 查询询价数
- Integer inquiryAmount = purcInquiryItemDao.countInquiryAmount(startDate, endDate);
- result.put("inquiryAmount", inquiryAmount);
- // 查询询价用户数
- Integer inquiryUserAmount = purcInquiryItemDao.countInquiryUserAmount(startDate, endDate);
- result.put("inquiryUserAmount", inquiryUserAmount);
- // 查询报价用户
- Integer offerAmount = publicInquiryItemDao.countOfferAmount(startDate, endDate);
- result.put("offerAmount", offerAmount);
- // 查询报价数
- Integer offerEnAmount = publicInquiryItemDao.countOfferEnAmount(startDate, endDate);
- result.put("offerEnAmount", offerEnAmount);
- result.put("success", true);
- return result;
- }
- }
|