|
|
@@ -15,10 +15,7 @@ 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.CriterionExpression;
|
|
|
-import com.uas.ps.inquiry.page.criteria.LogicalExpression;
|
|
|
-import com.uas.ps.inquiry.page.criteria.PredicateUtils;
|
|
|
-import com.uas.ps.inquiry.page.criteria.SimpleExpression;
|
|
|
+import com.uas.ps.inquiry.page.criteria.*;
|
|
|
import com.uas.ps.inquiry.service.PublicInquiryService;
|
|
|
import com.uas.ps.inquiry.support.InquiryBufferedLogger;
|
|
|
import com.uas.ps.inquiry.util.*;
|
|
|
@@ -82,6 +79,9 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
@Autowired
|
|
|
private InquiryRemindDao remindDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductReplaceDao productReplaceDao;
|
|
|
+
|
|
|
private static final Logger log = Logger.getLogger(Logger.class);
|
|
|
|
|
|
/**
|
|
|
@@ -207,9 +207,10 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
HttpUtil.Response res = HttpUtil.sendGetRequest(url, formData);
|
|
|
if (res.getStatusCode() == 200) {
|
|
|
List<ProductUsers> users = FlexJsonUtils.fromJsonArray(res.getResponseText(), ProductUsers.class);
|
|
|
- if (!CollectionUtils.isEmpty(users)) {
|
|
|
+ List<ProductReplace> productReplaces = getProductReplaceByEnUUAndCmpCode(item.getInquiry().getEnUU(), cmpCode, users);
|
|
|
+ if (!CollectionUtils.isEmpty(productReplaces)) {
|
|
|
List<MessageModel> models = new ArrayList<MessageModel>();
|
|
|
- for (ProductUsers user : users) {
|
|
|
+ for (ProductReplace user : productReplaces) {
|
|
|
User u = userDao.findOne(null != item.getInquiry().getRecorderUU() ? item.getInquiry().getRecorderUU() : 0L);
|
|
|
Enterprise e = enterpriseDao.findOne(item.getInquiry().getEnUU());
|
|
|
String cmp = cmpCode.length() > 10 ? cmpCode.substring(0, 10).concat("...") : cmpCode;
|
|
|
@@ -228,7 +229,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
model.setRemark(String.valueOf(item.getInquiry().getId()));
|
|
|
model.setSourceId(item.getId());
|
|
|
model.setReceiverEnuu(user.getEnuu());
|
|
|
- model.setReceiverUu(user.getUseruu());
|
|
|
+ model.setReceiverUu(user.getUserUU());
|
|
|
model.setSenderEnuu(item.getInquiry().getEnUU());
|
|
|
if (null != item.getUserUU() || null != item.getInquiry().getRecorderUU()) {
|
|
|
model.setSenderUu(item.getUserUU() != null ? item.getUserUU() : item.getInquiry().getRecorderUU());
|
|
|
@@ -240,7 +241,7 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
model.setMailTemplate(MAIL_TEMP_ID);
|
|
|
model.setSmTemplate(SMS_TEMP_ID);
|
|
|
models.add(model);
|
|
|
- logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人", "关联询价单明细【" + item.getId() + "】", user.getUseruu(), user.getEnuu(), InquirySource.ERP.name());
|
|
|
+ logger.log("公共询价产生消息", "根据物料型号【" + cmpCode + "】查询接收人", "关联询价单明细【" + item.getId() + "】", user.getUserUU(), user.getEnuu(), InquirySource.ERP.name());
|
|
|
}
|
|
|
if (!CollectionUtils.isEmpty(models)) {
|
|
|
sendMessage(models);
|
|
|
@@ -259,6 +260,45 @@ public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据企业UU和物料原厂型号cmpCode获取替代物料信息
|
|
|
+ *
|
|
|
+ * @param enUU 企业UU
|
|
|
+ * @param cmpCode 物料原厂型号
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<ProductReplace> getProductReplaceByEnUUAndCmpCode(final Long enUU, 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("enuu", enUU, 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(productUsers)) {
|
|
|
+ for (ProductUsers user:productUsers) {
|
|
|
+ ProductReplace productReplace = new ProductReplace();
|
|
|
+ productReplace.setEnuu(user.getEnuu());
|
|
|
+ productReplace.setUserUU(user.getUseruu());
|
|
|
+ productReplacesList.add(productReplace);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 去掉同一企业下同一个人相同原厂型号的不同物料的记录,保证一个原厂型号只发一条
|
|
|
+ List<ProductReplace> returnList = new ArrayList<>();
|
|
|
+ Set<String> enUUAndUserUUs = new HashSet<>();
|
|
|
+ for (ProductReplace productReplace : productReplacesList) {
|
|
|
+ String receiverInfo = productReplace.getEnuu().toString() + productReplace.getUserUU().toString();
|
|
|
+ if (!enUUAndUserUUs.contains(receiverInfo)) {
|
|
|
+ returnList.add(productReplace);
|
|
|
+ enUUAndUserUUs.add(receiverInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return returnList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通过查询的个人物料相关联的信息,自动生成推荐的报价的数据
|
|
|
*
|