From bce4cbaddb77c8c2a6e3e6ca69fb7da6c6be3de4 Mon Sep 17 00:00:00 2001 From: ludj Date: Fri, 11 Nov 2022 18:08:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dp/service/imp/BigScreenServiceImpl.java | 78 +- .../org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql | 69 +- .../src/main/java/org/nl/wms/md/wql/md.xls | Bin 176640 -> 176640 bytes .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 199680 -> 199680 bytes .../src/main/java/org/nl/wms/sch/wql/sch.xls | Bin 170496 -> 170496 bytes .../wms/st/ivt/StoreInventoryServiceImpl.java | 2435 ----------------- .../nl/wms/st/ivt/StoreIvtServiceImpl.java | 4 +- .../src/main/java/org/nl/wms/st/wql/st.xls | Bin 252928 -> 252928 bytes .../main/resources/config/application-dev.yml | 5 +- 9 files changed, 32 insertions(+), 2559 deletions(-) delete mode 100644 wms/hd/nladmin-system/src/main/java/org/nl/wms/st/ivt/StoreInventoryServiceImpl.java diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java index 0fa9417..1c09d43 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/service/imp/BigScreenServiceImpl.java @@ -162,77 +162,9 @@ public class BigScreenServiceImpl implements BigScreenService { } public JSONArray queryShivtquantity(Map jsonObject) { - //查询熟化区的入库转储任务 - JSONObject jo = new JSONObject(); - //静止中 - JSONArray allrows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "11").process() + JSONArray rows = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "11").process() .getResultJSONArray(0); - - //静止完成 - JSONArray allrows2 = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "12").process() - .getResultJSONArray(0); - jo.put("allrows", allrows); - jo.put("allrows2", allrows2); - - Set set = new HashSet(); - JSONArray result = new JSONArray(); - for (int i = 0; i < allrows.size(); i++) { - JSONObject outjo = allrows.getJSONObject(i); - set.add(outjo.optString("label_code")); - } - for (int i = 0; i < allrows2.size(); i++) { - JSONObject outjo = allrows2.getJSONObject(i); - set.add(outjo.optString("label_code")); - } - - for (String label_code : set) { - JSONObject materijo = new JSONObject(); - materijo.put("label_code", label_code); - // 拿到物料编码去找 名称 跟出库 数 - for (int i = 0; i < allrows.size(); i++) { - JSONObject outjo = allrows.getJSONObject(i); - String out_material_code = outjo.optString("label_code"); - if (out_material_code.equals(label_code)) { - materijo.put("formula", outjo.optString("formula")); - materijo.put("pcsn", outjo.optString("pcsn")); - materijo.put("label_code", outjo.optString("label_code")); - materijo.put("sewting_quantity", outjo.optString("sewting_quantity")); - } - } - for (int i = 0; i < allrows2.size(); i++) { - JSONObject injo = allrows2.getJSONObject(i); - String in_material_code = injo.optString("label_code"); - if (in_material_code.equals(label_code)) { - materijo.put("formula", injo.optString("formula")); - materijo.put("pcsn", injo.optString("pcsn")); - materijo.put("label_code", injo.optString("label_code")); - materijo.put("finished_quantity", injo.optString("finished_quantity")); - } - } - // 判断materijo 里面有没有出入库数,没有给0 - if (!materijo.has("sewting_quantity")) { - materijo.put("sewting_quantity", "0"); - } - if (!materijo.has("finished_quantity")) { - materijo.put("finished_quantity", "0"); - } - result.add(materijo); - } - JSONArray rows = new JSONArray(); - for (int i = 0; i < result.size(); i++) { - JSONObject row = new JSONObject(); - JSONObject resultrow = result.getJSONObject(i); - String label_code = resultrow.optString("label_code"); - String material_name = label_code.substring(label_code.length() - 4); - String material_code = label_code.substring(label_code.length() - 4); - resultrow.put("material_name", material_name); - resultrow.put("material_code", material_code); - resultrow.put("pcsn", resultrow.optString("pcsn")); - resultrow.put("formula", resultrow.optString("formula")); - rows.add(resultrow); - } - return rows; } @@ -249,7 +181,7 @@ public class BigScreenServiceImpl implements BigScreenService { if (StrUtil.isNotEmpty(labeldtl_uuid)) { JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonObject1)) { - JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); + JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "12").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); //配方-批次-重量(YC-B8-1000) String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight"); json.put("material_ivt_info", material_ivt_info); @@ -356,12 +288,12 @@ public class BigScreenServiceImpl implements BigScreenService { JSONArray ja = WQL.getWO("QST_BIG_SCREEN").addParamMap(hashMap).process().getResultJSONArray(0); for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); - String label_code = jo.optString("label_code"); + /*String label_code = jo.optString("label_code"); String flag = label_code.substring(label_code.length() - 4); String material_name = flag; String material_code = flag; jo.put("material_name", material_name); - jo.put("material_code", material_code); + jo.put("material_code", material_code);*/ jo.put("formula", jo.optString("formula")); jo.put("pcsn", jo.optString("pcsn")); rows.add(jo); @@ -382,7 +314,7 @@ public class BigScreenServiceImpl implements BigScreenService { if (StrUtil.isNotEmpty(labeldtl_uuid)) { JSONObject jsonObject1 = materialLabelDtlTab.query("labeldtl_uuid = '" + labeldtl_uuid + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(jsonObject1)) { - JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "13").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); + JSONObject labelObj = WQL.getWO("QST_BIG_SCREEN").addParam("flag", "12").addParam("labeldtl_uuid", labeldtl_uuid).process().uniqueResult(0); //配方-批次-重量(YC-B8-1000) String material_ivt_info = labelObj.getString("formula") + "-" + labelObj.getString("pcsn") + "-" + labelObj.getString("weight"); json.put("material_ivt_info", material_ivt_info); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql index 2c42520..41e3639 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/ext/dp/wql/QST_BIG_SCREEN.wql @@ -95,7 +95,7 @@ IF 输入.flag = "2" max( material.material_name ) AS material_name, round (sum( ivtflow.change_qty ),0 )AS out_quantity FROM - st_vt_structivtflow ivtflow + st_ivt_structIvtFlow ivtflow left join sch_base_point point on point.point_uuid = ivtflow.struct_uuid left join md_base_material material on material.material_uuid=ivtflow.material_uuid @@ -125,7 +125,7 @@ IF 输入.flag = "3" max( material.material_name ) AS material_name, round (sum( ivtflow.change_qty ),0 )AS in_quantity FROM - st_vt_structivtflow ivtflow + st_ivt_structIvtFlow ivtflow left join sch_base_point point on point.point_uuid = ivtflow.struct_uuid left join md_base_material material on material.material_uuid=ivtflow.material_uuid @@ -272,7 +272,7 @@ IF 输入.flag = "3" max( material.material_code ) AS material_code, round (sum( ivtflow.change_qty ),0) AS out_quantity FROM - st_vt_structivtflow ivtflow + st_ivt_structIvtFlow ivtflow left join sch_base_point point on point.point_uuid = ivtflow.struct_uuid left join md_base_material material on material.material_uuid=ivtflow.material_uuid @@ -300,7 +300,7 @@ IF 输入.flag = "8" max( material.material_code ) AS material_code, round (sum( ivtflow.change_qty ) ,0)AS in_quantity FROM - st_vt_structivtflow ivtflow + st_ivt_structIvtFlow ivtflow left join sch_base_point point on point.point_uuid = ivtflow.struct_uuid left join md_base_material material on material.material_uuid=ivtflow.material_uuid @@ -323,19 +323,16 @@ IF 输入.flag = "8" IF 输入.flag = "9" QUERY SELECT - max( ivt.label_code ) AS label_code, - round( sum( ivt.canuse_qty ), 0 ) AS total_quantity, - mst.formula, - mst.pcsn + sum(1) AS total_quantity, + concat(mst.formula,'-',mst.pcsn) as material_ivt_info FROM st_ivt_structivt ivt LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid - LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid + LEFT JOIN md_base_materialLabelMst mst ON mst.label_uuid = ivt.label_uuid WHERE - point.area_type IN ( 03 ) + point.area_type IN ( '03' ) GROUP BY - mst.formula, - mst.pcsn ,ivt.label_code + mst.formula,mst.pcsn ENDSELECT ENDQUERY ENDIF @@ -376,45 +373,25 @@ IF 输入.flag = "8" IF 输入.flag = "11" QUERY - SELECT - round ( sum( ivt.canuse_qty ), 0 ) AS sewting_quantity, - ivt.label_code, - mst.formula, - mst.pcsn - FROM - st_ivt_structivt ivt - LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid - LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid - WHERE - TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) < ivt.stand_hour - AND point.area_type IN ( '01', '02' ) - GROUP BY - mst.formula, mst.pcsn,ivt.label_code + SELECT + sum( CASE WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour THEN 1 ELSE 0 END ) AS sewting_quantity, + sum( CASE WHEN TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) < ivt.stand_hour THEN 1 ELSE 0 END ) AS finish_quantity, + concat(mst.formula,'-',mst.pcsn) as material_ivt_info + FROM + st_ivt_structivt ivt + LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid + LEFT JOIN md_base_materialLabelMst mst ON mst.label_uuid = ivt.label_uuid + WHERE + TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour + AND point.area_type IN ( '01', '02' ) + GROUP BY + mst.formula,mst.pcsn ENDSELECT ENDQUERY ENDIF - IF 输入.flag = "12" - QUERY - SELECT - round ( sum( ivt.canuse_qty ), 0 ) AS finished_quantity, - ivt.label_code, - mst.formula, - mst.pcsn - FROM - st_ivt_structivt ivt - LEFT JOIN sch_base_point point ON point.point_uuid = ivt.struct_uuid - LEFT JOIN md_base_materialLabelMst mst ON ivt.label_uuid = ivt.label_uuid - WHERE - TIMESTAMPDIFF( HOUR, ivt.instorage_time, now( ) ) >= ivt.stand_hour - AND point.area_type IN ( '01', '02' ) - GROUP BY - mst.formula,mst.pcsn,ivt.label_code - ENDSELECT - ENDQUERY - ENDIF - IF 输入.flag = "13" + IF 输入.flag = "12" QUERY SELECT mst.material_uuid, diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/md/wql/md.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/md/wql/md.xls index fe649245792d9a65d5f980b2276acb1911a25534..ec5d85d526cb261d07e2ab27aab1f3414e4175b9 100644 GIT binary patch delta 28 kcmZp8!qxDEYeNnT>xXJH`Pt2dEbWCXjN1!YnEKZO0H-(#yZ`_I delta 28 kcmZp8!qxDEYeNnTYXBSn)mhDjEbWCXjN1!YnEKZO0GwY6H2?qr diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index e75cc323548f67f1d15fb135463f4540f08e7a71..fe34b8514a94846301276711d66c10b385b50fb4 100644 GIT binary patch delta 53 zcmZpe!P78v0 - // unit_uuid(计量单位) 有效性校验 - - - //三、处理 - //对bizinv_dtl_info数据按“product_uuid”进行排序 - JSONArraySort.sort(bizinv_dtl_info, "material_code"); - for (int i = 0; i < bizinv_dtl_info.size(); i++) { - JSONObject dtlObject = bizinv_dtl_info.getJSONObject(i); - - dtlObject.put("org_uuid", bizinv_info.optString("org_uuid")); - dtlObject.put("source_uuid", source_uuid); //设置商家标识 - dtlObject.put("is_backout", is_backout); //设置是否回退 - dtlObject.put("bill_type_scode", bill_type); //设置单据类型 - dtlObject.put("quality_scode", quality_scode); //品质类型 - - dtlObject.put("change_qty", dtlObject.optString("change_qty"));//可用数变动数量 - dtlObject.put("changecanuse_qty", dtlObject.optString("changecanuse_qty"));//库存数变动数量 - dtlObject.put("change_num", dtlObject.optString("change_num"));//可用数变动数量 - dtlObject.put("changecanuse_num", dtlObject.optString("changecanuse_num"));//库存数变动数量 - - dtlObject.put("stor_uuid", bizinv_info.optString("stor_uuid")); - dtlObject.put("stor_name", bizinv_info.optString("stor_name")); - - //库存变动痕迹 - JSONObject change_info = new JSONObject(); - change_info.put("iostorinv_uuid",iostorinv_uuid); - change_info.put("org_uuid", bizinv_info.optString("org_uuid")); - change_info.put("bill_type_scode",bill_type); - change_info.put("inv_uuid",dtlObject.optString("iostorinv_dtluuid")); - change_info.put("change_type",change_type_scode); - change_info.put("change_type_scode",change_type_scode); - change_info.put("is_backout",is_backout); - change_info.put("source_uuid",source_uuid); - change_info.put("source_uuid",source_uuid); - change_info.put("source_name",source_name); - change_info.put("struct_uuid",dtlObject.optString("struct_uuid")); - change_info.put("struct_name",dtlObject.optString("struct_name")); - change_info.put("stack_uuid",dtlObject.optString("struct_uuid")); - change_info.put("stor_uuid", bizinv_info.optString("stor_uuid")); - change_info.put("stor_name", bizinv_info.optString("stor_name")); - change_info.put("material_uuid",dtlObject.optString("material_uuid")); - change_info.put("material_code",dtlObject.optString("material_code")); - change_info.put("material_name",dtlObject.optString("material_name")); - if(uString.isBlank(dtlObject.optString("pcsn"))){ - dtlObject.put("pcsn","00000000"); - } - change_info.put("pcsn",dtlObject.optString("pcsn")); - if(uString.isBlank(dtlObject.optString("order_code"))){ - dtlObject.put("order_code","00000000"); - } - change_info.put("order_code",dtlObject.optString("order_code")); - if(uString.isBlank(dtlObject.optString("work_seq"))){ - dtlObject.put("work_seq","00000000"); - } - change_info.put("work_seq",dtlObject.optString("work_seq")); - if(uString.isBlank(dtlObject.optString("workflow_code"))){ - dtlObject.put("workflow_code","00000000"); - } - change_info.put("workflow_code",dtlObject.optString("workflow_code")); - - change_info.put("qty",dtlObject.optString("qty")); - change_info.put("real_qty",dtlObject.optString("real_qty")); - change_info.put("base_qty",dtlObject.optString("base_qty")); - change_info.put("assist_qty",dtlObject.optString("assist_qty")); - change_info.put("qty_unit_uuid",dtlObject.optString("qty_unit_uuid")); - change_info.put("qty_unit_name",dtlObject.optString("qty_unit_name")); - change_info.put("num",dtlObject.optString("num")); - change_info.put("real_num",dtlObject.optString("real_num")); - change_info.put("base_num",dtlObject.optString("base_num")); - change_info.put("assist_num",dtlObject.optString("assist_num")); - change_info.put("num_unit_uuid",dtlObject.optString("num_unit_uuid")); - change_info.put("num_unit_name",dtlObject.optString("num_unit_name")); - - -//操作记录此次先不做 - String change_type = change_type_scode; - switch (change_type_scode) { - case "11": - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","-"); - //扣减可用 - serviceResultBean = custInventoryService.minusCanuseQty(context, op_account_uuid, op_person_uuid,change_type_scode, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("减可用失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "12": - //增加可用 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","+"); - serviceResultBean = addCanuseQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("加可用失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "13": - //刷新可用 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","-+"); - serviceResultBean = reflushCanuseQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("刷新可用失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "21": - //减库存 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","-"); - serviceResultBean = custInventoryService.minusIvtQty(context, op_account_uuid, op_person_uuid,change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("减库存失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "22": - //加库存 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","+"); - serviceResultBean = addIvtQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("加库存失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "23": - //同时加 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","++"); - serviceResultBean = addBothQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("加库存加可用失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "24": - //同时减 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","--"); - serviceResultBean = minusBothQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("减库存减可用失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "31": - //加待入 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","+"); - serviceResultBean = addStayinQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("加待入失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "32": - //减待入 - //变动方式 变动方式: '+' 、 '-'、'++'、'+-'、'--'、'-+' - change_info.put("change_mode","-"); - serviceResultBean = minusStayinQty(context, op_account_uuid, op_person_uuid, change_type, dtlObject); - if (!serviceResultBean.isSuccess()) - throw new WDKException("减待入失败"); - change_info.put("change_qty", serviceResultBean.getParam("change_qty")); - change_info.put("changecanuse_qty", serviceResultBean.getParam("changecanuse_qty")); - change_info.put("change_num", serviceResultBean.getParam("change_num")); - change_info.put("changecanuse_num", serviceResultBean.getParam("changecanuse_num")); - */ -/* //库存台账 - ledger_info.put("in_qty","0");//入库数量 in_qty - ledger_info.put("in_amt","0");//入库金额 in_amt - ledger_info.put("out_qty",serviceResultBean.getParam("change_biz_qty"));//出库数量 out_qty - ledger_info.put("out_amt",serviceResultBean.getParam("change_stock_amt"));//出库金额 out_amt - ledger_info.put("stor_qty",serviceResultBean.getParam("after_biz_qty"));//结存数量 stor_qty - ledger_info.put("stor_amt",serviceResultBean.getParam("after_stock_amt"));//结存金额 stor_amt - ledger_info.put("remark","出库减库存" + dtlObject.optString("biz_inv_dtl_uuid"));//摘要 remark - *//* - serviceResultBean = custInventoryService.recInventoryTrace(context, op_account_uuid, op_person_uuid,change_type, change_info); - if (!serviceResultBean.isSuccess()) - throw new WDKException("存变动记录更新失败"); - break; - case "10": - //其他 - - break; - default: - break; - } - - } - return serviceResultBean; - } - - */ -/** - * 减可用数 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @WDKTransaction - @Override - public ServiceResultBean minusCanuseQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - String pcsn = change_info.optString("pcsn"); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String changecanuse_qty = "0"; - String changecanuse_num = "0"; - if(uString.isBlank(pcsn)) throw new WDKException("[批次]不能为空"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String change_qty = change_info.optString("change_qty"); - String quality_scode = change_info.optString("quality_scode"); - if(uString.isBlank(change_qty)) throw new WDKException("[变动可用量]不能为空"); - String change_num = change_info.optString("change_num"); - - if(uString.isBlank(change_num)) throw new WDKException("[变动可用数]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - String canuse_qty =""; - String canuse_num =""; - HashMap map = new HashMap<>(); - if(uString.isNotBlank(org_uuid)){ - - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - //减组织可用 - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[组织库存]不存在"); - } - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(canuse_qty)) throw new WDKException("[组织库存可用量]不能为空"); - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse_qty",canuse_qty); - if(qty.optInt("canuse_qty")<0) { - throw new WDKException("[组织库存可用量]不足"); - } - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(canuse_num)) throw new WDKException("[组织库存可用数]不能为空"); - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty = new JSONObject(); - qty.put("canuse_num",canuse_num); - if(qty.optInt("canuse_num")<0) { - throw new WDKException("[组织库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTORGIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq }); - String nums = uMath.subtract(canuse_qty, canuse_num, 0, BigDecimal.ROUND_HALF_UP); - - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTORGIVT_TABLE).delete("org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq }); - - } - - - } - - - //仓位库存 - if(uString.isNotBlank(struct_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓位库存]不存在"); - } - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(canuse_qty)) throw new WDKException("[仓位库存可用量]不能为空"); - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse_qty",canuse_qty); - if(qty.optInt("canuse_qty")<0) { - throw new WDKException("[仓位库存可用量]不足"); - } - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(canuse_num)) throw new WDKException("[仓位库存可用数]不能为空"); - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty = new JSONObject(); - qty.put("canuse_num",canuse_num); - if(qty.optInt("canuse_num")<0) { - throw new WDKException("[仓位库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - }; - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓库库存]不存在"); - } - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(canuse_qty)) throw new WDKException("[仓库库存可用量]不能为空"); - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse_qty",canuse_qty); - if(qty.optInt("canuse_qty")<0) { - throw new WDKException("[仓库库存可用量]不足"); - } - - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(canuse_num)) throw new WDKException("[仓库库存可用数]不能为空"); - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty = new JSONObject(); - qty.put("canuse_num",canuse_num); - if(qty.optInt("canuse_num")<0) { - throw new WDKException("[仓库库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid ,quality_scode}); - }; - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", change_qty); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("change_num", change_num); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 加可用 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @WDKTransaction - @Override - public ServiceResultBean addCanuseQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - String pcsn = change_info.optString("pcsn"); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String quality_scode = change_info.optString("quality_scode"); - - String changecanuse_qty = "0"; - String changecanuse_num = "0"; - if(uString.isBlank(pcsn)) throw new WDKException("[批次]不能为空"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String change_qty = change_info.optString("change_qty"); - - if(uString.isBlank(change_qty)) throw new WDKException("[变动可用量]不能为空"); - String change_num = change_info.optString("change_num"); - - if(uString.isBlank(change_num)) throw new WDKException("[变动可用数]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - String canuse_qty =""; - String canuse_num =""; - HashMap map = new HashMap<>(); - if(uString.isNotBlank(org_uuid)){ - - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - //减组织可用 - if(orderObj==null||orderObj.isNullObject()){ - - JSONObject orgivt = new JSONObject(); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("canuse_qty", change_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", change_num); - orgivt.put("ivt_num", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("frozen_num", "0"); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTORGIVT_TABLE).insert(orgivt); - }else { - - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(canuse_qty)) throw new WDKException("[组织库存可用量]不能为空"); - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse_qty",canuse_qty); - if(qty.optInt("canuse_qty")<0) { - throw new WDKException("[组织库存可用量]不足"); - } - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(canuse_num)) throw new WDKException("[组织库存可用数]不能为空"); - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty = new JSONObject(); - qty.put("canuse_num",canuse_num); - if(qty.optInt("canuse_num")<0) { - throw new WDKException("[组织库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTORGIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq }); - - } - } - - - //仓位库存 - if(uString.isNotBlank(struct_uuid)) { - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("struct_uuid", change_info.optString("struct_uuid")); - orgivt.put("struct_name", change_info.optString("struct_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("order_code", change_info.optString("order_code")); - orgivt.put("quality_scode", quality_scode); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("pcsn", change_info.optString("pcsn")); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("quality_type_scode", change_info.optString("quality_type_scode")); - orgivt.put("canuse_qty", change_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("warehousing_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("number_type_scode", change_info.optString("number_type_scode")); - orgivt.put("canuse_num", change_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", "0"); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).insert(orgivt); - }else { - canuse_qty = orderObj.optString("canuse_qty"); - if (uString.isBlank(canuse_qty)) throw new WDKException("[仓位库存可用量]不能为空"); - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP); - JSONObject qty = new JSONObject(); - qty.put("canuse_qty", canuse_qty); - if (qty.optInt("canuse_qty") < 0) { - throw new WDKException("[仓位库存可用量]不足"); - } - canuse_num = orderObj.optString("canuse_num"); - if (uString.isBlank(canuse_num)) throw new WDKException("[仓位库存可用数]不能为空"); - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP); - qty = new JSONObject(); - qty.put("canuse_num", canuse_num); - if (qty.optInt("canuse_num") < 0) { - throw new WDKException("[仓位库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map, "org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[]{org_uuid, order_code, work_seq, workflow_code, ivt_type_code, struct_uuid, stor_uuid, material_uuid, pcsn, quality_scode}); - } - }; - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("canuse_qty", change_qty); - orgivt.put("quality_scode", quality_scode); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", change_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTORIVT_TABLE).insert(orgivt); - }else { - canuse_qty = orderObj.optString("canuse_qty"); - if (uString.isBlank(canuse_qty)) throw new WDKException("[仓库库存可用量]不能为空"); - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP); - JSONObject qty = new JSONObject(); - qty.put("canuse_qty", canuse_qty); - if (qty.optInt("canuse_qty") < 0) { - throw new WDKException("[仓库库存可用量]不足"); - } - - canuse_num = orderObj.optString("canuse_num"); - if (uString.isBlank(canuse_num)) throw new WDKException("[仓库库存可用数]不能为空"); - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP); - qty = new JSONObject(); - qty.put("canuse_num", canuse_num); - if (qty.optInt("canuse_num") < 0) { - throw new WDKException("[仓库库存可用数]不足"); - } - map = new HashMap<>(); - map.put("canuse_qty", canuse_qty); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[]{org_uuid, material_uuid, ivt_type_code, workflow_code, work_seq, stor_uuid, quality_scode}); - } - }; - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", change_qty); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("change_num", change_num); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 刷新可用 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @WDKTransaction - @Override - public ServiceResultBean reflushCanuseQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - return null; - } - - */ -/** - * 减库存 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean minusIvtQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("ivt_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("ivt_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String quality_scode = change_info.optString("quality_scode"); - - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - //仓位库存 - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓位库存]不存在"); - }else { - String ivt_qty = orderObj.optString("ivt_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓位库存库存量]不能为空"); - ivt_qty = uMath.subtract(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",ivt_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存可用量]不足"); - } - String ivt_num = orderObj.optString("ivt_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓位库存库存数]不能为空"); - ivt_num = uMath.subtract(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - qty.put("canuse",ivt_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存可用数]不足"); - } - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("ivt_num", ivt_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - String nums = uMath.subtract(ivt_num, ivt_qty, 0, BigDecimal.ROUND_HALF_UP); - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).delete("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - } - } - - - } - - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓库库存]不存在"); - }else { - - String ivt_qty = orderObj.optString("ivt_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓库库存库存量]不能为空"); - ivt_qty = uMath.subtract(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",ivt_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库库存可用量]不足"); - } - String ivt_num = orderObj.optString("ivt_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓库库存库存数]不能为空"); - ivt_num = uMath.subtract(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",ivt_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库库存可用数]不足"); - } - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("ivt_num", ivt_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid ,quality_scode}); - String nums = uMath.subtract(ivt_num, ivt_qty, 0, BigDecimal.ROUND_HALF_UP); - - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).delete("org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode }); - } - - }; - } - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", changecanuse_qty); - srb.addParam("change_num", changecanuse_num); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 加库存 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean addIvtQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("ivt_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("ivt_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String quality_scode = change_info.optString("quality_scode"); - - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("struct_uuid", change_info.optString("struct_uuid")); - orgivt.put("struct_name", change_info.optString("struct_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("order_code", change_info.optString("order_code")); - - orgivt.put("quality_scode", quality_scode); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("pcsn", change_info.optString("pcsn")); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("quality_type_scode", change_info.optString("quality_type_scode")); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("ivt_qty", changecanuse_qty); - orgivt.put("warehousing_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("number_type_scode", change_info.optString("number_type_scode")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", changecanuse_num); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).insert(orgivt); - }else { - String ivt_qty = orderObj.optString("ivt_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓位库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓位库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("ivt_num", ivt_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - - } - - - } - */ -/* if(uString.isNotBlank(org_uuid)) { - if(uString.isBlank(workflow_code)){ - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }, "").uniqueResult(0); - }else { - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - } - - - if(orderObj==null||orderObj.isNullObject()){ - - JSONObject orgivt = new JSONObject(); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("warehousing_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("ivt_num", changecanuse_num); - orgivt.put("ivt_qty", changecanuse_qty); - orgivt.put("frozen_num", "0"); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTORGIVT_TABLE).insert(orgivt); - }else { - - String ivt_qty = orderObj.optString("ivt_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[组织库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[组织库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("ivt_num", ivt_num); - map.put("change_time", WDK.getDateTime()); - if(uString.isBlank(workflow_code)){ - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }); - }else { - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}); - - } - } - }*//* - - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("quality_scode", quality_scode); - orgivt.put("frozen_qty", "0"); - orgivt.put("warehousing_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", changecanuse_num); - orgivt.put("ivt_qty", changecanuse_qty); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTORIVT_TABLE).insert(orgivt); - }else { - - String ivt_qty = orderObj.optString("ivt_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓库库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓库库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("ivt_num", ivt_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode }); - - }; - } - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", changecanuse_qty); - srb.addParam("change_num", changecanuse_num); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 同时加库存数和可用数 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean addBothQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("ivt_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("ivt_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String change_qty = change_info.optString("change_qty"); - String change_num = change_info.optString("change_num"); - String quality_scode = change_info.optString("quality_scode"); - - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - String canuse_qty =""; - String canuse_num =""; - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - //仓位库存 - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("struct_uuid", change_info.optString("struct_uuid")); - orgivt.put("struct_name", change_info.optString("struct_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("order_code", change_info.optString("order_code")); - orgivt.put("quality_scode", quality_scode); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("pcsn", change_info.optString("pcsn")); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("quality_type_scode", change_info.optString("quality_type_scode")); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("ivt_qty", changecanuse_qty); - orgivt.put("warehousing_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("number_type_scode", change_info.optString("number_type_scode")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", changecanuse_num); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).insert(orgivt); - }else { - String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓位库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓位库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - } - - - } - if(uString.isNotBlank(org_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - - JSONObject orgivt = new JSONObject(); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("ivt_num", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("frozen_num", "0"); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTORGIVT_TABLE).insert(orgivt); - }else { - - String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[组织库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[组织库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - // map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - // map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}); - - - } - } - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("canuse_qty", changecanuse_qty); - orgivt.put("quality_scode", quality_scode); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", "0"); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", changecanuse_num); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", changecanuse_num); - orgivt.put("ivt_qty", changecanuse_qty); - orgivt.put("warehousing_num", "0"); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTORIVT_TABLE).insert(orgivt); - }else { - - String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓库库存库存量]不能为空"); - ivt_qty = uMath.add(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_qty = uMath.add(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String ivt_num = orderObj.optString("ivt_num"); - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓库库存库存数]不能为空"); - ivt_num = uMath.add(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_num = uMath.add(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid ,quality_scode}); - - }; - } - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", change_qty); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("change_num", change_num); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 同时减库存和可用数 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean minusBothQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("ivt_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("ivt_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String change_qty = change_info.optString("change_qty"); - String change_num = change_info.optString("change_num"); - String quality_scode = change_info.optString("quality_scode"); - - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - String canuse_qty =""; - String canuse_num =""; - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓位库存]不存在"); - }else { - String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓位库存库存量]不能为空"); - ivt_qty = uMath.subtract(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",ivt_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存可用量]不足"); - } - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",canuse_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位可用量]不足"); - } - String ivt_num = orderObj.optString("ivt_num"); - - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓位库存库存数]不能为空"); - ivt_num = uMath.subtract(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",ivt_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存可用数]不足"); - } - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",canuse_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位可用数]不足"); - } - - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - String nums = uMath.subtract(canuse_qty, ivt_qty, 0, BigDecimal.ROUND_HALF_UP); - nums = uMath.subtract(nums, ivt_num, 0, BigDecimal.ROUND_HALF_UP) ; - nums = uMath.subtract(nums, canuse_num, 0, BigDecimal.ROUND_HALF_UP) ; - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).delete("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - } - - } - - - } - if(uString.isNotBlank(org_uuid)) { - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - - throw new WDKException("[组织库存]不存在"); - }else { - - // String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - //if(uString.isBlank(ivt_qty)) throw new WDKException("[组织库存库存量]不能为空"); - // ivt_qty = uMath.subtract(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",canuse_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[组织库存可用量]不足"); - } - // String ivt_num = orderObj.optString("ivt_num"); - canuse_num = orderObj.optString("canuse_num"); - // if(uString.isBlank(ivt_num)) throw new WDKException("[组织库存库存数]不能为空"); - // ivt_num = uMath.subtract(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",canuse_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[组织库存可用数]不足"); - } - map = new HashMap<>(); - // map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - // map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? ", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,}); - String nums = uMath.subtract(canuse_qty, canuse_num, 0, BigDecimal.ROUND_HALF_UP); - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .delete("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? ", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,}); - - } - - } - } - //仓库库存 - if(uString.isNotBlank(stor_uuid)) { - - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓库库存]不存在"); - }else { - String ivt_qty = orderObj.optString("ivt_qty"); - canuse_qty = orderObj.optString("canuse_qty"); - if(uString.isBlank(ivt_qty)) throw new WDKException("[仓库库存库存量]不能为空"); - ivt_qty = uMath.subtract(ivt_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",ivt_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库库存可用量]不足"); - } - canuse_qty = uMath.subtract(canuse_qty, change_qty, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",canuse_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库可用量]不足"); - } - String ivt_num = orderObj.optString("ivt_num"); - - canuse_num = orderObj.optString("canuse_num"); - if(uString.isBlank(ivt_num)) throw new WDKException("[仓库库存库存数]不能为空"); - ivt_num = uMath.subtract(ivt_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",ivt_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库库存可用数]不足"); - } - canuse_num = uMath.subtract(canuse_num, change_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",canuse_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓库可用数]不足"); - } - map = new HashMap<>(); - map.put("ivt_qty", ivt_qty); - map.put("canuse_qty", canuse_qty); - map.put("ivt_num", ivt_num); - map.put("canuse_num", canuse_num); - map.put("change_time", WDK.getDateTime()); - - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode }); - String nums = uMath.subtract(canuse_qty, ivt_qty, 0, BigDecimal.ROUND_HALF_UP); - nums = uMath.subtract(nums, ivt_num, 0, BigDecimal.ROUND_HALF_UP) ; - nums = uMath.subtract(nums, canuse_num, 0, BigDecimal.ROUND_HALF_UP) ; - if("0".equals(nums)){ - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).delete("org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ? AND quality_scode=?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid,quality_scode }); - - } - - }; - } - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", change_qty); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("change_num", change_num); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 加带入 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean addStayinQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("change_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("change_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String quality_scode = change_info.optString("quality_scode"); - - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - //仓位库存 - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("struct_uuid", change_info.optString("struct_uuid")); - orgivt.put("struct_name", change_info.optString("struct_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("order_code", change_info.optString("order_code")); - orgivt.put("quality_scode", change_info.optString("quality_scode")); - - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("pcsn", change_info.optString("pcsn")); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("quality_type_scode", change_info.optString("quality_type_scode")); - orgivt.put("canuse_qty", "0"); - orgivt.put("frozen_qty", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("warehousing_qty", changecanuse_qty); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("number_type_scode", change_info.optString("number_type_scode")); - orgivt.put("canuse_num", "0"); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", "0"); - orgivt.put("warehousing_num", changecanuse_num); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).insert(orgivt); - }else { - String warehousing_qty = orderObj.optString("warehousing_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[仓位待入量]不能为空"); - warehousing_qty = uMath.add(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[仓位待入]不能为空"); - warehousing_num = uMath.add(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - map = new HashMap<>(); - map.put("warehousing_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - } - - - } - */ -/*if(uString.isNotBlank(org_uuid)) { - if(uString.isBlank(workflow_code)){ - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }, "").uniqueResult(0); - }else { - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - } - - - if(orderObj==null||orderObj.isNullObject()){ - - JSONObject orgivt = new JSONObject(); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("canuse_qty", "0"); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", changecanuse_qty); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", "0"); - orgivt.put("ivt_num", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("frozen_num", "0"); - orgivt.put("warehousing_num", changecanuse_num); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTORGIVT_TABLE).insert(orgivt); - }else { - - String warehousing_qty = orderObj.optString("stayin_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[组织库存待入量]不能为空"); - warehousing_qty = uMath.add(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[组织库存待入数]不能为空"); - warehousing_num = uMath.add(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("stayin_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - if(uString.isBlank(workflow_code)){ - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }); - }else { - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}); - - } - } - }*//* - - //仓库库存 - */ -/*if(uString.isNotBlank(stor_uuid)) { - if(uString.isBlank(workflow_code)){ - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? and stor_uuid = ?", new String[] { org_uuid, material_uuid,ivt_type_code ,stor_uuid}, "").uniqueResult(0); - - }else { - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid}, "").uniqueResult(0); - } - if(orderObj==null||orderObj.isNullObject()){ - JSONObject orgivt = new JSONObject(); - orgivt.put("stor_uuid", change_info.optString("stor_uuid")); - orgivt.put("stor_name", change_info.optString("stor_name")); - orgivt.put("material_uuid", change_info.optString("material_uuid")); - orgivt.put("material_code", change_info.optString("material_code")); - orgivt.put("material_name", change_info.optString("material_name")); - orgivt.put("ivt_type_code", ivt_type_code); - orgivt.put("org_uuid", change_info.optString("org_uuid")); - orgivt.put("canuse_qty", "0"); - orgivt.put("frozen_qty", "0"); - orgivt.put("stayin_qty", changecanuse_qty); - orgivt.put("qc_qty", "0"); - orgivt.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - orgivt.put("qty_unit_name", change_info.optString("qty_unit_name")); - orgivt.put("canuse_num", "0"); - orgivt.put("frozen_num", "0"); - orgivt.put("ivt_num", "0"); - orgivt.put("ivt_qty", "0"); - orgivt.put("warehousing_num", changecanuse_num); - orgivt.put("qc_num", "0"); - orgivt.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - orgivt.put("num_unit_name", change_info.optString("num_unit_name")); - orgivt.put("work_seq", change_info.optString("work_seq")); - orgivt.put("workflow_code", change_info.optString("workflow_code")); - orgivt.put("change_time", WDK.getDateTime()); - ResultBean resultBean = WQLObject.getWQLObject(STIVTSTORIVT_TABLE).insert(orgivt); - }else { - - String warehousing_qty = orderObj.optString("stayin_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[仓库库存待入量]不能为空"); - warehousing_qty = uMath.add(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[仓库库存待入数]不能为空"); - warehousing_num = uMath.add(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("stayin_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - if(uString.isBlank(workflow_code)){ - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? and stor_uuid = ?", - new String[] { org_uuid,material_uuid,ivt_type_code ,stor_uuid}); - }else { - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid }); - } - }; - }*//* - - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", changecanuse_qty); - srb.addParam("change_num", changecanuse_num); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 减待入 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return before_canuse_qty 更新前可用数 - * before_frozen_qty 更新前冻结数 - * before_ivt_qty 更新前库存数 - * before_warehousing_qty 更新前待入数 - * before_qc_qty 更新前待检数 - *

- * change_canuse_qty 变化可用数 - * change_frozen_qty 变化冻结数 - * change_ivt_qty 变化库存数 - * change_warehousing_qty 变化待入数 - * change_qc_qty 变化待检数 - *

- * after_canuse_qty 更新后可用数 - * after_frozen_qty 更新后冻结数 - * after_ivt_qty 更新后库存数 - * after_warehousing_qty 更新后待入数 - * after_qc_qty 更新后待检数 - *//* - - @Override - @WDKTransaction - public ServiceResultBean minusStayinQty(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - ServiceResultBean srb = new ServiceResultBean(); - if(change_info==null||change_info.isNullObject()) throw new WDKException("[待变动信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String pcsn = change_info.optString("pcsn"); - String changecanuse_qty = change_info.optString("change_qty"); - if(uString.isBlank(changecanuse_qty)) throw new WDKException("[变动库存量]不能为空"); - String changecanuse_num = change_info.optString("change_num"); - if(uString.isBlank(changecanuse_num)) throw new WDKException("[变动库存数]不能为空"); - String material_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(material_uuid)) throw new WDKException("[物料id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String struct_uuid = change_info.optString("struct_uuid"); - String stor_uuid = change_info.optString("stor_uuid"); - JSONObject orderObj = new JSONObject(); - HashMap map = new HashMap<>(); - String order_code = change_info.optString("order_code"); - String workflow_code = change_info.optString("workflow_code"); - String work_seq = change_info.optString("work_seq"); - String quality_scode = change_info.optString("quality_scode"); - - //仓位 - if(uString.isNotBlank(struct_uuid)) { - - //仓位库存 - orderObj = WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).query("org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}, "").uniqueResult(0); - - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓位库存]不存在"); - }else { - String warehousing_qty = orderObj.optString("warehousing_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[仓位库存待入量]不能为空"); - warehousing_qty = uMath.subtract(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - JSONObject qty = new JSONObject(); - qty.put("canuse",warehousing_qty); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存待入量]不足"); - } - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[仓位库存待入数]不能为空"); - warehousing_num = uMath.subtract(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - qty.put("canuse",warehousing_num); - if(qty.optInt("canuse")<0) { - throw new WDKException("[仓位库存待入数]不足"); - } - map = new HashMap<>(); - map.put("warehousing_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - WQLObject.getWQLObject(STIVTSTACKIVT_TABLE).update(map,"org_uuid = ? and order_code = ? and work_seq = ? and workflow_code = ? and ivt_type_code = ? and struct_uuid = ? and stor_uuid = ? and material_uuid = ? AND pcsn=? AND quality_scode=?", new String[] { org_uuid, order_code,work_seq,workflow_code,ivt_type_code ,struct_uuid,stor_uuid,material_uuid,pcsn,quality_scode}); - - } - - - } - */ -/* if(uString.isNotBlank(org_uuid)) { - if(uString.isBlank(workflow_code)){ - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }, "").uniqueResult(0); - }else { - orderObj = WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}, "").uniqueResult(0); - - } - - - if(orderObj==null||orderObj.isNullObject()){ - - throw new WDKException("[组织库存]不存在"); - }else { - - String warehousing_qty = orderObj.optString("stayin_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[组织库存待入量]不能为空"); - warehousing_qty = uMath.subtract(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[组织库存待入数]不能为空"); - warehousing_num = uMath.subtract(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("stayin_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - - if(uString.isBlank(workflow_code)){ - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ?", new String[] { org_uuid, material_uuid,ivt_type_code }); - }else { - WQLObject.getWQLObject(STIVTORGIVT_TABLE) - .update(map,"org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq}); - - } - } - }*//* - - //仓库库存 - */ -/* if(uString.isNotBlank(stor_uuid)) { - if(uString.isBlank(workflow_code)){ - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? and stor_uuid = ?", new String[] { org_uuid, material_uuid,ivt_type_code ,stor_uuid}, "").uniqueResult(0); - - }else { - orderObj = WQLObject.getWQLObject(STIVTSTORIVT_TABLE) - .query("org_uuid = ? and material_uuid = ? and ivt_type_code = ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ?", new String[] { org_uuid, material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid}, "").uniqueResult(0); - } - if(orderObj==null||orderObj.isNullObject()){ - throw new WDKException("[仓库库存]不存在"); - }else { - - String warehousing_qty = orderObj.optString("stayin_qty"); - if(uString.isBlank(warehousing_qty)) throw new WDKException("[仓库库存待入量]不能为空"); - warehousing_qty = uMath.subtract(warehousing_qty, changecanuse_qty, 4, BigDecimal.ROUND_HALF_UP) ; - String warehousing_num = orderObj.optString("warehousing_num"); - if(uString.isBlank(warehousing_num)) throw new WDKException("[仓库库存待入数]不能为空"); - warehousing_num = uMath.subtract(warehousing_num, changecanuse_num, 4, BigDecimal.ROUND_HALF_UP) ; - - map = new HashMap<>(); - map.put("stayin_qty", warehousing_qty); - map.put("warehousing_num", warehousing_num); - map.put("change_time", WDK.getDateTime()); - if(uString.isBlank(workflow_code)){ - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? and stor_uuid = ?", - new String[] { org_uuid,material_uuid,ivt_type_code ,stor_uuid}); - }else { - WQLObject.getWQLObject(STIVTSTORIVT_TABLE).update(map, "org_uuid = ? AND material_uuid= ? AND ivt_type_code= ? AND workflow_code = ? AND work_seq = ? and stor_uuid = ?", - new String[] { org_uuid,material_uuid,ivt_type_code,workflow_code, work_seq,stor_uuid }); - } - }; - }*//* - - - srb.setSuccess(); - srb.setDesc("生成成功!"); - srb.addParam("change_qty", changecanuse_qty); - srb.addParam("change_num", changecanuse_num); - srb.addParam("changecanuse_qty", changecanuse_qty); - srb.addParam("changecanuse_num", changecanuse_num); - return srb; - } - - */ -/** - * 库存变动记录 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param change_info 待变动信息 - * @return - *//* - - @Override - @WDKTransaction - public ServiceResultBean recInventoryTrace(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject change_info) { - if(change_info==null||change_info.isNullObject()) throw new WDKException("[库存变动记录信息]不能为空"); - String org_uuid = change_info.optString("org_uuid"); - if(uString.isBlank(org_uuid)) throw new WDKException("[组织id]不能为空"); - String materials_uuid = change_info.optString("material_uuid"); - if(uString.isBlank(materials_uuid)) throw new WDKException("[物料标识id]不能为空"); - String ivt_type_code = change_info.optString("ivt_type_code"); - if(uString.isBlank(ivt_type_code)) ivt_type_code ="01";//throw new WDKException("[库存类型]不能为空"); - String bill_type_scode = change_info.optString("bill_type_scode"); - if(uString.isBlank(bill_type_scode)) throw new WDKException("[单据类型]不能为空"); - String inv_uuid = change_info.optString("inv_uuid"); - if(uString.isBlank(inv_uuid)) throw new WDKException("[单据标识]不能为空"); - String change_type_scode = change_info.optString("change_type_scode"); - if(uString.isBlank(change_type_scode)) throw new WDKException("[变动类型]不能为空"); - - String change_mode = change_info.optString("change_mode"); - if(uString.isBlank(change_mode)) {//变动方式 - throw new WDKException("[变动方式]不能为空"); - }; - String change_qty = change_info.optString("change_qty"); - if(uString.isBlank(change_qty)) {//变动可用数 - change_qty = "0"; - }; - String changecanuse_qty = change_info.optString("changecanuse_qty"); - if(uString.isBlank(changecanuse_qty)) {//变动库存数 - changecanuse_qty = "0"; - }; - String changefrozen_qty = change_info.optString("changefrozen_qty"); - if(uString.isBlank(changefrozen_qty)) {//变动冻结数 - changefrozen_qty = "0"; - }; - String changeqc_qty = change_info.optString("changeqc_qty"); - if(uString.isBlank(changeqc_qty)) {//变动待检数 - changeqc_qty = "0"; - }; - String changein_qty = change_info.optString("changein_qty"); - if(uString.isBlank(changein_qty)) {//变动待入数 - changein_qty = "0"; - }; - - String change_num = change_info.optString("change_num"); - if(uString.isBlank(change_num)) {//变动可用数 - change_num = "0"; - }; - String changecanuse_num = change_info.optString("changecanuse_num"); - if(uString.isBlank(changecanuse_num)) {//变动库存数 - changecanuse_num = "0"; - }; - String changefrozen_num = change_info.optString("changefrozen_num"); - if(uString.isBlank(changefrozen_num)) {//变动冻结数 - changefrozen_num = "0"; - }; - String changeqc_num = change_info.optString("changeqc_num"); - if(uString.isBlank(changeqc_num)) {//变动待检数 - changeqc_num = "0"; - }; - String changein_num = change_info.optString("changein_num"); - if(uString.isBlank(changein_num)) {//变动待入数 - changein_num = "0"; - }; - JSONObject flow = new JSONObject(); - flow.put("flow_uuid", WDK.getUUID()); - flow.put("org_uuid",org_uuid); - flow.put("material_uuid",materials_uuid); - flow.put("ivt_type_code",ivt_type_code); - flow.put("bill_type_scode",bill_type_scode); - flow.put("inv_uuid",inv_uuid); - flow.put("change_type_scode",change_type_scode); - flow.put("change_time",WDK.getDateTime()); - flow.put("rec_person",op_person_uuid); - flow.put("change_qty",change_qty); - flow.put("changecanuse_qty",changecanuse_qty); - flow.put("changefrozen_qty",changefrozen_qty); - flow.put("changeqc_qty",changeqc_qty); - flow.put("changein_qty",changein_qty); - flow.put("change_mode",change_mode); - - flow.put("change_num",change_num); - flow.put("changecanuse_num",changecanuse_num); - flow.put("changefrozen_num",changefrozen_num); - flow.put("changeqc_num",changeqc_num); - flow.put("changein_num",changein_num); - flow.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - flow.put("num_unit_name", change_info.optString("num_unit_name")); - flow.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - flow.put("qty_unit_name", change_info.optString("qty_unit_name")); - flow.put("work_seq", change_info.optString("work_seq")); - flow.put("workflow_code", change_info.optString("workflow_code")); - //组织库存变动记录表 - WQLObject wql = WQLObject.getWQLObject(STIVTORGIVTFLOW_TABLE); - WdkUtil.fieldIsEmpty(WdkUtil.notEmptyFileds(STIVTORGIVTFLOW_TABLE), flow); - wql.insert(flow); - - String stor_uuid = change_info.optString("stor_uuid"); - if(uString.isNotBlank(stor_uuid)){ - flow = new JSONObject(); - flow.put("flow_uuid",WDK.getUUID()); - flow.put("stor_uuid",stor_uuid); - flow.put("material_uuid",materials_uuid); - flow.put("ivt_type_code",ivt_type_code); - flow.put("org_uuid",org_uuid); - flow.put("bill_type_scode",bill_type_scode); - flow.put("inv_uuid",inv_uuid); - flow.put("change_type_scode",change_type_scode); - flow.put("change_time",WDK.getDateTime()); - flow.put("rec_person",op_person_uuid); - flow.put("change_qty",change_qty); - flow.put("changecanuse_qty",changecanuse_qty); - flow.put("changefrozen_qty",changefrozen_qty); - flow.put("changeqc_qty",changeqc_qty); - flow.put("changein_qty",changein_qty); - flow.put("change_num",change_num); - flow.put("changecanuse_num",changecanuse_num); - flow.put("changefrozen_num",changefrozen_num); - flow.put("changeqc_num",changeqc_num); - flow.put("change_mode",change_mode); - flow.put("changein_num",changein_num); - flow.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - flow.put("num_unit_name", change_info.optString("num_unit_name")); - flow.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - flow.put("qty_unit_name", change_info.optString("qty_unit_name")); - flow.put("work_seq", change_info.optString("work_seq")); - flow.put("workflow_code", change_info.optString("workflow_code")); - //仓库库存变动记录表 - wql = WQLObject.getWQLObject(STIVTSTORIVTFLOW_TABLE); - WdkUtil.fieldIsEmpty(WdkUtil.notEmptyFileds(STIVTSTORIVTFLOW_TABLE), flow); - wql.insert(flow); - } - String stack_uuid = change_info.optString("stack_uuid"); - if(uString.isNotBlank(stack_uuid)){ - flow = new JSONObject(); - flow.put("flow_uuid",WDK.getUUID()); - flow.put("stack_uuid",stack_uuid); - flow.put("material_uuid",materials_uuid); - flow.put("order_code",change_info.optString("order_code")); - flow.put("work_seq",change_info.optString("work_seq")); - flow.put("workflow_code",change_info.optString("workflow_code")); - flow.put("ivt_type_code",ivt_type_code); - flow.put("pcsn",change_info.optString("pcsn")); - flow.put("org_uuid",org_uuid); - flow.put("stor_uuid",stor_uuid); - flow.put("change_mode",change_mode); - flow.put("bill_type_scode",bill_type_scode); - flow.put("inv_uuid",inv_uuid); - flow.put("change_type_scode",change_type_scode); - flow.put("change_time",WDK.getDateTime()); - flow.put("rec_person",op_person_uuid); - flow.put("change_qty",change_qty); - flow.put("changecanuse_qty",changecanuse_qty); - flow.put("changefrozen_qty",changefrozen_qty); - flow.put("changeqc_qty",changeqc_qty); - flow.put("changein_qty",changein_qty); - flow.put("change_mode",change_info.optString("change_mode")); - flow.put("order_code",change_info.optString("order_code")); - flow.put("work_seq",change_info.optString("work_seq")); - flow.put("workflow_code",change_info.optString("workflow_code")); - - flow.put("change_num",change_num); - flow.put("changecanuse_num",changecanuse_num); - flow.put("changefrozen_num",changefrozen_num); - flow.put("changeqc_num",changeqc_num); - flow.put("changein_num",changein_num); - flow.put("num_unit_uuid", change_info.optString("num_unit_uuid")); - flow.put("num_unit_name", change_info.optString("num_unit_name")); - flow.put("qty_unit_uuid", change_info.optString("qty_unit_uuid")); - flow.put("qty_unit_name", change_info.optString("qty_unit_name")); - //仓位库存变动记录表 - wql = WQLObject.getWQLObject(STIVTSTACKIVTFLOW_TABLE); - WdkUtil.fieldIsEmpty(WdkUtil.notEmptyFileds(STIVTSTACKIVTFLOW_TABLE), flow); - wql.insert(flow); - } - ServiceResultBean rsb = new ServiceResultBean(); - rsb.setSuccess(); - rsb.setDesc("新增成功!"); - return rsb; - } - - */ -/** - * - * 根据条件查询库存记录 - * - * @param context 上下文 - * @param op_account_uuid 操作账号标识 - * @param op_person_uuid 操作员标识 - * @param change_type 变动类型 orgivt-组织 storeivt-仓库 stackivt-仓位 - * @param query_fields 属性查询字段 - * @param results_fields 返回结果街字段 - * @param order_fields 排序字段 - * @return resultset - *//* - - @Override - public ServiceResultBean queryBizInvertoryByConf(ServiceContext context, String op_account_uuid, String op_person_uuid, String change_type, JSONObject query_fields, String results_fields, String order_fields) { - return null; - } -} -*/ diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/ivt/StoreIvtServiceImpl.java b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/ivt/StoreIvtServiceImpl.java index 003c99e..dbab002 100644 --- a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/ivt/StoreIvtServiceImpl.java +++ b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/ivt/StoreIvtServiceImpl.java @@ -55,8 +55,8 @@ public class StoreIvtServiceImpl { param.put("change_qty", change_qty); param.put("struct_uuid", struct_uuid); param.put("change_type", changeType.getIndex()); - // 仓位库存变动记录表【st_vt_structIvtFlow】 - WQLObject ivtFlowTab = WQLObject.getWQLObject("st_vt_structIvtFlow"); + // 仓位库存变动记录表【st_ivt_structIvtFlow】 + WQLObject ivtFlowTab = WQLObject.getWQLObject("st_ivt_structIvtFlow"); ivtFlowTab.insert(param); // 根据变动记录改变仓位库存 param.put("vehicle_code", vehicle_code); diff --git a/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/st.xls b/wms/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/st.xls index c0cbe50cbe4d52a6e6104985797cd1a0ed67df6c..c7d1cb4b206aaa9904510b60f921d059a1386b48 100644 GIT binary patch delta 48803 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 PCjE@KNn{N{RQLY?{=I4| delta 49323 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 diff --git a/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml b/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml index c10e7ff..111b029 100644 --- a/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/wms/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -7,12 +7,11 @@ spring: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy ##url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.57}:${DB_PORT:3306}/${DB_NAME:ch_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:ch_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:ch_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} ##username: ${DB_USER:root} ##password: ${DB_PWD:dzhdghmt0617} - ##password: ${DB_PWD:Root.123456} - password: ${DB_PWD:root} + password: ${DB_PWD:Root.123456} # 初始连接数dataSource-1 initial-size: 5 # 最小连接数