Просмотр исходного кода

业务员开票经销商选择查询优化

沈静伟 3 лет назад
Родитель
Сommit
f6ed8cae60

+ 786 - 743
src/rest/openapi/restcontroller/hyworkorder/web/afterserviceorder/Afterserviceorder.java

@@ -23,756 +23,799 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.Set;
+import java.util.regex.Pattern;
 
 
 public class Afterserviceorder extends Controller {
 public class Afterserviceorder extends Controller {
 
 
-	public Afterserviceorder(JSONObject content) {
-		super(content);
-	}
-
-	/** 服务单列表 **/
-	public String list() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
-		if (where != null) {
-			DBConnect dbConnect = new DBConnect();
-			if (where.containsKey("fstatus") && !StringUtils.isBlank(where.getString("fstatus"))) {
-				wherestr += " and fstatus = '" + where.getString("fstatus") + "'";
-			}
-			if (where.containsKey("ftype") && !StringUtils.isBlank(where.getString("ftype"))) {
-				wherestr += " and ftype = '" + where.getString("ftype") + "'";
-			}
-			if (where.containsKey("startdate") && !StringUtils.isBlank(where.getString("startdate"))) {
-				wherestr += " and t.createdate >= '" + where.getString("startdate") + "'";
-			}
-			if (where.containsKey("enddate") && !StringUtils.isBlank(where.getString("enddate"))) {
-				wherestr += " and t.createdate <= '" + where.getString("enddate") + "'";
-			}
-
-			SQLFactory factory = new SQLFactory(this, "售后单列表查询", pageSize, pageNumber,
-					"case when t.fstatus='新建' then 1\n" + "when t.fstatus='待处理' then 2\n"
-							+ "when t.fstatus='进行中' then 3\n"
-							+ "when t.fstatus='已完成' then 4 else 5 end,t.createdate desc");
-			factory.addParameter("fagentnum", fagentnum);
-			factory.addParameter("siteid", siteid);
-			factory.addParameter_SQL("where", wherestr);
-			Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-			return getReturnObject_suc_page(rows, false, 0).toString();
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 服务单列表 **/
-	public String list_worker() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
-		if (where != null) {
-			DBConnect dbConnect = new DBConnect();
-			if (where.containsKey("fstatus") && !StringUtils.isBlank(where.getString("fstatus"))) {
-				wherestr += " and t.fstatus = '" + where.getString("fstatus") + "'";
-			}
-			if (where.containsKey("ftype") && !StringUtils.isBlank(where.getString("ftype"))) {
-				wherestr += " and t.ftype = '" + where.getString("ftype") + "'";
-			}
-			if (where.containsKey("startdate") && !StringUtils.isBlank(where.getString("startdate"))) {
-				wherestr += " and t.createdate >= '" + where.getString("startdate") + "'";
-			}
-			if (where.containsKey("enddate") && !StringUtils.isBlank(where.getString("enddate"))) {
-				wherestr += " and t.createdate <= '" + where.getString("enddate") + "'";
-			}
-
-			SQLFactory factory = new SQLFactory(this, "服务主管售后单列表查询", pageSize, pageNumber,
-					"case when t.fstatus='新建' then 1\n" + "when t.fstatus='待处理' then 2\n"
-							+ "when t.fstatus='进行中' then 3\n"
-							+ "when t.fstatus='已完成' then 4 else 5 end,t.createdate desc");
-			// factory.addParameter("fagentnum",fagentnum);
-			factory.addParameter("siteid", siteid);
-			factory.addParameter_SQL("where", wherestr);
-			Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-			return getReturnObject_suc_page(rows, false, 0).toString();
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 服务单详情 **/
-	public String detail() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				DBConnect dbConnect = new DBConnect();
-				SQLFactory factory = new SQLFactory(this, "售后服务单详情");
-				factory.addParameter("servicenum", where.getString("servicenum"));
-				Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-				if (rows.isEmpty())
-					return getReturnObject_err("没有此单据").toString();
-				Row row = rows.get(0);
-				/** 附件设置 **/
-				PaoSetRemote tattachment = getpaoset("tattachment");
-				tattachment.setWhere("ownertable='AFTERSERVICEORDER' and ownerid=" + row.getInteger("ownerid"));
-				tattachment.setOrderBy("tattachmentid desc");
-				tattachment.reset();
-				if (!tattachment.isEmpty()) {
-					Rows rows_url = dbConnect.runSqlQuery(
-							"select fobsurl,postfix,type,fdocument,tattachmentid from tattachment where ownertable='AFTERSERVICEORDER' and ownerid="
-									+ row.getInteger("ownerid"));
-					row.put("url", rows_url);
-				} else {
-					row.put("url", new Rows());
-				}
-				SQLFactory titems_factory = new SQLFactory(this, "服务单关联物料");
-				titems_factory.addParameter("servicenum", where.getString("servicenum"));
-				Rows titems = dbConnect.runSqlQuery(titems_factory.getSQL());
-				row.put("titems", titems);
-
-				SQLFactory hyworkorder_factory = new SQLFactory(this, "服务单关联工单");
-				hyworkorder_factory.addParameter("servicenum", where.getString("servicenum"));
-				Rows hyworkorder = dbConnect.runSqlQuery(hyworkorder_factory.getSQL());
-				row.put("workorder", hyworkorder);
-
-				return getReturnObject_suc(row, false).toString();
-			} catch (P2Exception e) {
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 服务单关联物料 **/
-	public String titem() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			DBConnect dbConnect = new DBConnect();
-			SQLFactory factory = new SQLFactory(this, "服务单关联物料", pageSize, pageNumber, "t1.fitemno");
-			factory.addParameter("servicenum", where.getString("servicenum"));
-			Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-			return getReturnObject_suc_page(rows, false, 0).toString();
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 服务单关联工单 **/
-	public String hyworkorder() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			DBConnect dbConnect = new DBConnect();
-			SQLFactory factory = new SQLFactory(this, "服务单关联工单", pageSize, pageNumber, "t1.fworknum");
-			factory.addParameter("servicenum", where.getString("servicenum"));
-			Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-			return getReturnObject_suc_page(rows, false, 0).toString();
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 工单模板查询 **/
-	public String queryworkerordertemplate() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String wherestr = "1=1";
+    public Afterserviceorder(JSONObject content) {
+        super(content);
+    }
+
+    /**
+     * 服务单列表
+     **/
+    public String list() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
+        if (where != null) {
+            DBConnect dbConnect = new DBConnect();
+            if (where.containsKey("fstatus") && !StringUtils.isBlank(where.getString("fstatus"))) {
+                wherestr += " and fstatus = '" + where.getString("fstatus") + "'";
+            }
+            if (where.containsKey("ftype") && !StringUtils.isBlank(where.getString("ftype"))) {
+                wherestr += " and ftype = '" + where.getString("ftype") + "'";
+            }
+            if (where.containsKey("startdate") && !StringUtils.isBlank(where.getString("startdate"))) {
+                wherestr += " and t.createdate >= '" + where.getString("startdate") + "'";
+            }
+            if (where.containsKey("enddate") && !StringUtils.isBlank(where.getString("enddate"))) {
+                wherestr += " and t.createdate <= '" + where.getString("enddate") + "'";
+            }
+
+            SQLFactory factory = new SQLFactory(this, "售后单列表查询", pageSize, pageNumber,
+                    "case when t.fstatus='新建' then 1\n" + "when t.fstatus='待处理' then 2\n"
+                            + "when t.fstatus='进行中' then 3\n"
+                            + "when t.fstatus='已完成' then 4 else 5 end,t.createdate desc");
+            factory.addParameter("fagentnum", fagentnum);
+            factory.addParameter("siteid", siteid);
+            factory.addParameter_SQL("where", wherestr);
+            Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+            return getReturnObject_suc_page(rows, false, 0).toString();
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 服务单列表
+     **/
+    public String list_worker() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
+        if (where != null) {
+            DBConnect dbConnect = new DBConnect();
+            if (where.containsKey("fstatus") && !StringUtils.isBlank(where.getString("fstatus"))) {
+                wherestr += " and t.fstatus = '" + where.getString("fstatus") + "'";
+            }
+            if (where.containsKey("ftype") && !StringUtils.isBlank(where.getString("ftype"))) {
+                wherestr += " and t.ftype = '" + where.getString("ftype") + "'";
+            }
+            if (where.containsKey("startdate") && !StringUtils.isBlank(where.getString("startdate"))) {
+                wherestr += " and t.createdate >= '" + where.getString("startdate") + "'";
+            }
+            if (where.containsKey("enddate") && !StringUtils.isBlank(where.getString("enddate"))) {
+                wherestr += " and t.createdate <= '" + where.getString("enddate") + "'";
+            }
+
+            SQLFactory factory = new SQLFactory(this, "服务主管售后单列表查询", pageSize, pageNumber,
+                    "case when t.fstatus='新建' then 1\n" + "when t.fstatus='待处理' then 2\n"
+                            + "when t.fstatus='进行中' then 3\n"
+                            + "when t.fstatus='已完成' then 4 else 5 end,t.createdate desc");
+            // factory.addParameter("fagentnum",fagentnum);
+            factory.addParameter("siteid", siteid);
+            factory.addParameter_SQL("where", wherestr);
+            Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+            return getReturnObject_suc_page(rows, false, 0).toString();
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 服务单详情
+     **/
+    public String detail() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                DBConnect dbConnect = new DBConnect();
+                SQLFactory factory = new SQLFactory(this, "售后服务单详情");
+                factory.addParameter("servicenum", where.getString("servicenum"));
+                Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+                if (rows.isEmpty())
+                    return getReturnObject_err("没有此单据").toString();
+                Row row = rows.get(0);
+                /** 附件设置 **/
+                PaoSetRemote tattachment = getpaoset("tattachment");
+                tattachment.setWhere("ownertable='AFTERSERVICEORDER' and ownerid=" + row.getInteger("ownerid"));
+                tattachment.setOrderBy("tattachmentid desc");
+                tattachment.reset();
+                if (!tattachment.isEmpty()) {
+                    Rows rows_url = dbConnect.runSqlQuery(
+                            "select fobsurl,postfix,type,fdocument,tattachmentid from tattachment where ownertable='AFTERSERVICEORDER' and ownerid="
+                                    + row.getInteger("ownerid"));
+                    row.put("url", rows_url);
+                } else {
+                    row.put("url", new Rows());
+                }
+                SQLFactory titems_factory = new SQLFactory(this, "服务单关联物料");
+                titems_factory.addParameter("servicenum", where.getString("servicenum"));
+                Rows titems = dbConnect.runSqlQuery(titems_factory.getSQL());
+                row.put("titems", titems);
+
+                SQLFactory hyworkorder_factory = new SQLFactory(this, "服务单关联工单");
+                hyworkorder_factory.addParameter("servicenum", where.getString("servicenum"));
+                Rows hyworkorder = dbConnect.runSqlQuery(hyworkorder_factory.getSQL());
+                row.put("workorder", hyworkorder);
+
+                return getReturnObject_suc(row, false).toString();
+            } catch (P2Exception e) {
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 服务单关联物料
+     **/
+    public String titem() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            DBConnect dbConnect = new DBConnect();
+            SQLFactory factory = new SQLFactory(this, "服务单关联物料", pageSize, pageNumber, "t1.fitemno");
+            factory.addParameter("servicenum", where.getString("servicenum"));
+            Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+            return getReturnObject_suc_page(rows, false, 0).toString();
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 服务单关联工单
+     **/
+    public String hyworkorder() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            DBConnect dbConnect = new DBConnect();
+            SQLFactory factory = new SQLFactory(this, "服务单关联工单", pageSize, pageNumber, "t1.fworknum");
+            factory.addParameter("servicenum", where.getString("servicenum"));
+            Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+            return getReturnObject_suc_page(rows, false, 0).toString();
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 工单模板查询
+     **/
+    public String queryworkerordertemplate() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String wherestr = "1=1";
 //        String s[] = {"servicenum"};
 //        String s[] = {"servicenum"};
 //        for (String s1 : s) {
 //        for (String s1 : s) {
 //            if (!where.containsKey(s1))return getReturnObject_err("缺少" + s1 + "参数").toString();
 //            if (!where.containsKey(s1))return getReturnObject_err("缺少" + s1 + "参数").toString();
 //        }
 //        }
-		DBConnect dbConnect = new DBConnect();
-		Rows rows = dbConnect.runSqlQuery(
-				"select fname,ftype,fworknum from hyworkordertemplate where siteid='" + siteid + "' and fstatus='启用' ");
-		return getReturnObject_suc(rows, false).toString();
-	}
-
-	/** 售后服务单转工单 **/
-	public String AfterserviceOrderToHyworkorder() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "ftype", "fworknum", "servicenum", "projectleader" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				PaoSetRemote afterserviceorder = P2Server.getP2Server().getPaoSet("afterserviceorder",
-						P2Server.getP2Server().getSystemUserInfo());
-				afterserviceorder.setInsertSite(siteid);
-				afterserviceorder.setWhere("servicenum='" + where.getString("servicenum") + "'");
-				afterserviceorder.reset();
-				if (afterserviceorder.isEmpty()) {
-					return getReturnObject_err("此售后服务单不存在").toString();
-				} else {
-					if (!afterserviceorder.getPao(0).getString("fstatus").equals("待指派")
-							&& !afterserviceorder.getPao(0).getString("fstatus").equals("待处理")
-							&& !afterserviceorder.getPao(0).getString("fstatus").equals("进行中")) {
-						return getReturnObject_err("非处理和进行中状态不可生成工单").toString();
-					}
-				}
-				PaoSetRemote workorders = P2Server.getP2Server().getPaoSet("hyWorkorder",
-						P2Server.getP2Server().getSystemUserInfo());
-				workorders.setInsertSite(siteid);
-				workorders.setWhere("servernum='" + where.getString("servicenum") + "'");
-				workorders.reset();
-				// if(!afterserviceorder.isEmpty())return
-				// getReturnObject_err("已存在关联的售后服务单").toString();
-				if (!workorders.isEmpty()) {
-					int i = 0;
-					PaoRemote paoRemote = null;
-					while ((paoRemote = workorders.getPao(i)) != null) {
-						System.out.println(paoRemote.getString("ftype"));
-						if (paoRemote.getString("ftype").equals(where.getString("ftype"))
-								&& !paoRemote.getString("fstatus").equals("作废")) {
-							return getReturnObject_err("已存在" + where.getString("ftype") + "类型的工单,无法继续生成此类型的工单")
-									.toString();
-						}
-						i++;
-					}
-				}
-				PaoRemote remote = workorders.addAtEnd();
-				remote.setValue("FAGENTNUM", afterserviceorder.getPao(0).getString("FAGENTNUM"), 11l);
-				remote.setValue("servernum", where.getString("servicenum"), 11l);
-				remote.setValue("PROJECTLEADER", where.getString("projectleader"), 2l);
-				remote.setValue("FPROVINCE", afterserviceorder.getPao(0).getString("FPROVINCE"), 11l);
-				remote.setValue("FCITY", afterserviceorder.getPao(0).getString("FCITY"), 11l);
-				remote.setValue("FCOUNTY", afterserviceorder.getPao(0).getString("FCOUNTY"), 11l);
-				remote.setValue("FADDRESS", afterserviceorder.getPao(0).getString("FADDRESS"), 11l);
-				remote.setValue("scenefname", afterserviceorder.getPao(0).getString("scenefname"), 2l);
-				remote.setValue("scenephone", afterserviceorder.getPao(0).getString("scenephone"), 2l);
-				remote.setValue("errormsg", afterserviceorder.getPao(0).getString("error_msg"), 11l);
-				remote.setValue("ftext", afterserviceorder.getPao(0).getString("fnotes"), 11l);
-				remote.setValue("ftype", where.getString("ftype"), 2l);
-				remote.setValue("TEMPLATENUM", where.getString("fworknum"), 2l);
-				PaoSetRemote afterserviceorders = remote.getPaoSet("AFTERSERVICEORDER");
-				afterserviceorders.getPao(0).setValue("fstatus", "待处理");
-				if (siteid.equals("TZ")) {
-					/** 给经销商发送消息 **/
-					PaoSetRemote paoSet = remote.getPaoSet("$workermassage", "workermassage", "");
-					PaoRemote remote1 = paoSet.addAtEnd();
-					remote1.setValue("ftype", "经销商消息", 11l);
-					remote1.setValue("title", "服务申请单:" + afterserviceorder.getPao(0).getString("Servicenum") + "已转成工单"
-							+ remote.getString("fworknum"), 11l);
-					remote1.setValue("content", "服务申请单:" + afterserviceorder.getPao(0).getString("Servicenum") + "已转成工单"
-							+ remote.getString("fworknum"), 11l);
-					remote1.setValue("phone", afterserviceorder.getPao(0).getString("FAGENTNUM"), 11l);
-				}
-				String fsonum = afterserviceorder.getPao(0).getString("fsonum");
-				DBConnect connect = new DBConnect();
-				SQLFactory factory = null;
-				if (siteid.equals("TZ")) {
-					factory = new SQLFactory(this, "查询台州订单收货日期");
-				} else if (siteid.equals("HY")) {
-					factory = new SQLFactory(this, "查询订单收货日期");
-				}
-				Rows rows = new Rows();
-				if (fsonum != null && fsonum.length() > 0) {
-					factory.addParameter("fsonum", fsonum);
-					rows = connect.runSqlQuery(factory.getSQL());
-				}
-				if (!rows.isEmpty()) {
-					Date receivedate = rows.get(0).getDate("receivedate");
-					Calendar calendar = Calendar.getInstance();
-					calendar.add(Calendar.YEAR, -2);
-					Date date = calendar.getTime();
-					if (date.before(receivedate)) {
-						remote.setValue("FISPERIOD", true, 11l);
-					}
-				}
-
-				workorders.save();
-				Row row = new Row();
-				row.put("FWORKNUM", remote.getString("FWORKNUM"));
-				row.put("fstatus", remote.getString("fstatus"));
-				row.put("createdate", DateFormatUtils.format(remote.getDate("createdate"), "yyyy-MM-dd HH:mm:ss"));
-				return getReturnObject_suc(row, false).toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 创建售后服务单 **/
-	public String createAfterserviceOrder() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		if (where != null) {
-			try {
-				DBConnect connect = new DBConnect();
-				SQLFactory factory = new SQLFactory(this, "查询经销商所属业务员");
-				factory.addParameter("fagentnum", fagentnum);
-				factory.addParameter("siteid", siteid);
-				Rows rows = connect.runSqlQuery(factory.getSQL());
-
-				PaoSetRemote afterserviceorder = getpaoset("Afterserviceorder");
-				afterserviceorder.setInsertSite(siteid);
-				// if(!afterserviceorder.isEmpty())return
-				// getReturnObject_err("已存在关联的售后服务单").toString();
-				PaoRemote remote = afterserviceorder.addAtEnd();
-				remote.setValue("createby", hrid, 11l);
+        DBConnect dbConnect = new DBConnect();
+        Rows rows = dbConnect.runSqlQuery(
+                "select fname,ftype,fworknum from hyworkordertemplate where siteid='" + siteid + "' and fstatus='启用' ");
+        return getReturnObject_suc(rows, false).toString();
+    }
+
+    /**
+     * 售后服务单转工单
+     **/
+    public String AfterserviceOrderToHyworkorder() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"ftype", "fworknum", "servicenum", "projectleader"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                PaoSetRemote afterserviceorder = P2Server.getP2Server().getPaoSet("afterserviceorder",
+                        P2Server.getP2Server().getSystemUserInfo());
+                afterserviceorder.setInsertSite(siteid);
+                afterserviceorder.setWhere("servicenum='" + where.getString("servicenum") + "'");
+                afterserviceorder.reset();
+                if (afterserviceorder.isEmpty()) {
+                    return getReturnObject_err("此售后服务单不存在").toString();
+                } else {
+                    if (!afterserviceorder.getPao(0).getString("fstatus").equals("待指派")
+                            && !afterserviceorder.getPao(0).getString("fstatus").equals("待处理")
+                            && !afterserviceorder.getPao(0).getString("fstatus").equals("进行中")) {
+                        return getReturnObject_err("非处理和进行中状态不可生成工单").toString();
+                    }
+                }
+                PaoSetRemote workorders = P2Server.getP2Server().getPaoSet("hyWorkorder",
+                        P2Server.getP2Server().getSystemUserInfo());
+                workorders.setInsertSite(siteid);
+                workorders.setWhere("servernum='" + where.getString("servicenum") + "'");
+                workorders.reset();
+                // if(!afterserviceorder.isEmpty())return
+                // getReturnObject_err("已存在关联的售后服务单").toString();
+                if (!workorders.isEmpty()) {
+                    int i = 0;
+                    PaoRemote paoRemote = null;
+                    while ((paoRemote = workorders.getPao(i)) != null) {
+                        System.out.println(paoRemote.getString("ftype"));
+                        if (paoRemote.getString("ftype").equals(where.getString("ftype"))
+                                && !paoRemote.getString("fstatus").equals("作废")) {
+                            return getReturnObject_err("已存在" + where.getString("ftype") + "类型的工单,无法继续生成此类型的工单")
+                                    .toString();
+                        }
+                        i++;
+                    }
+                }
+                PaoRemote remote = workorders.addAtEnd();
+                remote.setValue("FAGENTNUM", afterserviceorder.getPao(0).getString("FAGENTNUM"), 11l);
+                remote.setValue("servernum", where.getString("servicenum"), 11l);
+                remote.setValue("PROJECTLEADER", where.getString("projectleader"), 2l);
+                remote.setValue("FPROVINCE", afterserviceorder.getPao(0).getString("FPROVINCE"), 11l);
+                remote.setValue("FCITY", afterserviceorder.getPao(0).getString("FCITY"), 11l);
+                remote.setValue("FCOUNTY", afterserviceorder.getPao(0).getString("FCOUNTY"), 11l);
+                remote.setValue("FADDRESS", afterserviceorder.getPao(0).getString("FADDRESS"), 11l);
+                remote.setValue("scenefname", afterserviceorder.getPao(0).getString("scenefname"), 2l);
+                remote.setValue("scenephone", afterserviceorder.getPao(0).getString("scenephone"), 2l);
+                remote.setValue("errormsg", afterserviceorder.getPao(0).getString("error_msg"), 11l);
+                remote.setValue("ftext", afterserviceorder.getPao(0).getString("fnotes"), 11l);
+                remote.setValue("ftype", where.getString("ftype"), 2l);
+                remote.setValue("TEMPLATENUM", where.getString("fworknum"), 2l);
+                PaoSetRemote afterserviceorders = remote.getPaoSet("AFTERSERVICEORDER");
+                afterserviceorders.getPao(0).setValue("fstatus", "待处理");
+                if (siteid.equals("TZ")) {
+                    /** 给经销商发送消息 **/
+                    PaoSetRemote paoSet = remote.getPaoSet("$workermassage", "workermassage", "");
+                    PaoRemote remote1 = paoSet.addAtEnd();
+                    remote1.setValue("ftype", "经销商消息", 11l);
+                    remote1.setValue("title", "服务申请单:" + afterserviceorder.getPao(0).getString("Servicenum") + "已转成工单"
+                            + remote.getString("fworknum"), 11l);
+                    remote1.setValue("content", "服务申请单:" + afterserviceorder.getPao(0).getString("Servicenum") + "已转成工单"
+                            + remote.getString("fworknum"), 11l);
+                    remote1.setValue("phone", afterserviceorder.getPao(0).getString("FAGENTNUM"), 11l);
+                }
+                String fsonum = afterserviceorder.getPao(0).getString("fsonum");
+                DBConnect connect = new DBConnect();
+                SQLFactory factory = null;
+                if (siteid.equals("TZ")) {
+                    factory = new SQLFactory(this, "查询台州订单收货日期");
+                } else if (siteid.equals("HY")) {
+                    factory = new SQLFactory(this, "查询订单收货日期");
+                }
+                Rows rows = new Rows();
+                if (fsonum != null && fsonum.length() > 0) {
+                    factory.addParameter("fsonum", fsonum);
+                    rows = connect.runSqlQuery(factory.getSQL());
+                }
+                if (!rows.isEmpty()) {
+                    Date receivedate = rows.get(0).getDate("receivedate");
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.add(Calendar.YEAR, -2);
+                    Date date = calendar.getTime();
+                    if (date.before(receivedate)) {
+                        remote.setValue("FISPERIOD", true, 11l);
+                    }
+                }
+
+                workorders.save();
+                Row row = new Row();
+                row.put("FWORKNUM", remote.getString("FWORKNUM"));
+                row.put("fstatus", remote.getString("fstatus"));
+                row.put("createdate", DateFormatUtils.format(remote.getDate("createdate"), "yyyy-MM-dd HH:mm:ss"));
+                return getReturnObject_suc(row, false).toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 创建售后服务单
+     **/
+    public String createAfterserviceOrder() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        if (where != null) {
+            try {
+                DBConnect connect = new DBConnect();
+                SQLFactory factory = new SQLFactory(this, "查询经销商所属业务员");
+                factory.addParameter("fagentnum", fagentnum);
+                factory.addParameter("siteid", siteid);
+                Rows rows = connect.runSqlQuery(factory.getSQL());
+
+                PaoSetRemote afterserviceorder = getpaoset("Afterserviceorder");
+                afterserviceorder.setInsertSite(siteid);
+                // if(!afterserviceorder.isEmpty())return
+                // getReturnObject_err("已存在关联的售后服务单").toString();
+                PaoRemote remote = afterserviceorder.addAtEnd();
+                remote.setValue("createby", hrid, 11l);
 //                    remote.setValue("submitby",hrid,11l);
 //                    remote.setValue("submitby",hrid,11l);
 //                    remote.setValue("submitdate",new Date(),11l);
 //                    remote.setValue("submitdate",new Date(),11l);
-				remote.setValue("fagentnum", fagentnum, 11l);
-				if (!rows.isEmpty()) {
-					remote.setValue("fsaler", rows.get(0).getString("fsaler"), 11l);
-				}
-				afterserviceorder.save();
-				Row row = new Row();
-				row.put("servicenum", remote.getString("Servicenum"));
-				row.put("fstatus", remote.getString("fstatus"));
-				row.put("createdate", DateFormatUtils.format(remote.getDate("createdate"), "yyyy-MM-dd HH:mm:ss"));
-				return getReturnObject_suc(row, false).toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 更新售后服务单 **/
-	public String update() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				PaoRemote remote = getpaoset.getPao(0);
-				if (where.containsKey("servicetype")) {
-					if (!where.getString("servicetype").equals("售前")) {
-						if (!where.containsKey("fsonum")) {
-							return getReturnObject_err("售中及售后及历史售后的服务单需添加关联订单号").toString();
-						}
-					}
-					remote.setValue("servicetype", where.getString("servicetype"), 11l);
-				}
-				if (where.containsKey("fsonum") && !StringUtils.isBlank(where.getString("fsonum"))
-						&& !where.getString("fsonum").equalsIgnoreCase("null"))
-					remote.setValue("fsonum", where.getString("fsonum"), 11l);
-				if (where.containsKey("fprovince"))
-					remote.setValue("fprovince", where.getString("fprovince"), 11l);
-				if (where.containsKey("fcity"))
-					remote.setValue("fcity", where.getString("fcity"), 11l);
-				if (where.containsKey("fcounty"))
-					remote.setValue("fcounty", where.getString("fcounty"), 11l);
-				if (where.containsKey("fsaler"))
-					remote.setValue("fsaler", where.getString("fsaler"), 11l);
-				if (where.containsKey("faddress"))
-					remote.setValue("faddress", where.getString("faddress"), 11l);
-				if (where.containsKey("scenefname"))
-					remote.setValue("scenefname", where.getString("scenefname"), 11l);
-				if (where.containsKey("scenephone"))
-					remote.setValue("scenephone", where.getString("scenephone"), 2l);
-				if (where.containsKey("error_msg"))
-					remote.setValue("error_msg", where.getString("error_msg"), 11l);
-
-				if (where.containsKey("appsystem"))
-					remote.setValue("appsystem", where.getString("appsystem"), 11l);
-				if (where.containsKey("errcategory"))
-					remote.setValue("errcategory", where.getString("errcategory"), 11l);
-
-				if (where.containsKey("servicebegindate") && where.getString("servicebegindate") != null
-						&& where.getString("servicebegindate").length() != 0
-						&& !where.getString("servicebegindate").equalsIgnoreCase("null"))
-
-					remote.setValue("servicebegindate", where.getString("servicebegindate"), 11l);
-				if (where.containsKey("serviceenddate") && where.getString("serviceenddate") != null
-						&& where.getString("serviceenddate").length() != 0
-						&& !where.getString("serviceenddate").equalsIgnoreCase("null"))
-					remote.setValue("serviceenddate", where.getString("serviceenddate"), 11l);
-
-				if (where.containsKey("fnotes"))
-					remote.setValue("fnotes", where.getString("fnotes"), 11l);
-				if (where.containsKey("titems")) {
-					PaoSetRemote hyafterserviceorder_titem = remote.getPaoSet("HYAFTERSERVICEORDER_TITEM");
-					hyafterserviceorder_titem.deleteAll();
-					hyafterserviceorder_titem.save();
-					JSONArray titems = where.getJSONArray("titems");
-					Set<String> set = new HashSet<>();
-					for (Object titem : titems) {
-						set.add((String) titem);
-					}
-					for (String s1 : set) {
-						PaoRemote remote1 = hyafterserviceorder_titem.addAtEnd();
-						remote1.setValue("FITEMNO", s1, 11l);
-					}
-					hyafterserviceorder_titem.save();
-				}
-				getpaoset.save();
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 提交服务单 **/
-	public String submit() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-
-		if (where != null) {
-			try {
-				PaoSetRemote getpaoset = P2Server.getP2Server().getPaoSet("Afterserviceorder", P2Server.getP2Server().getUserInfo(siteid.toUpperCase()+"ADMIN"));
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
-				afterserviceorder.setValue("submitby", hrid, 11l);
-				afterserviceorder.setValue("submitdate", new Date(), 11l);
-				afterserviceorder.submit(true);
-				/*
-				 * 发送邮件
-				 */
-				PaoSetRemote tagents = afterserviceorder.getPaoSet("TAGENTS");
-				String fagentname = "";
-				if (!tagents.isEmpty()) {
-					fagentname = tagents.getPao(0).getString("fagentname");
-				}
-				PaoSetRemote paoSet = P2Server.getP2Server().getPaoSet("tagents",
-						P2Server.getP2Server().getUserInfo(siteid.toUpperCase() + "ADMIN"));
-				tagents pao = (tagents) paoSet.getPao(0);
-				String fprovince = "";
-				String fcity = "";
-				String fcounty = "";
-				String faddress = "";
-				if (!StringUtils.isBlank(afterserviceorder.getString("fprovince")))
-					fprovince = afterserviceorder.getString("fprovince");
-				if (!StringUtils.isBlank(afterserviceorder.getString("fcity")))
-					fcity = afterserviceorder.getString("fcity");
-				if (!StringUtils.isBlank(afterserviceorder.getString("fcounty")))
-					fcounty = afterserviceorder.getString("fcounty");
-				if (!StringUtils.isBlank(afterserviceorder.getString("faddress")))
-					faddress = afterserviceorder.getString("faddress");
-				pao.sendEmail(pao.getMailByHrGroup(siteid + "1011"), "服务申请单提交",
-						"客户:" + fagentname + ",已提交服务申请:" + afterserviceorder.getString("Servicenum") + ",服务地址:"
-								+ fprovince + fcity + fcounty + faddress + ",请及时处理");
-
-				getpaoset.save();
-
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 退回服务单 **/
-	public String sendback() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		// if(StringUtils.isBlank(fagentnum))return
-		// getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum", "backreason" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-
-		if (where != null) {
-			try {
-				PaoSetRemote getpaoset = P2Server.getP2Server().getPaoSet("Afterserviceorder",
-						P2Server.getP2Server().getSystemUserInfo());
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
-				if (!afterserviceorder.getString("fstatus").equals("待指派")) {
-					return getReturnObject_err("非待指派不可退回").toString();
-				}
-				if (where.getString("backreason") == null || where.getString("backreason").length() == 0) {
-					return getReturnObject_err("退回原因为空不可退回").toString();
-				}
-				afterserviceorder.setValue("backreason", where.getString("backreason"));
-				afterserviceorder.setValue("fstatus", "新建", 11L);
-				afterserviceorder.setValue("submitby", "", 11l);
-				afterserviceorder.setValue("submitdate", "", 11l);
-				getpaoset.save();
-
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 删除服务单 **/
-	public String delete() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
-				if (!afterserviceorder.getString("fstatus").equals("新建"))
-					return getReturnObject_err("非新建不可删除").toString();
-				afterserviceorder.delete();
-				getpaoset.save();
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 添加商品明细 **/
-	public String addtitems() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum", "titems" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
-				JSONArray titems = where.getJSONArray("titems");
-				Set<String> set = new HashSet<>();
-				for (Object titem : titems) {
-					set.add((String) titem);
-				}
-				for (String fitemno : set) {
-					PaoSetRemote hyafterserviceorder_titem = afterserviceorder.getPaoSet("HYAFTERSERVICEORDER_TITEM");
-					hyafterserviceorder_titem.setWhere("FITEMNO='" + fitemno + "'");
-					hyafterserviceorder_titem.reset();
-					if (hyafterserviceorder_titem.isEmpty()) {
-						PaoRemote remote = hyafterserviceorder_titem.addAtEnd();
-						remote.setValue("FITEMNO", fitemno, 2l);
-						hyafterserviceorder_titem.save();
-					}
-				}
-				getpaoset.save();
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 删除商品明细 **/
-	public String deletetitiems() {
-		if (StringUtils.isBlank(hrid))
-			return getReturnObject_err("hrid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		JSONObject where = content.getJSONObject("where");
-		String s[] = { "servicenum", "titems" };
-		for (String s1 : s) {
-			if (!where.containsKey(s1))
-				return getReturnObject_err("缺少" + s1 + "参数").toString();
-		}
-		if (where != null) {
-			try {
-				JSONArray titems = where.getJSONArray("titems");
-				Set<String> set = new HashSet<>();
-				for (Object titem : titems) {
-					set.add((String) titem);
-				}
-				PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
-				getpaoset.setInsertSite(siteid);
-				getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
-				getpaoset.reset();
-				if (getpaoset.isEmpty())
-					return getReturnObject_err("没有该服务单").toString();
-				PaoRemote pao = getpaoset.getPao(0);
-				PaoSetRemote hyafterserviceorder_titem = pao.getPaoSet("HYAFTERSERVICEORDER_TITEM");
-				for (int i = 0; i < hyafterserviceorder_titem.count(); i++) {
-					PaoRemote pao1 = hyafterserviceorder_titem.getPao(i);
-					if (set.contains(pao1.getString("FITEMNO"))) {
-						pao1.delete();
-					}
-				}
-				hyafterserviceorder_titem.save();
-				return getReturnObject_suc().toString();
-			} catch (P2Exception e) {
-				e.printStackTrace();
-				return getReturnObject_err(e.getMessage()).toString();
-			}
-		}
-		return getReturnObject_err("缺少where参数").toString();
-	}
-
-	/** 获取应用系统 **/
-	public String get_appsystem() {
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		DBConnect dbConnect = new DBConnect();
-		Rows rows = dbConnect.runSqlQuery("select value from PS_DATABIND_LIST where databindid='APPSYSTEM' and siteid='"
-				+ siteid + "' order by SEQUENCE");
-		return getReturnObject_suc(rows, false).toString();
-	}
-
-	/** 获取服务分类 **/
-	public String errcategory() {
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		DBConnect dbConnect = new DBConnect();
-		Rows rows = dbConnect
-				.runSqlQuery("select value from  PS_DATABIND_LIST where databindid='ERRCATEGORY' and siteid='" + siteid
-						+ "' order by SEQUENCE");
-		return getReturnObject_suc(rows, false).toString();
-	}
-
-	/** 服务分类查询 **/
-	public String servicetypeList() {
-		Rows rows = new Rows();
-		Row row1 = new Row();
-		row1.put("value", "售前");
-		Row row2 = new Row();
-		row2.put("value", "售中");
-		Row row3 = new Row();
-		row3.put("value", "售后");
-		Row row4 = new Row();
-		row4.put("value", "历史售后");
-		rows.add(row1);
-		rows.add(row2);
-		rows.add(row3);
-		rows.add(row4);
-		return getReturnObject_suc(rows, true).toString();
-
-	}
-
-	/** 获取服务分类 **/
-	public String getsalerforagent() {
-		if (StringUtils.isBlank(siteid))
-			return getReturnObject_err("siteid为空").toString();
-		if (StringUtils.isBlank(fagentnum))
-			return getReturnObject_err("fagentnum为空").toString();
-		DBConnect dbConnect = new DBConnect();
-		SQLFactory factory = new SQLFactory(this, "查询经销商所属业务员");
-		factory.addParameter("fagentnum", fagentnum);
-		factory.addParameter("siteid", siteid);
-		Rows rows = dbConnect.runSqlQuery(factory.getSQL());
-		return getReturnObject_suc(rows, false).toString();
-	}
+                remote.setValue("fagentnum", fagentnum, 11l);
+                if (!rows.isEmpty()) {
+                    remote.setValue("fsaler", rows.get(0).getString("fsaler"), 11l);
+                }
+                afterserviceorder.save();
+                Row row = new Row();
+                row.put("servicenum", remote.getString("Servicenum"));
+                row.put("fstatus", remote.getString("fstatus"));
+                row.put("createdate", DateFormatUtils.format(remote.getDate("createdate"), "yyyy-MM-dd HH:mm:ss"));
+                return getReturnObject_suc(row, false).toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 更新售后服务单
+     **/
+    public String update() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                PaoRemote remote = getpaoset.getPao(0);
+                if (where.containsKey("servicetype")) {
+                    if (!where.getString("servicetype").equals("售前")) {
+                        if (!where.containsKey("fsonum")) {
+                            return getReturnObject_err("售中及售后及历史售后的服务单需添加关联订单号").toString();
+                        }
+                    }
+                    remote.setValue("servicetype", where.getString("servicetype"), 11l);
+                }
+                if (where.containsKey("scenephone") && !"".equals(where.getString("scenephone"))) {
+                    if (!Pattern.matches("^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", where.getString("scenephone"))) {
+                        return getReturnObject_err("手机格式有误").toString();
+                    }
+                }
+                if (where.containsKey("fsonum") && !StringUtils.isBlank(where.getString("fsonum"))
+                        && !where.getString("fsonum").equalsIgnoreCase("null"))
+                    remote.setValue("fsonum", where.getString("fsonum"), 11l);
+                if (where.containsKey("fprovince"))
+                    remote.setValue("fprovince", where.getString("fprovince"), 11l);
+                if (where.containsKey("fcity"))
+                    remote.setValue("fcity", where.getString("fcity"), 11l);
+                if (where.containsKey("fcounty"))
+                    remote.setValue("fcounty", where.getString("fcounty"), 11l);
+                if (where.containsKey("fsaler"))
+                    remote.setValue("fsaler", where.getString("fsaler"), 11l);
+                if (where.containsKey("faddress"))
+                    remote.setValue("faddress", where.getString("faddress"), 11l);
+                if (where.containsKey("scenefname"))
+                    remote.setValue("scenefname", where.getString("scenefname"), 11l);
+                if (where.containsKey("scenephone")) {
+                    remote.setValue("scenephone", where.getString("scenephone"), 2l);
+                }
+                if (where.containsKey("error_msg"))
+                    remote.setValue("error_msg", where.getString("error_msg"), 11l);
+
+                if (where.containsKey("appsystem"))
+                    remote.setValue("appsystem", where.getString("appsystem"), 11l);
+                if (where.containsKey("errcategory"))
+                    remote.setValue("errcategory", where.getString("errcategory"), 11l);
+
+                if (where.containsKey("servicebegindate") && where.getString("servicebegindate") != null
+                        && where.getString("servicebegindate").length() != 0
+                        && !where.getString("servicebegindate").equalsIgnoreCase("null"))
+
+                    remote.setValue("servicebegindate", where.getString("servicebegindate"), 11l);
+                if (where.containsKey("serviceenddate") && where.getString("serviceenddate") != null
+                        && where.getString("serviceenddate").length() != 0
+                        && !where.getString("serviceenddate").equalsIgnoreCase("null"))
+                    remote.setValue("serviceenddate", where.getString("serviceenddate"), 11l);
+
+                if (where.containsKey("fnotes"))
+                    remote.setValue("fnotes", where.getString("fnotes"), 11l);
+                if (where.containsKey("titems")) {
+                    PaoSetRemote hyafterserviceorder_titem = remote.getPaoSet("HYAFTERSERVICEORDER_TITEM");
+                    hyafterserviceorder_titem.deleteAll();
+                    hyafterserviceorder_titem.save();
+                    JSONArray titems = where.getJSONArray("titems");
+                    Set<String> set = new HashSet<>();
+                    for (Object titem : titems) {
+                        set.add((String) titem);
+                    }
+                    for (String s1 : set) {
+                        PaoRemote remote1 = hyafterserviceorder_titem.addAtEnd();
+                        remote1.setValue("FITEMNO", s1, 11l);
+                    }
+                    hyafterserviceorder_titem.save();
+                }
+                getpaoset.save();
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 提交服务单
+     **/
+    public String submit() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+
+        if (where != null) {
+            try {
+                PaoSetRemote getpaoset = P2Server.getP2Server().getPaoSet("Afterserviceorder", P2Server.getP2Server().getUserInfo(siteid.toUpperCase() + "ADMIN"));
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
+                afterserviceorder.setValue("submitby", hrid, 11l);
+                afterserviceorder.setValue("submitdate", new Date(), 11l);
+                afterserviceorder.submit(true);
+                /*
+                 * 发送邮件
+                 */
+                PaoSetRemote tagents = afterserviceorder.getPaoSet("TAGENTS");
+                String fagentname = "";
+                if (!tagents.isEmpty()) {
+                    fagentname = tagents.getPao(0).getString("fagentname");
+                }
+                PaoSetRemote paoSet = P2Server.getP2Server().getPaoSet("tagents",
+                        P2Server.getP2Server().getUserInfo(siteid.toUpperCase() + "ADMIN"));
+                tagents pao = (tagents) paoSet.getPao(0);
+                String fprovince = "";
+                String fcity = "";
+                String fcounty = "";
+                String faddress = "";
+                if (!StringUtils.isBlank(afterserviceorder.getString("fprovince")))
+                    fprovince = afterserviceorder.getString("fprovince");
+                if (!StringUtils.isBlank(afterserviceorder.getString("fcity")))
+                    fcity = afterserviceorder.getString("fcity");
+                if (!StringUtils.isBlank(afterserviceorder.getString("fcounty")))
+                    fcounty = afterserviceorder.getString("fcounty");
+                if (!StringUtils.isBlank(afterserviceorder.getString("faddress")))
+                    faddress = afterserviceorder.getString("faddress");
+                pao.sendEmail(pao.getMailByHrGroup(siteid + "1011"), "服务申请单提交",
+                        "客户:" + fagentname + ",已提交服务申请:" + afterserviceorder.getString("Servicenum") + ",服务地址:"
+                                + fprovince + fcity + fcounty + faddress + ",请及时处理");
+
+                getpaoset.save();
+
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 退回服务单
+     **/
+    public String sendback() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        // if(StringUtils.isBlank(fagentnum))return
+        // getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum", "backreason"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+
+        if (where != null) {
+            try {
+                PaoSetRemote getpaoset = P2Server.getP2Server().getPaoSet("Afterserviceorder",
+                        P2Server.getP2Server().getSystemUserInfo());
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
+                if (!afterserviceorder.getString("fstatus").equals("待指派")) {
+                    return getReturnObject_err("非待指派不可退回").toString();
+                }
+                if (where.getString("backreason") == null || where.getString("backreason").length() == 0) {
+                    return getReturnObject_err("退回原因为空不可退回").toString();
+                }
+                afterserviceorder.setValue("backreason", where.getString("backreason"));
+                afterserviceorder.setValue("fstatus", "新建", 11L);
+                afterserviceorder.setValue("submitby", "", 11l);
+                afterserviceorder.setValue("submitdate", "", 11l);
+                getpaoset.save();
+
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 删除服务单
+     **/
+    public String delete() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
+                if (!afterserviceorder.getString("fstatus").equals("新建"))
+                    return getReturnObject_err("非新建不可删除").toString();
+                afterserviceorder.delete();
+                getpaoset.save();
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 添加商品明细
+     **/
+    public String addtitems() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum", "titems"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                afterserviceorder afterserviceorder = (afterserviceorder) getpaoset.getPao(0);
+                JSONArray titems = where.getJSONArray("titems");
+                Set<String> set = new HashSet<>();
+                for (Object titem : titems) {
+                    set.add((String) titem);
+                }
+                for (String fitemno : set) {
+                    PaoSetRemote hyafterserviceorder_titem = afterserviceorder.getPaoSet("HYAFTERSERVICEORDER_TITEM");
+                    hyafterserviceorder_titem.setWhere("FITEMNO='" + fitemno + "'");
+                    hyafterserviceorder_titem.reset();
+                    if (hyafterserviceorder_titem.isEmpty()) {
+                        PaoRemote remote = hyafterserviceorder_titem.addAtEnd();
+                        remote.setValue("FITEMNO", fitemno, 2l);
+                        hyafterserviceorder_titem.save();
+                    }
+                }
+                getpaoset.save();
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 删除商品明细
+     **/
+    public String deletetitiems() {
+        if (StringUtils.isBlank(hrid))
+            return getReturnObject_err("hrid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        JSONObject where = content.getJSONObject("where");
+        String s[] = {"servicenum", "titems"};
+        for (String s1 : s) {
+            if (!where.containsKey(s1))
+                return getReturnObject_err("缺少" + s1 + "参数").toString();
+        }
+        if (where != null) {
+            try {
+                JSONArray titems = where.getJSONArray("titems");
+                Set<String> set = new HashSet<>();
+                for (Object titem : titems) {
+                    set.add((String) titem);
+                }
+                PaoSetRemote getpaoset = getpaoset("Afterserviceorder");
+                getpaoset.setInsertSite(siteid);
+                getpaoset.setWhere("Servicenum='" + where.getString("servicenum") + "'");
+                getpaoset.reset();
+                if (getpaoset.isEmpty())
+                    return getReturnObject_err("没有该服务单").toString();
+                PaoRemote pao = getpaoset.getPao(0);
+                PaoSetRemote hyafterserviceorder_titem = pao.getPaoSet("HYAFTERSERVICEORDER_TITEM");
+                for (int i = 0; i < hyafterserviceorder_titem.count(); i++) {
+                    PaoRemote pao1 = hyafterserviceorder_titem.getPao(i);
+                    if (set.contains(pao1.getString("FITEMNO"))) {
+                        pao1.delete();
+                    }
+                }
+                hyafterserviceorder_titem.save();
+                return getReturnObject_suc().toString();
+            } catch (P2Exception e) {
+                e.printStackTrace();
+                return getReturnObject_err(e.getMessage()).toString();
+            }
+        }
+        return getReturnObject_err("缺少where参数").toString();
+    }
+
+    /**
+     * 获取应用系统
+     **/
+    public String get_appsystem() {
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        DBConnect dbConnect = new DBConnect();
+        Rows rows = dbConnect.runSqlQuery("select value from PS_DATABIND_LIST where databindid='APPSYSTEM' and siteid='"
+                + siteid + "' order by SEQUENCE");
+        return getReturnObject_suc(rows, false).toString();
+    }
+
+    /**
+     * 获取服务分类
+     **/
+    public String errcategory() {
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        DBConnect dbConnect = new DBConnect();
+        Rows rows = dbConnect
+                .runSqlQuery("select value from  PS_DATABIND_LIST where databindid='ERRCATEGORY' and siteid='" + siteid
+                        + "' order by SEQUENCE");
+        return getReturnObject_suc(rows, false).toString();
+    }
+
+    /**
+     * 服务分类查询
+     **/
+    public String servicetypeList() {
+        Rows rows = new Rows();
+        Row row1 = new Row();
+        row1.put("value", "售前");
+        Row row2 = new Row();
+        row2.put("value", "售中");
+        Row row3 = new Row();
+        row3.put("value", "售后");
+        Row row4 = new Row();
+        row4.put("value", "历史售后");
+        rows.add(row1);
+        rows.add(row2);
+        rows.add(row3);
+        rows.add(row4);
+        return getReturnObject_suc(rows, true).toString();
+
+    }
+
+    /**
+     * 获取服务分类
+     **/
+    public String getsalerforagent() {
+        if (StringUtils.isBlank(siteid))
+            return getReturnObject_err("siteid为空").toString();
+        if (StringUtils.isBlank(fagentnum))
+            return getReturnObject_err("fagentnum为空").toString();
+        DBConnect dbConnect = new DBConnect();
+        SQLFactory factory = new SQLFactory(this, "查询经销商所属业务员");
+        factory.addParameter("fagentnum", fagentnum);
+        factory.addParameter("siteid", siteid);
+        Rows rows = dbConnect.runSqlQuery(factory.getSQL());
+        return getReturnObject_suc(rows, false).toString();
+    }
 }
 }

+ 1 - 1
src/rest/openapi/restcontroller/wechatapp/system/OBSDocManage.java

@@ -300,7 +300,7 @@ public class OBSDocManage extends Controller {
                  * »ñȡԭÎļþµÄ·ÃÎʵØÖ·
                  * »ñȡԭÎļþµÄ·ÃÎʵØÖ·
                  */
                  */
                 String obsurl = bucketFile.getFileUrl(obsfilename);
                 String obsurl = bucketFile.getFileUrl(obsfilename);
-                ObjectMetadata matedata = bucketFile.getObjectMetadata(obsfilename);
+               // ObjectMetadata matedata = bucketFile.getObjectMetadata(obsfilename);
 //                long contentlength = matedata.getContentLength();
 //                long contentlength = matedata.getContentLength();
 //                String contenttype = matedata.getContentType();
 //                String contenttype = matedata.getContentType();
                 /**
                 /**

+ 13 - 5
src/rest/openapi/restcontroller/wechatapp/tinvoiceapply/SQL/开票经销商选择查询_业务员.sql

@@ -1,6 +1,14 @@
-select fagentnum,fagentname from tagents
-where siteid=$siteid$ and
-(fcheckordermakeinv=1 or
-exists(select distinct t1.fpayagentnum from saorder t1 inner join saorderdetail t2 on t1.siteid=t2.siteid and t1.saorderid=t2.fparentid inner join SAORDER_RECEIVEDVIEW t3 on t2.fparentid=t3.saorderid and t2.saorderdetailid=t3.saorderdetailid where isnull(t3.freceivedamount,0)>isnull(t2.finvoiceamount,0) and t1.fpayagentnum=tagents.fagentnum)
+with #a as(
+select distinct t1.fpayagentnum from saorder t1
+inner join saorderdetail t2 on t1.siteid=t2.siteid and t1.saorderid=t2.fparentid
+inner join SAORDER_RECEIVEDVIEW t3 on t2.fparentid=t3.saorderid and
+t2.saorderdetailid=t3.saorderdetailid where isnull(t3.freceivedamount,0)>isnull(t2.finvoiceamount,0)
+and t1.siteid=$siteid$
+),
+#b as(
+select distinct fagentnum from tagents_field where hrid in $hrid$ and siteid=$siteid$
 )
 )
-and exists (select fagentnum from tagents_field where hrid in $hrid$ and siteid=tagents.siteid and fagentnum=tagents.fagentnum )
+select distinct t1.fagentnum,fagentname from tagents t1
+inner join #b on t1.fagentnum=#b.fagentnum
+inner join #a on t1.fcheckordermakeinv=1 or #a.fpayagentnum=t1.fagentnum
+where t1.siteid=$siteid$