From 05858c6f7146fdeb0273ebe62b2c0ab09bd7c3e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A3=E5=9C=A3=E5=8D=8E?= <752718920@qq.com> Date: Thu, 28 Nov 2019 23:10:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=95=86=E5=93=81=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/数据库更新记录-方便升级.txt | 23 +- erp_web/pages/materials/material.html | 163 +++-- erp_web/pages/template/init_depot_list.html | 10 + erp_web/upload/excels/goods_template.xls | Bin 0 -> 19968 bytes .../jsh/erp/controller/DepotController.java | 34 + .../erp/controller/MaterialController.java | 27 +- .../jsh/erp/datasource/entities/DepotEx.java | 12 + .../datasource/entities/MaterialStock.java | 197 +++++ .../entities/MaterialStockExample.java | 673 ++++++++++++++++++ .../entities/MaterialWithInitStock.java | 17 + .../datasource/mappers/MaterialMapperEx.java | 2 + .../mappers/MaterialStockMapper.java | 96 +++ .../jsh/erp/service/depot/DepotService.java | 15 + .../service/depotItem/DepotItemService.java | 4 +- .../erp/service/material/MaterialService.java | 279 +++++++- .../MaterialCategoryService.java | 15 + .../com/jsh/erp/service/unit/UnitService.java | 15 + .../resources/mapper_xml/MaterialMapperEx.xml | 165 ++++- .../mapper_xml/MaterialStockMapper.xml | 288 ++++++++ src/test/resources/generatorConfig.xml | 1 + 20 files changed, 1939 insertions(+), 97 deletions(-) create mode 100644 erp_web/pages/template/init_depot_list.html create mode 100644 erp_web/upload/excels/goods_template.xls create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialStock.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialStockExample.java create mode 100644 src/main/java/com/jsh/erp/datasource/entities/MaterialWithInitStock.java create mode 100644 src/main/java/com/jsh/erp/datasource/mappers/MaterialStockMapper.java create mode 100644 src/main/resources/mapper_xml/MaterialStockMapper.xml diff --git a/docs/数据库更新记录-方便升级.txt b/docs/数据库更新记录-方便升级.txt index 2314a779..a8411009 100644 --- a/docs/数据库更新记录-方便升级.txt +++ b/docs/数据库更新记录-方便升级.txt @@ -675,4 +675,25 @@ drop table jsh_app; -- 时间:2019年11月28日 -- 单据编号表-改表名 -- ---------------------------- -ALTER TABLE tbl_sequence RENAME TO jsh_sequence; \ No newline at end of file +ALTER TABLE tbl_sequence RENAME TO jsh_sequence; + +-- ---------------------------- +-- 增加产品初始库存表 +-- 时间 2019-11-28 +-- by jishenghua +-- ---------------------------- +CREATE TABLE `jsh_material_stock` ( +`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键' , +`material_id` bigint(20) NULL DEFAULT NULL COMMENT '产品id' , +`depot_id` bigint(20) NULL DEFAULT NULL COMMENT '仓库id' , +`number` decimal(24,6) NULL DEFAULT NULL COMMENT '初始库存数量' , +`tenant_id` bigint(20) NULL DEFAULT NULL COMMENT '租户id' , +`delete_fag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标记,0未删除,1删除' , +PRIMARY KEY (`id`) +) +ENGINE=InnoDB +DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci +COMMENT='产品初始库存' +AUTO_INCREMENT=48 +ROW_FORMAT=COMPACT +; \ No newline at end of file diff --git a/erp_web/pages/materials/material.html b/erp_web/pages/materials/material.html index b7e03c87..43438316 100644 --- a/erp_web/pages/materials/material.html +++ b/erp_web/pages/materials/material.html @@ -13,6 +13,7 @@ + @@ -125,11 +126,11 @@ - 首选出库单位 + 首选销售单位 - 首选入库单位 + 首选采购单位 @@ -237,6 +238,9 @@ +
+
+
@@ -251,18 +255,12 @@ closed="true" buttons="#dlg-buttons5" modal="true" collapsible="false" closable="true">
- - + + Excel模板下载
- (多单位清空下,价格请用斜线隔开) -
-
导入 @@ -271,6 +269,7 @@
+
@@ -517,14 +516,9 @@ columns: [[ {field: 'id', width: 35, align: "center", checkbox: true}, { - title: '操作', field: 'op', align: "center", width: 60, formatter: function (value, rec) { + title: '操作', field: 'op', align: "center", width: 60, formatter: function (value, rec, index) { var str = ''; - var rowInfo = rec.id + 'AaBb' + rec.name + 'AaBb' + rec.model + 'AaBb' + rec.color + 'AaBb' + rec.unit + 'AaBb' + rec.retailprice - + 'AaBb' + rec.lowprice + 'AaBb' + rec.presetpriceone + 'AaBb' + rec.presetpricetwo + 'AaBb' + rec.remark + 'AaBb' + rec.standard - + 'AaBb' + rec.color + 'AaBb' + rec.packing + 'AaBb' + rec.safetystock + 'AaBb' + rec.categoryid + 'AaBb' + rec.categoryName - + 'AaBb' + rec.unitid + 'AaBb' + rec.unitName + 'AaBb' + rec.firstoutunit + 'AaBb' + rec.firstinunit - + 'AaBb' + rec.mfrs + 'AaBb' + rec.otherfield1 + 'AaBb' + rec.otherfield2 + 'AaBb' + rec.otherfield3+ 'AaBb' + rec.enableserialnumber; - str += '   '; + str += '   '; str += ''; return str; } @@ -1141,6 +1135,7 @@ oldManyUnit = ""; materialID = 0; url = '/material/add'; + initDepotList(materialID); //加载仓库列表页面 } //检查商品名称是否存在 ++ 重名无法提示问题需要跟进 @@ -1245,6 +1240,17 @@ objInfo.UnitId = $("#manyUnit").val(); objInfo.CategoryId =$("#parentid").val(); objInfo.PriceStrategy = JSON.stringify(priceStrategy); //价格列表 + //初始库存信息 + var stockArr = []; + $("#initDepot input").each(function () { + var id = $(this).attr("data-id"); + var val = $(this).val(); + var stockObj = {}; + stockObj.depotId = id; + stockObj.number = val; + stockArr.push(stockObj); + }); + objInfo.stock = JSON.stringify(stockArr); $.ajax({ type: "post", url: url, @@ -1291,35 +1297,35 @@ } //编辑信息 - function editMaterial(materialTotalInfo) { - var materialInfo = materialTotalInfo.split("AaBb"); + function editMaterial(index) { + var rowsdata = $("#tableData").datagrid("getRows")[index]; bindMProperty(); //根据商品属性绑定 - $("#Name").focus().val(materialInfo[1]); - $("#Color").focus().val(materialInfo[11]); - $("#EnableSerialNumber").val(materialInfo[24]=='1'?'1':'0'); + $("#Name").focus().val(rowsdata.name); + $("#Color").focus().val(rowsdata.color); + $("#EnableSerialNumber").val(rowsdata.enableserialnumber=='1'?'1':'0'); //商品类别id - $("#parentid").val(materialInfo[14] == "undefined" ? "" : materialInfo[14]); + $("#parentid").val(rowsdata.categoryid); //商品类别名称 - $("#parentName").val(materialInfo[15] == "undefined" ? "" : materialInfo[15]); - mId = materialInfo[14]; - mName = materialInfo[15]; - $("#Packing").focus().val(materialInfo[12]); - $("#SafetyStock").focus().val(materialInfo[13]=="undefined" ? "" : materialInfo[13]); - $("#Model").val(materialInfo[2]); - $("#Standard").val(materialInfo[10] == "undefined" ? "" : materialInfo[10]); - $("#Color").val(materialInfo[3] == "undefined" ? "" : materialInfo[3]); - $("#Mfrs").val(materialInfo[20] == "undefined" ? "" : materialInfo[20]); - $("#OtherField1").val(materialInfo[21] == "undefined" ? "" : materialInfo[21]); - $("#OtherField2").val(materialInfo[22] == "undefined" ? "" : materialInfo[22]); - $("#OtherField3").val(materialInfo[23] == "undefined" ? "" : materialInfo[23]); - $("#Unit").val(materialInfo[4] == "undefined" ? "" : materialInfo[4]); - $("#RetailPrice").val(materialInfo[5] == "undefined" ? "" : materialInfo[5]); - $("#LowPrice").val(materialInfo[6] == "undefined" ? "" : materialInfo[6]); - $("#PresetPriceOne").val(materialInfo[7] == "undefined" ? "" : materialInfo[7]); - $("#PresetPriceTwo").val(materialInfo[8] == "undefined" ? "" : materialInfo[8]); - $("#Remark").val(materialInfo[9]); - $("#manyUnit").val(materialInfo[16]); - if (materialInfo[16] != "undefined") { + $("#parentName").val(rowsdata.categoryName); + mId = rowsdata.categoryid; + mName = rowsdata.categoryName; + $("#Packing").focus().val(rowsdata.packing); + $("#SafetyStock").focus().val(rowsdata.safetystock); + $("#Model").val(rowsdata.model); + $("#Standard").val(rowsdata.standard); + $("#Color").val(rowsdata.color); + $("#Mfrs").val(rowsdata.mfrs); + $("#OtherField1").val(rowsdata.otherfield1); + $("#OtherField2").val(rowsdata.otherfield2); + $("#OtherField3").val(rowsdata.otherfield3); + $("#Unit").val(rowsdata.unit); + $("#RetailPrice").val(rowsdata.retailprice); + $("#LowPrice").val(rowsdata.lowprice); + $("#PresetPriceOne").val(rowsdata.presetpriceone); + $("#PresetPriceTwo").val(rowsdata.presetpricetwo); + $("#Remark").val(rowsdata.remark); + $("#manyUnit").val(rowsdata.unitid); + if (rowsdata.unitid) { $("#manyUnitCheck").prop("checked", true); //当前为选中状态 $("#Unit").hide(); @@ -1336,10 +1342,10 @@ var basic = ''; var other = ''; firstOptions = firstOptions + basic + other; - $("#FirstOutUnit").empty().append('').append(firstOptions); //首选出库单位 - $("#FirstInUnit").empty().append('').append(firstOptions); //首选入库单位 - $("#FirstOutUnit").val(materialInfo[18]);//首选出库单位 - $("#FirstInUnit").val(materialInfo[19]);//首选入库单位 + $("#FirstOutUnit").empty().append('').append(firstOptions); //首选销售单位 + $("#FirstInUnit").empty().append('').append(firstOptions); //首选采购单位 + $("#FirstOutUnit").val(rowsdata.firstoutunit);//首选销售单位 + $("#FirstInUnit").val(rowsdata.firstinunit);//首选采购单位 } } else { @@ -1356,7 +1362,7 @@ $.ajax({ url: '/material/findById', data: { - id: materialInfo[0] + id: rowsdata.id }, type: "get", dataType: "json", @@ -1385,26 +1391,53 @@ } }); - oldName = materialInfo[1]; - oldModel = materialInfo[2]; - oldColor = materialInfo[11]; - oldStandard = materialInfo[10]; - oldMfrs = materialInfo[20]; - oldOtherField1 = materialInfo[21]; - oldOtherField2 = materialInfo[22]; - oldOtherField3 = materialInfo[23]; - oldUnit = materialInfo[4]; - oldManyUnit = materialInfo[16]; + oldName = rowsdata.name; + oldModel = rowsdata.model; + oldColor = rowsdata.color; + oldStandard = rowsdata.standard; + oldMfrs = rowsdata.mfrs; + oldOtherField1 = rowsdata.otherfield1; + oldOtherField2 = rowsdata.otherfield2; + oldOtherField3 = rowsdata.otherfield3; + oldUnit = rowsdata.unit; + oldManyUnit = rowsdata.unitid; $('#materialDlg').dialog('open').dialog('setTitle', ' 编辑商品信息'); $(".window-mask").css({width: webW, height: webH}); - materialID = materialInfo[0]; + materialID = rowsdata.id; //焦点在名称输入框==定焦在输入文字后面 - $("#Name").val("").focus().val(materialInfo[1]); + $("#Name").val("").focus().val(rowsdata.name); //选中基本资料tab $("#materialFM #tt .tabs li").first().click(); - url = '/material/update?id=' + materialInfo[0]; + url = '/material/update?id=' + rowsdata.id; + initDepotList(rowsdata.id); //加载仓库列表页面 } + function initDepotList(mId) { + $.ajax({ + type: "get", + url: "/depot/getAllListWithStock?mId=" + mId, + dataType: "json", + async: false, + success: function (res) { + if (res && res.code == 200) { + var json = {}; + json.depotList = res.data; + $.ajax({ + type: "get", + url: "../../../pages/template/init_depot_list.html?616", + async: false, + success: function (tem) { + if (tem) { + var template = Handlebars.compile(tem); + var htmlValue = template(json); + $("#initDepot").html(htmlValue); + } + } + }); + } + } + }); + } //搜索处理 $("#searchBtn").unbind().bind({ @@ -1501,8 +1534,8 @@ var basic = ''; var other = ''; firstOptions = firstOptions + basic + other; - $("#FirstOutUnit").empty().append('').append(firstOptions); //首选出库单位 - $("#FirstInUnit").empty().append('').append(firstOptions); //首选入库单位 + $("#FirstOutUnit").empty().append('').append(firstOptions); //首选销售单位 + $("#FirstInUnit").empty().append('').append(firstOptions); //首选采购单位 $("#basicUnit").text(arr[0]); $("#otherUnit").text(arr[1]); } diff --git a/erp_web/pages/template/init_depot_list.html b/erp_web/pages/template/init_depot_list.html new file mode 100644 index 00000000..e52be2da --- /dev/null +++ b/erp_web/pages/template/init_depot_list.html @@ -0,0 +1,10 @@ + + {{#depotList}} + + + + + {{/depotList}} +
{{name}} + +
\ No newline at end of file diff --git a/erp_web/upload/excels/goods_template.xls b/erp_web/upload/excels/goods_template.xls new file mode 100644 index 0000000000000000000000000000000000000000..2050712c9091deed997c669f7363be7aa186b4c4 GIT binary patch literal 19968 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 Ac>n+a literal 0 HcmV?d00001 diff --git a/src/main/java/com/jsh/erp/controller/DepotController.java b/src/main/java/com/jsh/erp/controller/DepotController.java index d3d5c361..2bd429ec 100644 --- a/src/main/java/com/jsh/erp/controller/DepotController.java +++ b/src/main/java/com/jsh/erp/controller/DepotController.java @@ -12,6 +12,7 @@ import com.jsh.erp.datasource.entities.Depot; import com.jsh.erp.datasource.entities.DepotEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.depot.DepotService; +import com.jsh.erp.service.material.MaterialService; import com.jsh.erp.service.systemConfig.SystemConfigService; import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.*; @@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; +import java.math.BigDecimal; import java.util.*; import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; @@ -44,6 +46,9 @@ public class DepotController { @Resource private SystemConfigService systemConfigService; + @Resource + private MaterialService materialService; + @GetMapping(value = "/getAllList") public BaseResponseInfo getAllList(HttpServletRequest request) throws Exception{ BaseResponseInfo res = new BaseResponseInfo(); @@ -232,4 +237,33 @@ public class DepotController { return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); } } + + @GetMapping(value = "/getAllListWithStock") + public BaseResponseInfo getAllList(@RequestParam("mId") Long mId, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + List list = depotService.getAllList(); + List depotList = new ArrayList(); + for(Depot depot: list) { + DepotEx de = new DepotEx(); + if(mId!=0) { + BigDecimal stock = materialService.getInitStock(mId, depot.getId()); + de.setStock(stock); + } else { + de.setStock(BigDecimal.ZERO); + } + de.setId(depot.getId()); + de.setName(depot.getName()); + depotList.add(de); + } + res.code = 200; + res.data = depotList; + } catch(Exception e){ + e.printStackTrace(); + res.code = 500; + res.data = "获取数据失败"; + } + return res; + } } diff --git a/src/main/java/com/jsh/erp/controller/MaterialController.java b/src/main/java/com/jsh/erp/controller/MaterialController.java index 366824bb..8640c9a2 100644 --- a/src/main/java/com/jsh/erp/controller/MaterialController.java +++ b/src/main/java/com/jsh/erp/controller/MaterialController.java @@ -233,7 +233,7 @@ public class MaterialController { } /** - * excel表格导入 + * excel表格导入产品(含初始库存) * @param materialFile * @param request * @param response @@ -257,30 +257,7 @@ public class MaterialController { info.code = 400; info.data = data; } - //每行中数据顺序 "品名","类型","型号","安全存量","单位","零售价","最低售价","预计采购价","批发价","备注","状态" - List mList = new ArrayList(); - for (int i = 1; i < src.getRows(); i++) { - Material m = new Material(); - m.setName(ExcelUtils.getContent(src, i, 0)); - m.setCategoryid(1L); //根目录 - m.setModel(ExcelUtils.getContent(src, i, 2)); - String safetyStock = ExcelUtils.getContent(src, i, 3); - m.setSafetystock(parseBigDecimalEx(safetyStock)); - m.setUnit(ExcelUtils.getContent(src, i, 4)); - String retailprice = ExcelUtils.getContent(src, i, 5); - m.setRetailprice(parseBigDecimalEx(retailprice)); - String lowPrice = ExcelUtils.getContent(src, i, 6); - m.setLowprice(parseBigDecimalEx(lowPrice)); - String presetpriceone = ExcelUtils.getContent(src, i, 7); - m.setPresetpriceone(parseBigDecimalEx(presetpriceone)); - String presetpricetwo = ExcelUtils.getContent(src, i, 8); - m.setPresetpricetwo(parseBigDecimalEx(presetpricetwo)); - m.setRemark(ExcelUtils.getContent(src, i, 9)); - String enabled = ExcelUtils.getContent(src, i, 10); - m.setEnabled(enabled.equals("启用")? true: false); - mList.add(m); - } - info = materialService.importExcel(mList); + info = materialService.importExcel(src); } catch (Exception e) { e.printStackTrace(); message = "导入失败"; diff --git a/src/main/java/com/jsh/erp/datasource/entities/DepotEx.java b/src/main/java/com/jsh/erp/datasource/entities/DepotEx.java index cd3b842a..2a66f0e9 100644 --- a/src/main/java/com/jsh/erp/datasource/entities/DepotEx.java +++ b/src/main/java/com/jsh/erp/datasource/entities/DepotEx.java @@ -1,5 +1,7 @@ package com.jsh.erp.datasource.entities; +import java.math.BigDecimal; + /** * Description * @@ -10,6 +12,8 @@ public class DepotEx extends Depot{ //负责人名字 private String principalName; + private BigDecimal stock; + public String getPrincipalName() { return principalName; } @@ -17,4 +21,12 @@ public class DepotEx extends Depot{ public void setPrincipalName(String principalName) { this.principalName = principalName; } + + public BigDecimal getStock() { + return stock; + } + + public void setStock(BigDecimal stock) { + this.stock = stock; + } } diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialStock.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialStock.java new file mode 100644 index 00000000..19067781 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialStock.java @@ -0,0 +1,197 @@ +package com.jsh.erp.datasource.entities; + +import java.math.BigDecimal; + +public class MaterialStock { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.id + * + * @mbggenerated + */ + private Long id; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.material_id + * + * @mbggenerated + */ + private Long materialId; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.depot_id + * + * @mbggenerated + */ + private Long depotId; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.number + * + * @mbggenerated + */ + private BigDecimal number; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.tenant_id + * + * @mbggenerated + */ + private Long tenantId; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database column jsh_material_stock.delete_fag + * + * @mbggenerated + */ + private String deleteFag; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.id + * + * @return the value of jsh_material_stock.id + * + * @mbggenerated + */ + public Long getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.id + * + * @param id the value for jsh_material_stock.id + * + * @mbggenerated + */ + public void setId(Long id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.material_id + * + * @return the value of jsh_material_stock.material_id + * + * @mbggenerated + */ + public Long getMaterialId() { + return materialId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.material_id + * + * @param materialId the value for jsh_material_stock.material_id + * + * @mbggenerated + */ + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.depot_id + * + * @return the value of jsh_material_stock.depot_id + * + * @mbggenerated + */ + public Long getDepotId() { + return depotId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.depot_id + * + * @param depotId the value for jsh_material_stock.depot_id + * + * @mbggenerated + */ + public void setDepotId(Long depotId) { + this.depotId = depotId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.number + * + * @return the value of jsh_material_stock.number + * + * @mbggenerated + */ + public BigDecimal getNumber() { + return number; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.number + * + * @param number the value for jsh_material_stock.number + * + * @mbggenerated + */ + public void setNumber(BigDecimal number) { + this.number = number; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.tenant_id + * + * @return the value of jsh_material_stock.tenant_id + * + * @mbggenerated + */ + public Long getTenantId() { + return tenantId; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.tenant_id + * + * @param tenantId the value for jsh_material_stock.tenant_id + * + * @mbggenerated + */ + public void setTenantId(Long tenantId) { + this.tenantId = tenantId; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column jsh_material_stock.delete_fag + * + * @return the value of jsh_material_stock.delete_fag + * + * @mbggenerated + */ + public String getDeleteFag() { + return deleteFag; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column jsh_material_stock.delete_fag + * + * @param deleteFag the value for jsh_material_stock.delete_fag + * + * @mbggenerated + */ + public void setDeleteFag(String deleteFag) { + this.deleteFag = deleteFag == null ? null : deleteFag.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialStockExample.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialStockExample.java new file mode 100644 index 00000000..fe34f386 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialStockExample.java @@ -0,0 +1,673 @@ +package com.jsh.erp.datasource.entities; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class MaterialStockExample { + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + protected String orderByClause; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + protected boolean distinct; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + protected List oredCriteria; + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public MaterialStockExample() { + oredCriteria = new ArrayList(); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public String getOrderByClause() { + return orderByClause; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public boolean isDistinct() { + return distinct; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public List getOredCriteria() { + return oredCriteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNull() { + addCriterion("material_id is null"); + return (Criteria) this; + } + + public Criteria andMaterialIdIsNotNull() { + addCriterion("material_id is not null"); + return (Criteria) this; + } + + public Criteria andMaterialIdEqualTo(Long value) { + addCriterion("material_id =", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotEqualTo(Long value) { + addCriterion("material_id <>", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThan(Long value) { + addCriterion("material_id >", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdGreaterThanOrEqualTo(Long value) { + addCriterion("material_id >=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThan(Long value) { + addCriterion("material_id <", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdLessThanOrEqualTo(Long value) { + addCriterion("material_id <=", value, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdIn(List values) { + addCriterion("material_id in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotIn(List values) { + addCriterion("material_id not in", values, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdBetween(Long value1, Long value2) { + addCriterion("material_id between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andMaterialIdNotBetween(Long value1, Long value2) { + addCriterion("material_id not between", value1, value2, "materialId"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNull() { + addCriterion("depot_id is null"); + return (Criteria) this; + } + + public Criteria andDepotIdIsNotNull() { + addCriterion("depot_id is not null"); + return (Criteria) this; + } + + public Criteria andDepotIdEqualTo(Long value) { + addCriterion("depot_id =", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotEqualTo(Long value) { + addCriterion("depot_id <>", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThan(Long value) { + addCriterion("depot_id >", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdGreaterThanOrEqualTo(Long value) { + addCriterion("depot_id >=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThan(Long value) { + addCriterion("depot_id <", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdLessThanOrEqualTo(Long value) { + addCriterion("depot_id <=", value, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdIn(List values) { + addCriterion("depot_id in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotIn(List values) { + addCriterion("depot_id not in", values, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdBetween(Long value1, Long value2) { + addCriterion("depot_id between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andDepotIdNotBetween(Long value1, Long value2) { + addCriterion("depot_id not between", value1, value2, "depotId"); + return (Criteria) this; + } + + public Criteria andNumberIsNull() { + addCriterion("number is null"); + return (Criteria) this; + } + + public Criteria andNumberIsNotNull() { + addCriterion("number is not null"); + return (Criteria) this; + } + + public Criteria andNumberEqualTo(BigDecimal value) { + addCriterion("number =", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotEqualTo(BigDecimal value) { + addCriterion("number <>", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThan(BigDecimal value) { + addCriterion("number >", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("number >=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThan(BigDecimal value) { + addCriterion("number <", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberLessThanOrEqualTo(BigDecimal value) { + addCriterion("number <=", value, "number"); + return (Criteria) this; + } + + public Criteria andNumberIn(List values) { + addCriterion("number in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotIn(List values) { + addCriterion("number not in", values, "number"); + return (Criteria) this; + } + + public Criteria andNumberBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("number between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andNumberNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("number not between", value1, value2, "number"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNull() { + addCriterion("tenant_id is null"); + return (Criteria) this; + } + + public Criteria andTenantIdIsNotNull() { + addCriterion("tenant_id is not null"); + return (Criteria) this; + } + + public Criteria andTenantIdEqualTo(Long value) { + addCriterion("tenant_id =", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotEqualTo(Long value) { + addCriterion("tenant_id <>", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThan(Long value) { + addCriterion("tenant_id >", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdGreaterThanOrEqualTo(Long value) { + addCriterion("tenant_id >=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThan(Long value) { + addCriterion("tenant_id <", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdLessThanOrEqualTo(Long value) { + addCriterion("tenant_id <=", value, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdIn(List values) { + addCriterion("tenant_id in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotIn(List values) { + addCriterion("tenant_id not in", values, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdBetween(Long value1, Long value2) { + addCriterion("tenant_id between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andTenantIdNotBetween(Long value1, Long value2) { + addCriterion("tenant_id not between", value1, value2, "tenantId"); + return (Criteria) this; + } + + public Criteria andDeleteFagIsNull() { + addCriterion("delete_fag is null"); + return (Criteria) this; + } + + public Criteria andDeleteFagIsNotNull() { + addCriterion("delete_fag is not null"); + return (Criteria) this; + } + + public Criteria andDeleteFagEqualTo(String value) { + addCriterion("delete_fag =", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagNotEqualTo(String value) { + addCriterion("delete_fag <>", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagGreaterThan(String value) { + addCriterion("delete_fag >", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagGreaterThanOrEqualTo(String value) { + addCriterion("delete_fag >=", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagLessThan(String value) { + addCriterion("delete_fag <", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagLessThanOrEqualTo(String value) { + addCriterion("delete_fag <=", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagLike(String value) { + addCriterion("delete_fag like", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagNotLike(String value) { + addCriterion("delete_fag not like", value, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagIn(List values) { + addCriterion("delete_fag in", values, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagNotIn(List values) { + addCriterion("delete_fag not in", values, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagBetween(String value1, String value2) { + addCriterion("delete_fag between", value1, value2, "deleteFag"); + return (Criteria) this; + } + + public Criteria andDeleteFagNotBetween(String value1, String value2) { + addCriterion("delete_fag not between", value1, value2, "deleteFag"); + return (Criteria) this; + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material_stock + * + * @mbggenerated do_not_delete_during_merge + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + /** + * This class was generated by MyBatis Generator. + * This class corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialWithInitStock.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialWithInitStock.java new file mode 100644 index 00000000..63efbd6c --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialWithInitStock.java @@ -0,0 +1,17 @@ +package com.jsh.erp.datasource.entities; + +import java.math.BigDecimal; +import java.util.Map; + +public class MaterialWithInitStock extends Material { + + private Map stockMap; + + public Map getStockMap() { + return stockMap; + } + + public void setStockMap(Map stockMap) { + this.stockMap = stockMap; + } +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java index b565fbb4..3d85d8ff 100644 --- a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java +++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java @@ -59,4 +59,6 @@ public interface MaterialMapperEx { List getMaterialListByCategoryIds(@Param("categoryIds") String[] categoryIds); List getMaterialListByUnitIds(@Param("unitIds") String[] unitIds); + + int insertSelectiveEx(Material record); } diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialStockMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialStockMapper.java new file mode 100644 index 00000000..796825e0 --- /dev/null +++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialStockMapper.java @@ -0,0 +1,96 @@ +package com.jsh.erp.datasource.mappers; + +import com.jsh.erp.datasource.entities.MaterialStock; +import com.jsh.erp.datasource.entities.MaterialStockExample; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +public interface MaterialStockMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int countByExample(MaterialStockExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int deleteByExample(MaterialStockExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int deleteByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int insert(MaterialStock record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int insertSelective(MaterialStock record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + List selectByExample(MaterialStockExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + MaterialStock selectByPrimaryKey(Long id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int updateByExampleSelective(@Param("record") MaterialStock record, @Param("example") MaterialStockExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int updateByExample(@Param("record") MaterialStock record, @Param("example") MaterialStockExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int updateByPrimaryKeySelective(MaterialStock record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table jsh_material_stock + * + * @mbggenerated + */ + int updateByPrimaryKey(MaterialStock record); +} \ No newline at end of file diff --git a/src/main/java/com/jsh/erp/service/depot/DepotService.java b/src/main/java/com/jsh/erp/service/depot/DepotService.java index 803fd70d..ccedea10 100644 --- a/src/main/java/com/jsh/erp/service/depot/DepotService.java +++ b/src/main/java/com/jsh/erp/service/depot/DepotService.java @@ -292,4 +292,19 @@ public class DepotService { } return result; } + + /** + * 根据名称获取id + * @param name + */ + public Long getIdByName(String name){ + Long id = 0L; + DepotExample example = new DepotExample(); + example.createCriteria().andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } } 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 474626e6..eafabe76 100644 --- a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -663,10 +663,12 @@ public class DepotItemService { * @return */ public BigDecimal getStockByParam(Long depotId, Long mId, String beginTime, String endTime, Long tenantId){ + //初始库存 + BigDecimal initStock = materialService.getInitStockByMid(depotId, mId); DepotItemVo4Stock stockObj = depotItemMapperEx.getStockByParam(depotId, mId, beginTime, endTime, tenantId); BigDecimal intNum = stockObj.getInNum(); BigDecimal outNum = stockObj.getOutNum(); - return intNum.subtract(outNum); + return initStock.add(intNum).subtract(outNum); } /** diff --git a/src/main/java/com/jsh/erp/service/material/MaterialService.java b/src/main/java/com/jsh/erp/service/material/MaterialService.java index 5dff0edf..f3775de3 100644 --- a/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/src/main/java/com/jsh/erp/service/material/MaterialService.java @@ -1,5 +1,7 @@ package com.jsh.erp.service.material; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.jsh.erp.constants.BusinessConstants; @@ -8,13 +10,19 @@ import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.DepotItemMapperEx; import com.jsh.erp.datasource.mappers.MaterialMapper; import com.jsh.erp.datasource.mappers.MaterialMapperEx; +import com.jsh.erp.datasource.mappers.MaterialStockMapper; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; +import com.jsh.erp.service.depot.DepotService; import com.jsh.erp.service.depotItem.DepotItemService; import com.jsh.erp.service.log.LogService; +import com.jsh.erp.service.materialCategory.MaterialCategoryService; +import com.jsh.erp.service.unit.UnitService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.ExcelUtils; import com.jsh.erp.utils.StringUtil; +import jxl.Sheet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -24,6 +32,7 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.*; @Service @@ -42,6 +51,14 @@ public class MaterialService { private DepotItemMapperEx depotItemMapperEx; @Resource private DepotItemService depotItemService; + @Resource + private MaterialCategoryService materialCategoryService; + @Resource + private UnitService unitService; + @Resource + private MaterialStockMapper materialStockMapper; + @Resource + private DepotService depotService; public Material getMaterial(long id)throws Exception { Material result=null; @@ -125,6 +142,22 @@ public class MaterialService { int result =0; try{ result= materialMapper.insertSelective(material); + JSONObject mObj = JSON.parseObject(beanJson); + Long mId = material.getId(); + if(mObj.get("stock")!=null) { + String stockStr = mObj.getString("stock"); + JSONArray stockArr = JSONArray.parseArray(stockStr); + for(Object object: stockArr) { + JSONObject jsonObj = (JSONObject)object; + if(jsonObj.get("depotId")!=null && jsonObj.get("number")!=null) { + String number = jsonObj.getString("number"); + Long depotId = jsonObj.getLong("depotId"); + if(number!=null && Double.valueOf(number)>0) { + insertStockByMaterialAndDepot(depotId, mId, parseBigDecimalEx(number)); + } + } + } + } logService.insertLog("商品", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); }catch(Exception e){ JshException.writeFail(logger, e); @@ -145,6 +178,25 @@ public class MaterialService { } else { materialMapperEx.updateUnitIdNullByPrimaryKey(id); //将多单位置空 } + JSONObject mObj = JSON.parseObject(beanJson); + if(mObj.get("stock")!=null) { + String stockStr = mObj.getString("stock"); + JSONArray stockArr = JSONArray.parseArray(stockStr); + for (Object object : stockArr) { + JSONObject jsonObj = (JSONObject) object; + if (jsonObj.get("depotId") != null && jsonObj.get("number") != null) { + String number = jsonObj.getString("number"); + Long depotId = jsonObj.getLong("depotId"); + //先清除再插入 + MaterialStockExample example = new MaterialStockExample(); + example.createCriteria().andMaterialIdEqualTo(id).andDepotIdEqualTo(depotId); + materialStockMapper.deleteByExample(example); + if (number != null && Double.valueOf(number) > 0) { + insertStockByMaterialAndDepot(depotId, id, parseBigDecimalEx(number)); + } + } + } + } logService.insertLog("商品", new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(id).toString(), request); }catch(Exception e){ @@ -296,21 +348,127 @@ public class MaterialService { } return resList; } + @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public BaseResponseInfo importExcel(List mList) throws Exception { + public BaseResponseInfo importExcel(Sheet src) throws Exception { + List depotList= depotService.getDepot(); + int depotCount = depotList.size(); + List mList = new ArrayList(); + for (int i = 2; i < src.getRows(); i++) { + String name = ExcelUtils.getContent(src, i, 0); //名称 + String model = ExcelUtils.getContent(src, i, 1); //型号 + String categoryName = ExcelUtils.getContent(src, i, 2); //类型 + String safetyStock = ExcelUtils.getContent(src, i, 3); //安全存量 + String color = ExcelUtils.getContent(src, i, 4); //颜色 + String unit = ExcelUtils.getContent(src, i, 5); //单位 + //校验名称、型号、单位是否为空 + if(StringUtil.isNotEmpty(name) && StringUtil.isNotEmpty(model) && StringUtil.isNotEmpty(unit)) { + MaterialWithInitStock m = new MaterialWithInitStock(); + m.setName(name); + m.setModel(model); + Long categoryId = materialCategoryService.getCategoryIdByName(categoryName); + m.setCategoryid(categoryId); + m.setSafetystock(parseBigDecimalEx(safetyStock)); + m.setColor(color); + String manyUnit = ExcelUtils.getContent(src, i, 6); //多单位 + String ratio = ExcelUtils.getContent(src, i, 7); //比例 + String retailPrice = ExcelUtils.getContent(src, i, 8); //零售价 + String lowPrice = ExcelUtils.getContent(src, i, 9); //最低售价 + String presetpriceone = ExcelUtils.getContent(src, i, 10); //预计采购价 + String presetpricetwo = ExcelUtils.getContent(src, i, 11); //销售价 + if(StringUtil.isNotEmpty(manyUnit.trim())){ //多单位 + String manyUnitAll = unit + "," + manyUnit + "(1:" + ratio + ")"; + Long unitId = unitService.getUnitIdByName(manyUnitAll); + m.setUnitid(unitId); + m.setFirstoutunit(unit); //首选出库单位 + m.setFirstinunit(manyUnit); //首选入库单位 + JSONArray arr = new JSONArray(); + JSONObject basicObj = new JSONObject(); + basicObj.put("Unit", unit); + basicObj.put("RetailPrice", retailPrice); + basicObj.put("LowPrice", lowPrice); + basicObj.put("PresetPriceOne", presetpriceone); + basicObj.put("PresetPriceTwo", presetpricetwo); + JSONObject basicObjEx = new JSONObject(); + basicObjEx.put("basic", basicObj); + JSONObject otherObj = new JSONObject(); + otherObj.put("Unit", manyUnit); + otherObj.put("RetailPrice", parsePrice(retailPrice,ratio)); + otherObj.put("LowPrice", parsePrice(lowPrice,ratio)); + otherObj.put("PresetPriceOne", parsePrice(presetpriceone,ratio)); + otherObj.put("PresetPriceTwo", parsePrice(presetpricetwo,ratio)); + JSONObject otherObjEx = new JSONObject(); + otherObjEx.put("other", otherObj); + arr.add(basicObjEx); + arr.add(otherObjEx); + m.setPricestrategy(arr.toJSONString()); + } else { + m.setUnit(unit); + m.setRetailprice(parseBigDecimalEx(retailPrice)); + m.setLowprice(parseBigDecimalEx(lowPrice)); + m.setPresetpriceone(parseBigDecimalEx(presetpriceone)); + m.setPresetpricetwo(parseBigDecimalEx(presetpricetwo)); + } + String enabled = ExcelUtils.getContent(src, i, 12); //状态 + m.setEnabled(enabled.equals("1")? true: false); + //缓存各个仓库的库存信息 + Map stockMap = new HashMap(); + for(int j=1; j<=depotCount;j++) { + int col = 12+j; + if(col <= src.getColumns()){ + String depotName = ExcelUtils.getContent(src, 1, col); //获取仓库名称 + Long depotId = depotService.getIdByName(depotName); + if(depotId!=0L){ + String stockStr = ExcelUtils.getContent(src, i, col); + if(StringUtil.isNotEmpty(stockStr)) { + stockMap.put(depotId, parseBigDecimalEx(stockStr)); + } + } + } + } + m.setStockMap(stockMap); + mList.add(m); + } + } logService.insertLog("商品", new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_IMPORT).append(mList.size()).append(BusinessConstants.LOG_DATA_UNIT).toString(), ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); BaseResponseInfo info = new BaseResponseInfo(); Map data = new HashMap(); try { - for(Material m: mList) { - materialMapper.insertSelective(m); + Long mId = 0L; + for(MaterialWithInitStock m: mList) { + //判断该商品是否存在,如果不存在就新增,如果存在就更新 + List materials = getMaterialListByParam(m.getName(),m.getModel(),m.getColor(),m.getStandard(), + m.getMfrs(),m.getUnit(),m.getUnitid()); + if(materials.size()<=0) { + materialMapperEx.insertSelectiveEx(m); + mId = m.getId(); + } else { + mId = materials.get(0).getId(); + String materialJson = JSON.toJSONString(m); + Material material = JSONObject.parseObject(materialJson, Material.class); + material.setId(mId); + materialMapper.updateByPrimaryKeySelective(material); + } + //给商品初始化库存 + Map stockMap = m.getStockMap(); + Long depotId = null; + for(Depot depot: depotList){ + BigDecimal stock = stockMap.get(depot.getId()); + //先清除再插入 + MaterialStockExample example = new MaterialStockExample(); + example.createCriteria().andMaterialIdEqualTo(mId).andDepotIdEqualTo(depot.getId()); + materialStockMapper.deleteByExample(example); + if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) { + depotId = depot.getId(); + insertStockByMaterialAndDepot(depotId, mId, stock); + } + } } info.code = 200; data.put("message", "成功"); } catch (Exception e) { - JshException.writeFail(logger, e); e.printStackTrace(); info.code = 500; data.put("message", e.getMessage()); @@ -319,6 +477,57 @@ public class MaterialService { return info; } + /** + * 根据条件返回产品列表 + * @param name + * @param model + * @param color + * @param standard + * @param mfrs + * @param unit + * @param unitId + * @return + */ + private List getMaterialListByParam(String name, String model, String color, + String standard, String mfrs, String unit, Long unitId) { + MaterialExample example = new MaterialExample(); + MaterialExample.Criteria criteria = example.createCriteria(); + criteria.andNameEqualTo(name).andModelEqualTo(model); + if (StringUtil.isNotEmpty(color)) { + criteria.andColorEqualTo(color); + } + if (StringUtil.isNotEmpty(standard)) { + criteria.andStandardEqualTo(standard); + } + if (StringUtil.isNotEmpty(mfrs)) { + criteria.andMfrsEqualTo(mfrs); + } + if (StringUtil.isNotEmpty(unit)) { + criteria.andUnitEqualTo(unit); + } + if (unitId !=null) { + criteria.andUnitidEqualTo(unitId); + } + criteria.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialMapper.selectByExample(example); + return list; + } + + /** + * 写入初始库存 + * @param depotId + * @param mId + * @param stock + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void insertStockByMaterialAndDepot(Long depotId, Long mId, BigDecimal stock){ + MaterialStock materialStock = new MaterialStock(); + materialStock.setDepotId(depotId); + materialStock.setMaterialId(mId); + materialStock.setNumber(stock); + materialStockMapper.insertSelective(materialStock); //存入初始库存 + } + public List getMaterialEnableSerialNumberList(Map parameterMap)throws Exception { List list =null; try{ @@ -387,4 +596,66 @@ public class MaterialService { return deleteTotal; } + + public BigDecimal parseBigDecimalEx(String str) throws Exception{ + if(!StringUtil.isEmpty(str)) { + return new BigDecimal(str); + } else { + return null; + } + } + + public BigDecimal parsePrice(String price, String ratio) throws Exception{ + if(StringUtil.isEmpty(price) || StringUtil.isEmpty(ratio)) { + return BigDecimal.ZERO; + } else { + BigDecimal pr=new BigDecimal(price); + BigDecimal r=new BigDecimal(ratio); + return pr.multiply(r); + } + } + + /** + * 根据产品和仓库获取初始库存 + * @param materialId + * @param depotId + * @return + */ + public BigDecimal getInitStock(Long materialId, Long depotId) { + BigDecimal stock = BigDecimal.ZERO; + MaterialStockExample example = new MaterialStockExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + .andDeleteFagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + stock = list.get(0).getNumber(); + } + return stock; + } + + /** + * 根据产品获取初始库存 + * @param materialId + * @return + */ + public BigDecimal getInitStockByMid(Long depotId, Long materialId) { + BigDecimal stock = BigDecimal.ZERO; + MaterialStockExample example = new MaterialStockExample(); + if(depotId!=null) { + example.createCriteria().andMaterialIdEqualTo(materialId).andDepotIdEqualTo(depotId) + .andDeleteFagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + example.createCriteria().andMaterialIdEqualTo(materialId) + .andDeleteFagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list = materialStockMapper.selectByExample(example); + if(list!=null && list.size()>0) { + for(MaterialStock ms: list) { + if(ms!=null) { + stock = stock.add(ms.getNumber()); + } + } + } + return stock; + } } diff --git a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java index 56bb21b9..0b6b96ea 100644 --- a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java +++ b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java @@ -388,4 +388,19 @@ public class MaterialCategoryService { deleteTotal= batchDeleteMaterialCategoryByIds(ids); return deleteTotal; } + + /** + * 根据名称获取类型 + * @param name + */ + public Long getCategoryIdByName(String name){ + Long categoryId = 0l; + MaterialCategoryExample example = new MaterialCategoryExample(); + example.createCriteria().andNameEqualTo(name).andStatusNotEqualTo(BusinessConstants.DELETE_TYPE_FORCE); + List list = materialCategoryMapper.selectByExample(example); + if(list!=null && list.size()>0) { + categoryId = list.get(0).getId(); + } + return categoryId; + } } diff --git a/src/main/java/com/jsh/erp/service/unit/UnitService.java b/src/main/java/com/jsh/erp/service/unit/UnitService.java index 74ed75b1..5c9c5362 100644 --- a/src/main/java/com/jsh/erp/service/unit/UnitService.java +++ b/src/main/java/com/jsh/erp/service/unit/UnitService.java @@ -208,4 +208,19 @@ public class UnitService { deleteTotal= batchDeleteUnitByIds(ids); return deleteTotal; } + + /** + * 根据名称获取类型 + * @param name + */ + public Long getUnitIdByName(String name){ + Long unitId = 0l; + UnitExample example = new UnitExample(); + example.createCriteria().andUnameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = unitMapper.selectByExample(example); + if(list!=null && list.size()>0) { + unitId = list.get(0).getId(); + } + return unitId; + } } diff --git a/src/main/resources/mapper_xml/MaterialMapperEx.xml b/src/main/resources/mapper_xml/MaterialMapperEx.xml index 1ff82b5d..5731c1b5 100644 --- a/src/main/resources/mapper_xml/MaterialMapperEx.xml +++ b/src/main/resources/mapper_xml/MaterialMapperEx.xml @@ -174,5 +174,168 @@ and ifnull(delete_Flag,'0') !='1' - + + insert into jsh_material + + + Id, + + + CategoryId, + + + Name, + + + Mfrs, + + + Packing, + + + SafetyStock, + + + Model, + + + Standard, + + + Color, + + + Unit, + + + Remark, + + + RetailPrice, + + + LowPrice, + + + PresetPriceOne, + + + PresetPriceTwo, + + + UnitId, + + + FirstOutUnit, + + + FirstInUnit, + + + PriceStrategy, + + + Enabled, + + + OtherField1, + + + OtherField2, + + + OtherField3, + + + enableSerialNumber, + + + tenant_id, + + + delete_Flag, + + + + + #{id,jdbcType=BIGINT}, + + + #{categoryid,jdbcType=BIGINT}, + + + #{name,jdbcType=VARCHAR}, + + + #{mfrs,jdbcType=VARCHAR}, + + + #{packing,jdbcType=DECIMAL}, + + + #{safetystock,jdbcType=DECIMAL}, + + + #{model,jdbcType=VARCHAR}, + + + #{standard,jdbcType=VARCHAR}, + + + #{color,jdbcType=VARCHAR}, + + + #{unit,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{retailprice,jdbcType=DECIMAL}, + + + #{lowprice,jdbcType=DECIMAL}, + + + #{presetpriceone,jdbcType=DECIMAL}, + + + #{presetpricetwo,jdbcType=DECIMAL}, + + + #{unitid,jdbcType=BIGINT}, + + + #{firstoutunit,jdbcType=VARCHAR}, + + + #{firstinunit,jdbcType=VARCHAR}, + + + #{pricestrategy,jdbcType=VARCHAR}, + + + #{enabled,jdbcType=BIT}, + + + #{otherfield1,jdbcType=VARCHAR}, + + + #{otherfield2,jdbcType=VARCHAR}, + + + #{otherfield3,jdbcType=VARCHAR}, + + + #{enableserialnumber,jdbcType=VARCHAR}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFlag,jdbcType=VARCHAR}, + + + \ No newline at end of file diff --git a/src/main/resources/mapper_xml/MaterialStockMapper.xml b/src/main/resources/mapper_xml/MaterialStockMapper.xml new file mode 100644 index 00000000..9adad88c --- /dev/null +++ b/src/main/resources/mapper_xml/MaterialStockMapper.xml @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + + id, material_id, depot_id, number, tenant_id, delete_fag + + + + + + delete from jsh_material_stock + where id = #{id,jdbcType=BIGINT} + + + + delete from jsh_material_stock + + + + + + + insert into jsh_material_stock (id, material_id, depot_id, + number, tenant_id, delete_fag + ) + values (#{id,jdbcType=BIGINT}, #{materialId,jdbcType=BIGINT}, #{depotId,jdbcType=BIGINT}, + #{number,jdbcType=DECIMAL}, #{tenantId,jdbcType=BIGINT}, #{deleteFag,jdbcType=VARCHAR} + ) + + + + insert into jsh_material_stock + + + id, + + + material_id, + + + depot_id, + + + number, + + + tenant_id, + + + delete_fag, + + + + + #{id,jdbcType=BIGINT}, + + + #{materialId,jdbcType=BIGINT}, + + + #{depotId,jdbcType=BIGINT}, + + + #{number,jdbcType=DECIMAL}, + + + #{tenantId,jdbcType=BIGINT}, + + + #{deleteFag,jdbcType=VARCHAR}, + + + + + + + update jsh_material_stock + + + id = #{record.id,jdbcType=BIGINT}, + + + material_id = #{record.materialId,jdbcType=BIGINT}, + + + depot_id = #{record.depotId,jdbcType=BIGINT}, + + + number = #{record.number,jdbcType=DECIMAL}, + + + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + + + delete_fag = #{record.deleteFag,jdbcType=VARCHAR}, + + + + + + + + + update jsh_material_stock + set id = #{record.id,jdbcType=BIGINT}, + material_id = #{record.materialId,jdbcType=BIGINT}, + depot_id = #{record.depotId,jdbcType=BIGINT}, + number = #{record.number,jdbcType=DECIMAL}, + tenant_id = #{record.tenantId,jdbcType=BIGINT}, + delete_fag = #{record.deleteFag,jdbcType=VARCHAR} + + + + + + + update jsh_material_stock + + + material_id = #{materialId,jdbcType=BIGINT}, + + + depot_id = #{depotId,jdbcType=BIGINT}, + + + number = #{number,jdbcType=DECIMAL}, + + + tenant_id = #{tenantId,jdbcType=BIGINT}, + + + delete_fag = #{deleteFag,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + + update jsh_material_stock + set material_id = #{materialId,jdbcType=BIGINT}, + depot_id = #{depotId,jdbcType=BIGINT}, + number = #{number,jdbcType=DECIMAL}, + tenant_id = #{tenantId,jdbcType=BIGINT}, + delete_fag = #{deleteFag,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/test/resources/generatorConfig.xml b/src/test/resources/generatorConfig.xml index cc8718a2..868b1080 100644 --- a/src/test/resources/generatorConfig.xml +++ b/src/test/resources/generatorConfig.xml @@ -51,6 +51,7 @@
+