zoukankan      html  css  js  c++  java
  • 二开获取yigo设计器里查询集合里中的某个SQL

    package com.bokesoft.lrp_v3.mid.dongming.service;
    
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.bokesoft.yigo.common.util.TypeConvertor;
    import com.bokesoft.yigo.mid.base.DefaultContext;
    import com.bokesoft.yigo.mid.service.IExtService;
    import com.bokesoft.yigo.struct.datatable.DataTable;
    import com.bokesoft.yigo.struct.document.Document;
    import com.bokesoft.yigo.struct.usrpara.Paras;
    
    public class CalOutPrintTable3 implements IExtService {
    
    	//private String update = "update Lrp_wmtx_h set OutPrint=33 where salesOrderNumber=?";
    
    	@Override
    	public Object doCmd(DefaultContext context, ArrayList<Object> arg1) throws Throwable {
    		// TODO Auto-generated method stub
    		Date d1 = TypeConvertor.toDate(arg1.get(0));
    		Date d2 = TypeConvertor.toDate(arg1.get(1));
    		Long SalesAdderss = TypeConvertor.toLong(arg1.get(2));
    		Long warehousecenterid = TypeConvertor.toLong(arg1.get(3));
    		Map<String, String> map = createsql(context, arg1);
    		String query = map.get("query");
    		String type = map.get("type");
    		DataTable tt = null;
    		switch (type) {
    		case "f":
    			tt = context.getDBManager().execPrepareQuery(query, SalesAdderss, warehousecenterid, warehousecenterid);
    			break;
    		case "ff":
    			tt = context.getDBManager().execPrepareQuery(query, d1, d2, SalesAdderss, warehousecenterid,
    					warehousecenterid);
    			break;
    		case "fff":
    			tt = context.getDBManager().execPrepareQuery(query, d1, SalesAdderss, warehousecenterid, warehousecenterid);
    			break;
    		case "ffff":
    			tt = context.getDBManager().execPrepareQuery(query, d2, SalesAdderss, warehousecenterid, warehousecenterid);
    			System.out.println(query);
    			break;
    		}
    		Paras paras = new Paras();//类似于SetPara
    		paras.put("StandardCarweight", setlist(context, tt));
    		return caltable(context, tt);
    	}
    
    	private String billno(DefaultContext context,Long SalesAdderss) throws Throwable {
    		String SalesOrderNumbers = "";
    		Document doc = context.getDocument();
    		DataTable t1 = doc.get("DomesticOutbound_C");
    		t1.setFilter("shipcustomerNum=="+SalesAdderss);
    		t1.filter();
    		while (t1.next()) {
    			if (t1.getInt("SelectField") == 1) {
    				String salesOrderNumber = TypeConvertor.toString(t1.getObject("SalesOrderNumber"));
    				SalesOrderNumbers = SalesOrderNumbers + ",'" + salesOrderNumber + "'";
    			}
    		}
    		String SalesOrderNumber = SalesOrderNumbers.substring(1, SalesOrderNumbers.length());
    		return SalesOrderNumber;
    	}
    
    	private Map<String, String> createsql(DefaultContext context, ArrayList<Object> arg1) throws Throwable {
    		String query = context.getVE().getMetaFactory().getMetaForm("DomesticOutbound").getQueryCollection()
    				.get("PrintTable1").getStatements().get(0).getContent();//获取查询集合里的查询SQL   context这里需要好好理解下
    		String nos = billno(context,TypeConvertor.toLong(arg1.get(2)));
    		query = query.replace("salesorderNO_para", nos);
    		Date d1 = TypeConvertor.toDate(arg1.get(0));
    		Date d2 = TypeConvertor.toDate(arg1.get(1));
    		String Datesql = " ";
    		String type = "f";
    		if (d1 != null && d2 != null) {
    			Datesql = " and h.createtime between ? and ? ";
    			type = "ff";
    		}
    		if (d1 != null && d2 == null) {
    			Datesql = " and h.createtime >=? ";
    			type = "fff";
    		}
    		if (d1 == null && d2 != null) {
    			Datesql = " and h.createtime <=? ";
    			type = "ffff";
    		}
    		query = query.replace("createtime_paras", Datesql);
    		Map<String, String> map = new HashMap<String, String>();
    		System.out.println(query);
    		map.put("query", query);
    		map.put("type", type);
    		return map;
    	}
    
    	private DataTable caltable(DefaultContext context, DataTable tt) {
    		List<String> list = new ArrayList<String>();
    		tt.beforeFirst();
    		while (tt.next()) {
    			String taskNumber = tt.getString("TaskNumber");
    			String BatchNo = tt.getString("BatchNo");
    			if (BatchNo != null)
    				if (BatchNo.trim().length() != 0)
    					tt.setString("BatchNo", splitbatchaNo(BatchNo));
    			if (!tt.getString("Packing").equals("FCL")) {
    				if (tt.getNumeric("countqty").compareTo(BigDecimal.ZERO) == 0
    						&& tt.getNumeric("BoxUnitNum1").compareTo(BigDecimal.ZERO) == 0
    						&& tt.getNumeric("BoxNum1").compareTo(BigDecimal.ZERO) != 0)
    					tt.setString("Packing", "OTHER");
    				else {
    					tt.setString("BoxSeq",
    							taskNumber.substring(taskNumber.length() - 8, taskNumber.length() - 4) + "-" + TypeConvertor
    									.toInteger(taskNumber.substring(taskNumber.length() - 4, taskNumber.length())));
    					list.add(taskNumber);
    				}
    			}
    		}
    		System.out.println("打印出库单(更新打印状态)DataTable:   "+tt);
    		return tt;
    	}
    
    	private String splitbatchaNo(String BatchNo) {
    		String[] nos = BatchNo.split(",");
    		if (nos.length > 1)
    			BatchNo = nos[0] + "," + nos[1];
    		else
    			BatchNo = nos[0];
    		return BatchNo;
    	}
    
    	private static BigDecimal calCarweight(List<String> list) {
    		List<String> newList = new ArrayList<String>();
    		for (String cd : list) {
    			if (!newList.contains(cd)) {
    				newList.add(cd);
    			}
    		}
    		return new BigDecimal(newList.size());
    	}
    
    	private static BigDecimal setlist(DefaultContext context, DataTable tt) {
    		List<String> list = new ArrayList<String>();
    		tt.beforeFirst();
    		while (tt.next()) {
    			if (!tt.getString("Packing").equals("FCL") && !tt.getString("Packing").equals("OTHER"))
    				list.add(tt.getString("taskNumber"));
    		}
    		return calCarweight(list);
    	}
    }
    

      

  • 相关阅读:
    18网三袁昳 实验三
    18网三袁昳 网络对抗技术实验二
    18网三袁昳 网络对抗技术实验一
    实验六
    实验五(18网三43号)
    实验四 18网三43号
    实验三(18网三43号)
    实验二(18网三43号袁昳)
    实验一(18网三43号)
    实验四(恶意代码技术)
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/8876543.html
Copyright © 2011-2022 走看看