|
|
@@ -3,6 +3,8 @@ package com.uas.eis.service.Impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
+import com.uas.eis.config.HQConfig;
|
|
|
import com.uas.eis.core.support.TokenProperties;
|
|
|
import com.uas.eis.dao.BaseDao;
|
|
|
import com.uas.eis.dao.SqlRowList;
|
|
|
@@ -17,8 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author koul
|
|
|
@@ -34,6 +35,95 @@ public class ERPServiceImpl implements ERPService {
|
|
|
@Autowired
|
|
|
private BaseDao baseDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private HQConfig hqConfig;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ApiResult<String> syncHQPOPlan(String master, Integer id, String emCode, String caller) {
|
|
|
+ logger.info("syncHQPOPlan-Begin:master {} id {}",master,id);
|
|
|
+ hqConfig.setEv(getMasterEv(master));
|
|
|
+ // 执行查询
|
|
|
+ SqlRowList docMsg = baseDao.queryForRowSet(" select vp_statuscode from "+master+".vendPurExecplan where vp_id = "+id);
|
|
|
+ if(!docMsg.next()){
|
|
|
+ baseDao.execute("update "+master+".VENDPUREXECPLAN set vp_uploadstatus='上传失败',vp_uploaderr='上传单据不存在。' where vp_id = "+id);
|
|
|
+ logger.info("syncHQPOPlan-End:master {} id {} err {}",master,id,"上传单据不存在");
|
|
|
+ return ApiResponse.failRsp("101","上传单据不存在");
|
|
|
+ }
|
|
|
+ if(!docMsg.getGeneralString("vp_statuscode").equals("AUDITED")){
|
|
|
+ baseDao.execute("update "+master+".VENDPUREXECPLAN set vp_uploadstatus='上传失败',vp_uploaderr='请先审核再上传。' where vp_id = "+id);
|
|
|
+ logger.info("syncHQPOPlan-End:master {} id {} err {}",master,id,"请先审核再上传");
|
|
|
+ return ApiResponse.failRsp("101","请先审核再上传");
|
|
|
+ }
|
|
|
+ SqlRowList docList = baseDao.queryForRowSet(" select * from "+master+".VENDPUREXECPLANDETAIL where VD_VPID = "+id);
|
|
|
+ if(docList.next()){
|
|
|
+ HQPOReq hqVendPurExecplanReq = new HQPOReq();
|
|
|
+ hqVendPurExecplanReq.setVendor_code(docList.getGeneralString("vd_vendor_code"));
|
|
|
+ hqVendPurExecplanReq.setVendor_name(docList.getGeneralString("vd_vendor_name"));
|
|
|
+ List<HQPODadaList> podatalist = new ArrayList<>();
|
|
|
+ List<Map<String, Object>> dataList = docList.getResultList();
|
|
|
+ Map<String, List<Map<String, Object>>> POGroup = BaseUtil.groupsMap(dataList, new Object[] { "vd_po_number", "vd_po_line"});
|
|
|
+ List<Map<String, Object>> items;
|
|
|
+ for (Object m : POGroup.keySet()) {
|
|
|
+ items = POGroup.get(m);
|
|
|
+ Map<String, Object> poMap = items.get(0);
|
|
|
+ String hq_pn = poMap.get("vd_hq_pn").toString();
|
|
|
+ HQPODadaList hqpoDadaList = new HQPODadaList();
|
|
|
+ hqpoDadaList.setOu_name(poMap.get("vd_ou_name").toString());
|
|
|
+ hqpoDadaList.setPo_number(poMap.get("vd_po_number").toString());
|
|
|
+ hqpoDadaList.setPo_line(poMap.get("vd_po_line").toString());
|
|
|
+ hqpoDadaList.setHq_pn(hq_pn);
|
|
|
+ hqpoDadaList.setOrdered_quantity(Double.valueOf(poMap.get("vd_ordered_quantity").toString()));
|
|
|
+ hqpoDadaList.setRequire_date(DateUtil.format((Date)poMap.get("vd_require_date"),"yyyy/MM/dd"));
|
|
|
+ List<HQPOInfo> poInfos = new ArrayList<>();
|
|
|
+ for (Map<String, Object> poInfo : items){
|
|
|
+ HQPOInfo hqpoInfo = new HQPOInfo();
|
|
|
+ hqpoInfo.setOrigin_po_no(poInfo.get("vd_origin_po_no").toString());
|
|
|
+ hqpoInfo.setOrigin_po_line(poInfo.get("vd_origin_po_line").toString());
|
|
|
+ hqpoInfo.setManufacturer_pn(poInfo.get("vd_manufacturer_pn").toString());
|
|
|
+ hqpoInfo.setHq_pn(hq_pn);
|
|
|
+ hqpoInfo.setSupplier_order_date(DateUtil.format((Date)poInfo.get("vd_supplier_order_date"),"yyyy/MM/dd"));
|
|
|
+ hqpoInfo.setQuantity(Double.valueOf(poInfo.get("vd_quantity").toString()));
|
|
|
+ hqpoInfo.setEstimate_ship_date(DateUtil.format((Date)poInfo.get("vd_estimate_ship_date"),"yyyy/MM/dd"));
|
|
|
+ poInfos.add(hqpoInfo);
|
|
|
+ }
|
|
|
+ hqpoDadaList.setOrigin_manufacturer_po_info(poInfos);
|
|
|
+ podatalist.add(hqpoDadaList);
|
|
|
+ }
|
|
|
+ hqVendPurExecplanReq.setPodatalist(podatalist);
|
|
|
+ String jsonBody = JSON.toJSONString(hqVendPurExecplanReq,
|
|
|
+ SerializerFeature.WriteMapNullValue).replace("null","\"\"");
|
|
|
+ System.out.println("jsonBody: "+jsonBody);
|
|
|
+ try {
|
|
|
+ String url = hqConfig.getApiUrl();
|
|
|
+ String userName = hqConfig.getUserName();
|
|
|
+ String pwd = hqConfig.getPwd();
|
|
|
+ HttpUtil.Response response = HttpUtil.sendPostWithBasicAuthRequest(url,userName,pwd, jsonBody);
|
|
|
+ logger.info("syncHQPOPlan-End:master {} id {} tip {}",master,id,"("+response.getStatusCode()+")"+response.getResponseText());
|
|
|
+ HQPOResp hqpoResp = new ObjectMapper().readValue(response.getResponseText(), HQPOResp.class);
|
|
|
+ if(hqpoResp.getCode().equals("200")){
|
|
|
+ baseDao.execute("update "+master+".VENDPUREXECPLAN set vp_uploadtime=sysdate,vp_uploadstatus='上传成功',vp_uploaderr='' where vp_id = "+id);
|
|
|
+ return ApiResponse.successRsp("200","上传成功");
|
|
|
+ }else {
|
|
|
+ baseDao.execute("update "+master+".VENDPUREXECPLAN set vp_uploadstatus='上传失败',vp_uploaderr='"+hqpoResp.getCode()+": "+hqpoResp.getErrTip()+"' where vp_id = "+id);
|
|
|
+ return ApiResponse.failRsp(hqpoResp.getCode(),hqpoResp.getErrTip());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ baseDao.execute("update "+master+".VENDPUREXECPLAN set vp_uploadstatus='上传失败',vp_uploaderr='请先审核再上传。' where vp_id = "+id);
|
|
|
+ logger.info("syncHQPOPlan-End:master {} id {} err {}",master,id,"请先审核再上传");
|
|
|
+ return ApiResponse.failRsp("101","请先审核再上传");
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getMasterEv(String master){
|
|
|
+ return baseDao.queryForObject("select max(DISPLAY) from RZ_T.configs LEFT JOIN RZ_T.CONFIGPROPS ON CONFIGPROPS.CONFIG_ID = configs.ID AND configs.DATA = CONFIGPROPS.VALUE " +
|
|
|
+ "where configs.CODE='DocEv'",String.class);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public ApiResult<String> syncProduct(String data) {
|
|
|
Map<Object, Object> store = BaseUtil.parseFormStoreToMap(data);
|