浏览代码

Merge remote-tracking branch 'origin/dev' into dev

dongbw 8 年之前
父节点
当前提交
fd4c8b8009

+ 21 - 0
src/main/java/com/uas/platform/b2b/controller/SaleOrderChangeController.java

@@ -419,6 +419,27 @@ public class SaleOrderChangeController {
 		return modelAndView;
 	}
 
+
+	/**
+	 * 导出 - 无需确认
+	 *
+	 * @param searchFilter
+	 * @return
+	 */
+	@RequestMapping(value = "/xls", params = RequestState.UNREAD, method = RequestMethod.GET)
+	public ModelAndView exportUnreadChanges(PageParams params, String searchFilter) {
+		params.setPage(1);
+		params.setCount(SearchConstants.TOP_NUM);
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.addObject("dateFormat", dateFormat);
+		modelAndView.addObject("state", "无需确认");
+		modelAndView.addObject("data",getUnReadPurchaseOrderChanges(params, searchFilter).getContent());
+		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/sale/saleChange", "客户采购变更单列表_无需确认"));
+		logger.log("客户采购变更单", "导出Excel列表", "导出无需确认Excel列表");
+		return modelAndView;
+	}
+
 	/**
 	 * 设置单据已读
 	 * @author wangmh

+ 36 - 10
src/main/java/com/uas/platform/b2b/erp/controller/InquiryController.java

@@ -1,6 +1,7 @@
 
 package com.uas.platform.b2b.erp.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
@@ -15,10 +16,7 @@ import com.uas.platform.core.util.ArrayUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
@@ -47,22 +45,37 @@ public class InquiryController {
 
 	private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
 
+    /**
+     * 将买家ERP的采购询价写到平台
+     *
+     * @param data
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @RequestMapping(method = RequestMethod.POST)
+    @ResponseBody
+    public void saveInquiries(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
+        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
+        logger.log("询价单", "上传询价单", inquiries.size());
+    }
+
 	/**
-	 * 将买家ERP的采购询价写到平台
+	 * 将买家ERP的采购询价写到平台(新方法)
 	 * 
 	 * @param data
 	 * @return
 	 * @throws UnsupportedEncodingException
 	 */
-	@RequestMapping(method = RequestMethod.POST)
+	@RequestMapping(value = "/v2", method = RequestMethod.POST)
 	@ResponseBody
-	public void saveInquiries(@RequestParam("data") String data) throws UnsupportedEncodingException {
-		String jsonStr = URLDecoder.decode(data, "UTF-8");
-		List<Inquiry> inquiries = FlexJsonUtils.fromJsonArray(jsonStr, Inquiry.class);
-		purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
+	public void saveInquiries(@RequestBody List<Inquiry> inquiries) {
+        purchaseInquiryService.save(inquiryService.convertInquiry(inquiries));
 		logger.log("询价单", "上传询价单", inquiries.size());
 	}
 
+
 	/**
 	 * 买家在收到报价信息后,点击提交按钮后,状态传至平台,至此平台的供应商不能再对这张询价单进行报价
 	 * 
@@ -157,4 +170,17 @@ public class InquiryController {
 		logger.log("询价单", "询价单附件上传", attachs.size());
 	}
 
+    /**
+     * 买家上传自动询价单明细,因为存在客户后来才注册平台的情况(重新上传)
+     *
+     * @param data
+     * @throws UnsupportedEncodingException
+     */
+	@RequestMapping(value = "/qutoInquiry", method = RequestMethod.POST)
+    @ResponseBody
+    public void uploadQutoInquiry(@RequestParam("data") String data) throws UnsupportedEncodingException {
+        String jsonStr = URLDecoder.decode(data, "UTF-8");
+        List<InquiryDetail> details = FlexJsonUtils.fromJsonArray(jsonStr, InquiryDetail.class);
+        inquiryService.save(details);
+    }
 }

+ 2 - 2
src/main/java/com/uas/platform/b2b/erp/controller/VendorRateController.java

@@ -124,7 +124,7 @@ public class VendorRateController {
 	 */
 	@RequestMapping(value = "/check", method = RequestMethod.POST)
 	@ResponseBody
-	public void checkSuccess(@RequestParam("data") String data) {
-		vendorService.updateStatus(data);
+	public void checkSuccess(@RequestParam("data") String data) throws UnsupportedEncodingException {
+		vendorService.updateStatus(URLDecoder.decode(data, "UTF-8"));
 	}
 }

+ 6 - 0
src/main/java/com/uas/platform/b2b/erp/service/InquiryService.java

@@ -51,4 +51,10 @@ public interface InquiryService {
 	 */
 	List<SaleQuotationItem> convertQuotationDecide(List<InquiryDecide> decides);
 
+    /**
+     * 保存自动询价单明细
+     *
+     * @param details
+     */
+    void save(List<InquiryDetail> details);
 }

+ 44 - 1
src/main/java/com/uas/platform/b2b/erp/service/impl/InquiryServiceImpl.java

@@ -5,14 +5,18 @@ import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.InquiryDecide;
 import com.uas.platform.b2b.erp.model.InquiryDetail;
+import com.uas.platform.b2b.erp.model.InquiryDetailDet;
 import com.uas.platform.b2b.erp.service.InquiryService;
+import com.uas.platform.b2b.erp.support.ErpBufferedLogger;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.temporary.model.PartnershipRecord;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Status;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -43,6 +47,11 @@ public class InquiryServiceImpl implements InquiryService {
 	@Autowired
 	private UserDao userDao;
 
+	@Autowired
+    private CommonDao commonDao;
+
+    private final static ErpBufferedLogger logger = BufferedLoggerManager.getLogger(ErpBufferedLogger.class);
+
 	@Override
 	public List<PurchaseInquiryItem> convertInquiry(List<Inquiry> inquiries) {
 		List<PurchaseInquiryItem> inquiryItems = new ArrayList<PurchaseInquiryItem>();
@@ -178,7 +187,8 @@ public class InquiryServiceImpl implements InquiryService {
 		return quotationItems;
 	}
 
-	/**
+
+    /**
 	 * 添加供应商资料
 	 * 
 	 * @param inquiryItem
@@ -216,4 +226,37 @@ public class InquiryServiceImpl implements InquiryService {
 		return null;
 	}
 
+    @Override
+    public void save(List<InquiryDetail> details) {
+        if(!CollectionUtils.isEmpty(details)) {
+            for(InquiryDetail detail : details) {
+                //先查询已经上传的询价单主表信息
+                Inquiry inquiry = getInquiry(detail.getIn_code(), detail.getId_id());
+                if(null != inquiry) {
+                    //查询对应平台的物料信息
+                    List<Product> products = productDao.findByEnUUAndCode(SystemSession.getUser().getEnterprise().getUu(), detail.getId_prodcode());
+                    if(products.size() > 0) {
+                        Long prodId = products.get(0).getId();
+                        Long id = commonDao.getJdbcTemplate().queryForLong("select purc$inquiryitems_seq.nextval from dual");
+                        String sql = "insert into purc$inquiryitems(id_id,id_sourceid,id_number,id_inid,id_useruu,id_prid,id_currency,id_taxrate,id_remark,id_venduu,id_venduseruu,id_fromdate,id_todate,id_status,id_sendstatus,id_erpdate,id_date,id_sourceapp) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+                        commonDao.getJdbcTemplate().update(sql, id,detail.getId_id(), detail.getId_detno(), inquiry.getIn_id(), SystemSession.getUser().getUserUU(), prodId, detail.getId_currency(), detail.getId_rate(), detail.getId_remark(), detail.getVe_uu(), detail.getVe_contactuu(), detail.getId_fromdate(), detail.getId_todate(), Status.NOT_REPLY.value(), Status.NOT_UPLOAD.value(), new Date(), inquiry.getIn_date(), "erp");
+                        //插入分段信息
+                        if(detail.getDets().size() > 0) {
+                            for(InquiryDetailDet det : detail.getDets()) {
+                                sql = "insert into purc$inquiryreply (ir_id,ir_lapqty,ir_idid) VALUES (purc$inquiryreply_seq.nextval, ?, ?)";
+                                commonDao.getJdbcTemplate().update(sql, det.getIdd_lapqty() == null ? 0 :  det.getIdd_lapqty(), id);
+                            }
+                        }
+                        logger.log("自动询价明细上传", "新增了自动询价的明细(" + id + ")", 1);
+                    }
+                }
+            }
+        }
+    }
+
+    private Inquiry getInquiry(String in_code, Long id) {
+	    String sql = "select in_id, in_date from purc$inquiry left join purc$inquiryitems on id_inid = in_id where in_code = '" + in_code + "' and in_enuu = " + SystemSession.getUser().getEnterprise().getUu() + " and purc$inquiryitems.id_sourceid <> " + id;
+        List<Inquiry> inquiries = commonDao.getJdbcTemplate().query(sql, new BeanPropertyRowMapper<Inquiry>(Inquiry.class));
+        return inquiries.size() > 0 ? inquiries.get(0) : null;
+    }
 }

+ 17 - 2
src/main/java/com/uas/platform/b2b/erp/service/impl/VendorServiceImpl.java

@@ -58,6 +58,21 @@ public class VendorServiceImpl implements VendorService{
      */
     final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
+    /**
+     * 电话号码匹配格式
+     */
+    static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
+
+    /**
+     * 匹配中文正则式
+     */
+    private static final String CHINESE_REGEXP = "^[\u4e00-\u9fa5]*$";
+
+    /**
+     * 匹配英文正则式
+     */
+    private static final String ENGLISH_REGEXP = "^[A-Za-z]+$";
+
     @Override
     public void saveInvitation(List<InquiryVendorInfo> infos) {
         if(!CollectionUtils.isEmpty(infos)) {
@@ -71,7 +86,7 @@ public class VendorServiceImpl implements VendorService{
                     List<ErpInviteRecord> inviteRecords = getRecord(record.getVendname());
                     if(inviteRecords.size() == 0) {
                         // 发送邮件或短信成功才进行保存
-                        if(record.getVenduseremail() != null) {
+                        if(record.getVenduseremail() != null && record.getVenduseremail().contains("@") && !record.getVenduseremail().matches(CHINESE_REGEXP)) {
                             Map<String, Object> model = new HashMap<String, Object>();
                             // 邮件信息
                             if (null != record.getVendusername()) {
@@ -92,7 +107,7 @@ public class VendorServiceImpl implements VendorService{
                                 e.printStackTrace();
                             }
                         }
-                        if(record.getVendusertel() != null) {
+                        if(record.getVendusertel() != null && record.getVendusertel().matches(TEL_REGEXP)) {
                             try {
                                 SmsMessage sms = new SmsMessage();
                                 List<Object> obj = new ArrayList<Object>();

+ 1 - 0
src/main/java/com/uas/platform/b2b/service/PurchaseInquiryService.java

@@ -267,4 +267,5 @@ public interface PurchaseInquiryService {
 	 * @return 单据id集合
 	 */
 	List<Long> getUnreadIds(String category);
+
 }

+ 4 - 1
src/main/java/com/uas/platform/b2b/service/impl/ComponentServiceImpl.java

@@ -47,7 +47,10 @@ public class ComponentServiceImpl implements ComponentService {
 	@Override
 	public List<Component> findByCode(String code) throws Exception {
         HttpUtil.Response res = HttpUtil.sendGetRequest(conf.getB2c() + "/api/product/component/byCode/" + code, null);
-		return JSONObject.parseArray(res.getResponseText(), Component.class);
+        if(res.getStatusCode() == 200) {
+            return JSONObject.parseArray(res.getResponseText(), Component.class);
+        }
+        return null;
 	}
 
 }