|
|
@@ -0,0 +1,173 @@
|
|
|
+package com.uas.platform.b2b.erp.service.impl;
|
|
|
+
|
|
|
+import com.uas.platform.b2b.core.util.ThreadTask;
|
|
|
+import com.uas.platform.b2b.core.util.ThreadUtils;
|
|
|
+import com.uas.platform.b2b.dao.*;
|
|
|
+import com.uas.platform.b2b.erp.model.BatchInProduct;
|
|
|
+import com.uas.platform.b2b.erp.model.BatchInquiry;
|
|
|
+import com.uas.platform.b2b.erp.model.UserAndEnterprise;
|
|
|
+import com.uas.platform.b2b.erp.service.PublicInquiryService;
|
|
|
+import com.uas.platform.b2b.model.Product;
|
|
|
+import com.uas.platform.b2b.model.PurcInquiry;
|
|
|
+import com.uas.platform.b2b.model.PurcInquiryItem;
|
|
|
+import com.uas.platform.b2b.support.SystemSession;
|
|
|
+import com.uas.platform.core.model.Constant;
|
|
|
+import com.uas.platform.core.model.Status;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
|
|
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by hejq on 2017-09-18.
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class PublicInquiryServiceImpl implements PublicInquiryService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurcInquiryDao inquiryDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProductDao productDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EnterpriseDao enterpriseDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurcInquiryItemDao purcInquiryItemDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CommonDao commonDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ protected JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<PurcInquiry> convertInquiry(List<BatchInquiry> inquiries) {
|
|
|
+ Long enuu = SystemSession.getUser().getEnterprise().getUu();
|
|
|
+ List<PurcInquiry> purcInquiries = new ArrayList<PurcInquiry>();
|
|
|
+ if(!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ for(BatchInquiry inquiry : inquiries) {
|
|
|
+ PurcInquiry old = inquiryDao.findByCode(inquiry.getBi_code());
|
|
|
+ //先判断是否已经存在,不存在才进行存储
|
|
|
+ if(null == old) {
|
|
|
+ PurcInquiry purcInquiry = inquiry.covert();
|
|
|
+ purcInquiry.setEnUU(enuu);
|
|
|
+ purcInquiry.setEnterprise(enterpriseDao.findEnterpriseInfoByUu(enuu));
|
|
|
+ purcInquiry.setShip(SystemSession.getUser().getEnterprise().getEnAddress());
|
|
|
+ Set<PurcInquiryItem> purcInquiryItems = new HashSet<PurcInquiryItem>();
|
|
|
+ if(!CollectionUtils.isEmpty(inquiry.getInProducts())) {
|
|
|
+ for(BatchInProduct batch : inquiry.getInProducts()) {
|
|
|
+ PurcInquiryItem item = new PurcInquiryItem();
|
|
|
+ item.setIsOpen(Constant.YES);
|
|
|
+ List<Product> products = productDao.findByEnUUAndCode(enuu, batch.getBip_prodcode());
|
|
|
+ item.setProduct(products.get(0));
|
|
|
+ item.setProductId(products.get(0).getId());
|
|
|
+ item.setRemark(batch.getBip_remark());
|
|
|
+ item.setNumber(batch.getBip_detno());
|
|
|
+ item.setFromDate(new Date());
|
|
|
+ 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());
|
|
|
+ if(item.getCurrency() == null) {
|
|
|
+ item.setCurrency("RMB");
|
|
|
+ }
|
|
|
+ purcInquiryItems.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ purcInquiry.setInquiryItems(purcInquiryItems);
|
|
|
+ purcInquiries.add(purcInquiry);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return purcInquiries;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void save(final List<PurcInquiry> inquiries, final Long enuu) {
|
|
|
+ // 采用并行处理
|
|
|
+ ThreadUtils.task(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ if(!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ for(PurcInquiry inquiry : inquiries) {
|
|
|
+ List<PurcInquiryItem> items = new ArrayList<PurcInquiryItem>();
|
|
|
+ if(!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
|
|
|
+ for(PurcInquiryItem item : inquiry.getInquiryItems()) {
|
|
|
+ item.setInquiry(inquiry);
|
|
|
+ items.add(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ inquiry.setInquiryItems(null);
|
|
|
+ try {
|
|
|
+ purcInquiryItemDao.save(items);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).task(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ //消息提醒
|
|
|
+ messageList(inquiries, enuu);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 消息提醒功能
|
|
|
+ *
|
|
|
+ * @param inquiries
|
|
|
+ */
|
|
|
+ private void messageList(final List<PurcInquiry> inquiries, final Long enuu) {
|
|
|
+ ThreadTask.getInstance().execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ if(!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ for(PurcInquiry inquiry : inquiries) {
|
|
|
+ if(!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
|
|
|
+ for(PurcInquiryItem item : inquiry.getInquiryItems()) {
|
|
|
+ //先取出企业uu
|
|
|
+ String sql = "select distinct pr_enuu from products p left join purc$vendors v on v.ve_vendenuu = p.pr_enuu where p.pr_spec = '" + item.getProduct().getSpec() + "' and v.ve_myenuu = " + enuu;
|
|
|
+ List<Object[]> enuus = commonDao.query(sql, Object[].class);
|
|
|
+ // enuus存在才进行人员选择
|
|
|
+ if(enuus.size() > 0) {
|
|
|
+ MapSqlParameterSource parameters = new MapSqlParameterSource("enuus", enuus);
|
|
|
+ // 不要直接拼SQL,防参数过多出错
|
|
|
+ NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
|
|
|
+ List<UserAndEnterprise> useruus = namedParameterJdbcTemplate.query(
|
|
|
+ "select user_uu useruu from sec$userrole u left join sec$roles r on u.role_id = r.role_id where rrole_desc = '业务员' and r.role_enuu in (:enuus)",
|
|
|
+ parameters, new BeanPropertyRowMapper<UserAndEnterprise>(UserAndEnterprise.class));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateStatus(List<BatchInquiry> inquiries) {
|
|
|
+ if(!CollectionUtils.isEmpty(inquiries)) {
|
|
|
+ for(BatchInquiry inquiry : inquiries) {
|
|
|
+ // 更新为过期状态,不能进行报价处理
|
|
|
+ String sql = "update purc$puinquiryitems set id_overdue = 1 where id_inid in ( select in_id from purc$puinquiry where in_enuu = "
|
|
|
+ + SystemSession.getUser().getEnterprise().getUu() + " and in_code = '" + inquiry.getBi_code() + "'";
|
|
|
+ commonDao.getJdbcTemplate().execute(sql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|