|
|
@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.uas.erp.schedular.b2b.domain.QuotationDownDecide;
|
|
|
import com.uas.erp.schedular.database.RestJdbcTemplate;
|
|
|
+import com.uas.erp.schedular.database.SqlTemplate;
|
|
|
+import com.uas.erp.schedular.publicinquiry.domain.InquiryEnRemind;
|
|
|
import com.uas.erp.schedular.publicinquiry.domain.PublicInquiryItem;
|
|
|
import com.uas.erp.schedular.publicinquiry.domain.PublicInquiryReply;
|
|
|
import com.uas.erp.schedular.task.support.TaskMapping;
|
|
|
@@ -246,181 +248,56 @@ public class EnterInquiryTask extends AbstractTask{
|
|
|
|
|
|
@TaskMapping(title = "商机下载", fixedDelay = 60000)
|
|
|
public void downloadInquiry(){
|
|
|
- long total = 0L;
|
|
|
- Map<String, String> params = new HashMap<String, String>();
|
|
|
Map<String, Object> enterpriseMap = jdbcTemplate.queryForMap("select en_uu,en_adminuu from enterprise");
|
|
|
- params.put("enuu", String.valueOf(enterpriseMap.get("EN_UU")));
|
|
|
- params.put("useruu",String.valueOf(enterpriseMap.get("EN_ADMINUU")));
|
|
|
- params.put("pageNumber","1");
|
|
|
- params.put("pageSize","30");
|
|
|
- params.put("isAll","1");
|
|
|
- try {
|
|
|
- String url = "";
|
|
|
- if("10041559".equals(enterpriseMap.get("EN_UU"))){ //胜芳账套特殊处理
|
|
|
- url = "http://218.17.158.219:24000/inquiry/sale/enremind";
|
|
|
- }else{
|
|
|
- url = "https://api-inquiry.usoftmall.com/inquiry/sale/enremind";
|
|
|
- }
|
|
|
- String res = sendGet(url, params);
|
|
|
- //是否存在商机库
|
|
|
- Map<String, Object> map = jdbcTemplate.queryForMap("SELECT COUNT(*) COUNT,BD_NAME FROM BUSINESSDATABASE WHERE BD_NAME ='平台商机库' AND BD_PROP='管理员分配' AND ROWNUM=1 GROUP BY BD_NAME");
|
|
|
- if(map == null){
|
|
|
- Map<String, Object> adminMap = jdbcTemplate.queryForMap("SELECT EM_CODE,EN_ADMINNAME FROM ENTERPRISE LEFT JOIN EMPLOYEE ON EN_ADMINUU=EM_UU");
|
|
|
- jdbcTemplate.execute("INSERT INTO BUSINESSDATABASE(bd_id,bd_name,bd_prop,bd_admin,bd_admincode,bd_overtime) VALUES(BUSINESSDATABASE_SEQ.NEXTVAL,'平台商机库','管理员分配','"+adminMap.get("EN_ADMINNAME")+"','"+adminMap.get("EM_CODE")+"',7)");
|
|
|
- map = new HashMap<String, Object>();
|
|
|
- map.put("BD_NAME","平台商机库");
|
|
|
- }else if(map != null && "0".equals(map.get("COUNT"))){
|
|
|
- Map<String, Object> adminMap = jdbcTemplate.queryForMap("SELECT EM_CODE,EN_ADMINNAME FROM ENTERPRISE LEFT JOIN EMPLOYEE ON EN_ADMINUU=EM_UU");
|
|
|
- jdbcTemplate.execute("INSERT INTO BUSINESSDATABASE(bd_id,bd_name,bd_prop,bd_admin,bd_admincode,bd_overtime) VALUES(BUSINESSDATABASE_SEQ.NEXTVAL,'平台商机库','管理员分配','"+adminMap.get("EN_ADMINNAME")+"','"+adminMap.get("EM_CODE")+"',7)");
|
|
|
- map.put("BD_NAME","平台商机库");
|
|
|
- }
|
|
|
- String sql = "select count(bs_name) count,bs_name from businesschancestage where bs_detno=1 group by bs_name";
|
|
|
- Map<String, Object> bsNameMap= jdbcTemplate.queryForMap(sql);
|
|
|
- if(bsNameMap == null){
|
|
|
- String code = jdbcTemplate.generateCode("businesschancestage",2);
|
|
|
- jdbcTemplate.execute("insert into businesschancestage(bs_id,bs_code,bs_name,bs_color,bs_detno,bs_days) values(businesschancestage_seq.nextval,'"+code+"','样品报价','55CC59',1,7)");
|
|
|
- bsNameMap = new HashMap<String, Object>();
|
|
|
- bsNameMap.put("BS_NAME","样品报价");
|
|
|
- }
|
|
|
- JSONObject json = JSONObject.parseObject(res);
|
|
|
- total = json.getInteger("totalElements");
|
|
|
- if(total > 30){
|
|
|
- double length = Math.ceil(total / 30.0);
|
|
|
- JSONArray jsonArray = json.getJSONArray("content");
|
|
|
- executeDownload(jsonArray,String.valueOf(bsNameMap.get("BS_NAME")), String.valueOf(map.get("BD_NAME")));
|
|
|
- for(int i = 2; i <= length; i++){
|
|
|
- params.put("pageNumber",String.valueOf(i));
|
|
|
- res = sendGet(url, params);
|
|
|
- json = JSONObject.parseObject(res);
|
|
|
- jsonArray = json.getJSONArray("content");
|
|
|
- try {
|
|
|
- executeDownload(jsonArray, String.valueOf(bsNameMap.get("BS_NAME")), String.valueOf(map.get("BD_NAME")));
|
|
|
- }catch (Exception e){
|
|
|
- for(int j = 0; j < jsonArray.size(); j++){
|
|
|
- try {
|
|
|
- JSONArray array = new JSONArray();
|
|
|
- array.add(jsonArray.getJSONObject(j));
|
|
|
- executeDownload(array, String.valueOf(bsNameMap.get("BS_NAME")), String.valueOf(map.get("BD_NAME")));
|
|
|
- }catch (Exception e1){
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- JSONArray jsonArray = json.getJSONArray("content");
|
|
|
- executeDownload(jsonArray,String.valueOf(bsNameMap.get("BS_NAME")), String.valueOf(map.get("BD_NAME")));
|
|
|
+ //是否存在商机库
|
|
|
+ Map<String, Object> map = jdbcTemplate.queryForMap("SELECT COUNT(*) COUNT,BD_NAME FROM BUSINESSDATABASE WHERE BD_NAME ='平台商机库' AND BD_PROP='管理员分配' AND ROWNUM=1 GROUP BY BD_NAME");
|
|
|
+ if(map == null){
|
|
|
+ Map<String, Object> adminMap = jdbcTemplate.queryForMap("SELECT EM_CODE,EN_ADMINNAME FROM ENTERPRISE LEFT JOIN EMPLOYEE ON EN_ADMINUU=EM_UU");
|
|
|
+ jdbcTemplate.execute("INSERT INTO BUSINESSDATABASE(bd_id,bd_name,bd_prop,bd_admin,bd_admincode,bd_overtime) VALUES(BUSINESSDATABASE_SEQ.NEXTVAL,'平台商机库','管理员分配','"+adminMap.get("EN_ADMINNAME")+"','"+adminMap.get("EM_CODE")+"',7)");
|
|
|
+ map = new HashMap<String, Object>();
|
|
|
+ map.put("BD_NAME","平台商机库");
|
|
|
+ }else if(map != null && "0".equals(map.get("COUNT"))){
|
|
|
+ Map<String, Object> adminMap = jdbcTemplate.queryForMap("SELECT EM_CODE,EN_ADMINNAME FROM ENTERPRISE LEFT JOIN EMPLOYEE ON EN_ADMINUU=EM_UU");
|
|
|
+ jdbcTemplate.execute("INSERT INTO BUSINESSDATABASE(bd_id,bd_name,bd_prop,bd_admin,bd_admincode,bd_overtime) VALUES(BUSINESSDATABASE_SEQ.NEXTVAL,'平台商机库','管理员分配','"+adminMap.get("EN_ADMINNAME")+"','"+adminMap.get("EM_CODE")+"',7)");
|
|
|
+ map.put("BD_NAME","平台商机库");
|
|
|
+ }
|
|
|
+ String sql = "select count(bs_name) count,bs_name from businesschancestage where bs_detno=1 group by bs_name";
|
|
|
+ Map<String, Object> bsNameMap= jdbcTemplate.queryForMap(sql);
|
|
|
+ if(bsNameMap == null){
|
|
|
+ String code = jdbcTemplate.generateCode("businesschancestage",2);
|
|
|
+ jdbcTemplate.execute("insert into businesschancestage(bs_id,bs_code,bs_name,bs_color,bs_detno,bs_days) values(businesschancestage_seq.nextval,'"+code+"','样品报价','55CC59',1,7)");
|
|
|
+ bsNameMap = new HashMap<String, Object>();
|
|
|
+ bsNameMap.put("BS_NAME","样品报价");
|
|
|
+ }
|
|
|
+ try{
|
|
|
+ //从平台获取企业商机,保存到本地
|
|
|
+ List<InquiryEnRemind> downs = getForList("/inquiry/public/enremind?vendUU="+enterpriseMap.get("EN_UU"), InquiryEnRemind.class);
|
|
|
+ if(!CollectionUtils.isEmpty(downs)){
|
|
|
+ ContextHolder.setDataSize(downs.size());
|
|
|
+ saveInquiryEnRemind(downs);
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
+ // 回执
|
|
|
+ onReplySuccess(downs, enterpriseMap.get("EN_UU"));
|
|
|
+ }catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- private void executeDownload(JSONArray array, String bsName, String bdName){
|
|
|
- int size = array.size();
|
|
|
- StringBuilder sb = new StringBuilder("declare v_count number; begin ");
|
|
|
- for(int i = 0; i < size; i++){
|
|
|
- JSONObject json = array.getJSONObject(i);
|
|
|
- sb.append("select count(*) into v_count from businesschance where bc_fromid = '"+json.getString("itemId")+"';");
|
|
|
- sb.append("if v_count = 0 then ");
|
|
|
- String code = jdbcTemplate.generateCode("businesschance",2);
|
|
|
- String needQty ="";
|
|
|
- String inbrand = "";
|
|
|
- String cmpCode = "";
|
|
|
- cmpCode = json.getString("cmpCode");
|
|
|
- inbrand = json.getString("inbrand");
|
|
|
- needQty = json.getString("needQty");
|
|
|
- if(cmpCode == null || "null".equals(cmpCode)){
|
|
|
- cmpCode = "";
|
|
|
- }else{
|
|
|
- cmpCode = cmpCode.replaceAll("&","'||'&'||'");
|
|
|
- }
|
|
|
- if(needQty == null || "null".equals(needQty)){
|
|
|
- needQty = "";
|
|
|
- }
|
|
|
- if(inbrand == null || "null".equals(inbrand)){
|
|
|
- inbrand = "";
|
|
|
- }
|
|
|
- //商机名称
|
|
|
- String prodTitle = json.getString("prodTitle");
|
|
|
- if(prodTitle != null && !"null".equals(prodTitle) && !"".equals(prodTitle)){
|
|
|
- prodTitle = prodTitle.replaceAll("'","''").replaceAll("&","'||'&'||'");
|
|
|
- }
|
|
|
- String description = json.getString("prodTitle")+" "+ json.getString("cmpCode")+" ";
|
|
|
- if(json.getString("spec") != null && !"null".equals(json.getString("spec")) && !"".equals(json.getString("spec"))){
|
|
|
- description += json.getString("spec") +" ";
|
|
|
- }
|
|
|
- description += inbrand;
|
|
|
- if(needQty != null && !"null".equals(needQty) && !"".equals(needQty)){
|
|
|
- description += ",需求:"+needQty;
|
|
|
- }
|
|
|
- //客户编号、客户uu
|
|
|
- String cuUU = json.getString("enUU");
|
|
|
- String custCode = jdbcTemplate.getString("select cu_code from customer where cu_uu=?", cuUU);
|
|
|
- if(custCode == null || "null".equals(custCode)){
|
|
|
- custCode = "";
|
|
|
- }
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTime(new Date(json.getLong("date")));
|
|
|
- c.add(Calendar.MONTH, 2);
|
|
|
- String date = "to_date('" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(c.getTime())+"','YYYY-MM-DD HH24:MI:SS')";
|
|
|
- String endDate = "to_date('"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(json.getLong("endDate")))+"','YYYY-MM-DD HH24:MI:SS')";
|
|
|
- sb.append("insert into businesschance(bc_id,bc_fromid,bc_code,bc_description,bc_from,bc_nichehouse,bc_currentprocess,bc_date7,bc_status,bc_statuscode,bc_recorder,bc_recorddate,"
|
|
|
- + "bc_custname,bc_contact,bc_tel,bc_desc7,bc_desc9,bc_desc10,bc_desc11,bc_desc13,bc_date13,bc_desc14,bc_custcode) values(businesschance_seq.nextval,"+json.getInteger("itemId")+",'"+code+"','"+description.replaceAll("'","''").replaceAll("&","'||'&'||'")+"','平台商机','"+bdName+"','"+bsName+"',"+date+","
|
|
|
- + "'已审核','AUDITED','自动转入',sysdate,'"+json.getString("enName")+"','"+json.getString("userName")+"','"+json.getString("userTel")+"','"+prodTitle+"','"+json.getString("spec")+"',"
|
|
|
- + "'"+cmpCode+"','"+json.getString("inbrand")+"','"+needQty+"',"+endDate+",'"+cuUU+"','"+custCode+"');");
|
|
|
- sb.append(" end if;");
|
|
|
- }
|
|
|
- sb.append(" end;");
|
|
|
- jdbcTemplate.execute(sb.toString());
|
|
|
+ private void onReplySuccess(List<InquiryEnRemind> downs, Object en_uu) {
|
|
|
+ String idStr = CollectionUtil.getKeyString(downs);
|
|
|
+ MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
|
|
|
+ map.set("vendUU", String.valueOf(en_uu));
|
|
|
+ map.set("ids", idStr);
|
|
|
+ post("/inquiry/public/enremind/back" + en_uu, map);
|
|
|
}
|
|
|
|
|
|
- private static String sendGet(String url, Map<String, String> params) {
|
|
|
- String result = "";
|
|
|
- BufferedReader in = null;
|
|
|
- StringBuilder sb = new StringBuilder();
|
|
|
- try {
|
|
|
- Set<String> keys = params.keySet();
|
|
|
- for(String key : keys){
|
|
|
- sb.append("&" + key + "=" + params.get(key));
|
|
|
- }
|
|
|
- String urlNameString = url + "?" + sb.substring(1,sb.length());
|
|
|
- URL realUrl = new URL(urlNameString);
|
|
|
- // 打开和URL之间的连接
|
|
|
- URLConnection connection = realUrl.openConnection();
|
|
|
- // 设置通用的请求属性
|
|
|
- connection.setRequestProperty("accept", "*/*");
|
|
|
- connection.setRequestProperty("connection", "Keep-Alive");
|
|
|
- connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
|
|
- // 建立实际的连接
|
|
|
- connection.connect();
|
|
|
- // 获取所有响应头字段
|
|
|
- Map<String, List<String>> map = connection.getHeaderFields();
|
|
|
- // 遍历所有的响应头字段
|
|
|
- /*for (String key : map.keySet()) {
|
|
|
- System.out.println(key + "--->" + map.get(key));
|
|
|
- }*/
|
|
|
- // 定义 BufferedReader输入流来读取URL的响应
|
|
|
- in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
|
|
|
- String line;
|
|
|
- while ((line = in.readLine()) != null) {
|
|
|
- result += line;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- System.out.println("发送GET请求出现异常!" + e);
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- // 使用finally块来关闭输入流
|
|
|
- finally {
|
|
|
- try {
|
|
|
- if (in != null) {
|
|
|
- in.close();
|
|
|
- }
|
|
|
- } catch (Exception e2) {
|
|
|
- e2.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- return result;
|
|
|
+ private void saveInquiryEnRemind(List<InquiryEnRemind> downs) throws Exception {
|
|
|
+ Map<String, Object> model = new HashMap<String, Object>();
|
|
|
+ model.put("inquiryEnRemind", downs);
|
|
|
+ String sql = SqlTemplate.fromXmlFile("database/template/inquiryEnRemind.xml", model);
|
|
|
+ //System.out.println(sql);
|
|
|
+ jdbcTemplate.execute(sql);
|
|
|
}
|
|
|
|
|
|
}
|