From df4fa41b2353691d4a9f558057957cb8a62df5e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Tue, 13 Oct 2020 23:13:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E4=BC=98=E5=8C=96=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erp_web/js/pages/bill/in_out.js | 287 +++++++++--------- .../erp/controller/DepotHeadController.java | 8 +- .../datasource/entities/DepotHeadVo4Body.java | 30 +- .../mappers/SerialNumberMapperEx.java | 2 +- .../service/depotHead/DepotHeadService.java | 12 +- .../service/depotItem/DepotItemService.java | 132 ++++---- .../mapper_xml/SerialNumberMapperEx.xml | 2 +- 7 files changed, 214 insertions(+), 259 deletions(-) diff --git a/erp_web/js/pages/bill/in_out.js b/erp_web/js/pages/bill/in_out.js index 698d70f5..98395575 100644 --- a/erp_web/js/pages/bill/in_out.js +++ b/erp_web/js/pages/bill/in_out.js @@ -1045,146 +1045,147 @@ //自动计算事件 autoReckon: function () { var self = this; - //延时绑定事件 - setTimeout(function(){ - var inputDom = $("#depotHeadFM .panel.datagrid .datagrid-view2 .datagrid-body"); - var appendDom = $("#depotHeadDlg #append"); - autoJumpNextInput(inputDom, appendDom); //敲回车键自动跳转到下一个文本框 - var body =$("#depotHeadFM .datagrid-view2 .datagrid-body"); - var footer =$("#depotHeadFM .datagrid-view2 .datagrid-footer"); - var input = "input[type=text]"; - body.find(".datagrid-row").find("input").off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - }); - body.find("[field='MaterialExtendId']").find(".textbox-text").focus().select(); //默认选择商品框 - //点击商品下拉框,自动加载数量、单价、金额 - body.find("[field='Stock']").find(input).prop("readonly","readonly"); - body.find("[field='Unit']").find(input).prop("readonly","readonly"); - //点击商品名称 - body.find("[field='MaterialExtendId']").find(input).next().off("mouseup").on("mouseup",function(){ - var that = $(this); - var meId = that.find('input.textbox-text').val()-0; - if(myIsNaN(meId)) { - $.ajax({ - type: "get", - url: '/material/getMaterialByMeId', - data: { - meId: meId, - mpList: mPropertyList - }, - dataType: "json", - success: function (res) { - if (res && res.MaterialName) { - that.find('input.textbox-value').val(meId); - that.find('input.textbox-text').val(res.MaterialName); - } + var inputDom = $("#depotHeadFM .panel.datagrid .datagrid-view2 .datagrid-body"); + var appendDom = $("#depotHeadDlg #append"); + autoJumpNextInput(inputDom, appendDom); //敲回车键自动跳转到下一个文本框 + var body =$("#depotHeadFM .datagrid-view2 .datagrid-body"); + var footer =$("#depotHeadFM .datagrid-view2 .datagrid-footer"); + var input = "input[type=text]"; + body.find(".datagrid-row").find("input").off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + }); + body.find("[field='MaterialExtendId']").find(".textbox-text").focus().select(); //默认选择商品框 + //点击商品下拉框,自动加载数量、单价、金额 + body.find("[field='Stock']").find(input).prop("readonly","readonly"); + body.find("[field='Unit']").find(input).prop("readonly","readonly"); + //点击商品名称 + body.find("[field='MaterialExtendId']").find(input).next().off("mouseup").on("mouseup",function(){ + var that = $(this); + var meId = that.find('input.textbox-text').val()-0; + if(myIsNaN(meId)) { + $.ajax({ + type: "get", + url: '/material/getMaterialByMeId', + data: { + meId: meId, + mpList: mPropertyList + }, + dataType: "json", + success: function (res) { + if (res && res.MaterialName) { + that.find('input.textbox-value').val(meId); + that.find('input.textbox-text').val(res.MaterialName); } - }); - } - }); - //单行删除按钮 - body.find("[field='op']").find("img").off("click").on("click",function() { - $(this).closest(".datagrid-cell").click(); //点击操作 - var row = $('#materialData').datagrid('getChecked'); - $('#materialData').datagrid('deleteRow', $('#materialData').datagrid("getRowIndex", row[0])); - self.statisticsFun(body,0,0,footer,0); - }); - //修改数量,自动计算金额和合计,另外计算含税单价、税额、价税合计 - body.find("[field='OperNumber']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 - var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 - var OperNumber =$(this).val()-0; //数量 - rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改单价,自动计算金额和合计 - body.find("[field='UnitPrice']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var UnitPrice =$(this).val()-0; //单价 - var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 - var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 - rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改含税单价,自动计算单价、金额、税额、价税合计和合计 - body.find("[field='TaxUnitPrice']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var TaxUnitPrice =$(this).val()-0; //含税单价 - var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 - var UnitPrice = TaxUnitPrice/(1+taxRate/100); //计算单价 - rowDom.find("[field='UnitPrice']").find(input).val((UnitPrice).toFixed(2)); //单价 - var OperNumber = currentRowDom.find("[field='OperNumber']").find(input).val(); //数量 - rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改金额,自动计算单价、税额、价税合计和合计 - body.find("[field='AllPrice']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 - var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 - var AllPrice =$(this).val()-0; //金额 - var UnitPrice = (AllPrice/OperNumber).toFixed(2); - rowDom.find("[field='UnitPrice']").find(input).val(UnitPrice); //单价 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改税率,自动计算含税单价、税额、价税合计和合计 - body.find("[field='TaxRate']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var taxRate =$(this).val()-0; //税率 - var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 - var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改税额,自动计算税率、含税单价、价税合计和合计 - body.find("[field='TaxMoney']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var taxMoney =$(this).val()-0; //税额 - var AllPrice = rowDom.find("[field='AllPrice']").find(input).val(); //金额 - var taxRate = taxMoney/AllPrice*100; //税率 - var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 - var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxRate']").find(input).val((taxRate).toFixed(2)); //税率 - rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); - //修改价税合计,自动计算税率、含税单价、税额和合计 - body.find("[field='TaxLastMoney']").find(input).off("keyup").on("keyup",function(){ - editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); - var rowDom = body.find(".datagrid-row").eq(editIndex); - var taxLastMoney =$(this).val()-0; //价税合计 - var AllPrice = rowDom.find("[field='AllPrice']").find(input).val(); //金额 - var taxRate = (taxLastMoney-AllPrice)/AllPrice*100; //税率 - var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 - var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 - rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 - rowDom.find("[field='TaxRate']").find(input).val((taxRate).toFixed(2)); //税率 - rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 - self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); - }); + } + }); + } + }); + //单行删除按钮 + body.find("[field='op']").find("img").off("click").on("click",function() { + $(this).closest(".datagrid-cell").click(); //点击操作 + var row = $('#materialData').datagrid('getChecked'); + $('#materialData').datagrid('deleteRow', $('#materialData').datagrid("getRowIndex", row[0])); + self.statisticsFun(body,0,0,footer,0); + }); + //修改数量,自动计算金额和合计,另外计算含税单价、税额、价税合计 + body.find("[field='OperNumber']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 + var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 + var OperNumber =$(this).val()-0; //数量 + rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改单价,自动计算金额和合计 + body.find("[field='UnitPrice']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var UnitPrice =$(this).val()-0; //单价 + var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 + var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 + rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改含税单价,自动计算单价、金额、税额、价税合计和合计 + body.find("[field='TaxUnitPrice']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var TaxUnitPrice =$(this).val()-0; //含税单价 + var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 + var UnitPrice = TaxUnitPrice/(1+taxRate/100); //计算单价 + rowDom.find("[field='UnitPrice']").find(input).val((UnitPrice).toFixed(2)); //单价 + var OperNumber = currentRowDom.find("[field='OperNumber']").find(input).val(); //数量 + rowDom.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改金额,自动计算单价、税额、价税合计和合计 + body.find("[field='AllPrice']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 + var taxRate = rowDom.find("[field='TaxRate']").find(input).val(); //税率 + var AllPrice =$(this).val()-0; //金额 + var UnitPrice = (AllPrice/OperNumber).toFixed(2); + rowDom.find("[field='UnitPrice']").find(input).val(UnitPrice); //单价 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改税率,自动计算含税单价、税额、价税合计和合计 + body.find("[field='TaxRate']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var taxRate =$(this).val()-0; //税率 + var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 + var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改税额,自动计算税率、含税单价、价税合计和合计 + body.find("[field='TaxMoney']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var taxMoney =$(this).val()-0; //税额 + var AllPrice = rowDom.find("[field='AllPrice']").find(input).val(); //金额 + var taxRate = taxMoney/AllPrice*100; //税率 + var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 + var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxRate']").find(input).val((taxRate).toFixed(2)); //税率 + rowDom.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + //修改价税合计,自动计算税率、含税单价、税额和合计 + body.find("[field='TaxLastMoney']").find(input).off("keyup").on("keyup",function(){ + editIndex = $(this).closest(".datagrid-row").attr("datagrid-row-index"); + var rowDom = body.find(".datagrid-row").eq(editIndex); + var taxLastMoney =$(this).val()-0; //价税合计 + var AllPrice = rowDom.find("[field='AllPrice']").find(input).val(); //金额 + var taxRate = (taxLastMoney-AllPrice)/AllPrice*100; //税率 + var OperNumber = rowDom.find("[field='OperNumber']").find(input).val(); //数量 + var UnitPrice = rowDom.find("[field='UnitPrice']").find(input).val(); //单价 + rowDom.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价 + rowDom.find("[field='TaxRate']").find(input).val((taxRate).toFixed(2)); //税率 + rowDom.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额 + self.statisticsFun(body,UnitPrice,OperNumber,footer,taxRate); + }); + setTimeout(function(){ + var body =$("#depotHeadFM .datagrid-view2 .datagrid-body"); + var input = "input[type=text]"; //默认税率为0 - var taxRateDom = body.find("[field='TaxRate']").find(input); + var taxRateDom = body.find(".datagrid-row").eq(editIndex).find("[field='TaxRate']").find(input); if(taxRateDom.val() == "") { taxRateDom.val(0); } @@ -1198,7 +1199,7 @@ if(listSubType == "组装单" || listSubType == "拆卸单"){ mType.find(input).val(mTypeValue).prop("readonly","readonly"); } - },500); + },100); }, //新增明细 append: function () { @@ -1344,7 +1345,7 @@ sessionStorage.removeItem("rowInfo"); } this.endAllEdit(); - var inserted = $("#materialData").datagrid('getRows'); + var rows = $("#materialData").datagrid('getRows'); $.ajax({ type:"post", url: url, @@ -1353,7 +1354,7 @@ async : false, data: JSON.stringify({ info:infoStr, - inserted: JSON.stringify(inserted) + rows: JSON.stringify(rows) }), success: function (tipInfo){ if(tipInfo){ @@ -1383,7 +1384,7 @@ updateDepotHeadAndDetail: function (url,infoStr,preTotalPrice) { var self = this; this.endAllEdit(); - var inserted = $("#materialData").datagrid('getRows'); + var rows = $("#materialData").datagrid('getRows'); $.ajax({ type:"post", url: url, @@ -1393,7 +1394,7 @@ data: JSON.stringify({ id:url.substring(url.lastIndexOf("?id=")+4,url.length), info:infoStr, - inserted: JSON.stringify(inserted), + rows: JSON.stringify(rows), preTotalPrice:preTotalPrice }), success: function (tipInfo){ diff --git a/src/main/java/com/jsh/erp/controller/DepotHeadController.java b/src/main/java/com/jsh/erp/controller/DepotHeadController.java index 678e9fd4..31b5fc73 100644 --- a/src/main/java/com/jsh/erp/controller/DepotHeadController.java +++ b/src/main/java/com/jsh/erp/controller/DepotHeadController.java @@ -341,7 +341,7 @@ public class DepotHeadController { public Object addDepotHeadAndDetail(@RequestBody DepotHeadVo4Body body, HttpServletRequest request) throws Exception{ JSONObject result = ExceptionConstants.standardSuccess(); String beanJson = body.getInfo(); - String inserted = body.getInserted(); + String rows = body.getRows(); Long billsNumLimit = Long.parseLong(request.getSession().getAttribute("billsNumLimit").toString()); Long tenantId = Long.parseLong(request.getSession().getAttribute("tenantId").toString()); Long count = depotHeadService.countDepotHead(null,null,null,null,null,null,null,null); @@ -349,7 +349,7 @@ public class DepotHeadController { throw new BusinessParamCheckingException(ExceptionConstants.DEPOT_HEAD_OVER_LIMIT_FAILED_CODE, ExceptionConstants.DEPOT_HEAD_OVER_LIMIT_FAILED_MSG); } else { - depotHeadService.addDepotHeadAndDetail(beanJson,inserted,tenantId, request); + depotHeadService.addDepotHeadAndDetail(beanJson,rows,tenantId, request); } return result; } @@ -367,9 +367,9 @@ public class DepotHeadController { JSONObject result = ExceptionConstants.standardSuccess(); Long id = body.getId(); String beanJson = body.getInfo(); - String inserted = body.getInserted(); + String rows = body.getRows(); BigDecimal preTotalPrice = body.getPreTotalPrice(); - depotHeadService.updateDepotHeadAndDetail(id,beanJson,inserted,preTotalPrice,tenantId,request); + depotHeadService.updateDepotHeadAndDetail(id,beanJson,rows,preTotalPrice,tenantId,request); return result; } diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotHeadVo4Body.java b/src/main/java/com/jsh/erp/datasource/entities/DepotHeadVo4Body.java index b88ba258..11faad8d 100644 --- a/src/main/java/com/jsh/erp/datasource/entities/DepotHeadVo4Body.java +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotHeadVo4Body.java @@ -8,11 +8,7 @@ public class DepotHeadVo4Body { private String info; - private String inserted; - - private String deleted; - - private String updated; + private String rows; private BigDecimal preTotalPrice; @@ -32,28 +28,12 @@ public class DepotHeadVo4Body { this.info = info; } - public String getInserted() { - return inserted; + public String getRows() { + return rows; } - public void setInserted(String inserted) { - this.inserted = inserted; - } - - public String getDeleted() { - return deleted; - } - - public void setDeleted(String deleted) { - this.deleted = deleted; - } - - public String getUpdated() { - return updated; - } - - public void setUpdated(String updated) { - this.updated = updated; + public void setRows(String rows) { + this.rows = rows; } public BigDecimal getPreTotalPrice() { diff --git a/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java index bdd085f4..d43f383b 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java @@ -52,7 +52,7 @@ public interface SerialNumberMapperEx { * */ int sellSerialNumber(@Param("materialId")Long materialId, @Param("depotHeadId")Long depotHeadId,@Param("count")Integer count, @Param("updateTime") Date updateTime,@Param("updater") Long updater); /** - * 赎回:update jsh_serial_number set is_Sell='0' where 1=1 and material_Id='materialId' + * 赎回:update jsh_serial_number set is_Sell='0',depothead_Id=null where 1=1 and material_Id='materialId' * and depothead_Id='depotheadId' and is_Sell !='0' and delete_Flag !='1' {limit 0,count} * */ int cancelSerialNumber(@Param("materialId")Long materialId, @Param("depotHeadId")Long depotHeadId, @Param("count")Integer count, @Param("updateTime") Date updateTime,@Param("updater") Long updater); diff --git a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java index 51c1574e..80c7cdf1 100644 --- a/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java @@ -469,13 +469,13 @@ public class DepotHeadService { /** * 新增单据主表及单据子表信息 * @param beanJson - * @param inserted + * @param rows * @param tenantId * @param request * @throws Exception */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public void addDepotHeadAndDetail(String beanJson, String inserted, Long tenantId, + public void addDepotHeadAndDetail(String beanJson, String rows, Long tenantId, HttpServletRequest request) throws Exception { /**处理单据主表数据*/ DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); @@ -502,7 +502,7 @@ public class DepotHeadService { if(list!=null) { Long headId = list.get(0).getId(); /**入库和出库处理单据子表信息*/ - depotItemService.saveDetials(inserted,headId,tenantId, request); + depotItemService.saveDetials(rows,headId,tenantId, request); } /**如果关联单据号非空则更新订单的状态为2 */ if(depotHead.getLinkNumber()!=null) { @@ -525,14 +525,14 @@ public class DepotHeadService { * 更新单据主表及单据子表信息 * @param id * @param beanJson - * @param inserted + * @param rows * @param preTotalPrice * @param tenantId * @param request * @throws Exception */ @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public void updateDepotHeadAndDetail(Long id, String beanJson, String inserted, + public void updateDepotHeadAndDetail(Long id, String beanJson, String rows, BigDecimal preTotalPrice, Long tenantId,HttpServletRequest request)throws Exception { /**更新单据主表信息*/ DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); @@ -550,7 +550,7 @@ public class DepotHeadService { } } /**入库和出库处理单据子表信息*/ - depotItemService.saveDetials(inserted,depotHead.getId(),tenantId,request); + depotItemService.saveDetials(rows,depotHead.getId(),tenantId,request); logService.insertLog("单据", new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getNumber()).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 59198387..e3cc687e 100644 --- a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -296,74 +296,46 @@ public class DepotItemService { } @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public String saveDetials(String inserted, Long headerId, Long tenantId, HttpServletRequest request) throws Exception{ + public void saveDetials(String rows, Long headerId, Long tenantId, HttpServletRequest request) throws Exception{ //查询单据主表信息 DepotHead depotHead=null; try{ depotHead =depotHeadMapper.selectByPrimaryKey(headerId); - }catch(Exception e){ - JshException.readFail(logger, e); - } - //获得当前操作人 - User userInfo=userService.getCurrentUser(); - //转为json - JSONArray insertedJson = JSONArray.parseArray(inserted); - + //获得当前操作人 + User userInfo=userService.getCurrentUser(); + //首先回收序列号,如果是调拨,不用处理序列号 + if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) + &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())){ + List depotItemList = getListByHeaderId(headerId); + for(DepotItem depotItem : depotItemList){ + Material material= materialService.getMaterial(depotItem.getMaterialId()); + if(material==null){ + continue; + } + if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())){ + serialNumberService.cancelSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(), + (depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue(), userInfo); + } + } + } //删除单据的明细 deleteDepotItemHeadId(headerId); - -// if (null != deletedJson) { -// StringBuffer bf=new StringBuffer(); -// for (int i = 0; i < deletedJson.size(); i++) { -// //首先回收序列号,如果是调拨,不用处理序列号 -// JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i)); -// if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) -// &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())){ -// DepotItem depotItem = getDepotItem(tempDeletedJson.getLong("Id")); -// if(depotItem==null){ -// continue; -// } -// /** -// * 判断商品是否开启序列号,开启的收回序列号,未开启的跳过 -// * */ -// Material material= materialService.getMaterial(depotItem.getMaterialId()); -// if(material==null){ -// continue; -// } -// if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())){ -// serialNumberService.cancelSerialNumber(depotItem.getMaterialId(),depotItem.getHeaderId(),(depotItem.getBasicNumber()==null?0:depotItem.getBasicNumber()).intValue(), -// userInfo); -// } -// } -// bf.append(tempDeletedJson.getLong("Id")); -// if(i<(deletedJson.size()-1)){ -// bf.append(","); -// } -// } -// this.batchDeleteDepotItemByIds(bf.toString()); -// //更新当前库存 -// for (int i = 0; i < deletedJson.size(); i++) { -// JSONObject tempDeletedJson = JSONObject.parseObject(deletedJson.getString(i)); -// DepotItem depotItem = getDepotItem(tempDeletedJson.getLong("Id")); -// updateCurrentStock(depotItem,tenantId); -// } -// } - - if (null != insertedJson) { - for (int i = 0; i < insertedJson.size(); i++) { + JSONArray rowArr = JSONArray.parseArray(rows); + if (null != rowArr) { + for (int i = 0; i < rowArr.size(); i++) { DepotItem depotItem = new DepotItem(); - JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); + JSONObject rowObj = JSONObject.parseObject(rowArr.getString(i)); depotItem.setHeaderId(headerId); - Long materialExtendId = tempInsertedJson.getLong("MaterialExtendId"); + Long materialExtendId = rowObj.getLong("MaterialExtendId"); Long materialId = materialExtendService.getMaterialExtend(materialExtendId).getMaterialId(); depotItem.setMaterialId(materialId); - depotItem.setMaterialExtendId(tempInsertedJson.getLong("MaterialExtendId")); - depotItem.setMaterialUnit(tempInsertedJson.getString("Unit")); - if (StringUtil.isExist(tempInsertedJson.get("OperNumber"))) { - depotItem.setOperNumber(tempInsertedJson.getBigDecimal("OperNumber")); + depotItem.setMaterialExtendId(rowObj.getLong("MaterialExtendId")); + depotItem.setMaterialUnit(rowObj.getString("Unit")); + if (StringUtil.isExist(rowObj.get("OperNumber"))) { + depotItem.setOperNumber(rowObj.getBigDecimal("OperNumber")); try { - String Unit = tempInsertedJson.get("Unit").toString(); - BigDecimal oNumber = tempInsertedJson.getBigDecimal("OperNumber"); + String Unit = rowObj.get("Unit").toString(); + BigDecimal oNumber = rowObj.getBigDecimal("OperNumber"); //以下进行单位换算 String unitName = materialService.findUnitName(materialId); //查询计量单位名称 if (!StringUtil.isEmpty(unitName)) { @@ -384,36 +356,36 @@ public class DepotItemService { logger.error(">>>>>>>>>>>>>>>>>>>设置基础数量异常", e); } } - if (StringUtil.isExist(tempInsertedJson.get("UnitPrice"))) { - depotItem.setUnitPrice(tempInsertedJson.getBigDecimal("UnitPrice")); + if (StringUtil.isExist(rowObj.get("UnitPrice"))) { + depotItem.setUnitPrice(rowObj.getBigDecimal("UnitPrice")); } - if (StringUtil.isExist(tempInsertedJson.get("TaxUnitPrice"))) { - depotItem.setTaxUnitPrice(tempInsertedJson.getBigDecimal("TaxUnitPrice")); + if (StringUtil.isExist(rowObj.get("TaxUnitPrice"))) { + depotItem.setTaxUnitPrice(rowObj.getBigDecimal("TaxUnitPrice")); } - if (StringUtil.isExist(tempInsertedJson.get("AllPrice"))) { - depotItem.setAllPrice(tempInsertedJson.getBigDecimal("AllPrice")); + if (StringUtil.isExist(rowObj.get("AllPrice"))) { + depotItem.setAllPrice(rowObj.getBigDecimal("AllPrice")); } - depotItem.setRemark(tempInsertedJson.getString("Remark")); - if (tempInsertedJson.get("DepotId") != null && !StringUtil.isEmpty(tempInsertedJson.get("DepotId").toString())) { - depotItem.setDepotId(tempInsertedJson.getLong("DepotId")); + depotItem.setRemark(rowObj.getString("Remark")); + if (rowObj.get("DepotId") != null && !StringUtil.isEmpty(rowObj.get("DepotId").toString())) { + depotItem.setDepotId(rowObj.getLong("DepotId")); } - if (tempInsertedJson.get("AnotherDepotId") != null && !StringUtil.isEmpty(tempInsertedJson.get("AnotherDepotId").toString())) { - depotItem.setAnotherDepotId(tempInsertedJson.getLong("AnotherDepotId")); + if (rowObj.get("AnotherDepotId") != null && !StringUtil.isEmpty(rowObj.get("AnotherDepotId").toString())) { + depotItem.setAnotherDepotId(rowObj.getLong("AnotherDepotId")); } - if (StringUtil.isExist(tempInsertedJson.get("TaxRate"))) { - depotItem.setTaxRate(tempInsertedJson.getBigDecimal("TaxRate")); + if (StringUtil.isExist(rowObj.get("TaxRate"))) { + depotItem.setTaxRate(rowObj.getBigDecimal("TaxRate")); } - if (StringUtil.isExist(tempInsertedJson.get("TaxMoney"))) { - depotItem.setTaxMoney(tempInsertedJson.getBigDecimal("TaxMoney")); + if (StringUtil.isExist(rowObj.get("TaxMoney"))) { + depotItem.setTaxMoney(rowObj.getBigDecimal("TaxMoney")); } - if (StringUtil.isExist(tempInsertedJson.get("TaxLastMoney"))) { - depotItem.setTaxLastMoney(tempInsertedJson.getBigDecimal("TaxLastMoney")); + if (StringUtil.isExist(rowObj.get("TaxLastMoney"))) { + depotItem.setTaxLastMoney(rowObj.getBigDecimal("TaxLastMoney")); } - if (tempInsertedJson.get("MType") != null) { - depotItem.setMaterialType(tempInsertedJson.getString("MType")); + if (rowObj.get("MType") != null) { + depotItem.setMaterialType(rowObj.getString("MType")); } - if (tempInsertedJson.get("Remark") != null) { - depotItem.setRemark(tempInsertedJson.getString("Remark")); + if (rowObj.get("Remark") != null) { + depotItem.setRemark(rowObj.getString("Remark")); } //出库时判断库存是否充足 if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ @@ -444,7 +416,9 @@ public class DepotItemService { updateCurrentStock(depotItem,tenantId); } } - return null; + }catch(Exception e){ + JshException.writeFail(logger, e); + } } /** * 查询计量单位信息 diff --git a/src/main/resources/mapper_xml/SerialNumberMapperEx.xml b/src/main/resources/mapper_xml/SerialNumberMapperEx.xml index 2c118ad0..172f64d1 100644 --- a/src/main/resources/mapper_xml/SerialNumberMapperEx.xml +++ b/src/main/resources/mapper_xml/SerialNumberMapperEx.xml @@ -180,7 +180,7 @@ update jsh_serial_number - is_sell = '0', + is_sell = '0', depot_head_id=null, update_time = #{updateTime},