Browse Source

销售订单同步 单条销售订单拉取

liuchaohui 2 years ago
parent
commit
8eb5f47094

+ 16 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/orderData/controller/SyOrderDataController.java

@@ -9,6 +9,11 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
+import org.apache.poi.ss.formula.functions.T;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
@@ -97,9 +102,17 @@ public class SyOrderDataController extends JeecgController<SyOrderData, ISyOrder
 	 @AutoLog(value = "订单主表-同步")
 	 @ApiOperation(value="订单主表-同步", notes="订单主表-同步")
 	 @PostMapping(value = "/tongBu")
-	 public Result<?> tongBu() {
-		 syOrderDataService.doQuerySyOrder();
-		 return Result.OK("同步成功!");
+	 public Result<T> tongBu(@RequestBody String parameter) {
+	 	Result<T> result =new Result<>();
+		 JSONObject object = JSONObject.parseObject(parameter);
+		 String plancode = object.get("parameter").toString();
+		 if(plancode==null || plancode.equals("") || plancode.equals(" ")) {
+			 result.setMessage("单条同步不允许单据号为空!!!");
+			 return result;
+		 }
+		 //java.net.URLDecoder.decode(parameter,"UTF-8")
+		 result=syOrderDataService.doQuerySyOrder(plancode);
+		 return result;
 	 }
 
 	/**

+ 7 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/orderData/mapper/xml/SyOrderDataMapper.xml

@@ -89,7 +89,13 @@
     </delete>
     
     <select id="queryIDBYOrderNumber" resultType="String">
-        select id from sy_order_data where order_number=#{orderNumber}
+        select  case sum(quantity)-sum(surplus_num)
+				when 0 then sm.id else '已被参照' end as id
+        from sy_order_data sm
+        join sy_order_data_item sd
+        on sm.id=sd.sy_order_data_id
+        where sm.order_number=#{orderNumber}
+        GROUP BY order_number
     </select>
 
 </mapper>

+ 3 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/orderData/service/ISyOrderDataService.java

@@ -2,6 +2,8 @@ package org.jeecg.modules.documents.orderData.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.poi.ss.formula.functions.T;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.documents.orderData.entity.SyOrderData;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -12,7 +14,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface ISyOrderDataService extends IService<SyOrderData> {
-     void doQuerySyOrder();
+     Result<T> doQuerySyOrder(String parameter);
 
      IPage<SyOrderData> queryList(SyOrderData sy, Page<SyOrderData> page);
 

+ 492 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/orderData/service/impl/SyOrderDataServiceImpl.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.poi.ss.formula.functions.T;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.documents.orderData.entity.SyOrderData;
 import org.jeecg.modules.documents.orderData.entity.SyOrderDataItem;
 import org.jeecg.modules.documents.orderData.entity.SyOrderDataVO;
@@ -39,7 +41,7 @@ import java.util.Map;
  * @Version: V1.0
  */
 @Service
-//@Transactional
+//@Transactional //事务导致多数据源失效
 public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrderData> implements ISyOrderDataService, ApplicationContextAware {
 
     private static IDxpDataPlanService dxpDataPlanService;
@@ -53,8 +55,235 @@ public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrd
     private static ISenYuDataSourceThree senYuDataSourceThree;
 
     @Override
-    public void doQuerySyOrder() {
-        //QuerySyOrder();
+    public Result<T> doQuerySyOrder(String parameter) {
+        Result<T> result =new Result<>();
+        //得到系统时间
+        Date day=new Date();
+        //定义集合
+        List<Map<String, Object>> sumlist = new ArrayList<>();
+
+        try {
+            //查找单证是否有当前销售订单 如果有 默认客户进行当前订单的更新操作
+            //更新数据,如为更新数据 删除老数据重新添加新数据
+            String id = syOrderDataMapper.queryIDBYOrderNumber(parameter);
+            if(id!=null){
+                if(id.equals("已被参照")){
+                    result.setMessage("销售订单已被参照!!!");
+                    return result;
+                }
+                syOrderDataMapper.deleteByID(id);
+                syOrderDataItemService.deleteByID(id);
+            }
+
+            //查询IP及账套信息、时间戳
+            QueryWrapper<DxpDataPlan> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("code", "senYu_syOrder");
+            Page<DxpDataPlan> page = new Page<DxpDataPlan>(1, 100);
+            IPage<DxpDataPlan> pageList = dxpDataPlanService.page(page, queryWrapper);
+            List<DxpDataPlan> resultList = pageList.getRecords();
+            String pkorg = resultList.get(0).getPkOrg();
+            String pkorgSplit[] = pkorg.split(",");
+
+            //查销售订单主表数据
+            for (String str : pkorgSplit) {
+                String pkorgStr = str;
+                String pkorgValue[] = pkorgStr.split(":");
+                //得到对应的账套
+                String account = pkorgValue[1];
+
+                String sql = "SELECT " +
+                        "s.ID AS id," +
+                        "s.cSOCode AS orderNumber," +
+                        "s.dDate AS orderDate," +
+                        "s.cBusType AS businessTypeValue," +
+                        "s.cSTCode AS salesTypeValue," +
+                        "t.cSTName AS salesTypeText," +
+                        "cc.cCusAbbName AS customerAbbreviation," +
+                        "cc.cCusName AS customerName," +
+                        "s.iExchRate AS exchangeRate," +
+                        "de.cDepName AS salesDepartment," +
+                        "pe.cPersonName  AS salesman," +
+                        "s.cexch_name AS currencyText," +
+                        "s.cdefine2 as brandSide," +
+                        "s.cdefine1 as thirdParty," +
+                        "s.cdefine3 as customerOrderNumber," +
+                        "s.cdefine11 as endCustomer," +
+                        "s.cCusCode as customerCode," +
+                        "s.fbookratio AS depositRatio," +
+                        "s.iMoney AS deposit," +
+                        "s.cMemo AS orderRemarks," +
+                        "s.cDefine14 AS orderChangeDescription," +
+                        "s.cDefine12 AS garmentFactory," +
+                        "v.cVenCode AS garmentFactoryCode,"+
+                        "s.cDefine5 as garmentNmb," +
+                        "s.cMemo AS memo," +
+                        "f.chdefine4 AS priceRemarks," +
+                        "f.chdefine1 AS collaborativeRoute," +
+                        "y.cexch_code AS currencyValue," +
+                        "p.cPayName AS termOfPayment," +account+
+                        " AS account " +
+                        " FROM" +
+                        " SO_SOMain s" +
+                        " LEFT JOIN SO_SOMain_extradefine f ON s.ID = f.ID" +
+                        " LEFT JOIN SaleType t ON s.cSTCode = t.cSTCode" +
+                        " LEFT JOIN foreigncurrency y ON s.cexch_name = y.cexch_name" +
+                        " LEFT JOIN PayCondition p ON s.cPayCode = p.cPayCode" +
+                        " LEFT JOIN Department de ON s.cDepCode = de.cDepCode" +
+                        " LEFT JOIN Customer cc ON s.cCusCode = cc.cCusCode" +
+                        " LEFT JOIN Person  pe ON s.cPersonCode = pe.cPersonCode" +
+                        " left join Vendor v on s.cDefine12=v.cVenName" +
+                        " where s.iStatus = 1  AND (s.cdefine15 is null or  s.cdefine15 !='1') "+
+                        " and s.cSOCode = '"+parameter+"' order by s.dDate desc ";
+
+                List<Map<String, Object>> list = new ArrayList<>();
+                if(pkorgValue[0].equals("one")){
+                    list = senYuDataSourceOne.queryForList(sql);
+                }else if(pkorgValue[0].equals("two")){
+                    list = senYuDataSourceTwo.queryForList(sql);
+                }else if(pkorgValue[0].equals("three")){
+                    list = senYuDataSourceThree.queryForList(sql);
+                }
+
+                for(Map<String, Object> map:list){
+                    sumlist.add(map);
+                }
+            }
+            //没查到销售订单主表数据 返回结果并告知客户
+            if(sumlist.size()<1){
+               result.setMessage("没找到对应销售订单!!!");
+               return result;
+            }
+            List<JSONObject> jian = JsonChangeUtils.toJSONObject(sumlist);
+            for (JSONObject jsonObject:jian) {
+                SyOrderData sy = JSONObject.toJavaObject(jsonObject,SyOrderData.class);
+                String ID = sy.getId();
+                String sql = "SELECT " +
+                        "s.AutoID AS id," +
+                        "s.ID AS syOrderDataId," +
+                        "s.cDefine22 AS itemNumber," +
+                        "s.dPreDate AS preDeliveryDate," +
+                        "s.dPreMoDate AS preCompletionDate," +
+                        "s.cDefine32 AS packId," +
+                        "s.cDefine28 AS smallPo," +
+                        "s.cDefine29 AS distributionPoint," +
+                        "s.cInvCode AS inventoryCode," +
+                        "c.cInvCcode AS inventoryCcode," +
+                        "c.cInvName AS inventoryName," +
+                        "s.cFree1 AS colour," +
+                        "s.cFree2 AS size," +
+                        "s.cFree3 AS codingRules," +
+                        "s.cFree4 AS guangpeiGateWidth," +
+                        "s.cFree6 AS weight,"+
+                        "s.cDefine35 AS boxNumber," +
+                        "s.iQuantity AS quantity," +
+                        "s.iQuantity AS surplusNum," +
+                        "s.iTaxUnitPrice AS unitPriceIncludingTax," +
+                        "s.iSum AS totalPriceAndTax," +
+                        "s.iTaxRate AS taxRate," +
+                        "s.cMemo AS remarks ," +
+                        "d.cComUnitName as masterMetering," +
+                        "c.cInvStd as specificationAndModel," +
+                        "case when c.cInvDefine14 is null then 1 else cInvDefine14 end as numberOfSets,"+
+                        "s.cSCloser as bankClosedBy," +
+                        "be.cbdefine2 as ymoney"+
+                        " FROM" +
+                        " SO_SODetails s" +
+                        " left join Inventory c on c.cInvCode=s.cInvCode" +
+                        " left join ComputationUnit d on d.cComunitCode=c.cComUnitCode"+
+                        " left join SO_SODetails_extradefine be on be.iSOsID=s.iSOsID"+
+                        " where s.ID = "+ID;
+                List<Map<String, Object>> listSon = new ArrayList<>();
+                if(sy.getAccount().equals("901")){
+                    listSon = senYuDataSourceOne.queryForList(sql);
+                }else if(sy.getAccount().equals("902")){
+                    listSon = senYuDataSourceTwo.queryForList(sql);
+                }else if(sy.getAccount().equals("903")){
+                    listSon = senYuDataSourceThree.queryForList(sql);
+                }
+                List<JSONObject> jianSon = JsonChangeUtils.toJSONObject(listSon);
+                int size = 0;
+                for (JSONObject Object:jianSon) {
+                    SyOrderDataItem sy2 = JSONObject.toJavaObject(Object, SyOrderDataItem.class);
+                    sy2.setId(sy.getAccount()+sy2.getId());
+                    sy2.setSyOrderDataId(sy.getAccount()+sy2.getSyOrderDataId());
+                    SyOrderDataVO ordervo = queryOrder(sy2.getId());
+                    if(ordervo != null){
+                        sy2.setOmpoAccount(ordervo.getOmpoAccount());
+                        sy2.setOmpoCode(ordervo.getOmpoCode());
+                        sy2.setOmpoId(ordervo.getOmpoId());
+                        sy2.setDArriveDate(ordervo.getDArriveDate());
+                        sy2.setOmpoIdItem(ordervo.getOmpoIdItem());
+                        sy2.setITaxPrice(ordervo.getITaxPrice());
+                        if(sy2.getGuangpeiGateWidth()==null||sy2.getGuangpeiGateWidth().equals("/")||sy2.getGuangpeiGateWidth().equals("")){
+                            sy2.setGuangpeiGateWidth(ordervo.getGuangpeiGateWidth());
+                        }
+                        sy2.setSupplier(ordervo.getSupplier());
+                        if(sy2.getInventoryCcode().substring(0,2).equals("09")){
+                            sy2.setGarmentFactory(ordervo.getSupplier());
+                        }else if(sy.getCustomerAbbreviation().equals("森语集团") || sy.getCustomerAbbreviation().equals("宁波森语") ) {
+                            sy2.setGarmentFactory(queryGSupplier(sy.getOrderNumber(),sy.getAccount(),sy.getCustomerCode()));
+                        }else {
+                            sy2.setGarmentFactory(sy.getGarmentFactory());
+                        }
+                        sy2.setSupplierCode(ordervo.getSupplierCode());
+                    }else {
+                        continue;
+                    }
+                    if(sy2.getOmpoIdItem()==null || sy2.getOmpoIdItem().equals("")){
+                        continue;
+                    }
+                    if(sy2.getOmpoIdItem()!=null && sy.getAccount()!=null){
+                        List<String> rsup = queryRSupplier(sy2.getOmpoIdItem(),sy.getAccount());
+                        if(rsup.size()>0){
+                            sy2.setRSupplierCode(rsup.get(0));
+                            sy2.setRSupplier(rsup.get(1));
+                        }
+                    }
+
+                    syOrderDataItemService.save(sy2);
+                    size++;
+                }
+                //添加单证id 原数据账套+原数据id
+                String syId = sy.getId();
+                sy.setId(sy.getAccount()+sy.getId());
+
+                if(size<=0){
+                    //回写不拉取的数据状态 0
+                    String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '0' WHERE id='"+syId+"'";
+                    if(sy.getAccount().equals("901")){
+                        senYuDataSourceOne.update(blackWrite);
+                    }else if(sy.getAccount().equals("902")){
+                        senYuDataSourceTwo.update(blackWrite);
+                    }else if(sy.getAccount().equals("903")){
+                        senYuDataSourceThree.update(blackWrite);
+                    }
+                    //进入下一个主表的添加,这里是单个订单同步 所以是返回同步失败且通知原因
+                    //continue;
+                    result.setMessage("同步失败,销售订单不符合同步需求!!!");
+                    return result;
+                }
+                //添加主表数据进入数据库
+                save(sy);
+                //回写拉取的数据状态 1
+                String blackWrite = "UPDATE SO_SOMain SET cdefine15 = '1' WHERE id='"+syId+"'";
+                if(sy.getAccount().equals("901")){
+                    senYuDataSourceOne.update(blackWrite);
+                }else if(sy.getAccount().equals("902")){
+                    senYuDataSourceTwo.update(blackWrite);
+                }else if(sy.getAccount().equals("903")){
+                    senYuDataSourceThree.update(blackWrite);
+                }
+            }
+            dxpDataPlanService.updateLastTime(day,"senYu_syOrder");
+        } catch (Exception e) {
+            System.out.print("jian:更新失败");
+            e.printStackTrace();
+            log.error(e.getMessage());
+            result.setMessage("同步失败!请联系管理员!!!");
+            return result;
+        }
+        result.setMessage("同步成功!!!");
+        return result;
     }
 
     @Override
@@ -72,6 +301,266 @@ public class SyOrderDataServiceImpl extends ServiceImpl<SyOrderDataMapper, SyOrd
         return syOrderDataMapper.queryIDBYOrderNumber(orderNumber);
     }
 
+    /*
+     * 查询成衣工厂  (面辅料供应商编码 面辅料供应商名称)
+     * */
+    public String queryGSupplier(String soCode,String zhangtao,String customerCode){
+        /*
+        查询账套用于判断
+         */
+        QueryWrapper<DxpDataPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("code", "senYu_syOrder");
+        List<DxpDataPlan> pageList = dxpDataPlanService.list(queryWrapper);
+        String pkorg = pageList.get(0).getPkOrg();
+        String pkorgSplit[] = pkorg.split(",");
+        //定义账套集合
+        String account[] = new String[3];
+        int index = 0;
+        //得到对应的账套
+        for (String str : pkorgSplit) {
+            String pkorgValue[] = str.split(":");
+            account[index] = pkorgValue[1];
+            index++;
+        }
+
+        String resql = " select max(ss.cSOCode) as soCode from  PO_Podetails t  " +
+                "  left join PO_Pomain m  on m.poid=t.poid " +
+                "  left join SO_SODetails s on s.isosid=t.iorderdid " +
+                " left join SO_SOMain ss on ss.id=s.id " +
+                "  where m.cpoid = '"+soCode+"'";
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        if(zhangtao.equals(account[2]) && customerCode.equals("T020001")){
+            list = senYuDataSourceThree.queryForList(resql);
+            List<JSONObject> jSONObject = JsonChangeUtils.toJSONObject(list);
+            if(jSONObject.size()>0){
+                for (JSONObject json:jSONObject) {
+                    soCode = json.get("soCode").toString();
+                    zhangtao = account[0];
+                }
+            }
+        }
+
+        String sql = "SELECT max(v.cVenName) as cVenName from OM_MOMain m right join OM_MODetails t on m.moid = t.moid " +
+                "  left join Vendor v on m.cVenCode=v.cVenCode " +
+                "  where t.isosid=( select max(s.isosid) from  PO_Podetails t  " +
+                "  left join PO_Pomain m  on m.poid=t.poid " +
+                "  left join SO_SODetails s on s.isosid=t.iorderdid " +
+                "  where m.cpoid = '"+soCode+"') ";
+
+        if(zhangtao.equals(account[0])){
+            list = senYuDataSourceOne.queryForList(sql);
+        }
+        List<JSONObject> jSONObject = JsonChangeUtils.toJSONObject(list);
+        String result = "";
+        if(jSONObject.size()>0){
+            for (JSONObject json:jSONObject) {
+                result=json.get("cVenName").toString();
+            }
+        }
+        return result;
+    }
+
+    /*
+     * 查询染厂供应商编码 供应商名称
+     * */
+    public List<String>  queryRSupplier(String id,String zhangtao){
+        /*
+        查询账套用于判断
+         */
+        QueryWrapper<DxpDataPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("code", "senYu_syOrder");
+        List<DxpDataPlan> pageList = dxpDataPlanService.list(queryWrapper);
+        String pkorg = pageList.get(0).getPkOrg();
+        String pkorgSplit[] = pkorg.split(",");
+        //定义账套集合
+        String account[] = new String[3];
+        int index = 0;
+        //得到对应的账套
+        for (String str : pkorgSplit) {
+            String pkorgValue[] = str.split(":");
+            account[index] = pkorgValue[1];
+            index++;
+        }
+
+        String sql = "select om.cVenCode as cVenCode,v.cVenName as cVenName From OM_MODetails  o " +
+                "join ( " +
+                " select ommos.isosid,ommom.cInvCode from  " +
+                " OM_MODetails ommos  " +
+                "left join OM_MOMaterials ommom on ommom.MoDetailsID=ommos.MODetailsID  " +
+                "where ommos.MODetailsID = '"+id+"' " +
+                ")tab on tab.isosid=o.isosid and tab.cInvCode =o.cInvCode  " +
+                "left join OM_MOMain om on om.moid=o.moid " +
+                "LEFT JOIN Vendor v ON om.cVenCode=v.cVenCode " +
+                "union " +
+                "select om.cVenCode as cVenCode,v.cVenName as cVenName From PO_Podetails  o " +
+                "join ( " +
+                " select ommos.isosid,ommom.cInvCode from  " +
+                " OM_MODetails ommos  " +
+                "left join OM_MOMaterials ommom on ommom.MoDetailsID=ommos.MODetailsID  " +
+                "where ommos.MODetailsID = '"+id+"' " +
+                ")tab on tab.isosid=o.isosid and tab.cInvCode =o.cInvCode  " +
+                "left join PO_Pomain om on om.POID=o.POID " +
+                "LEFT JOIN Vendor v ON om.cVenCode=v.cVenCode";
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        if(zhangtao.equals(account[0])){
+            list = senYuDataSourceOne.queryForList(sql);
+        }else if(zhangtao.equals(account[1])){
+            list = senYuDataSourceTwo.queryForList(sql);
+        }else if(zhangtao.equals(account[2])){
+            list = senYuDataSourceThree.queryForList(sql);
+        }
+        List<JSONObject> jSONObject = JsonChangeUtils.toJSONObject(list);
+        List<String> result = new ArrayList<>();
+        if(jSONObject.size()>0){
+            for (JSONObject json:jSONObject) {
+                result.add(json.get("cVenCode").toString());
+                result.add(json.get("cVenName").toString());
+            }
+        }
+        return result;
+    }
+
+
+    /*
+   查询最终供应商数据
+    */
+    public SyOrderDataVO queryOrder(String orderItemID) throws Exception{
+        SyOrderDataVO syOrderDataVO = new SyOrderDataVO();
+        syOrderDataVO.setId(orderItemID);
+        List<Map<String, Object>> listSon = new ArrayList<>();
+        SyOrderDataVO result = new SyOrderDataVO();
+        /*
+        查询账套用于判断
+         */
+        QueryWrapper<DxpDataPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("code", "senYu_syOrder");
+        List<DxpDataPlan> pageList = dxpDataPlanService.list(queryWrapper);
+        String pkorg = pageList.get(0).getPkOrg();
+        String pkorgSplit[] = pkorg.split(",");
+        //定义账套集合
+        String account[] = new String[4];
+        int index = 0;
+        //得到对应的账套
+        for (String str : pkorgSplit) {
+            String pkorgValue[] = str.split(":");
+            account[index] = pkorgValue[1];
+            index++;
+        }
+        /*
+        对应账套取对应的值
+         */
+        if(account[0].equals(syOrderDataVO.getAccount())){
+            String sql = "  SELECT" +
+                    " ompoCode,ompoIdItem,ompoId,supplierCode,v.cVenAbbName as supplier,iTaxPrice,dArriveDate,guangpeiGateWidth," +account[0]+" as ompoAccount"+
+                    " FROM" +
+                    " SO_SODetails s" +
+                    " left join (" +
+                    " SELECT om.cCode as ompoCode,om.MOID as ompoId,od.MODetailsID as ompoIdItem," +
+                    " od.cDefine23  as guangpeiGateWidth,od.dArriveDate,"+
+                    " om.cVenCode as supplierCode,od.iTaxPrice,od.cInvCode,od.isosid" +
+                    " FROM OM_MOMain om" +
+                    " LEFT JOIN  OM_MODetails  od on om.MOID =od.MOID" +
+                    " where om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')" +
+                    ") p on s.isosid  = p.isosid and s.cInvCode = p.cInvCode" +
+                    " left join Vendor v on p.supplierCode=v.cVenCode" +
+                    " where s.autoid ="+syOrderDataVO.getId();
+            listSon = senYuDataSourceOne.queryForList(sql);
+            List<JSONObject> jian = JsonChangeUtils.toJSONObject(listSon);
+            for (JSONObject jsonObject:jian) {
+                result = JSONObject.toJavaObject(jsonObject, SyOrderDataVO.class);
+            }
+            return result;
+
+        }else if(account[1].equals(syOrderDataVO.getAccount())){
+            String sql = "SELECT" +
+                    " ompoCode,ompoIdItem,ompoId,supplierCode,v.cVenAbbName as supplier,iTaxPrice,guangpeiGateWidth,dArriveDate,s.iRowNo as poIrowno," +account[1]+" as ompoAccount"+
+                    " FROM" +
+                    " SO_SODetails s" +
+                    " left join (" +
+                    " SELECT pm.cPOID as ompoCode,pm.POID as ompoId,pd.id as ompoIdItem,pd.irowno as poIrowno,"+
+                    " pd.cDefine23  as guangpeiGateWidth,pd.dArriveDate,"+
+                    " pm.cVenCode as supplierCode,pd.iTaxPrice,pd.cInvCode,pd.iorderdid as isosid" +
+                    " FROM PO_Pomain pm" +
+                    " LEFT JOIN  PO_Podetails pd on pm.POID=pd.POID" +
+                    " where pm.iverifystateex = 2 and (pm.cCloser is null or pm.cCloser='asuser')" +
+                    ") p on s.isosid  = p.isosid and s.cInvCode = p.cInvCode" +
+                    " left join Vendor v on p.supplierCode=v.cVenCode"+
+                    " where s.autoid ="+syOrderDataVO.getId();
+            List<Map<String, Object>> list = senYuDataSourceTwo.queryForList(sql);
+            List<JSONObject> jian = JsonChangeUtils.toJSONObject(list);
+            for (JSONObject jsonObject:jian) {
+                syOrderDataVO = JSONObject.toJavaObject(jsonObject, SyOrderDataVO.class);
+            }
+            if(syOrderDataVO.getSupplier()==null){
+                return syOrderDataVO;
+            }
+            if(!syOrderDataVO.getSupplier().equals("马菲羊")){
+                return syOrderDataVO;
+            }
+            String sql2 = "SELECT" +
+                    " ompoCode,ompoIdItem,ompoId,supplierCode,v.cVenAbbName as supplier,iTaxPrice,dArriveDate,guangpeiGateWidth," +account[2]+" as ompoAccount"+
+                    " FROM" +
+                    "  so_somain ss " +
+                    "  join SO_SODetails s on s.id=ss.id" +
+                    " left join (" +
+                    " SELECT pm.cPOID as ompoCode,pm.POID as ompoId,pd.id as ompoIdItem," +
+                    " pd.cDefine23  as guangpeiGateWidth,pd.dArriveDate,"+
+                    " pm.cVenCode as supplierCode,pd.iTaxPrice,pd.cInvCode,pd.iorderdid as isosid" +
+                    " FROM PO_Pomain pm" +
+                    " LEFT JOIN  PO_Podetails pd on pm.POID=pd.POID" +
+                    " where pm.iverifystateex = 2 and (pm.cCloser is null or pm.cCloser='asuser')" +
+                    " UNION" +
+                    " SELECT om.cCode as ompoCode,om.MOID as ompoId,od.MODetailsID as ompoIdItem," +
+                    " od.cDefine23  as guangpeiGateWidth,od.dArriveDate,"+
+                    " om.cVenCode as supplierCode,od.iTaxPrice,od.cInvCode,od.isosid" +
+                    " FROM OM_MOMain om" +
+                    " LEFT JOIN  OM_MODetails  od on om.MOID =od.MOID" +
+                    " where om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')" +
+                    " ) p on s.isosid  = p.isosid and s.cInvCode = p.cInvCode" +
+                    " left join Vendor v on p.supplierCode=v.cVenCode"+
+                    " where s.iRowNo ="+syOrderDataVO.getPoIrowno() +" and ss.cSOCode='"+syOrderDataVO.getOmpoCode()+"'";
+            listSon = senYuDataSourceThree.queryForList(sql2);
+            List<JSONObject> jian2 = JsonChangeUtils.toJSONObject(listSon);
+            for (JSONObject jsonObject:jian2) {
+                result = JSONObject.toJavaObject(jsonObject, SyOrderDataVO.class);
+            }
+            return result;
+
+        }else if(account[2].equals(syOrderDataVO.getAccount())){
+            String sql = "SELECT" +
+                    " ompoCode,ompoIdItem,ompoId,supplierCode,v.cVenAbbName as supplier,iTaxPrice,dArriveDate,guangpeiGateWidth," +account[2]+" as ompoAccount"+
+                    " FROM" +
+                    " SO_SODetails s" +
+                    " left join (" +
+                    " SELECT pm.cPOID as ompoCode,pm.POID as ompoId,pd.id as ompoIdItem," +
+                    " pd.cDefine23  as guangpeiGateWidth,pd.dArriveDate,"+
+                    " pm.cVenCode as supplierCode,pd.iTaxPrice,pd.cInvCode,pd.iorderdid as isosid" +
+                    " FROM PO_Pomain pm" +
+                    " LEFT JOIN  PO_Podetails pd on pm.POID=pd.POID" +
+                    " where pm.iverifystateex = 2 and (pm.cCloser is null or pm.cCloser='asuser')" +
+                    " UNION" +
+                    " SELECT om.cCode as ompoCode,om.MOID as ompoId,od.MODetailsID as ompoIdItem," +
+                    " od.cDefine23  as guangpeiGateWidth,od.dArriveDate,"+
+                    " om.cVenCode as supplierCode,od.iTaxPrice,od.cInvCode,od.isosid" +
+                    " FROM OM_MOMain om" +
+                    " LEFT JOIN  OM_MODetails  od on om.MOID =od.MOID" +
+                    " where om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')" +
+                    ") p on s.isosid  = p.isosid and s.cInvCode = p.cInvCode" +
+                    " left join Vendor v on p.supplierCode=v.cVenCode"+
+                    " where s.autoid ="+syOrderDataVO.getId();
+            listSon = senYuDataSourceThree.queryForList(sql);
+            List<JSONObject> jian = JsonChangeUtils.toJSONObject(listSon);
+            for (JSONObject jsonObject:jian) {
+                result = JSONObject.toJavaObject(jsonObject, SyOrderDataVO.class);
+            }
+            return result;
+
+        }
+        return null;
+    }
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {