tpartreimbursement.java 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. package restcontroller.webmanage.sale.tpartreimbursement;
  2. import beans.accountbalance.Accountbalance;
  3. import beans.accountbalance.CashbillEntity;
  4. import beans.data.BatchDeleteErr;
  5. import beans.datacontrllog.DataContrlLog;
  6. import beans.stockbill.Stockbill;
  7. import com.alibaba.fastjson2.JSONArray;
  8. import com.alibaba.fastjson2.JSONObject;
  9. import common.Controller;
  10. import common.YosException;
  11. import common.annotation.API;
  12. import common.annotation.CACHEING;
  13. import common.annotation.CACHEING_CLEAN;
  14. import common.data.*;
  15. import org.apache.commons.lang.StringUtils;
  16. import restcontroller.R;
  17. import restcontroller.sale.stockbill.stockbill;
  18. import restcontroller.webmanage.sale.order.Order;
  19. import restcontroller.webmanage.sale.order.OrderItems;
  20. import java.math.BigDecimal;
  21. import java.text.SimpleDateFormat;
  22. import java.util.ArrayList;
  23. import java.util.Calendar;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import static beans.stockbill.bills.XSCK.getCashbillEntity;
  27. @API(title = "配件核销单")
  28. public class tpartreimbursement extends Controller {
  29. public tpartreimbursement(JSONObject content) throws YosException {
  30. super(content);
  31. }
  32. @API(title = "新增更新配件核销单", apiversion = R.ID2025081811143103.v1.class)
  33. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class})
  34. public String insertormodify_tpartreimbursement() throws YosException {
  35. ArrayList<String> sqlList = new ArrayList<>();
  36. // 表名
  37. String tableName = "sa_tpartreimbursement";
  38. Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
  39. String remarks = content.getStringValue("remarks");
  40. String billdate = content.getStringValue("billdate");
  41. if (sys_enterpriseid <= 0) {
  42. sys_enterpriseid = content.getLong("sys_enterpriseid");
  43. }
  44. if (sa_tpartreimbursementid <= 0) {
  45. sa_tpartreimbursementid = createTableID(tableName);
  46. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName);
  47. insertSQL.setUniqueid(sa_tpartreimbursementid);
  48. insertSQL.setSiteid(siteid);
  49. insertSQL.setValue("billdate", StringUtils.isBlank(billdate) ? getDateTime_Str() : billdate);
  50. insertSQL.setValue("remarks", remarks);
  51. insertSQL.setValue("billno", createBillCode("tpartreimbursement"));
  52. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  53. insertSQL.setValue("createby", username);
  54. insertSQL.setDateValue("createdate");
  55. insertSQL.setValue("changeby", username);
  56. insertSQL.setDateValue("changedate");
  57. insertSQL.setValue("status", "新建");
  58. //制单方 1表示工厂方,0表示客户方
  59. if (usertype == 21 || usertype == 22) {
  60. insertSQL.setValue("createflag", 0);
  61. } else {
  62. insertSQL.setValue("createflag", 1);
  63. }
  64. sqlList.add(insertSQL.getSQL());
  65. sqlList.add(DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "新增", "配件核销单新增成功").getSQL());
  66. } else {
  67. Rows rows = dbConnect.runSqlQuery(
  68. "SELECT status,billdate from sa_tpartreimbursement WHERE sa_tpartreimbursementid = "
  69. + sa_tpartreimbursementid);
  70. if (rows.isNotEmpty()) {
  71. if (rows.get(0).getString("status").equals("新建")) {
  72. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName);
  73. updateSQL.setUniqueid(sa_tpartreimbursementid);
  74. updateSQL.setSiteid(siteid);
  75. updateSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  76. updateSQL.setValue("remarks", remarks);
  77. updateSQL.setValue("changeby", username);
  78. updateSQL.setDateValue("changedate");
  79. updateSQL.setValue("billdate", StringUtils.isBlank(billdate) ? rows.get(0).getString("billdate") : billdate);
  80. sqlList.add(updateSQL.getSQL());
  81. sqlList.add(DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "更新", "配件核销单更新成功").getSQL());
  82. } else {
  83. return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
  84. }
  85. } else {
  86. return getErrReturnObject().setErrMsg("该配件核销单不存在").toString();
  87. }
  88. }
  89. dbConnect.runSqlUpdate(sqlList);
  90. content.put("sa_tpartreimbursementid", sa_tpartreimbursementid);
  91. return query_tpartreimbursementMain();
  92. }
  93. @API(title = "配件核销单详情", apiversion = R.ID2025081811144603.v1.class)
  94. @CACHEING
  95. public String query_tpartreimbursementMain() throws YosException {
  96. long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
  97. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursement", "*");
  98. querySQL.setTableAlias("t1");
  99. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid","enterprisename","abbreviation");
  100. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid","agentnum");
  101. querySQL.setWhere("t1.siteid", siteid);
  102. querySQL.setWhere("t1.sa_tpartreimbursementid", sa_tpartreimbursementid);
  103. Rows rows = querySQL.query();
  104. QuerySQL querySQLdetail = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementid", "sa_tpartreimbursementdetailid","qty","isverified");
  105. querySQLdetail.setTableAlias("t1");
  106. querySQLdetail.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid", "price");
  107. querySQLdetail.setWhere("t1.siteid", siteid);
  108. querySQLdetail.setWhere("t1.sa_tpartreimbursementid", rows.toArrayList("sa_tpartreimbursementid"));
  109. querySQLdetail.addQueryFields("amount","ROUND(t2.price*t1.qty)");
  110. Rows rowsdetail = querySQLdetail.query();
  111. RowsMap rowsMap = rowsdetail.toRowsMap("sa_tpartreimbursementid");
  112. for (Row row : rows) {
  113. row.put("totalamount", rowsMap.get(row.getString("sa_tpartreimbursementid")).sum("amount"));
  114. row.put("offamount", rowsMap.get(row.getString("sa_tpartreimbursementid")).toRowsMap("isverified").get("1").sum("amount"));
  115. }
  116. Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
  117. return getSucReturnObject().setData(row).toString();
  118. }
  119. @API(title = "配件核销单列表", apiversion = R.ID2025081811145503.v1.class)
  120. @CACHEING
  121. public String querysa_tpartreimbursementList() throws YosException {
  122. StringBuffer where = new StringBuffer(" 1=1 ");
  123. if (sys_enterpriseid > 0) {
  124. where.append(" and t1.sys_enterpriseid=" + sys_enterpriseid);
  125. }
  126. if (content.containsKey("where")) {
  127. JSONObject whereObject = content.getJSONObject("where");
  128. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  129. where.append(" and(");
  130. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  131. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  132. where.append(")");
  133. }
  134. if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
  135. where.append(" and t1.billdate >='").append(whereObject.getString("begindate")).append("' ");
  136. }
  137. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  138. where.append(" and t1.billdate <='").append(whereObject.getString("enddate")).append("' ");
  139. }
  140. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  141. where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
  142. }
  143. }
  144. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursement", "*");
  145. querySQL.setTableAlias("t1");
  146. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid","enterprisename","abbreviation");
  147. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid","agentnum");
  148. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_tradefield", "t4", "t4.sys_enterpriseid = t1.sys_enterpriseid AND t4.siteid = t1.siteid");
  149. querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t5", "t5.sa_saleareaid = t4.sa_saleareaid AND t5.siteid = t4.siteid","areanum","areaname","areafullname");
  150. querySQL.setWhere("t1.siteid", siteid);
  151. querySQL.setWhere(where);
  152. if(sys_enterpriseid <= 0){
  153. querySQL.setWhere("((t1.createflag=0 and t1.status!='新建') or t1.createflag=1)");
  154. }else{
  155. querySQL.setWhere("((t1.createflag=1 and t1.status!='新建') or t1.createflag=0)");
  156. }
  157. querySQL.setPage(pageSize, pageNumber);
  158. querySQL.setOrderBy("t1.sa_tpartreimbursementid desc");
  159. Rows rows = querySQL.query();
  160. QuerySQL querySQLdetail = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementid", "sa_tpartreimbursementdetailid","qty","isverified");
  161. querySQLdetail.setTableAlias("t1");
  162. querySQLdetail.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid", "price");
  163. querySQLdetail.setWhere("t1.siteid", siteid);
  164. querySQLdetail.setWhere("t1.sa_tpartreimbursementid", rows.toArrayList("sa_tpartreimbursementid"));
  165. querySQLdetail.addQueryFields("amount","ROUND(t2.price*t1.qty)");
  166. Rows rowsdetail = querySQLdetail.query();
  167. RowsMap rowsMap = rowsdetail.toRowsMap("sa_tpartreimbursementid");
  168. for (Row row : rows) {
  169. row.put("totalamount", rowsMap.get(row.getString("sa_tpartreimbursementid")).sum("amount"));
  170. row.put("offamount", rowsMap.get(row.getString("sa_tpartreimbursementid")).toRowsMap("isverified").get("1").sum("amount"));
  171. }
  172. return getSucReturnObject().setData(rows).toString();
  173. }
  174. @API(title = "删除", apiversion = R.ID2025081811150603.v1.class)
  175. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class})
  176. public String delete() throws YosException {
  177. JSONArray sa_tpartreimbursementids = content.getJSONArray("sa_tpartreimbursementids");
  178. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_tpartreimbursementids.size());
  179. for (Object o : sa_tpartreimbursementids) {
  180. long sa_tpartreimbursementid = Long.parseLong(o.toString());
  181. Rows RowsStatus = dbConnect.runSqlQuery("select sa_tpartreimbursementid,status from sa_tpartreimbursement where siteid='"
  182. + siteid + "' and sa_tpartreimbursementid='" + sa_tpartreimbursementid + "'");
  183. if (RowsStatus.isNotEmpty()) {
  184. if (!RowsStatus.get(0).getString("status").equals("新建")) {
  185. batchDeleteErr.addErr(sa_tpartreimbursementid, "非新建状态的配件核销单无法删除");
  186. continue;
  187. }
  188. }
  189. ArrayList<String> sqllist = new ArrayList<>();
  190. sqllist.add("delete from sa_tpartreimbursement where siteid='" + siteid + "' and sa_tpartreimbursementid=" + sa_tpartreimbursementid);
  191. sqllist.add("delete from sa_tpartreimbursementdetail where siteid='" + siteid + "' and sa_tpartreimbursementid=" + sa_tpartreimbursementid);
  192. dbConnect.runSqlUpdate(sqllist);
  193. }
  194. return batchDeleteErr.getReturnObject().toString();
  195. }
  196. @API(title = "提交反提交", apiversion = R.ID2025081811223203.v1.class)
  197. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class})
  198. public String submit() throws YosException {
  199. Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
  200. boolean issubmit = content.getBooleanValue("issubmit");
  201. Rows rows = dbConnect.runSqlQuery("select t1.billno,t1.status,createflag from sa_tpartreimbursement t1 where t1.sa_tpartreimbursementid ='"
  202. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "'");
  203. for (Row row : rows) {
  204. if (issubmit) {
  205. if (!row.getString("status").equals("新建")) {
  206. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的配件核销单为非新建状态,无法提交")
  207. .toString();
  208. }
  209. } else {
  210. if (!row.getString("status").equals("提交")) {
  211. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的配件核销单为非提交状态,无法反提交")
  212. .toString();
  213. }
  214. }
  215. }
  216. ArrayList<String> sqlList = new ArrayList<>();
  217. if (issubmit) {
  218. Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursementdetail t1 where t1.sa_tpartreimbursementid ='"
  219. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "'");
  220. QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
  221. tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(checkqty)");
  222. tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
  223. tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
  224. QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
  225. orderitemsQuery.setTableAlias("t1");
  226. orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
  227. orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
  228. orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
  229. Rows orderitemsrows = orderitemsQuery.query();
  230. RowsMap rowsMap = orderitemsrows.toRowsMap("sa_orderitemsid");
  231. if(!rows.get(0).getBoolean("createflag")){
  232. for (Row row :orderitemsrows) {
  233. if(row.getBigDecimal("qty").compareTo(BigDecimal.ZERO)<0){
  234. return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
  235. }
  236. }
  237. }
  238. for (int i = 0; i < rowsdetail.size(); i++) {
  239. if(rowsMap.containsKey(rowsdetail.get(i).getString("sa_orderitemsid"))){
  240. if(rowsMap.get(rowsdetail.get(i).getString("sa_orderitemsid")).get(0).getBigDecimal("qty").compareTo(rowsdetail.get(i).getBigDecimal("qty"))<0){
  241. return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
  242. }
  243. }else{
  244. return getErrReturnObject().setErrMsg("订单行不存在,请检查").toString();
  245. }
  246. }
  247. sqlList.add(
  248. DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "提交", "配件核销单提交成功").getSQL());
  249. } else {
  250. sqlList.add(
  251. DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "反提交", "配件核销单反提交成功").getSQL());
  252. }
  253. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_tpartreimbursement");
  254. updateSQL.setUniqueid(sa_tpartreimbursementid);
  255. updateSQL.setSiteid(siteid);
  256. updateSQL.setValue("status", issubmit ? "提交" : "新建");
  257. updateSQL.setValue("submitby", issubmit ? username : "");
  258. if (issubmit) {
  259. updateSQL.setDateValue("submitdate");
  260. } else {
  261. updateSQL.setValue("submitdate", "null");
  262. }
  263. sqlList.add(updateSQL.getSQL());
  264. dbConnect.runSqlUpdate(sqlList);
  265. return getSucReturnObject().toString();
  266. }
  267. @API(title = "审核", apiversion = R.ID2025081811295903.v1.class)
  268. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class})
  269. public String check() throws YosException {
  270. Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
  271. Rows rows = dbConnect.runSqlQuery("select t1.billno,t1.status from sa_tpartreimbursement t1 where t1.sa_tpartreimbursementid ='"
  272. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "'");
  273. for (Row row : rows) {
  274. if (!row.getString("status").equals("提交")) {
  275. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的配件核销单为非提交状态,无法审核")
  276. .toString();
  277. }
  278. }
  279. Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursementdetail t1 where t1.sa_tpartreimbursementid ='"
  280. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "'");
  281. QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
  282. tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(checkqty)");
  283. tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
  284. tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
  285. QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
  286. orderitemsQuery.setTableAlias("t1");
  287. orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
  288. orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
  289. orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
  290. Rows orderitemsrows = orderitemsQuery.query();
  291. RowsMap rowsMap = orderitemsrows.toRowsMap("sa_orderitemsid");
  292. if(!rows.get(0).getBoolean("createflag")){
  293. for (Row row :orderitemsrows) {
  294. if(row.getBigDecimal("qty").compareTo(BigDecimal.ZERO)<0){
  295. return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
  296. }
  297. }
  298. }
  299. for (int i = 0; i < rowsdetail.size(); i++) {
  300. if(rowsMap.containsKey(rowsdetail.get(i).getString("sa_orderitemsid"))){
  301. if(rowsMap.get(rowsdetail.get(i).getString("sa_orderitemsid")).get(0).getBigDecimal("qty").compareTo(rowsdetail.get(i).getBigDecimal("qty"))<0){
  302. return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
  303. }
  304. }else{
  305. return getErrReturnObject().setErrMsg("订单行不存在,请检查").toString();
  306. }
  307. }
  308. ArrayList<String> sqlList = new ArrayList<>();
  309. sqlList.add(
  310. DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "审核", "配件核销单审核成功").getSQL());
  311. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_tpartreimbursement");
  312. updateSQL.setUniqueid(sa_tpartreimbursementid);
  313. updateSQL.setSiteid(siteid);
  314. updateSQL.setValue("status", "审核");
  315. updateSQL.setValue("checkby", username);
  316. updateSQL.setDateValue("checkdate");
  317. sqlList.add(updateSQL.getSQL());
  318. dbConnect.runSqlUpdate(sqlList);
  319. return getSucReturnObject().toString();
  320. }
  321. @API(title = "反审核", apiversion = R.ID2025121717464803.v1.class)
  322. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class})
  323. public String uncheck() throws YosException {
  324. Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
  325. Rows rows = dbConnect.runSqlQuery("select t1.billno,t1.status from sa_tpartreimbursement t1 where t1.sa_tpartreimbursementid ='"
  326. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "'");
  327. Rows rowsdetail = dbConnect.runSqlQuery("select * from sa_tpartreimbursementdetail t1 where t1.sa_tpartreimbursementid ='"
  328. + sa_tpartreimbursementid + "' and t1.siteid='" + siteid + "' and t1.isverified=1");
  329. for (Row row : rows) {
  330. if (!row.getString("status").equals("审核")) {
  331. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的配件核销单为非审核状态,无法反审核")
  332. .toString();
  333. }
  334. }
  335. if(rowsdetail.isNotEmpty()){
  336. return getErrReturnObject().setErrMsg("有配件行已核销,核销申请单不能反审核").toString();
  337. }
  338. ArrayList<String> sqlList = new ArrayList<>();
  339. sqlList.add(
  340. DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "反审核", "配件核销单反审核成功").getSQL());
  341. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_tpartreimbursement");
  342. updateSQL.setUniqueid(sa_tpartreimbursementid);
  343. updateSQL.setSiteid(siteid);
  344. updateSQL.setValue("status", "提交");
  345. updateSQL.setValue("checkby", "");
  346. updateSQL.setValue("checkdate","null");
  347. sqlList.add(updateSQL.getSQL());
  348. dbConnect.runSqlUpdate(sqlList);
  349. return getSucReturnObject().toString();
  350. }
  351. @API(title = "选择要核销的配件核销单明细", apiversion = R.ID2025081909593203.v1.class)
  352. @CACHEING
  353. public String quertpartreimbursementdetailList() throws YosException {
  354. /*
  355. * 过滤条件设置
  356. */
  357. long sys_enterpriseid = content.getLong("sys_enterpriseid");
  358. StringBuffer where = new StringBuffer(" 1=1 ");
  359. if (content.containsKey("where")) {
  360. JSONObject whereObject = content.getJSONObject("where");
  361. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  362. where.append(" and(");
  363. where.append("t3.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  364. where.append("or t3.model like'%").append(whereObject.getString("condition")).append("%' ");
  365. where.append("or t3.spec like'%").append(whereObject.getString("condition")).append("%' ");
  366. where.append("or t3.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  367. where.append(")");
  368. }
  369. }
  370. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementdetailid", "remarks","qty","checkqty", "sa_orderitemsid", "sa_tpartreimbursementid");
  371. querySQL.setTableAlias("t1");
  372. querySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price", "amount", "rowno", "cardno", "offstatus", "billingstatus");
  373. querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t2.itemid = t3.itemid AND t2.siteid = t3.siteid", "itemid","itemno", "itemname", "spec", "model");
  374. querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t4", "t2.sa_orderid = t4.sa_orderid AND t2.siteid = t4.siteid", "sonum");
  375. querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t5", "t2.cardno = t5.cardno AND t2.siteid = t5.siteid", "name", "phonenumber");
  376. querySQL.addJoinTable(JOINTYPE.inner, "sa_tpartreimbursement", "t6", "t1.sa_tpartreimbursementid = t6.sa_tpartreimbursementid AND t1.siteid = t6.siteid", "billno", "submitdate", "checkdate", "remarks");
  377. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t7", "t6.sys_enterpriseid = t7.sys_enterpriseid AND t6.siteid = t7.siteid", "abbreviation", "enterprisename");
  378. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t8", "t8.sys_enterpriseid = t6.sys_enterpriseid AND t8.siteid = t6.siteid", "agentnum");
  379. querySQL.setSiteid(siteid);
  380. querySQL.setWhere("t6.status='审核' and t1.isverified=0 and t6.sys_enterpriseid=" + sys_enterpriseid);
  381. querySQL.setWhere(where.toString());
  382. querySQL.setPage(pageSize, pageNumber);
  383. Rows rows = querySQL.query();
  384. return getSucReturnObject().setData(rows).toString();
  385. }
  386. @API(title = "查询当月剩余可核销金额", apiversion = R.ID2025081815152503.v1.class)
  387. @CACHEING
  388. public String queryReimbursableAmount() throws YosException {
  389. sys_enterpriseid = content.getLong("sys_enterpriseid");
  390. Rows sumamountRows = dbConnect.runSqlQuery("select min(t1.payamount) payamount, min(t1.paydiscountamount) paydiscountamount,t1.st_stockbillid from st_stockbill t1 " +
  391. "inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid " +
  392. "inner join sa_order t3 on t2.sa_orderid=t3.sa_orderid and t2.siteid=t3.siteid" +
  393. " where t1.siteid='" + siteid + "' and t1.status='审核' and t1.rb=1 and t1.type='销售出库' and t3.type='配件订单' and t3.sys_enterpriseid='" + sys_enterpriseid + "' and DATE_FORMAT( t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) group by t1.st_stockbillid");
  394. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill","payamount","paydiscountamount");
  395. querySQL.setTableAlias("t1");
  396. querySQL.addJoinTable(JOINTYPE.left, "st_stockbill_items", "t2", "t2.st_stockbillid = t1.st_stockbillid AND t2.siteid = t1.siteid","amount");
  397. querySQL.setSiteid(siteid);
  398. querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
  399. querySQL.setWhere("t1.sourceobject='tpartreimbursement' and t1.status='审核' and t1.type='销售出库' and DATE_FORMAT(t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )");
  400. Rows rows = querySQL.query();
  401. HashMap<String,BigDecimal> map =new HashMap<>();
  402. map.put("amount",sumamountRows.sum("payamount").subtract(rows.sum("payamount")));
  403. map.put("discountamount",sumamountRows.sum("paydiscountamount").subtract(rows.sum("paydiscountamount")));
  404. return getSucReturnObject().setData(map).toString();
  405. }
  406. @API(title = "查询审核需核销金额", apiversion = R.ID2025081815213903.v1.class)
  407. @CACHEING
  408. public String queryCheckAmount() throws YosException {
  409. JSONArray sa_tpartreimbursementdetailids = content.getJSONArray("sa_tpartreimbursementdetailids");
  410. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "checkqty");
  411. querySQL.setTableAlias("t1");
  412. querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price");
  413. querySQL.setSiteid(siteid);
  414. querySQL.addQueryFields("amount","ROUND(t1.checkqty*t2.price, 2)");
  415. querySQL.setWhere("t1.sa_tpartreimbursementdetailid", sa_tpartreimbursementdetailids);
  416. Rows rows = querySQL.query();
  417. return getSucReturnObject().setData(rows.sum("amount")).toString();
  418. }
  419. @API(title = "核销", apiversion = R.ID2025081814422703.v1.class)
  420. @CACHEING_CLEAN(apiClass = {tpartreimbursement.class, stockbill.class, Order.class, OrderItems.class})
  421. public String hexiao() throws YosException {
  422. ArrayList<String> sqllist = new ArrayList<>();
  423. BigDecimal amount =BigDecimal.ZERO;
  424. BigDecimal discountamount =BigDecimal.ZERO;
  425. long sys_enterpriseid = content.getLong("sys_enterpriseid");
  426. Rows sumamountRows = dbConnect.runSqlQuery("select min(t1.payamount) payamount, min(t1.paydiscountamount) paydiscountamount,t1.st_stockbillid from st_stockbill t1 " +
  427. "inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid " +
  428. "inner join sa_order t3 on t2.sa_orderid=t3.sa_orderid and t2.siteid=t3.siteid" +
  429. " where t1.siteid='" + siteid + "' and t1.status='审核' and t1.rb=1 and t1.type='销售出库' and t3.type='配件订单' and t3.sys_enterpriseid='" + sys_enterpriseid + "' and DATE_FORMAT( t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' ) group by t1.st_stockbillid");
  430. QuerySQL querySQL1 = SQLFactory.createQuerySQL(this, "st_stockbill","payamount","paydiscountamount");
  431. querySQL1.setTableAlias("t1");
  432. querySQL1.addJoinTable(JOINTYPE.left, "st_stockbill_items", "t2", "t2.st_stockbillid = t1.st_stockbillid AND t2.siteid = t1.siteid","amount");
  433. querySQL1.setSiteid(siteid);
  434. querySQL1.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
  435. querySQL1.setWhere("t1.sourceobject='tpartreimbursement' and t1.status='审核' and t1.type='销售出库' and DATE_FORMAT(t1.checkdate, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )");
  436. Rows rows1 = querySQL1.query();
  437. HashMap<String,BigDecimal> map =new HashMap<>();
  438. amount=sumamountRows.sum("payamount").subtract(rows1.sum("payamount"));
  439. discountamount=sumamountRows.sum("paydiscountamount").subtract(rows1.sum("paydiscountamount"));
  440. JSONArray sa_tpartreimbursementdetailids = content.getJSONArray("sa_tpartreimbursementdetailids");
  441. JSONArray iteminfos = content.getJSONArray("iteminfos");
  442. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementdetailid","isverified","qty","sa_orderitemsid","hongbillno");
  443. querySQL.setTableAlias("t1");
  444. querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid");
  445. querySQL.addJoinTable(JOINTYPE.left, "sa_tpartreimbursement", "t3", "t1.sa_tpartreimbursementid = t3.sa_tpartreimbursementid AND t1.siteid = t2.siteid","sa_tpartreimbursementid","billno");
  446. querySQL.setSiteid(siteid);
  447. querySQL.setWhere("t1.sa_tpartreimbursementdetailid", sa_tpartreimbursementdetailids);
  448. Rows rows = querySQL.query();
  449. ArrayList<String> billnolist = rows.toArrayList("hongbillno");
  450. ArrayList<String> sa_tpartreimbursementidList = rows.toArrayList("sa_tpartreimbursementid");
  451. billnolist.add("111");
  452. QuerySQL stockbillquerySQL = SQLFactory.createQuerySQL(this, "st_stockbill", "billno");
  453. stockbillquerySQL.setTableAlias("t1");
  454. stockbillquerySQL.setSiteid(siteid);
  455. stockbillquerySQL.setWhere("t1.billno",billnolist);
  456. Rows stockbillrows =stockbillquerySQL.query();
  457. RowsMap stockbillrowsMap = stockbillrows.toRowsMap("billno");
  458. for (Row row : rows) {
  459. if (StringUtils.isNotBlank(row.getString("hongbillno"))) {
  460. if(stockbillrowsMap.containsKey(row.getString("hongbillno"))){
  461. return getErrReturnObject().setErrMsg("存在核销生成的红字出库单,无法核销").toString();
  462. }
  463. }
  464. }
  465. // QuerySQL querySQLgroup = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_orderitemsid");
  466. // querySQLgroup.setTableAlias("t1");
  467. // querySQLgroup.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid");
  468. // querySQLgroup.setSiteid(siteid);
  469. // querySQLgroup.addQueryFields("sumqty", "sum(t1.qty)");
  470. // querySQLgroup.setWhere("t1.sa_tpartreimbursementdetailid", sa_tpartreimbursementdetailids);
  471. // querySQLgroup.addGroupBy("sa_orderitemsid");
  472. // Rows rowsgroup = querySQLgroup.query();
  473. // for (Row row : rows) {
  474. // if (row.getBoolean("isverified")) {
  475. // return getErrReturnObject().setErrMsg("存在记录已核销,请检查").toString();
  476. // }
  477. // sqllist.add("update sa_tpartreimbursementdetail set isverified=1 where sa_tpartreimbursementdetailid=" + row.getLong("sa_tpartreimbursementdetailid"));
  478. // }
  479. // for (Row row : rowsgroup) {
  480. // sqllist.add("update sa_orderitems set verifiedqty=ifnull(verifiedqty,0)+"+row.getBigDecimal("sumqty")+" where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
  481. // }
  482. String tableName = "st_stockbill";
  483. Rows stocks = dbConnect.runSqlQuery("select stockid from st_stock where stockno='111' and siteid='" + siteid + "'");
  484. Rows department = dbConnect.runSqlQuery("select departmentid from sys_department where depname='售后部' and siteid='" + siteid + "'");
  485. List<Long> list = new ArrayList<>();
  486. for (Object object : iteminfos) {
  487. list.add(((JSONObject)object).getLong("itemid"));
  488. }
  489. RowsMap itemRowsMap = SQLFactory.createQuerySQL(this, "plm_item", "*").setWhere("itemid", list).query().toRowsMap("itemid");
  490. long st_stockbillid = createTableID(tableName);
  491. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName);
  492. insertSQL.setUniqueid(st_stockbillid);
  493. insertSQL.setSiteid(siteid);
  494. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
  495. insertSQL.setValue("rec_contactsid", 0);
  496. if (department.isEmpty()) {
  497. insertSQL.setValue("departmentid", 0);
  498. } else {
  499. insertSQL.setValue("departmentid", department.get(0).getLong("departmentid"));
  500. }
  501. if (stocks.isEmpty()) {
  502. insertSQL.setValue("stockid", 0);
  503. } else {
  504. insertSQL.setValue("stockid", stocks.get(0).getLong("stockid"));
  505. }
  506. insertSQL.setValue("type", "销售出库");
  507. insertSQL.setValue("typemx", "");
  508. insertSQL.setValue("sa_supplierid", content.getLongValue("sa_supplierid"));
  509. insertSQL.setValue("rb", 0);
  510. insertSQL.setValue("remarks", "配件核销;" + content.getStringValue("remarks"));
  511. insertSQL.setValue("billdate", getDate_Str());
  512. String billno = createBillCode("stockbill");
  513. insertSQL.setValue("billno", billno);
  514. insertSQL.setValue("outplace", "谈桥");
  515. insertSQL.setValue("delivery", "");
  516. insertSQL.setValue("invoice_enterprisename", "");
  517. insertSQL.setValue("invoice_address", "");
  518. insertSQL.setValue("invoice_taxno", "");
  519. insertSQL.setValue("tracknumber", "");
  520. insertSQL.setValue("isconfirm", 0);
  521. insertSQL.setValue("sourceobject", "tpartreimbursement");
  522. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
  523. Calendar calendar = Calendar.getInstance();
  524. insertSQL.setValue("period", dateFormat.format(calendar.getTime()));
  525. insertSQL.setValue("createby", username);
  526. insertSQL.setDateValue("createdate");
  527. insertSQL.setValue("changeby", username);
  528. insertSQL.setDateValue("changedate");
  529. // insertSQL.setValue("checkby", username);
  530. // insertSQL.setDateValue("checkdate");
  531. insertSQL.setValue("status", "新建");
  532. int i = 0;
  533. long maxid = 0;
  534. long[] st_stockbill_itemsid = createTableID("st_stockbill_items", iteminfos.size());
  535. Rows maxidRows = dbConnect
  536. .runSqlQuery("select MAX(rowno) rowno from st_stockbill_items where st_stockbillid=" + st_stockbillid);
  537. if (!maxidRows.isEmpty()) {
  538. maxid = maxidRows.get(0).getLong("rowno");
  539. }
  540. BigDecimal totalamount = BigDecimal.ZERO;
  541. for (Object obj : iteminfos) {
  542. JSONObject iteminfo = (JSONObject) obj;
  543. if (iteminfo.getLong("st_stockbill_itemsid") <= 0 || dbConnect
  544. .runSqlQuery("select st_stockbill_itemsid from st_stockbill_items where st_stockbill_itemsid="
  545. + iteminfo.getLong("st_stockbill_itemsid"))
  546. .isEmpty()) {
  547. InsertSQL insertDetailSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  548. insertDetailSQL.setUniqueid(st_stockbill_itemsid[i]);
  549. insertDetailSQL.setSiteid(siteid);
  550. insertDetailSQL.setValue("rowno", maxid + i + 1);
  551. insertDetailSQL.setValue("st_stockbillid", st_stockbillid);
  552. insertDetailSQL.setValue("sa_orderitemsid", 0);
  553. insertDetailSQL.setValue("itemid", iteminfo.getLongValue("itemid"));
  554. insertDetailSQL.setValue("sa_orderid", 0);
  555. insertDetailSQL.setValue("qty", iteminfo.getBigDecimal("qty"));
  556. insertDetailSQL.setValue("discountrate", iteminfo.getBigDecimal("discountrate"));
  557. insertDetailSQL.setValue("sa_dispatch_itemsid", 0);
  558. insertDetailSQL.setValue("defaultprice", iteminfo.getBigDecimal("defaultprice"));
  559. if (stocks.isEmpty()) {
  560. insertDetailSQL.setValue("stockid", 0);
  561. } else {
  562. insertDetailSQL.setValue("stockid", stocks.get(0).getLong("stockid"));
  563. }
  564. insertDetailSQL.setValue("remarks", "");
  565. insertDetailSQL.setValue("itemno", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemno"):iteminfo.getString("itemno"));
  566. insertDetailSQL.setValue("itemname", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemname"):iteminfo.getString("itemname"));
  567. insertDetailSQL.setValue("model", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("model"):iteminfo.getString("model"));
  568. insertDetailSQL.setValue("price", iteminfo.getBigDecimal("price"));
  569. insertDetailSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
  570. insertDetailSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP));
  571. insertDetailSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP)));
  572. insertDetailSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBooleanValue("skucontrol"));
  573. i++;
  574. sqllist.add(insertDetailSQL.getSQL());
  575. totalamount = totalamount.add(iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
  576. }
  577. }
  578. for(Object object:sa_tpartreimbursementdetailids){
  579. Integer sa_tpartreimbursementdetailid = (Integer) object;
  580. sqllist.add("update sa_tpartreimbursementdetail set hongbillno='"+billno+"' where sa_tpartreimbursementdetailid="+sa_tpartreimbursementdetailid);
  581. }
  582. if (discountamount.compareTo(totalamount) > 0) {
  583. insertSQL.setValue("payamount", 0);
  584. insertSQL.setValue("paydiscountamount", totalamount);
  585. } else {
  586. insertSQL.setValue("payamount", totalamount.subtract(discountamount));
  587. insertSQL.setValue("paydiscountamount", discountamount);
  588. }
  589. if(totalamount.compareTo((discountamount.add(amount)))>0){
  590. return getErrReturnObject().setErrMsg("大于当月剩余可核销金额,无法核销").toString();
  591. }
  592. sqllist.add(insertSQL.getSQL());
  593. sqllist.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "新增", "销售出库单新增成功,来源配件核销"+rows.toJsonArray("billno").toJSONString()).getSQL());
  594. //Rows accountbalancerows = dbConnect.runSqlQuery("select * from sa_accountbalance t1 inner join sa_accountclass t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid where t2.accountname='现金账户' and t1.sys_enterpriseid=" + sys_enterpriseid);
  595. //CashbillEntity entity = getCashbillEntity(totalamount.negate(), BigDecimal.ZERO, st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成");
  596. //JSONObject createCashbillPay = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity, true);
  597. //sqllist.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
  598. dbConnect.runSqlUpdate(sqllist);
  599. try {
  600. Stockbill.check(this, st_stockbillid, true);
  601. } catch (YosException e) {
  602. // Code to handle the exception
  603. dbConnect.runSqlUpdate("delete from st_stockbill where st_stockbillid="+st_stockbillid);
  604. dbConnect.runSqlUpdate("delete from st_stockbill_items where st_stockbillid="+st_stockbillid);
  605. dbConnect.runSqlUpdate("delete from sys_contrllog where ownerid="+st_stockbillid+" and ownertable='st_stockbill'");
  606. for(Object object:sa_tpartreimbursementdetailids){
  607. Integer sa_tpartreimbursementdetailid = (Integer) object;
  608. dbConnect.runSqlUpdate("update sa_tpartreimbursementdetail set hongbillno='' where sa_tpartreimbursementdetailid="+sa_tpartreimbursementdetailid);
  609. }
  610. return getErrReturnObject().setErrMsg(e.getMessage())
  611. .toString();
  612. }
  613. sqllist=new ArrayList<>();
  614. QuerySQL tpartreimbursementSQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail","*");
  615. tpartreimbursementSQL.setTableAlias("t1");
  616. tpartreimbursementSQL.setSiteid(siteid);
  617. tpartreimbursementSQL.setWhere("t1.sa_tpartreimbursementid", sa_tpartreimbursementidList);
  618. Rows tpartreimbursementrows= tpartreimbursementSQL.query();
  619. RowsMap tpartreimbursementrowsMap = tpartreimbursementrows.toRowsMap("sa_tpartreimbursementid");
  620. for(String sa_tpartreimbursementid :sa_tpartreimbursementidList){
  621. if(tpartreimbursementrowsMap.containsKey(sa_tpartreimbursementid)){
  622. if(tpartreimbursementrowsMap.get(sa_tpartreimbursementid).size()
  623. ==tpartreimbursementrowsMap.get(sa_tpartreimbursementid).toRowsMap("isverified").get("1").size()){
  624. sqllist.add("update sa_tpartreimbursement set status='关闭' where sa_tpartreimbursementid= ='"+sa_tpartreimbursementid+"'");
  625. }
  626. }
  627. }
  628. dbConnect.runSqlUpdate(sqllist);
  629. return getSucReturnObject().toString();
  630. }
  631. }