WorkOrder.java 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114
  1. package openapi.restcontroller.housekeeperwebapp.workorder;
  2. import baseclass.tools.GetP2Type;
  3. import net.sf.json.JSONArray;
  4. import net.sf.json.JSONObject;
  5. import openapi.base.Controller;
  6. import openapi.base.SQLFactory;
  7. import openapi.base.data.Row;
  8. import openapi.base.data.Rows;
  9. import openapi.base.data.RowsMap;
  10. import openapi.base.data.db.DBConnect;
  11. import openapi.base.restful.WebClientRest;
  12. import ordernode.ordernode;
  13. import org.apache.commons.lang.StringUtils;
  14. import org.apache.cxf.ws.security.wss4j.policyvalidators.UsernameTokenPolicyValidator;
  15. import org.sqlite.date.DateFormatUtils;
  16. import p2.p2server.P2Server;
  17. import p2.pao.*;
  18. import p2.util.P2AppException;
  19. import p2.util.P2Exception;
  20. import workorder.workorder;
  21. import java.util.*;
  22. public class WorkOrder extends Controller {
  23. public WorkOrder(JSONObject content) {
  24. super(content);
  25. }
  26. /**工单列表**/
  27. public String list(){
  28. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  29. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  30. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  31. JSONObject where = content.getJSONObject("where");
  32. String wherestr="1=1";
  33. String s[]={"fstatus"};
  34. for (String s1 : s) {
  35. if(!where.containsKey(s1)&&!StringUtils.isBlank(where.getString(s1)))return getReturnObject_err("缺少"+s1+"参数").toString();
  36. }
  37. if(where!=null){
  38. DBConnect dbConnect=new DBConnect();
  39. if(where.containsKey("fstatus")&&!StringUtils.isBlank(where.getString("fstatus"))){
  40. wherestr+=" and t.fstatus ='"+where.getString("fstatus")+"' ";
  41. }
  42. SQLFactory factory=new SQLFactory(this,"工单列表查询",pageSize,pageNumber,"t.createdate desc");
  43. factory.addParameter("hrid",hrid);
  44. factory.addParameter("siteid",siteid);
  45. factory.addParameter_SQL("where",wherestr);
  46. SQLFactory factory2=new SQLFactory(this,"工单状态统计");
  47. factory2.addParameter("hrid",hrid);
  48. factory2.addParameter("siteid",siteid);
  49. Rows rows_total = dbConnect.runSqlQuery(factory2.getSQL());
  50. Rows rows = dbConnect.runSqlQuery(factory.getSQL());
  51. if(!rows_total.isEmpty())returnObject.put("rows_total",rows_total.get(0));
  52. return getReturnObject_suc_page(rows,false,0).toString();
  53. }
  54. return getReturnObject_err("缺少where参数").toString();
  55. }
  56. /**工单详情2**/
  57. public String detail2(){
  58. // if (StringUtils.isBlank(hrid)) getReturnObject_err("hrid为空").toString();
  59. // if (StringUtils.isBlank(fagentnum)) getReturnObject_err("fagentnum为空").toString();
  60. // if (StringUtils.isBlank(siteid)) getReturnObject_err("siteid为空").toString();
  61. JSONObject where = content.getJSONObject("where");
  62. String s[] = {"fworknum"};
  63. for (String s1 : s) {
  64. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  65. return getReturnObject_err("缺少" + s1 + "参数").toString();
  66. }
  67. if (where != null) {
  68. DBConnect dbConnect = new DBConnect();
  69. SQLFactory factory = new SQLFactory(this, "工单详情");
  70. factory.addParameter("fworknum", where.getString("fworknum"));
  71. factory.addParameter("siteid", siteid);
  72. Rows rows_details = dbConnect.runSqlQuery(factory.getSQL());
  73. if(!rows_details.isEmpty()){
  74. Row row_detail = rows_details.get(0);
  75. SQLFactory factory_team = new SQLFactory(this, "工单团队查询");
  76. factory_team.addParameter("fworknum", where.getString("fworknum"));
  77. factory_team.addParameter("siteid", row_detail.getString("siteid"));
  78. Rows rows_team = dbConnect.runSqlQuery(factory_team.getSQL());
  79. row_detail.put("team",rows_team);
  80. SQLFactory factory_nodes = new SQLFactory(this, "工单节点一级查询");
  81. factory_nodes.addParameter("fworknum", where.getString("fworknum"));
  82. factory_nodes.addParameter("siteid", row_detail.getString("siteid"));
  83. Rows rows_nodes = dbConnect.runSqlQuery(factory_nodes.getSQL());
  84. for (Row rows_node : rows_nodes) {
  85. SQLFactory factorynode_node = new SQLFactory(this, "工单节点二级查询");
  86. factorynode_node.addParameter("fworknum",where.getString("fworknum"));
  87. factorynode_node.addParameter("supid",rows_node.getInteger("ownerid"));
  88. Rows rows = dbConnect.runSqlQuery(factorynode_node.getSQL());
  89. for (Row row : rows) {
  90. Rows url = dbConnect.runSqlQuery("select tattachmentid,fdocument document,UPPER(postfix) postfix,fobsurl url,serialnumber,type,case when postfix in ('JPG','PNG','JEPG','jpg','png','jepg') then 'image' when postfix in ('MP4','mp4') then 'video' else 'file' end type2 from tattachment where ownertable='ORDERNODE' and ownerid =" + row.getInteger("ownerid"));
  91. row.put("url",url);
  92. }
  93. rows_node.put("child",rows);
  94. }
  95. for (Row rows_node : rows_nodes) {
  96. Rows url = dbConnect.runSqlQuery("select tattachmentid,fdocument document,UPPER(postfix) postfix,fobsurl url,serialnumber,type,case when postfix in ('JPG','PNG','JEPG','jpg','png','jepg') then 'image' when postfix in ('MP4','mp4') then 'video' else 'file' end type2 from tattachment where ownertable='ORDERNODE' and ownerid =" + rows_node.getInteger("ownerid"));
  97. rows_node.put("url",url);
  98. }
  99. row_detail.put("nodes",rows_nodes);
  100. SQLFactory factory_titem = new SQLFactory(this, "工单物料查询");
  101. factory_titem.addParameter("fworknum", where.getString("fworknum"));
  102. factory_titem.addParameter("siteid", row_detail.getString("siteid"));
  103. Rows rows_titems = dbConnect.runSqlQuery(factory_titem.getSQL());
  104. SQLFactory factory_imgurl = new SQLFactory(this, "物料图片查询");
  105. factory_imgurl.addParameter("fagentnum", row_detail.getString("fagentnum"));
  106. factory_imgurl.addParameter("siteid", row_detail.getString("siteid"));
  107. factory_imgurl.addParameter_SQL("fitemno",rows_titems.getInWhere("fitemno"));
  108. Rows rows_titem_img = dbConnect.runSqlQuery(factory_imgurl.getSQL());
  109. RowsMap fitemno = rows_titem_img.toRowsMap("fitemno");
  110. for (Row rows_titem : rows_titems) {
  111. if(fitemno.containsKey(rows_titem.getString("fitemno"))){
  112. rows_titem.put("url",fitemno.get(rows_titem.getString("fitemno")).get(0).getString("url"));
  113. }else{
  114. rows_titem.put("url",null);
  115. }
  116. }
  117. row_detail.put("titems",rows_titems);
  118. return getReturnObject_suc(row_detail,false).toString();
  119. }
  120. return getReturnObject_err("该工单不存在").toString();
  121. }
  122. return getReturnObject_err("缺少where参数").toString();
  123. }
  124. /**工单详情3**/
  125. public String detail3(){
  126. // if (StringUtils.isBlank(hrid)) getReturnObject_err("hrid为空").toString();
  127. // if (StringUtils.isBlank(fagentnum)) getReturnObject_err("fagentnum为空").toString();
  128. // if (StringUtils.isBlank(siteid)) getReturnObject_err("siteid为空").toString();
  129. JSONObject where = content.getJSONObject("where");
  130. String s[] = {"fworknum"};
  131. for (String s1 : s) {
  132. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  133. return getReturnObject_err("缺少" + s1 + "参数").toString();
  134. }
  135. if (where != null) {
  136. try {
  137. PaoSetRemote workorder = getpaoset("Workorder");
  138. workorder.setInsertSite(siteid);
  139. workorder.setWhere("fworknum='" + where.getString("fworknum") + "'");
  140. workorder.reset();
  141. if (!workorder.isEmpty()) {
  142. PaoRemote workorderpao = workorder.getPao(0);
  143. String []from_detail={"fprovince","fcity","fcounty","fstatus","ftype","fworknum","servernum","customername","customephone","createdate","faddress","installer","installerphone","ownerid"};
  144. String []to_detail={"fprovince","fcity","fcounty","fstatus","ftype","fworknum","servernum","customername","customephone","createdate","faddress","installer","installerphone","workorderid"};
  145. Row row_detail = getrow(from_detail,to_detail,workorderpao);
  146. /**工单详情**/
  147. /**
  148. * t.fstatus,t.ftype,t.fworknum,t.servernum,t.customername,t.customephone,convert(varchar,t.createdate,120)createdate,t.faddress,t.installer,
  149. * t.installerphone,t1.fisfillac,t.siteid,t.fagentnum
  150. * **/
  151. PaoSetRemote workordertemplate = workorderpao.getPaoSet("WORKORDERTEMPLATE");
  152. if(!workordertemplate.isEmpty()){
  153. row_detail.put("fisfillac", String.valueOf(workordertemplate.getPao(0).getInt("fisfillac")));
  154. }
  155. /**工单团队查询**/
  156. PaoSetRemote workorder_team = workorderpao.getPaoSet("WORKORDER_TEAM");
  157. Rows rows_team=new Rows();
  158. if(!workorder_team.isEmpty()){
  159. for(int i=0;i<workorder_team.count();i++){
  160. Row row=new Row();
  161. //t.workername,t.ftype role,t.workephone workerllphone
  162. row.put("workername",workorder_team.getPao(i).getString("workername"));
  163. row.put("role",workorder_team.getPao(i).getString("ftype"));
  164. row.put("workerllphone",workorder_team.getPao(i).getString("workephone"));
  165. rows_team.add(row);
  166. }
  167. }
  168. row_detail.put("team",rows_team);
  169. /**工单工序查询**/
  170. PaoSetRemote ordernode = workorderpao.getPaoSet("ORDERNODE");
  171. ordernode.setWhere("oneprocessname is not null");
  172. ordernode.setOrderBy("frownum");
  173. ordernode.reset();
  174. Rows rows_nodes=new Rows();
  175. /**一级工序**/
  176. if(!ordernode.isEmpty()){
  177. String []from_nodes={"frownum","oneprocessname","twoprocessname","operating","operatingtime","fnotes","ownerid","supid","ischilden","isconfirm","fisupload","fisnotes","fisaddtitem","fiscomplete","qualified","fisqualified","fissignature","fisrequirednode"};
  178. String []to_nodes={"frownum","oneprocessname","twoprocessname","operating","operatingtime","fnotes","ordernodeid","supid","ischilden","isconfirm","fisupload","fisnotes","fisaddtitem","fiscomplete","qualified","fisqualified","fissignature","fisrequirednode"};
  179. for(int i=0;i<ordernode.count();i++){
  180. PaoRemote pao = ordernode.getPao(i);
  181. Row row=getrow(from_nodes,to_nodes,pao);
  182. //t.frownum,t.oneprocessname,t.twoprocessname,t.operating,substring( convert(varchar,t.operatingtime,120),1,16)operatingtime,t1.fname operator,
  183. // t.fnotes,t.ordernodeid ownerid,t.supid,t.ischilden,t.isconfirm,t.fisupload,t.fisnotes,t.fisaddtitem,t.fiscomplete
  184. PaoSetRemote paoSet = pao.getPaoSet("$worker", "worker", "workphone='" + pao.getString("operator") + "'");
  185. if(!paoSet.isEmpty()){
  186. row.put("operator",paoSet.getPao(0).getString("fname"));
  187. }else{
  188. row.put("operator",null);
  189. }
  190. /**附件查询**/
  191. //select tattachmentid,fdocument document,UPPER(postfix) postfix,fobsurl url,serialnumber,type,case when postfix in ('JPG','PNG','JEPG','jpg','png','jepg') then 'image' when postfix in ('MP4','mp4') then 'video' else 'file' end type2 from tattachment where
  192. PaoSetRemote paoSet_url = pao.getPaoSet("$tattachment", "tattachment", "ownertable='ORDERNODE' and ownerid =" + pao.getInt("ordernodeid"));
  193. if(!paoSet_url.isEmpty()){
  194. Rows rows=new Rows();
  195. for(int index=0;index<paoSet_url.count();index++){
  196. PaoRemote pao1 = paoSet_url.getPao(index);
  197. Row row1=new Row();
  198. String postfix = pao1.getString("postfix");
  199. row1.put("tattachmentid",pao1.getInt("tattachmentid"));
  200. row1.put("document",pao1.getString("fdocument"));
  201. row1.put("postfix",postfix.toUpperCase());
  202. row1.put("url",pao1.getString("fobsurl"));
  203. row1.put("serialnumber",pao1.getString("serialnumber"));
  204. row1.put("type",pao1.getString("type"));
  205. if(postfix.equalsIgnoreCase("JPG")||postfix.equalsIgnoreCase("PNG")||postfix.equalsIgnoreCase("JEPG")){
  206. row1.put("type2","image");
  207. }else if(postfix.equalsIgnoreCase("mp4")){
  208. row1.put("type2","video");
  209. }else{
  210. row1.put("type2","file");
  211. }
  212. rows.add(row1);
  213. }
  214. row.put("url",rows);
  215. }else{
  216. row.put("url",new Rows());
  217. }
  218. Rows child=new Rows();
  219. PaoSetRemote ordernode2 = workorderpao.getPaoSet("$ORDERNODE","ORDERNODE","fparentid="+workorderpao.getUniqueIDValue()+" and supid="+pao.getUniqueIDValue());
  220. // System.out.println(workorderpao.getUniqueIDValue());
  221. // System.out.println(pao.getInt("supid"));
  222. ordernode2.setOrderBy("frownum");
  223. ordernode2.reset();
  224. /**二级工序**/
  225. String []from_nodes2={"frownum","oneprocessname","twoprocessname","operating","operatingtime","fnotes","ownerid","supid","ischilden","isconfirm","fisupload","fisnotes","fisaddtitem","fiscomplete","qualified","fisqualified","fissignature","fisrequirednode"};
  226. String []to_nodes2={"frownum","oneprocessname","twoprocessname","operating","operatingtime","fnotes","ordernodeid","supid","ischilden","isconfirm","fisupload","fisnotes","fisaddtitem","fiscomplete","qualified","fisqualified","fissignature","fisrequirednode"};
  227. for(int j=0;j<ordernode2.count();j++){
  228. PaoRemote pao1 = ordernode2.getPao(j);
  229. Row row1=getrow(from_nodes2, to_nodes2,pao1);
  230. PaoSetRemote paoSet2 = pao.getPaoSet("$worker", "worker", "workphone='" + pao1.getString("operator") + "'");
  231. if(!paoSet2.isEmpty()){
  232. row1.put("operator",paoSet2.getPao(0).getString("fname"));
  233. }else{
  234. row1.put("operator",null);
  235. }
  236. PaoSetRemote paoSet_url2 = pao.getPaoSet("$tattachment", "tattachment", "ownertable='ORDERNODE' and ownerid =" + pao1.getInt("ordernodeid"));
  237. if(!paoSet_url.isEmpty()){
  238. Rows rows=new Rows();
  239. for(int index=0;index<paoSet_url2.count();index++){
  240. PaoRemote pao2 = paoSet_url2.getPao(index);
  241. Row row2=new Row();
  242. String postfix = pao2.getString("postfix");
  243. row2.put("tattachmentid",pao2.getInt("tattachmentid"));
  244. row2.put("document",pao2.getString("fdocument"));
  245. row2.put("postfix",postfix.toUpperCase());
  246. row2.put("url",pao2.getString("fobsurl"));
  247. row2.put("serialnumber",pao2.getString("serialnumber"));
  248. row2.put("type",pao2.getString("type"));
  249. if(postfix.equalsIgnoreCase("JPG")||postfix.equalsIgnoreCase("PNG")||postfix.equalsIgnoreCase("JEPG")){
  250. row2.put("type2","image");
  251. }else if(postfix.equalsIgnoreCase("mp4")){
  252. row2.put("type2","video");
  253. }else{
  254. row2.put("type2","file");
  255. }
  256. rows.add(row2);
  257. }
  258. row1.put("url",rows);
  259. }else{
  260. row1.put("url",new Rows());
  261. }
  262. child.add(row1);
  263. }
  264. row.put("child",child);
  265. rows_nodes.add(row);
  266. }
  267. }
  268. row_detail.put("nodes",rows_nodes);
  269. /**工单物料查询**/
  270. PaoSetRemote workorder_titem = workorderpao.getPaoSet("workorder_titem");
  271. Rows rows_titems=new Rows();
  272. String url="null";
  273. PaoSetRemote sysvars = getpaoset("sysvars");
  274. sysvars.setInsertSite(workorderpao.getInsertSite());
  275. if(!sysvars.isEmpty())url=WebClientRest.FILE_URL+sysvars.getPao(0).getInt("fdefaultitempic");
  276. if(!workorder_titem.isEmpty()){
  277. for(int i=0;i<workorder_titem.count();i++){
  278. PaoRemote pao = workorder_titem.getPao(i);
  279. Row row=new Row();
  280. row.put("fitemno",pao.getString("fitemno"));
  281. row.put("fitemname",pao.getString("fitemname"));
  282. row.put("fmodel",pao.getString("fmodel"));
  283. row.put("fspec",pao.getString("fspec"));
  284. row.put("fqty",pao.getInt("fqty"));
  285. PaoSetRemote tagents_titem = pao.getPaoSet("TAGENTS_TITEM");
  286. if(!tagents_titem.isEmpty()){
  287. PaoRemote tagents_titem_pao = tagents_titem.getPao(0);
  288. PaoSetRemote paoSet = tagents_titem_pao.getPaoSet("$doclinks", "doclinks", "ownertable='TAGENTS_TITEM' and ownerid=" + tagents_titem_pao.getUniqueIDValue());
  289. paoSet.setOrderBy("doclinksid desc");
  290. paoSet.reset();
  291. if(!paoSet.isEmpty()){
  292. row.put("url",WebClientRest.FILE_URL+paoSet.getPao(0).getInt("docinfoid"));
  293. }else{
  294. PaoSetRemote titem = tagents_titem_pao.getPaoSet("TITEM");
  295. if(!titem.isEmpty()){
  296. PaoRemote pao1 = titem.getPao(0);
  297. PaoSetRemote paoSet1 = pao1.getPaoSet("$doclinks", "doclinks", "ownertable='TITEM' and ownerid=" + pao1.getUniqueIDValue());
  298. paoSet1.setOrderBy("doclinksid desc");
  299. paoSet1.reset();
  300. if(!paoSet1.isEmpty()){
  301. row.put("url",WebClientRest.FILE_URL+paoSet1.getPao(0).getInt("docinfoid"));
  302. }else{
  303. row.put("url",url);
  304. }
  305. }else{
  306. row.put("url",url);
  307. }
  308. }
  309. }else{
  310. row.put("url",url);
  311. }
  312. rows_titems.add(row);
  313. }
  314. }
  315. row_detail.put("titems",rows_titems);
  316. return getReturnObject_suc(row_detail,false).toString();
  317. }
  318. return getReturnObject_err("该工单不存在").toString();
  319. } catch (P2Exception e) {
  320. e.printStackTrace();
  321. return getReturnObject_err(e.getMessage()).toString();
  322. }
  323. }
  324. return null;
  325. }
  326. public Row getrow(String []from,String[]to,PaoRemote pao) throws P2Exception {
  327. GetP2Type getP2Type = new GetP2Type(pao.getName());
  328. String pattern="yyyy-MM-dd HH:mm:ss";
  329. Row row=new Row();
  330. for (int i = 0; i < from.length; i++) {
  331. String p2Type = getP2Type.getP2Type(to[i]);
  332. //DECIMAL,FLOAT,INTEGER,SMALLINT,BOOLEAN
  333. if(p2Type.equals("BOOLEAN")){
  334. row.put(from[i],String.valueOf(pao.getInt(to[i])));
  335. }else if(p2Type.equals("INTEGER")||p2Type.equals("SMALLINT")){
  336. row.put(from[i],pao.getInt(to[i]));
  337. }else if(p2Type.equals("DECIMAL")||p2Type.equals("FLOAT")){
  338. row.put(from[i],pao.getDouble(to[i]));
  339. }else if(p2Type.equals("DATE")||p2Type.equals("DATETIME")){
  340. Date date = pao.getDate(to[i]);
  341. if(date!=null)row.put(from[i],DateFormatUtils.format(date,pattern));
  342. else row.put(from[i],"");
  343. }else {
  344. row.put(from[i],pao.getString(to[i]));
  345. }
  346. }
  347. return row;
  348. }
  349. /**节点详情**/
  350. public String nodedetail(){
  351. // if (StringUtils.isBlank(hrid)) getReturnObject_err("hrid为空").toString();
  352. // if (StringUtils.isBlank(fagentnum)) getReturnObject_err("fagentnum为空").toString();
  353. // if (StringUtils.isBlank(siteid)) getReturnObject_err("siteid为空").toString();
  354. JSONObject where = content.getJSONObject("where");
  355. String s[] = {"fworknum","frownum"};
  356. for (String s1 : s) {
  357. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  358. return getReturnObject_err("缺少" + s1 + "参数").toString();
  359. }
  360. if (where != null) {
  361. DBConnect dbConnect = new DBConnect();
  362. long start1 =System.currentTimeMillis();
  363. SQLFactory factory=new SQLFactory(this,"工单节点详情查询");
  364. factory.addParameter("fworknum",where.getString("fworknum"));
  365. factory.addParameter("frownum",where.getString("frownum"));
  366. Rows rows = dbConnect.runSqlQuery(factory.getSQL());
  367. long start2 =System.currentTimeMillis();
  368. long start3 =start2;
  369. if(!rows.isEmpty()){
  370. Row rowdetail = rows.get(0);
  371. if(WebClientRest.FISUPLOADFOROBS){
  372. SQLFactory factoryurl=new SQLFactory(this,"华为云附件查询");
  373. factoryurl.addParameter("ownerid",rowdetail.getInteger("ownerid"));
  374. Rows rowsimg = dbConnect.runSqlQuery(factoryurl.getSQL());
  375. rowdetail.put("url",rowsimg);
  376. start3 =System.currentTimeMillis();
  377. }else{
  378. SQLFactory factoryurl=new SQLFactory(this,"工单节点详情附件查询");
  379. factoryurl.addParameter("ownerid",rowdetail.getInteger("ownerid"));
  380. Rows rowsimg = dbConnect.runSqlQuery(factoryurl.getSQL());
  381. for (Row row : rowsimg) {
  382. row.put("url", WebClientRest.FILE_URL+row.getString("docinfoid"));
  383. }
  384. rowdetail.put("url",rowsimg);
  385. }
  386. // Rows rows_team = dbConnect.runSqlQuery("select t.workername,t.workerphone from ordernode_team t\n" +
  387. // "where EXISTS(select 1 from ordernode t1 where t1.ordernodeid=t.fparentid and t1.ordernodeid="+rowdetail.getInteger("ownerid")+") and siteid='"+siteid+"'");
  388. // SQLFactory factory_team_url = new SQLFactory(this, "工单节点参与人员头像查询");
  389. // factory_team_url.addParameter("siteid",rowdetail.getString("siteid"));
  390. // factory_team_url.addParameter_SQL("workerphone",rows_team.getInWhere("workerphone"));
  391. // Rows rows_team_url = dbConnect.runSqlQuery(factory_team_url.getSQL());
  392. // RowsMap workerphone = rows_team_url.toRowsMap("workerphone");
  393. // long start4 =System.currentTimeMillis();
  394. // for (Row row : rows_team) {
  395. // if(workerphone.containsKey(row.getString("workerphone"))){
  396. // row.put("url",workerphone.get(row.getString("workerphone")).get(0).getString("url"));
  397. // }else{
  398. // row.put("url",null);
  399. // }
  400. // }
  401. /**节点关联物料查询**/
  402. Rows rows_titem = dbConnect.runSqlQuery("select t.fitemno,t.fitemname,t.fmodel,t.fspec,t.fqty from \n" +
  403. "workorder_titem t\n" +
  404. "where EXISTS(select 1 from Workorder t1 where t1.fworknum='"+where.getString("fworknum")+"' and t1.Workorderid=t.fparentid)\n" +
  405. " and t.sourcenode='"+where.getString("frownum")+"'");
  406. long start5 =System.currentTimeMillis();
  407. SQLFactory factory_imgurl = new SQLFactory(this, "物料图片查询");
  408. factory_imgurl.addParameter("fagentnum", rowdetail.getString("fagentnum"));
  409. factory_imgurl.addParameter("siteid", rowdetail.getString("siteid"));
  410. factory_imgurl.addParameter_SQL("fitemno",rows_titem.getInWhere("fitemno"));
  411. Rows rows_titem_img = dbConnect.runSqlQuery(factory_imgurl.getSQL());
  412. RowsMap fitemno = rows_titem_img.toRowsMap("fitemno");
  413. for (Row row : rows_titem) {
  414. if(fitemno.containsKey(row.getString("fitemno"))){
  415. row.put("url",fitemno.get(row.getString("fitemno")).get(0).getString("url"));
  416. }else{
  417. row.put("url",null);
  418. }
  419. }
  420. long start6 =System.currentTimeMillis()
  421. ;
  422. // rowdetail.put("team",rows_team);
  423. rowdetail.put("titem",rows_titem);
  424. System.err.println("1="+(start2-start1));
  425. System.err.println("2="+(start3-start2));
  426. // System.err.println("3="+(start4-start3));
  427. // System.err.println("4="+(start5-start4));
  428. System.err.println("5="+(start6-start5));
  429. return getReturnObject_suc(rowdetail,false).toString();
  430. }
  431. return getReturnObject_err("该节点不是末级节点").toString();
  432. }
  433. return getReturnObject_err("缺少where参数").toString();
  434. }
  435. /**工单添加物料**/
  436. public String addtitem(){
  437. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  438. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  439. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  440. JSONObject where = content.getJSONObject("where");
  441. String s[] = {"fworknum","frownum"};
  442. for (String s1 : s) {
  443. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  444. return getReturnObject_err("缺少" + s1 + "参数").toString();
  445. }
  446. if (where != null) {
  447. try {
  448. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  449. workorder.setInsertSite(siteid);
  450. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  451. workorder.reset();
  452. if(!workorder.isEmpty()){
  453. workorder workorderPao = (workorder)workorder.getPao(0);
  454. if(!workorderPao.getString("fstatus").equals("进行中"))getReturnObject_err("该工单不在进行中状态").toString();
  455. PaoSetRemote ordernode = workorderPao.getPaoSet("ordernode");
  456. ordernode.setWhere("frownum="+where.getInt("frownum"));
  457. ordernode.reset();
  458. if(!ordernode.isEmpty()){
  459. ordernode ordernodePao = (ordernode) ordernode.getPao(0);
  460. if(ordernodePao.getBoolean("fisaddtitem")){
  461. if(where.containsKey("titems")){
  462. PaoSetRemote workorder_titem = workorderPao.getPaoSet("workorder_titem");
  463. workorder_titem.deleteAll();
  464. JSONArray titems = where.getJSONArray("titems");
  465. for (Object titem : titems) {
  466. JSONObject titemnode=(JSONObject) titem;
  467. PaoRemote remote = workorder_titem.addAtEnd();
  468. remote.setValue("FITEMNO",titemnode.getString("fitemno"),2l);
  469. remote.setValue("FQTY",titemnode.getInt("fqty"),11l);
  470. remote.setValue("sourcenode",String.valueOf(ordernodePao.getInt("FROWNUM")),11l);
  471. }
  472. // workorder_titem.save();
  473. // ordernode.save();
  474. workorder.save();
  475. return getReturnObject_suc().toString();
  476. }
  477. return getReturnObject_err("titems参数为空").toString();
  478. }
  479. return getReturnObject_err("该节点没有授权添加物料").toString();
  480. }
  481. return getReturnObject_err("该节点不存在").toString();
  482. }
  483. return getReturnObject_err("该工单不存在").toString();
  484. } catch (P2Exception e) {
  485. return getReturnObject_err(e.getMessage()).toString();
  486. }
  487. }
  488. return getReturnObject_err("缺少where参数").toString();
  489. }
  490. /**工单修改物料**/
  491. public String updatetitem(){
  492. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  493. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  494. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  495. JSONObject where = content.getJSONObject("where");
  496. String s[] = {"fworknum","frownum"};
  497. for (String s1 : s) {
  498. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  499. return getReturnObject_err("缺少" + s1 + "参数").toString();
  500. }
  501. if (where != null) {
  502. try {
  503. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  504. workorder.setInsertSite(siteid);
  505. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  506. workorder.reset();
  507. if(!workorder.isEmpty()){
  508. workorder workorderPao = (workorder)workorder.getPao(0);
  509. if(!workorderPao.getString("fstatus").equals("进行中"))getReturnObject_err("该工单不在进行中状态").toString();
  510. PaoSetRemote ordernode = workorderPao.getPaoSet("ordernode");
  511. ordernode.setWhere("frownum="+where.getInt("frownum"));
  512. ordernode.reset();
  513. if(!ordernode.isEmpty()){
  514. ordernode ordernodePao = (ordernode) ordernode.getPao(0);
  515. if(ordernodePao.getBoolean("fisaddtitem")){
  516. if(where.containsKey("titems")){
  517. PaoSetRemote workorder_titem = workorderPao.getPaoSet("workorder_titem");
  518. JSONArray titems = where.getJSONArray("titems");
  519. for (Object titem : titems) {
  520. JSONObject titemnode=(JSONObject) titem;
  521. int i = 0;
  522. PaoRemote paoRemote = null;
  523. while ((paoRemote = workorder_titem.getPao(i)) != null) {
  524. if (paoRemote.getString("fitemno").equals(titemnode.getString("fitemno"))) {
  525. paoRemote.setValue("FQTY",titemnode.getInt("fqty"),11l);
  526. break;
  527. }
  528. i++;
  529. }
  530. }
  531. // workorder_titem.save();
  532. // ordernode.save();
  533. workorder.save();
  534. return getReturnObject_suc().toString();
  535. }
  536. return getReturnObject_err("titems参数为空").toString();
  537. }
  538. return getReturnObject_err("该节点没有授权添加物料").toString();
  539. }
  540. return getReturnObject_err("该节点不存在").toString();
  541. }
  542. return getReturnObject_err("该工单不存在").toString();
  543. } catch (P2Exception e) {
  544. return getReturnObject_err(e.getMessage()).toString();
  545. }
  546. }
  547. return getReturnObject_err("缺少where参数").toString();
  548. }
  549. /**更新节点内容**/
  550. public String updatenode(){
  551. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  552. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  553. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  554. JSONObject where = content.getJSONObject("where");
  555. String s[] = {"fworknum","frownum"};
  556. for (String s1 : s) {
  557. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  558. return getReturnObject_err("缺少" + s1 + "参数").toString();
  559. }
  560. if (where != null) {
  561. try {
  562. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  563. workorder.setInsertSite(siteid);
  564. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  565. workorder.reset();
  566. if(!workorder.isEmpty()){
  567. workorder workorderPao = (workorder)workorder.getPao(0);
  568. if(workorderPao.fisSuspend())return getReturnObject_err("工单处于暂停中").toString();
  569. if(workorderPao.fisvoid())return getReturnObject_err("工单已作废").toString();
  570. if(!workorderPao.getString("fstatus").equals("进行中"))return getReturnObject_err("非进行中工单不可修改").toString();
  571. PaoSetRemote ordernodeset = workorderPao.getPaoSet("ordernode");
  572. ordernodeset.setWhere("frownum="+where.getInt("frownum"));
  573. ordernodeset.reset();
  574. if(!ordernodeset.isEmpty()){
  575. ordernode ordernodePao = (ordernode) ordernodeset.getPao(0);
  576. if(ordernodePao.getBoolean("ischilden"))return getReturnObject_err("该工序不是末级节点").toString();
  577. //if(ordernodePao.getBoolean("isconfirm"))return getReturnObject_err("该工序已经确认").toString();
  578. if(where.containsKey("fnotes"))ordernodePao.setValue("fnotes",where.getString("fnotes"),11l);
  579. /**添加团队**/
  580. if(where.containsKey("team")){
  581. JSONArray team = where.getJSONArray("team");
  582. PaoSetRemote ordernode_team1 = ordernodePao.getPaoSet("ordernode_team");
  583. ordernode_team1.deleteAll();
  584. Set<String> set=new HashSet<>();
  585. for (Object o : team) {
  586. String worker=(String)o;
  587. set.add(worker);
  588. }
  589. for (String s1 : set) {
  590. PaoSetRemote ordernode_team = ordernodePao.getPaoSet("ordernode_team");
  591. PaoRemote remote = ordernode_team.addAtEnd();
  592. remote.setValue("workerphone",s1,2l);
  593. }
  594. }
  595. /**添加是否合格项**/
  596. if(where.containsKey("qualified")){
  597. ordernodePao.setValue("qualified",where.getBoolean("qualified"),11l);
  598. }
  599. if(where.containsKey("explain")){
  600. ordernodePao.setValue("explain",where.getString("explain"),11l);
  601. }
  602. if(where.containsKey("isconfirm")){
  603. if(where.getBoolean("isconfirm")){
  604. ordernodePao.setValue("isconfirm",true,11l);
  605. ordernodePao.setValue("Operator",hrid,11l);
  606. ordernodePao.setValue("fstatus","完成",11l);
  607. Row completeAndTotal = workorderPao.getCompleteAndTotal();
  608. double count = completeAndTotal.getDouble("count");
  609. double complete = completeAndTotal.getInteger("complete");
  610. double result=(complete+1)/count*100;
  611. workorderPao.setValue("progress",result>=100?100:result,11l);
  612. ordernodePao.setValue("Operatingtime",new Date(),11l);
  613. String fiscomplate = ordernodePao.fiscomplate();
  614. if(!fiscomplate.equals("true"))return getReturnObject_err(fiscomplate).toString();
  615. }else{
  616. ordernodePao.setValue("isconfirm",false,11l);
  617. ordernodePao.setValue("fstatus","进行中",11l);
  618. Row completeAndTotal = workorderPao.getCompleteAndTotal();
  619. double count = completeAndTotal.getDouble("count");
  620. double complete = completeAndTotal.getInteger("complete");
  621. workorderPao.setValue("progress",(complete-1)/count*100,11l);
  622. }
  623. }
  624. //设置是否操作过
  625. ordernodePao.setValue("fisOperator",true,11l);
  626. //ordernode.save();
  627. workorder.save();
  628. return getReturnObject_suc().toString();
  629. }
  630. getReturnObject_err("该节点不存在").toString();
  631. }
  632. return getReturnObject_err("该工单不存在").toString();
  633. } catch (P2Exception e) {
  634. return getReturnObject_err(e.getMessage()).toString();
  635. }
  636. }
  637. return getReturnObject_err("缺少where参数").toString();
  638. }
  639. /**退回工单**/
  640. public String backorder(){
  641. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  642. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  643. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  644. JSONObject where = content.getJSONObject("where");
  645. String s[] = {"fworknum","reason"};
  646. for (String s1 : s) {
  647. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  648. return getReturnObject_err("缺少" + s1 + "参数").toString();
  649. }
  650. if (where != null) {
  651. try {
  652. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  653. workorder.setInsertSite(siteid);
  654. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  655. workorder.reset();
  656. if(!workorder.isEmpty()){
  657. workorder workorderPao = (workorder) workorder.getPao(0);
  658. workorderPao.back();
  659. workorder.save();
  660. return getReturnObject_suc().toString();
  661. }
  662. return getReturnObject_err("该工单不存在").toString();
  663. } catch (P2Exception e) {
  664. return getReturnObject_err(e.getMessage()).toString();
  665. }
  666. }
  667. return getReturnObject_err("缺少where参数").toString();
  668. }
  669. /**完结工单**/
  670. public String completeorder(){
  671. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  672. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  673. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  674. JSONObject where = content.getJSONObject("where");
  675. String s[] = {"fworknum"};
  676. for (String s1 : s) {
  677. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  678. return getReturnObject_err("缺少" + s1 + "参数").toString();
  679. }
  680. if (where != null) {
  681. try {
  682. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  683. workorder.setInsertSite(siteid);
  684. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  685. workorder.reset();
  686. if(!workorder.isEmpty()){
  687. workorder workorderPao = (workorder) workorder.getPao(0);
  688. PaoSetRemote workorder_errormsg_set = workorderPao.getPaoSet("workorder_errormsg");
  689. workorder_errormsg_set.setWhere("fisprocess=0");
  690. workorder_errormsg_set.reset();
  691. if(!workorder_errormsg_set.isEmpty()){
  692. return getReturnObject_err("该工单存在申请待处理,不能继续操作").toString();
  693. }
  694. if(where.containsKey("massage")){
  695. JSONObject msg = where.getJSONObject("massage");
  696. int type = msg.getInt("type");
  697. if(type==1){//生成质保卡
  698. workorderPao.complete(true,hrid);
  699. /**客户积分更新**/
  700. workorder.save();
  701. return getReturnObject_suc().toString();
  702. }else if(type==2){//不生成质保卡
  703. workorderPao.complete(false,hrid);
  704. /**客户积分更新**/
  705. workorder.save();
  706. return getReturnObject_suc().toString();
  707. }else if(type==3){
  708. String reason ="";
  709. if(msg.containsKey("reason")) {
  710. if(!StringUtils.isBlank(msg.getString("reason"))) {
  711. reason = msg.getString("reason");
  712. }
  713. }
  714. PaoSetRemote ordernodeset = workorderPao.getPaoSet("ordernode");
  715. ordernodeset.setWhere("fisrequirednode =1 and isconfirm=0 and ischilden=0");
  716. ordernodeset.reset();
  717. if(ordernodeset.count()>0) {
  718. if(StringUtils.isBlank(ordernodeset.getPao(0).getString("TWOPROCESSNAME"))) {
  719. throw new P2AppException("", "还有必填的服务工序【"+ordernodeset.getPao(0).getString("oneprocessname")+"】没有确认");
  720. }else if(StringUtils.isBlank(ordernodeset.getPao(0).getString("oneprocessname"))) {
  721. throw new P2AppException("", "还有必填的服务工序【"+ordernodeset.getPao(0).getString("TWOPROCESSNAME")+"】没有确认");
  722. }
  723. }
  724. PaoSetRemote workorder_errormsg = workorderPao.getPaoSet("workorder_errormsg");
  725. PaoRemote remote = workorder_errormsg.addAtEnd();
  726. remote.setValue("ftype","工单异常",11l);
  727. remote.setValue("reason",reason,11l);
  728. PaoSetRemote paoSet = remote.getPaoSet("$worker", "worker", "workphone='" + hrid + "'");
  729. if(!paoSet.isEmpty()){
  730. remote.setValue("CREATEBY",paoSet.getPao(0).getString("FNAME"),11l);
  731. }
  732. workorderPao.setValue("fstatus","质保卡审批",11l);
  733. workorder.save();
  734. return getReturnObject_suc().toString();
  735. }else{
  736. workorderPao.complete(true,hrid);
  737. /**客户积分更新**/
  738. workorder.save();
  739. return getReturnObject_suc().toString();
  740. }
  741. }else{
  742. workorderPao.complete(true,hrid);
  743. /**客户积分更新**/
  744. workorder.save();
  745. return getReturnObject_suc().toString();
  746. }
  747. }
  748. return getReturnObject_err("该工单不存在").toString();
  749. } catch (P2Exception e) {
  750. e.printStackTrace();
  751. return getReturnObject_err(e.getMessage()).toString();
  752. } catch (Exception e) {
  753. e.printStackTrace();
  754. return getReturnObject_err(e.getMessage()).toString();
  755. }
  756. }
  757. return getReturnObject_err("缺少where参数").toString();
  758. }
  759. /**开始工单**/
  760. public String start(){
  761. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  762. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  763. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  764. JSONObject where = content.getJSONObject("where");
  765. String s[] = {"fworknum"};
  766. for (String s1 : s) {
  767. if (!where.containsKey(s1) && !StringUtils.isBlank(where.getString(s1)))
  768. return getReturnObject_err("缺少" + s1 + "参数").toString();
  769. }
  770. if (where != null) {
  771. try {
  772. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  773. workorder.setInsertSite(siteid);
  774. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  775. workorder.reset();
  776. if(!workorder.isEmpty()){
  777. workorder workorderPao = (workorder) workorder.getPao(0);
  778. workorderPao.start();
  779. workorder.save();
  780. return getReturnObject_suc().toString();
  781. }
  782. return getReturnObject_err("该工单不存在").toString();
  783. } catch (P2Exception e) {
  784. return getReturnObject_err(e.getMessage()).toString();
  785. }
  786. }
  787. return getReturnObject_err("缺少where参数").toString();
  788. }
  789. /**经销商规则查询**/
  790. public String integralrule(){
  791. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  792. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  793. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  794. DBConnect dbConnect=new DBConnect();
  795. Rows rows = dbConnect.runSqlQuery("select t.ftype,t.calculationrules from Integralrule t\n" +
  796. "where EXISTS(select 1 from TAGENTS t1 where t1.TAGENTSid=t.fparentid and t1.FAGENTNUM='" + fagentnum + "') and siteid='" + siteid + "'");
  797. return getReturnObject_suc(rows,false).toString();
  798. }
  799. /**工单添加AC积分**/
  800. public String addACIntegralrule(){
  801. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  802. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  803. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  804. JSONObject where = content.getJSONObject("where");
  805. String s[] = {"fworknum","aintegralrule","cintegralrule"};
  806. for (String s1 : s) {
  807. if (!where.containsKey(s1))
  808. return getReturnObject_err("缺少" + s1 + "参数").toString();
  809. }
  810. try {
  811. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  812. workorder.setInsertSite(siteid);
  813. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  814. workorder.reset();
  815. if(!workorder.isEmpty()){
  816. PaoRemote pao = workorder.getPao(0);
  817. if (where != null) {
  818. /**A积分设置**/
  819. if(where.containsKey("aintegralrule")) {
  820. JSONObject aintegralrule_objects = where.getJSONObject("aintegralrule");
  821. PaoSetRemote aintegralrule = pao.getPaoSet("AINTEGRALRULE");
  822. if (!aintegralrule.isEmpty()) {
  823. PaoRemote remote = aintegralrule.getPao(0);
  824. if (!aintegralrule_objects.containsKey("calculationrules"))
  825. return getReturnObject_err("没有填写规则参数").toString();
  826. remote.setValue("calculationrules", aintegralrule_objects.getString("calculationrules"));
  827. remote.setValue("fname", aintegralrule_objects.getString("fname"), 11l);
  828. remote.setValue("phone", aintegralrule_objects.getString("phone"), 11l);
  829. if (remote.getString("calculationrules").equals("管材") || remote.getString("calculationrules").equals("丝扣嵌件")) {
  830. remote.setValue("fvalue", aintegralrule_objects.getInt("fvalue"), 11l);
  831. }
  832. if (remote.getString("calculationrules").equals("户型")) {
  833. remote.setValue("balcony", aintegralrule_objects.getInt("balcony"), 11l);
  834. remote.setValue("kitchen", aintegralrule_objects.getInt("kitchen"), 11l);
  835. remote.setValue("toilet", aintegralrule_objects.getInt("toilet"), 11l);
  836. }
  837. } else {
  838. PaoRemote remote = aintegralrule.addAtEnd();
  839. remote.setValue("ftype", "A积分", 11l);
  840. if (!aintegralrule_objects.containsKey("calculationrules"))
  841. return getReturnObject_err("没有填写规则参数").toString();
  842. remote.setValue("calculationrules", aintegralrule_objects.getString("calculationrules"));
  843. remote.setValue("fname", aintegralrule_objects.getString("fname"), 11l);
  844. remote.setValue("phone", aintegralrule_objects.getString("phone"), 11l);
  845. if (remote.getString("calculationrules").equals("管材") || remote.getString("calculationrules").equals("丝扣嵌件")) {
  846. remote.setValue("fvalue", aintegralrule_objects.getInt("fvalue"), 11l);
  847. }
  848. if (remote.getString("calculationrules").equals("户型")) {
  849. remote.setValue("balcony", aintegralrule_objects.getInt("balcony"), 11l);
  850. remote.setValue("kitchen", aintegralrule_objects.getInt("kitchen"), 11l);
  851. remote.setValue("toilet", aintegralrule_objects.getInt("toilet"), 11l);
  852. }
  853. }
  854. // PaoSetRemote personnel = P2Server.getP2Server().getPaoSet("personnel", P2Server.getP2Server().getSystemUserInfo());
  855. // personnel.setInsertSite(siteid);
  856. // personnel.setWhere("customerphone='" + aintegralrule_objects.getString("phone") + "'");
  857. // personnel.reset();
  858. // if (personnel.isEmpty()) {
  859. // if(!StringUtils.isBlank(aintegralrule_objects.getString("fname"))&&!StringUtils.isBlank(aintegralrule_objects.getString("phone"))) {
  860. // PaoRemote remote = personnel.addAtEnd();
  861. // remote.setValue("customername", aintegralrule_objects.getString("fname"), 11l);
  862. // remote.setValue("customerphone", aintegralrule_objects.getString("phone"), 11l);
  863. // remote.setValue("FAGENTNUM", fagentnum, 11l);
  864. // }
  865. // }
  866. // personnel.save();
  867. }
  868. /**C积分设置**/
  869. if(where.containsKey("cintegralrule")) {
  870. JSONObject cintegralrule_objects = where.getJSONObject("cintegralrule");
  871. PaoSetRemote cintegralrule = pao.getPaoSet("CINTEGRALRULE");
  872. if (!cintegralrule.isEmpty()) {
  873. PaoRemote remote = cintegralrule.getPao(0);
  874. if (!cintegralrule_objects.containsKey("calculationrules"))
  875. return getReturnObject_err("没有填写规则参数").toString();
  876. remote.setValue("calculationrules", cintegralrule_objects.getString("calculationrules"));
  877. remote.setValue("fname", cintegralrule_objects.getString("fname"), 11l);
  878. remote.setValue("phone", cintegralrule_objects.getString("phone"), 11l);
  879. if (remote.getString("calculationrules").equals("管材") || remote.getString("calculationrules").equals("丝扣嵌件")) {
  880. remote.setValue("fvalue", cintegralrule_objects.getInt("fvalue"), 11l);
  881. }
  882. if (remote.getString("calculationrules").equals("户型")) {
  883. remote.setValue("balcony", cintegralrule_objects.getInt("balcony"), 11l);
  884. remote.setValue("kitchen", cintegralrule_objects.getInt("kitchen"), 11l);
  885. remote.setValue("toilet", cintegralrule_objects.getInt("toilet"), 11l);
  886. }
  887. } else {
  888. PaoRemote remote = cintegralrule.addAtEnd();
  889. if (!cintegralrule_objects.containsKey("calculationrules"))
  890. return getReturnObject_err("没有填写规则参数").toString();
  891. remote.setValue("ftype", "C积分", 11l);
  892. remote.setValue("calculationrules", cintegralrule_objects.getString("calculationrules"));
  893. remote.setValue("fname", cintegralrule_objects.getString("fname"), 11l);
  894. remote.setValue("phone", cintegralrule_objects.getString("phone"), 11l);
  895. if (remote.getString("calculationrules").equals("管材") || remote.getString("calculationrules").equals("丝扣嵌件")) {
  896. remote.setValue("fvalue", cintegralrule_objects.getInt("fvalue"), 11l);
  897. }
  898. if (remote.getString("calculationrules").equals("户型")) {
  899. remote.setValue("balcony", cintegralrule_objects.getInt("balcony"), 11l);
  900. remote.setValue("kitchen", cintegralrule_objects.getInt("kitchen"), 11l);
  901. remote.setValue("toilet", cintegralrule_objects.getInt("toilet"), 11l);
  902. }
  903. }
  904. // PaoSetRemote personnel2 = P2Server.getP2Server().getPaoSet("personnel", P2Server.getP2Server().getSystemUserInfo());
  905. // personnel2.setInsertSite(siteid);
  906. // personnel2.setWhere("customerphone='" + cintegralrule_objects.getString("phone") + "'");
  907. // personnel2.reset();
  908. // if (personnel2.isEmpty()) {
  909. // if(!StringUtils.isBlank(cintegralrule_objects.getString("fname"))&&!StringUtils.isBlank(cintegralrule_objects.getString("phone"))) {
  910. // PaoRemote remote = personnel2.addAtEnd();
  911. // remote.setValue("customername", cintegralrule_objects.getString("fname"), 11l);
  912. // remote.setValue("customerphone", cintegralrule_objects.getString("phone"), 11l);
  913. // remote.setValue("FAGENTNUM", fagentnum, 11l);
  914. // }
  915. // }
  916. // personnel2.save();
  917. }
  918. }else{
  919. return getReturnObject_err("缺少where参数").toString();
  920. }
  921. }else{
  922. return getReturnObject_err("没有该工单").toString();
  923. }
  924. workorder.save();
  925. } catch (P2Exception e) {
  926. e.printStackTrace();
  927. return getReturnObject_err(e.getMessage()).toString();
  928. }
  929. return getReturnObject_suc().toString();
  930. }
  931. /**查询工单AC积分**/
  932. public String workorder_AC(){
  933. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  934. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  935. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  936. JSONObject where = content.getJSONObject("where");
  937. String s[] = {"fworknum"};
  938. for (String s1 : s) {
  939. if (!where.containsKey(s1))
  940. return getReturnObject_err("缺少" + s1 + "参数").toString();
  941. }
  942. if(where!=null){
  943. DBConnect dbConnect=new DBConnect();
  944. Rows rows = dbConnect.runSqlQuery("select t.ftype,t.calculationrules,t.fvalue,t.balcony,t.kitchen,t.toilet,t.fname,t.phone from WORKORDER_AC t\n" +
  945. "where EXISTS(select 1 from Workorder t1 where t1.Workorderid=t.fparentid and t1.fworknum='" + where.getString("fworknum") + "')");
  946. return getReturnObject_suc(rows,false).toString();
  947. }
  948. return getReturnObject_err("where参数不存在").toString();
  949. }
  950. /**工单是否合格**/
  951. public String fisqualified(){
  952. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  953. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  954. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  955. JSONObject where = content.getJSONObject("where");
  956. String s[] = {"fworknum"};
  957. for (String s1 : s) {
  958. if (!where.containsKey(s1))
  959. return getReturnObject_err("缺少" + s1 + "参数").toString();
  960. }
  961. if(where!=null){
  962. SQLFactory factory=new SQLFactory(this,"工单是否合格");
  963. factory.addParameter("fworknum",where.getString("fworknum"));
  964. DBConnect dbConnect=new DBConnect();
  965. Rows rows = dbConnect.runSqlQuery(factory.getSQL());
  966. return getReturnObject_suc(rows.get(0),false).toString();
  967. }
  968. return getReturnObject_err("where参数不存在").toString();
  969. }
  970. /**查询现场联系人,手机号,地址**/
  971. public String findscenefname(){
  972. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  973. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  974. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  975. JSONObject where = content.getJSONObject("where");
  976. String s[] = {"fworknum"};
  977. for (String s1 : s) {
  978. if (!where.containsKey(s1))
  979. return getReturnObject_err("缺少" + s1 + "参数").toString();
  980. }
  981. if(where!=null){
  982. DBConnect dbConnect=new DBConnect();
  983. Rows rows = dbConnect.runSqlQuery("select t.scenefname,t.scenephone,t.faddress,t.customername,t.customephone from Workorder t\n" +
  984. "where t.fworknum='"+where.getString("fworknum")+"'");
  985. if(!rows.isEmpty())
  986. return getReturnObject_suc(rows.get(0),false).toString();
  987. else
  988. return getReturnObject_err("没有该工单").toString();
  989. }
  990. return getReturnObject_err("where参数不存在").toString();
  991. }
  992. /**更新现场联系人,手机号,地址**/
  993. public String updatescenefname(){
  994. if(StringUtils.isBlank(hrid))return getReturnObject_err("hrid为空").toString();
  995. if(StringUtils.isBlank(fagentnum))return getReturnObject_err("fagentnum为空").toString();
  996. if(StringUtils.isBlank(siteid))return getReturnObject_err("siteid为空").toString();
  997. JSONObject where = content.getJSONObject("where");
  998. String s[] = {"fworknum"};
  999. for (String s1 : s) {
  1000. if (!where.containsKey(s1))
  1001. return getReturnObject_err("缺少" + s1 + "参数").toString();
  1002. }
  1003. if(where!=null){
  1004. try {
  1005. PaoSetRemote workorder = P2Server.getP2Server().getPaoSet("Workorder", P2Server.getP2Server().getSystemUserInfo());
  1006. workorder.setInsertSite(siteid);
  1007. workorder.setWhere("fworknum='"+where.getString("fworknum")+"'");
  1008. workorder.reset();
  1009. if(workorder.isEmpty())return getReturnObject_err("没有该工单").toString();
  1010. PaoRemote pao = workorder.getPao(0);
  1011. PaoSetRemote paoSetRemote = pao.getPaoSet("SERVICEFORM");
  1012. // if(where.containsKey("scenefname")){
  1013. // pao.setValue("scenefname",where.getString("scenefname"),11l);
  1014. // }
  1015. // if(where.containsKey("scenephone")){
  1016. // pao.setValue("scenephone",where.getString("scenephone"),11l);
  1017. // }
  1018. if(where.containsKey("faddress")&&!StringUtils.isBlank(where.getString("faddress"))){
  1019. pao.setValue("faddress",where.getString("faddress"),11l);
  1020. if (!paoSetRemote.isEmpty()) {
  1021. paoSetRemote.getPao(0).setValue("faddress", where.getString("faddress"),11l);
  1022. }
  1023. }
  1024. workorder.save();
  1025. return getReturnObject_suc().toString();
  1026. } catch (P2Exception e) {
  1027. return getReturnObject_err(e.getMessage()).toString();
  1028. }
  1029. }
  1030. return getReturnObject_err("where参数不存在").toString();
  1031. }
  1032. }