stockbill.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. package restcontroller.webmanage.lsak3.stockbill;
  2. import beans.accountbalance.Accountbalance;
  3. import beans.accountbalance.CashbillEntity;
  4. import beans.datacontrllog.DataContrlLog;
  5. import beans.parameter.Parameter;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import common.Controller;
  9. import common.YosException;
  10. import common.annotation.API;
  11. import common.data.Row;
  12. import common.data.Rows;
  13. import common.data.RowsMap;
  14. import common.data.SQLFactory;
  15. import org.apache.commons.lang.StringUtils;
  16. import restcontroller.R;
  17. import javax.swing.text.StyledEditorKit;
  18. import java.math.BigDecimal;
  19. import java.text.SimpleDateFormat;
  20. import java.util.ArrayList;
  21. import java.util.Date;
  22. import java.util.List;
  23. public class stockbill extends Controller {
  24. /**
  25. * 构造函数
  26. *
  27. * @param content
  28. */
  29. public stockbill(JSONObject content) throws YosException {
  30. super(content);
  31. }
  32. /**
  33. * 更新YOS销售出库单
  34. * @return
  35. * @throws YosException
  36. */
  37. @API(title = "更新YOS销售出库单", apiversion = R.ID20230717144803.v1.class,accesstoken = false)
  38. public String updateIcstockbill() throws YosException{
  39. String msg = "";
  40. int code = 1;
  41. ArrayList<String> sqlList =new ArrayList<>();
  42. // 单据编号
  43. String fbillnum = content.getString("fbillnum");
  44. try {
  45. // 经销商编号
  46. String fagentnum = content.getString("fagentnum");
  47. long sys_enterpriseid=0;
  48. if(dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='lsa1986' and agentnum='"+fagentnum+"'").isNotEmpty()){
  49. sys_enterpriseid=dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='lsa1986' and agentnum='"+fagentnum+"'").get(0).getLong("sys_enterpriseid");
  50. }else{
  51. msg ="yos中不存在【"+fagentnum+"】经销商";
  52. return getErrReturnObject().setErrMsg(msg).toString();
  53. }
  54. // 单据日期
  55. String fdate = content.getString("fdate");
  56. // 会计期间
  57. // String fperiod = content.getString("fperiod");
  58. // 红蓝字
  59. String frb = content.getString("frb");
  60. // 表头仓库
  61. // String fstockno = content.getString("fstockno");
  62. // 单据类型明细
  63. //String ftypemx = content.getString("ftypemx");
  64. // 单据状态
  65. String fstatus = content.getString("fstatus");
  66. // 制单人
  67. String createby = content.getString("createby");
  68. // 制单日期
  69. String createdate = content.getString("createdate");
  70. // 审核人
  71. String checkby = content.getString("checkby");
  72. // 审核日期
  73. String checkdate = content.getString("checkdate");
  74. // 备注
  75. String fnotes = content.getString("fnotes");
  76. // 是否删除
  77. String isdelete = content.getString("isdelete");
  78. siteid="lsa1986";
  79. Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='lsa1986' and status='审核' and billno='"+fbillnum+"'");
  80. if(stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)){
  81. /**
  82. * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
  83. */
  84. SQLFactory sqlFactory =new SQLFactory(this,"销售出库单新增");
  85. long st_stockbillid=createTableID("st_stockbill");
  86. sqlFactory.addParameter("siteid","lsa1986");
  87. sqlFactory.addParameter("st_stockbillid",st_stockbillid);
  88. sqlFactory.addParameter("sys_enterpriseid",sys_enterpriseid);
  89. sqlFactory.addParameter("billno",fbillnum);
  90. sqlFactory.addParameter("type","销售出库");
  91. sqlFactory.addParameter("rb",frb.equals("蓝")?1:0);
  92. sqlFactory.addParameter("billdate",fdate);
  93. sqlFactory.addParameter("createby",createby);
  94. sqlFactory.addParameter("createdate",getDate(createdate));
  95. sqlFactory.addParameter("changeby",createby);
  96. sqlFactory.addParameter("changedate",getDate(createdate));
  97. sqlFactory.addParameter("checkby",checkby);
  98. sqlFactory.addParameter("checkdate",getDate(checkdate));
  99. sqlFactory.addParameter("remarks",fnotes);
  100. sqlList.add(sqlFactory.getSQL());
  101. JSONArray detailarray = content.getJSONArray("icstockbilldetails");
  102. StringBuffer str = new StringBuffer();
  103. List<Long> sa_dispatch_itemsids=new ArrayList<>();
  104. sa_dispatch_itemsids.add(0l);
  105. for (Object object:detailarray) {
  106. JSONObject jsonObject = (JSONObject)object;
  107. if (str.toString().equals("")) {
  108. str.append("'" +jsonObject.getString("fitemno") + "'");
  109. } else {
  110. str.append(",'" + jsonObject.getString("fitemno") + "'");
  111. }
  112. sa_dispatch_itemsids.add(jsonObject.getLong("sainvoicedetailid"));
  113. }
  114. Rows rows;
  115. if (!str.toString().equals("")) {
  116. rows = dbConnect.runSqlQuery("select * from plm_item where siteid='lsa1986' and itemno in "+"(" + str.toString() + ")");
  117. } else {
  118. rows = dbConnect.runSqlQuery("select * from plm_item where siteid='lsa1986' and itemno in('')");
  119. }
  120. RowsMap itemRowsMap =rows.toRowsMap("itemno");
  121. Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid where t3.status in('审核','复核','关闭') and t1.siteid='lsa1986' and t1.sa_dispatch_itemsid in "+sa_dispatch_itemsids.toString().replace("[", "(").replace("]", ")"));
  122. RowsMap distiptchRowsMap =distiptchRows.toRowsMap("sa_dispatch_itemsid");
  123. Rows aftersalesmagRows = dbConnect.runSqlQuery("select t1.price,t1.sa_aftersalesmag_itemsid from sa_aftersalesmag_items t1 where t1.siteid='lsa1986' and t1.sa_aftersalesmag_itemsid in "+sa_dispatch_itemsids.toString().replace("[", "(").replace("]", ")"));
  124. RowsMap aftersalesmagRowsMap =distiptchRows.toRowsMap("sa_aftersalesmag_itemsid");
  125. BigDecimal amountTotal=BigDecimal.ZERO;
  126. for (Object object:detailarray) {
  127. JSONObject jsonObject = (JSONObject)object;
  128. String frownum = jsonObject.getString("frownum");
  129. String fitemno = jsonObject.getString("fitemno");
  130. System.err.println(frownum+":"+fitemno);
  131. BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
  132. fqty=fqty.compareTo(BigDecimal.ZERO)<0?fqty.negate():fqty;
  133. //String fdetailstockno = jsonObject.getString("fstockno");
  134. long sainvoicedetailid = jsonObject.getLong("sainvoicedetailid");
  135. //String fbatchno = jsonObject.getString("fbatchno");
  136. String fdetailnotes = jsonObject.getString("fnotes");
  137. SQLFactory sqlFactorydetail =new SQLFactory(this,"销售出库单明细新增");
  138. sqlFactorydetail.addParameter("siteid","lsa1986");
  139. sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
  140. sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
  141. sqlFactorydetail.addParameter("rowno", frownum);
  142. sqlFactorydetail.addParameter("sa_dispatch_itemsid", sainvoicedetailid);
  143. sqlFactorydetail.addParameter("remarks", fnotes);
  144. if(itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()){
  145. sqlFactorydetail.addParameter("itemid", itemRowsMap.get(fitemno).get(0).getLong("itemid"));
  146. }else{
  147. sqlFactorydetail.addParameter("itemid", 0);
  148. }
  149. sqlFactorydetail.addParameter("remarks", fdetailnotes);
  150. sqlFactorydetail.addParameter("qty", fqty);
  151. if(frb.equals("蓝")){
  152. if(distiptchRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && distiptchRowsMap.get(sainvoicedetailid).isNotEmpty()){
  153. sqlFactorydetail.addParameter("price", distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
  154. amountTotal=amountTotal.add(fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
  155. sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
  156. System.out.println(amountTotal);
  157. }else{
  158. sqlFactorydetail.addParameter("price", 0);
  159. sqlFactorydetail.addParameter("amount", 0);
  160. }
  161. }else{
  162. if(aftersalesmagRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && aftersalesmagRowsMap.get(sainvoicedetailid).isNotEmpty()){
  163. sqlFactorydetail.addParameter("price", aftersalesmagRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
  164. sqlFactorydetail.addParameter("amount", fqty.multiply(aftersalesmagRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
  165. }else{
  166. sqlFactorydetail.addParameter("price", 0);
  167. sqlFactorydetail.addParameter("amount", 0);
  168. }
  169. }
  170. sqlList.add(sqlFactorydetail.getSQL());
  171. }
  172. if(frb.equals("蓝")){
  173. BigDecimal billamount =BigDecimal.ZERO;
  174. //返利比例
  175. String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
  176. String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
  177. if(!StringUtils.isBlank(icstockbillrebateaccount) && !StringUtils.isBlank(icstockbillrebaterate1)){
  178. BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
  179. //经销商返利
  180. BigDecimal rebateamount = icstockbillrebaterate.multiply(amountTotal);
  181. System.out.println(rebateamount);
  182. CashbillEntity entity = new CashbillEntity();
  183. entity.setAmount(rebateamount);
  184. entity.setOwnerid(st_stockbillid);
  185. entity.setOwnertable("st_stockbill");
  186. entity.setSource("");
  187. entity.setRemarks("销售出库单" + fbillnum + "返利");
  188. sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
  189. }
  190. }
  191. sqlList.add("update st_stockbill set status='审核',checkby='"+checkby+"',checkdate=CURRENT_TIMESTAMP where st_stockbillid = "+st_stockbillid+" and siteid='lsa1986'");
  192. }else if (!stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)) {
  193. /**
  194. * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
  195. */
  196. //销售出库单反审核逻辑待添加
  197. if(frb.equals("蓝")){
  198. BigDecimal billamount =BigDecimal.ZERO;
  199. Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
  200. + stockbillRows.get(0).getLong("st_stockbillid") + "' and siteid='" + siteid + "'");
  201. for (Row row :stockbilldetails) {
  202. billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
  203. }
  204. //返利比例
  205. String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
  206. String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
  207. BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
  208. //经销商返利
  209. BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
  210. CashbillEntity entity = new CashbillEntity();
  211. entity.setAmount(rebateamount);
  212. entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
  213. entity.setOwnertable("st_stockbill");
  214. entity.setSource("");
  215. entity.setRemarks("销售出库单" + fbillnum + "反返利");
  216. sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
  217. }
  218. sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa1986'");
  219. msg = "DRP单据状态为审核,现已反审核,下次同步时进行审核操作";
  220. code = 0;
  221. }else if (!stockbillRows.isEmpty() && ("1".equals(isdelete) || "新建".equals(fstatus))) {
  222. /**
  223. * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
  224. */
  225. //销售出库单反审核逻辑待添加
  226. if(frb.equals("蓝")){
  227. BigDecimal billamount =BigDecimal.ZERO;
  228. Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
  229. + stockbillRows.get(0).getLong("st_stockbillid") + "' and siteid='" + siteid + "'");
  230. for (Row row :stockbilldetails) {
  231. billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
  232. }
  233. //返利比例
  234. String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
  235. String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
  236. BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
  237. //经销商返利
  238. BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
  239. CashbillEntity entity = new CashbillEntity();
  240. entity.setAmount(rebateamount);
  241. entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
  242. entity.setOwnertable("st_stockbill");
  243. entity.setSource("");
  244. entity.setRemarks("销售出库单" + fbillnum + "反返利");
  245. sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
  246. }
  247. sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa1986'");
  248. }
  249. dbConnect.runSqlUpdate(sqlList);
  250. /**
  251. * 更新发货单数量
  252. */
  253. Rows stockbillrows =dbConnect.runSqlQuery("select st_stockbillid,status,rb from st_stockbill where billno='"+fbillnum+"' and siteid='lsa1986'");
  254. ArrayList<String> sqldispatchitems =new ArrayList<>();
  255. if(stockbillrows.isNotEmpty()){
  256. Rows stockbilldetailrows =dbConnect.runSqlQuery("select t1.sa_dispatch_itemsid,sum(t1.qty) qty,t2.sa_dispatchid from st_stockbill_items t1 inner join sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t1.sa_dispatch_itemsid");
  257. if(stockbillrows.get(0).getString("status").equals("审核")){
  258. if(stockbillrows.get(0).getString("rb").equals("1")){
  259. for (Row row :stockbilldetailrows) {
  260. sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty+"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
  261. }
  262. }else{
  263. // for (Row row :stockbilldetailrows) {
  264. // sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty-"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
  265. // sqldispatchitems.add("update sa_dispatch set closedate=null,closeby='',status='复核' where siteid='lsa1986' and sa_dispatchid="+row.getLong("sa_dispatchid"));
  266. // }
  267. }
  268. }else{
  269. if(stockbillrows.get(0).getString("rb").equals("1")){
  270. for (Row row :stockbilldetailrows) {
  271. sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty-"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
  272. sqldispatchitems.add("update sa_dispatch set closedate=null,closeby='',status='复核' where siteid='lsa1986' and sa_dispatchid="+row.getLong("sa_dispatchid"));
  273. }
  274. }else{
  275. // for (Row row :stockbilldetailrows) {
  276. // sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty+"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
  277. // }
  278. }
  279. }
  280. }
  281. dbConnect.runSqlUpdate(sqldispatchitems);
  282. if(frb.equals("蓝")){
  283. //查询可关闭的发货单
  284. Rows dispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty=t.sumoutwarehouseqty");
  285. Rows undispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty!=t.sumoutwarehouseqty");
  286. ArrayList<String> sqldispatch =new ArrayList<>();
  287. for (Row row:dispatchrows) {
  288. sqldispatch.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
  289. SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
  290. sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
  291. sqlFactory.addParameter("ownertable", "sa_dispatch");
  292. sqlFactory.addParameter("ownerid", row.getLong("sa_dispatchid"));
  293. sqlFactory.addParameter("action", "自动关闭");
  294. sqlFactory.addParameter("remarks", "发货单自动关闭成功");
  295. sqlFactory.addParameter("actionuserid", "1");
  296. sqlFactory.addParameter("actionby", "admin");
  297. sqlFactory.addParameter("siteid", "lsa1986");
  298. sqldispatch.add(sqlFactory.getSQL());
  299. }
  300. for (Row row:undispatchrows) {
  301. sqldispatch.add("update sa_dispatch set status='复核',closedate=null,closeby='' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
  302. sqldispatch.add("delete from sys_contrllog where ownertable='sa_dispatch' and action='自动关闭' and ownerid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
  303. }
  304. dbConnect.runSqlUpdate(sqldispatch);
  305. //查询可关闭的订单
  306. //订单出库总数量
  307. Rows orderinstockrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(ifnull(t2.outwarehouseqty,0)) sumoutwarehouseqty from sa_orderitems t1 left join sa_dispatch_items t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986') group by t1.sa_orderid,t1.siteid");
  308. //订单总数量
  309. Rows ordersumrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(qty) sumqty from sa_orderitems t1 where t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986') group by t1.sa_orderid,t1.siteid");
  310. RowsMap orderinstockRowsMap = orderinstockrows.toRowsMap("sa_orderid");
  311. ArrayList<String> sqlorder =new ArrayList<>();
  312. for (Row row:ordersumrows) {
  313. if(orderinstockRowsMap.containsKey(row.getString("sa_orderid"))){
  314. if(orderinstockRowsMap.get(row.getString("sa_orderid")).get(0).getBigDecimal("sumoutwarehouseqty").compareTo(row.getBigDecimal("sumqty"))==0){
  315. sqlorder.add("update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
  316. SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
  317. sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
  318. sqlFactory.addParameter("ownertable", "sa_order");
  319. sqlFactory.addParameter("ownerid", row.getLong("sa_orderid"));
  320. sqlFactory.addParameter("action", "自动关闭");
  321. sqlFactory.addParameter("remarks", "订单自动关闭成功");
  322. sqlFactory.addParameter("actionuserid", "1");
  323. sqlFactory.addParameter("actionby", "admin");
  324. sqlFactory.addParameter("siteid", "lsa1986");
  325. sqlorder.add(sqlFactory.getSQL());
  326. }else {
  327. sqlorder.add("update sa_order set status='审核',closedate=null,closeby='' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
  328. sqlorder.add("delete from sys_contrllog where ownertable='sa_order' and action='自动关闭' and ownerid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
  329. }
  330. }else {
  331. sqlorder.add("update sa_order set status='审核',closedate=null,closeby='' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
  332. sqlorder.add("delete from sys_contrllog where ownertable='sa_order' and action='自动关闭' and ownerid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
  333. }
  334. }
  335. dbConnect.runSqlUpdate(sqlorder);
  336. }
  337. /**
  338. * 如单据为新建状态,则,先把单据强行删除掉
  339. */
  340. dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
  341. } catch (Exception e) {
  342. e.printStackTrace();
  343. msg = e.getMessage();
  344. if(msg==null) {
  345. msg = "";
  346. }
  347. code = 0;
  348. dbConnect.runSqlUpdate("delete from st_stockbill_items where st_stockbillid in(select st_stockbillid from st_stockbill where siteid='lsa1986' and billno='"+fbillnum+"')");
  349. dbConnect.runSqlUpdate("delete from st_stockbill where billno='"+fbillnum+"' and siteid='lsa1986'");
  350. }
  351. JSONObject returnObject =new JSONObject();
  352. returnObject.put("msg", msg);
  353. returnObject.put("code", code);
  354. return returnObject.toString();
  355. }
  356. public String getDate(String date) {
  357. try {
  358. Date a = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(date);
  359. return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(a);
  360. } catch (Exception e) {
  361. e.printStackTrace();
  362. }
  363. return null;
  364. }
  365. }