diff --git a/erp_web/pages/manage/serialNumber.html b/erp_web/pages/manage/serialNumber.html
new file mode 100644
index 00000000..0c95b92e
--- /dev/null
+++ b/erp_web/pages/manage/serialNumber.html
@@ -0,0 +1,453 @@
+
+
+
+
| 备注 |
@@ -611,7 +621,7 @@
+ '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.mfrs + 'AaBb' + rec.otherfield1 + 'AaBb' + rec.otherfield2 + 'AaBb' + rec.otherfield3+ 'AaBb' + rec.enableSerialNumber;
str += ' ';
str += ' ';
return str;
@@ -671,6 +681,11 @@
title: '状态', field: 'enabled', width: 50, align: "center", formatter: function (value) {
return value ? "启用" : "禁用";
}
+ },
+ {
+ title: '序列号', field: 'enableSerialNumber', width: 70, align: "center", formatter: function (value) {
+ return value ? "启用" : "禁用";
+ }
}
]],
toolbar: [
@@ -1145,7 +1160,7 @@
$('#materialFM input').val(""); //将输入框全部清空
bindMProperty(); //根据商品属性绑定
-
+ $("#enableSerialNumber").combobox('setValue','0');
$('#materialDlg').dialog('open').dialog('setTitle', ' 增加商品信息');
$(".window-mask").css({width: webW, height: webH});
$("#Name").val("").focus();
@@ -1271,11 +1286,13 @@
basicList.LowPrice = $("#basicLowPrice").val();
basicList.PresetPriceOne = $("#basicPresetPriceOne").val();
basicList.PresetPriceTwo = $("#basicPresetPriceTwo").val();
+ basicList.enableSerialNumber=$("#enableSerialNumber").combobox('getValue');
otherList.Unit = $("#otherUnit").text();
otherList.RetailPrice = $("#otherRetailPrice").val();
otherList.LowPrice = $("#otherLowPrice").val();
otherList.PresetPriceOne = $("#otherPresetPriceOne").val();
otherList.PresetPriceTwo = $("#otherPresetPriceTwo").val();
+
var basic = {};
var other = {};
basic.basic = basicList;
@@ -1341,6 +1358,10 @@
$("#Name").focus().val(materialInfo[1]);
$("#Color").focus().val(materialInfo[11]);
+ // console.log("enableSerialNumber:"+(materialInfo[24]=='true'?'1':'0'));
+ // console.log("enableSerialNumber:"+materialInfo[24]);
+ $("#enableSerialNumber").combobox('setValue',materialInfo[24]=='true'?'1':'0');
+ // console.log($("#enableSerialNumber").val());
var categoryName = ""; //类型名称
mId = materialInfo[14];
diff --git a/pom.xml b/pom.xml
index 829f3b70..7f1e9547 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,6 +101,12 @@
jxl
2.6.3
+
+
+ org.projectlombok
+ lombok
+ 1.16.12
+
diff --git a/sql/jsh_erp.sql b/sql/jsh_erp.sql
index 88922e6e..d57a9b96 100644
--- a/sql/jsh_erp.sql
+++ b/sql/jsh_erp.sql
@@ -5179,3 +5179,23 @@ INSERT INTO `jsh_userbusiness` VALUES ('24', 'UserDepot', '65', '[1]', null);
INSERT INTO `jsh_userbusiness` VALUES ('25', 'UserCustomer', '64', '[5][2]', null);
INSERT INTO `jsh_userbusiness` VALUES ('26', 'UserCustomer', '65', '[6]', null);
INSERT INTO `jsh_userbusiness` VALUES ('27', 'UserCustomer', '63', '[5][2]', null);
+
+--添加序列号表
+DROP TABLE IF EXISTS `jsh_serial_number`;
+CREATE TABLE `jsh_serial_number` (
+ `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+ `material_Id` bigint(20) DEFAULT NULL COMMENT '产品表id',
+ `serial_Number` varchar(64) DEFAULT NULL COMMENT '序列号',
+ `is_Sell` bit(1) DEFAULT 0 COMMENT '是否卖出,0未卖出,1卖出',
+ `remark` varchar(1024) DEFAULT NULL COMMENT '备注',
+ `delete_Flag` bit(1) DEFAULT 0 COMMENT '删除标记,0未删除,1删除',
+ `create_Time` datetime DEFAULT NULL COMMENT '创建时间',
+ `creator` bigint(20) DEFAULT NULL COMMENT '创建人',
+ `update_Time` datetime DEFAULT NULL COMMENT '更新时间',
+ `updater` bigint(20) DEFAULT NULL COMMENT '更新人',
+ PRIMARY KEY (`Id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='序列号表';
+
+--产品表新增字段是否启用序列号
+alter table jsh_material add enableSerialNumber bit(1) DEFAULT 0 COMMENT '是否开启序列号,0否,1是';
+
diff --git a/sql/华夏ERP数据库设计汇总.xlsx b/sql/华夏ERP数据库设计汇总.xlsx
index 848bffae..f13a512e 100644
Binary files a/sql/华夏ERP数据库设计汇总.xlsx and b/sql/华夏ERP数据库设计汇总.xlsx differ
diff --git a/src/main/java/com/jsh/erp/ErpApplication.java b/src/main/java/com/jsh/erp/ErpApplication.java
index f519e836..6e92d3fb 100644
--- a/src/main/java/com/jsh/erp/ErpApplication.java
+++ b/src/main/java/com/jsh/erp/ErpApplication.java
@@ -1,9 +1,13 @@
package com.jsh.erp;
import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.servlet.DispatcherServlet;
@SpringBootApplication
@MapperScan(basePackages = {"com.jsh.erp.datasource.mappers"})
@@ -15,4 +19,5 @@ public class ErpApplication{
+
}
diff --git a/src/main/java/com/jsh/erp/constants/BusinessConstants.java b/src/main/java/com/jsh/erp/constants/BusinessConstants.java
new file mode 100644
index 00000000..f72c6c64
--- /dev/null
+++ b/src/main/java/com/jsh/erp/constants/BusinessConstants.java
@@ -0,0 +1,29 @@
+package com.jsh.erp.constants;
+
+/**
+ * @ClassName:BusinessConstants
+ * @Description 业务字典类
+ * @Author linshengming
+ * @Date 2018-9-15 17:58
+ * @Version 1.0
+ **/
+public class BusinessConstants {
+
+ /**
+ * 默认的日期格式
+ */
+ public static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+ /**
+ * 默认的分页起始页页码
+ */
+ public static final String DEFAULT_PAGINATION_PAGE_NUMBER = "1";
+ /**
+ * 默认的分页页数
+ */
+ public static final String DEFAULT_PAGINATION_PAGE_SIZE = "10";
+
+
+
+
+
+}
diff --git a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java
new file mode 100644
index 00000000..cd11f548
--- /dev/null
+++ b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java
@@ -0,0 +1,61 @@
+package com.jsh.erp.constants;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class ExceptionConstants {
+ /**
+ * code 格式 type+五位数字,例如3500000
+ * ResourceInfo(value = "inOutItem", type = 35)
+ *
+ * */
+
+ public static final String GLOBAL_RETURNS_CODE = "code";
+ public static final String GLOBAL_RETURNS_MESSAGE = "msg";
+ public static final String GLOBAL_RETURNS_DATA = "data";
+
+ /**
+ * 正常返回/操作成功
+ **/
+ public static final int SERVICE_SUCCESS_CODE = 200;
+ public static final String SERVICE_SUCCESS_MSG = "操作成功";
+ /**
+ * 系统运行时未知错误
+ **/
+ public static final int SERVICE_SYSTEM_ERROR_CODE = 500;
+ public static final String SERVICE_SYSTEM_ERROR_MSG = "未知异常";
+
+ /**
+ * 序列号
+ * type = 105
+ * */
+ /**序列号已存在*/
+ public static final int SERIAL_NUMBERE_ALREADY_EXISTS_CODE = 10500000;
+ public static final String SERIAL_NUMBERE_ALREADY_EXISTS_MSG = "序列号已存在";
+ /**序列号不能为为空*/
+ public static final int SERIAL_NUMBERE_NOT_BE_EMPTY_CODE = 10500000;
+ public static final String SERIAL_NUMBERE_NOT_BE_EMPTY_MSG = "序列号不能为为空";
+
+
+
+ /**
+ * 商品信息
+ * type = 80
+ * */
+ //商品信息不存在
+ public static final int MATERIAL_NOT_EXISTS_CODE = 8000000;
+ public static final String MATERIAL_NOT_EXISTS__MSG = "商品信息不存在";
+ //商品信息不唯一
+ public static final int MATERIAL_NOT_ONLY_CODE = 8000001;
+ public static final String MATERIAL_NOT_ONLY__MSG = "商品信息不唯一";
+
+ /**
+ * 标准正常返回/操作成功返回
+ * @return
+ */
+ public static JSONObject standardSuccess () {
+ JSONObject success = new JSONObject();
+ success.put(GLOBAL_RETURNS_CODE, SERVICE_SUCCESS_CODE);
+ success.put(GLOBAL_RETURNS_MESSAGE, SERVICE_SUCCESS_MSG);
+ return success;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/controller/SerialNumberController.java b/src/main/java/com/jsh/erp/controller/SerialNumberController.java
new file mode 100644
index 00000000..a75d434c
--- /dev/null
+++ b/src/main/java/com/jsh/erp/controller/SerialNumberController.java
@@ -0,0 +1,106 @@
+package com.jsh.erp.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.ExceptionConstants;
+import com.jsh.erp.datasource.entities.SerialNumberEx;
+import com.jsh.erp.exception.BusinessParamCheckingException;
+import com.jsh.erp.service.serialNumber.SerialNumberService;
+import com.jsh.erp.utils.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/22 10:29
+ */
+@RestController
+public class SerialNumberController {
+ private Logger logger = LoggerFactory.getLogger(SerialNumberController.class);
+
+ @Resource
+ private SerialNumberService serialNumberService;
+ /**
+ * create by: cjl
+ * description:
+ * 检查序列号是否存在
+ * create time: 2019/1/22 11:02
+ * @Param: id
+ * @Param: materialName
+ * @Param: serialNumber
+ * @Param: request
+ * @return java.lang.Object
+ */
+ @PostMapping("/serialNumber/checkIsExist")
+ @ResponseBody
+ public Object checkIsExist(@RequestParam("id") Long id, @RequestParam("materialName") String materialName,
+ @RequestParam("serialNumber") String serialNumber, HttpServletRequest request) throws Exception{
+ JSONObject result = ExceptionConstants.standardSuccess();
+ if(StringUtil.isEmpty(serialNumber)){
+ throw new BusinessParamCheckingException(ExceptionConstants.SERIAL_NUMBERE_NOT_BE_EMPTY_CODE,
+ ExceptionConstants.SERIAL_NUMBERE_NOT_BE_EMPTY_MSG);
+ }
+ serialNumberService.checkIsExist(id, materialName, serialNumber);
+ return result;
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 新增序列号信息
+ * create time: 2019/1/22 17:10
+ * @Param: beanJson
+ * @Param: request
+ * @return java.lang.Object
+ */
+ @PostMapping("/serialNumber/addSerialNumber")
+ @ResponseBody
+ public Object addSerialNumber(@RequestParam("info") String beanJson){
+ JSONObject result = ExceptionConstants.standardSuccess();
+ SerialNumberEx sne= JSON.parseObject(beanJson, SerialNumberEx.class);
+ serialNumberService.addSerialNumber(sne);
+ return result;
+
+ }
+ /**
+ * create by: cjl
+ * description:
+ * 修改序列号信息
+ * create time: 2019/1/23 13:56
+ * @Param: beanJson
+ * @return java.lang.Object
+ */
+ @PostMapping("/serialNumber/updateSerialNumber")
+ @ResponseBody
+ public Object updateSerialNumber(@RequestParam("info") String beanJson){
+
+ JSONObject result = ExceptionConstants.standardSuccess();
+ SerialNumberEx sne= JSON.parseObject(beanJson, SerialNumberEx.class);
+ serialNumberService.updateSerialNumber(sne);
+ return result;
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/src/main/java/com/jsh/erp/datasource/entities/Material.java b/src/main/java/com/jsh/erp/datasource/entities/Material.java
index 4834817f..f21c6adf 100644
--- a/src/main/java/com/jsh/erp/datasource/entities/Material.java
+++ b/src/main/java/com/jsh/erp/datasource/entities/Material.java
@@ -186,6 +186,11 @@ public class Material {
* @mbggenerated
*/
private String otherfield3;
+ /**
+ * 2019-01-21新增字段enableSerialNumber
+ *是否开启序列号
+ * */
+ private Boolean enableSerialNumber;
/**
* This method was generated by MyBatis Generator.
@@ -738,4 +743,12 @@ public class Material {
public void setOtherfield3(String otherfield3) {
this.otherfield3 = otherfield3 == null ? null : otherfield3.trim();
}
+
+ public Boolean getEnableSerialNumber() {
+ return enableSerialNumber;
+ }
+
+ public void setEnableSerialNumber(Boolean enableSerialNumber) {
+ this.enableSerialNumber = enableSerialNumber;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java b/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java
index bc7514d6..521442a7 100644
--- a/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java
+++ b/src/main/java/com/jsh/erp/datasource/entities/MaterialVo4Unit.java
@@ -55,6 +55,11 @@ public class MaterialVo4Unit {
private String categoryName;
private String materialOther;
+ /**
+ * 2019-01-21新增字段enableSerialNumber
+ *是否开启序列号
+ * */
+ private Boolean enableSerialNumber;
public Long getId() {
return id;
@@ -263,4 +268,12 @@ public class MaterialVo4Unit {
public void setMaterialOther(String materialOther) {
this.materialOther = materialOther;
}
+
+ public Boolean getEnableSerialNumber() {
+ return enableSerialNumber;
+ }
+
+ public void setEnableSerialNumber(Boolean enableSerialNumber) {
+ this.enableSerialNumber = enableSerialNumber;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java b/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java
new file mode 100644
index 00000000..bd29dff4
--- /dev/null
+++ b/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java
@@ -0,0 +1,46 @@
+package com.jsh.erp.datasource.entities;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/21 17:32
+ */
+public class SerialNumberEx extends SerialNumber{
+ /**
+ * 商品名称
+ * */
+ private String materialName;
+ /**
+ * 创建者名称
+ * */
+ private String creatorName;
+ /**
+ * 更新者名称
+ * */
+ private String updaterName;
+
+ public String getMaterialName() {
+ return materialName;
+ }
+
+ public void setMaterialName(String materialName) {
+ this.materialName = materialName;
+ }
+
+ public String getCreatorName() {
+ return creatorName;
+ }
+
+ public void setCreatorName(String creatorName) {
+ this.creatorName = creatorName;
+ }
+
+ public String getUpdaterName() {
+ return updaterName;
+ }
+
+ public void setUpdaterName(String updaterName) {
+ this.updaterName = updaterName;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java
index e2097309..3f0176c1 100644
--- a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java
+++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapper.java
@@ -96,35 +96,5 @@ public interface MaterialMapper {
*/
int updateByPrimaryKey(Material record);
- List selectByConditionMaterial(
- @Param("name") String name,
- @Param("model") String model,
- @Param("categoryId") Long categoryId,
- @Param("categoryIds") String categoryIds,
- @Param("mpList") String mpList,
- @Param("offset") Integer offset,
- @Param("rows") Integer rows);
- int countsByMaterial(
- @Param("name") String name,
- @Param("model") String model,
- @Param("categoryId") Long categoryId,
- @Param("categoryIds") String categoryIds,
- @Param("mpList") String mpList);
-
- String findUnitName(@Param("mId") Long mId);
-
- List findById(@Param("id") Long id);
-
- List findBySelect();
-
- int updatePriceNullByPrimaryKey(Long id);
-
- int updateUnitIdNullByPrimaryKey(Long id);
-
- List findByAll(
- @Param("name") String name,
- @Param("model") String model,
- @Param("categoryId") Long categoryId,
- @Param("categoryIds") String categoryIds);
}
\ 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
new file mode 100644
index 00000000..eae6bf8d
--- /dev/null
+++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java
@@ -0,0 +1,53 @@
+package com.jsh.erp.datasource.mappers;
+
+import com.jsh.erp.datasource.entities.Material;
+import com.jsh.erp.datasource.entities.MaterialVo4Unit;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/22 14:54
+ */
+public interface MaterialMapperEx {
+
+ List selectByConditionMaterial(
+ @Param("name") String name,
+ @Param("model") String model,
+ @Param("categoryId") Long categoryId,
+ @Param("categoryIds") String categoryIds,
+ @Param("mpList") String mpList,
+ @Param("offset") Integer offset,
+ @Param("rows") Integer rows);
+
+ int countsByMaterial(
+ @Param("name") String name,
+ @Param("model") String model,
+ @Param("categoryId") Long categoryId,
+ @Param("categoryIds") String categoryIds,
+ @Param("mpList") String mpList);
+
+ String findUnitName(@Param("mId") Long mId);
+
+ List findById(@Param("id") Long id);
+
+ List findBySelect();
+
+ int updatePriceNullByPrimaryKey(Long id);
+
+ int updateUnitIdNullByPrimaryKey(Long id);
+
+ List findByAll(
+ @Param("name") String name,
+ @Param("model") String model,
+ @Param("categoryId") Long categoryId,
+ @Param("categoryIds") String categoryIds);
+ /**
+ * 通过商品名称查询商品信息
+ * */
+ List findByMaterialName(@Param("name") String name);
+
+}
diff --git a/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java
new file mode 100644
index 00000000..686970eb
--- /dev/null
+++ b/src/main/java/com/jsh/erp/datasource/mappers/SerialNumberMapperEx.java
@@ -0,0 +1,40 @@
+package com.jsh.erp.datasource.mappers;
+
+import com.jsh.erp.datasource.entities.SerialNumber;
+import com.jsh.erp.datasource.entities.SerialNumberEx;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/21 17:09
+ */
+public interface SerialNumberMapperEx {
+ /**
+ * 根据条件查询序列号列表
+ * */
+ List selectByConditionSerialNumber(@Param("serialNumber") String serialNumber, @Param("materialName") String materialName,@Param("offset") Integer offset,@Param("rows") Integer rows);
+ /**
+ * 根据条件查询序列号数量
+ * */
+ int countSerialNumber(@Param("serialNumber")String serialNumber,@Param("materialName")String materialName);
+ /**
+ * 通过id查询序列号复合信息
+ * */
+ List findById(Long id);
+ /**
+ * 通过序列号查询序列号实体信息
+ * */
+ List findBySerialNumber(@Param("serialNumber") String serialNumber);
+ /**
+ * 新增序列号信息
+ * */
+ int addSerialNumber(SerialNumberEx serialNumberEx);
+ /**
+ * 修改序列号信息
+ * */
+ int updateSerialNumber(SerialNumberEx serialNumberEx);
+}
diff --git a/src/main/java/com/jsh/erp/exception/BusinessParamCheckingException.java b/src/main/java/com/jsh/erp/exception/BusinessParamCheckingException.java
new file mode 100644
index 00000000..ac5ebdc3
--- /dev/null
+++ b/src/main/java/com/jsh/erp/exception/BusinessParamCheckingException.java
@@ -0,0 +1,25 @@
+package com.jsh.erp.exception;
+
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Getter
+public class BusinessParamCheckingException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+ private int code;
+ private String reason;
+
+ public BusinessParamCheckingException(int code, String reason) {
+ super(reason);
+ this.code = code;
+ this.reason = reason;
+ }
+
+ public BusinessParamCheckingException(int code, String reason, Throwable throwable) {
+ super(reason, throwable);
+ this.code = code;
+ this.reason = reason;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/exception/BusinessRunTimeException.java b/src/main/java/com/jsh/erp/exception/BusinessRunTimeException.java
new file mode 100644
index 00000000..efd81282
--- /dev/null
+++ b/src/main/java/com/jsh/erp/exception/BusinessRunTimeException.java
@@ -0,0 +1,25 @@
+package com.jsh.erp.exception;
+
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Getter
+public class BusinessRunTimeException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+ private int code;
+ private String reason;
+
+ public BusinessRunTimeException(int code, String reason) {
+ super(reason);
+ this.code = code;
+ this.reason = reason;
+ }
+
+ public BusinessRunTimeException(int code, String reason, Throwable throwable) {
+ super(reason, throwable);
+ this.code = code;
+ this.reason = reason;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/exception/GlobalExceptionHandler.java b/src/main/java/com/jsh/erp/exception/GlobalExceptionHandler.java
new file mode 100644
index 00000000..46765fe6
--- /dev/null
+++ b/src/main/java/com/jsh/erp/exception/GlobalExceptionHandler.java
@@ -0,0 +1,41 @@
+package com.jsh.erp.exception;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.ExceptionConstants;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ExceptionHandler(value = Exception.class)
+ @ResponseBody
+ public Object handleException(Exception e, HttpServletRequest request) {
+ JSONObject status = new JSONObject();
+
+ // 针对业务参数异常的处理
+ if (e instanceof BusinessParamCheckingException) {
+ status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ((BusinessParamCheckingException) e).getCode());
+ status.put(ExceptionConstants.GLOBAL_RETURNS_MESSAGE, ((BusinessParamCheckingException) e).getReason());
+ return status;
+ }
+
+ //针对业务运行时异常的处理
+ if (e instanceof BusinessRunTimeException) {
+ status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ((BusinessRunTimeException) e).getCode());
+ status.put(ExceptionConstants.GLOBAL_RETURNS_MESSAGE, ((BusinessRunTimeException) e).getReason());
+ return status;
+ }
+
+ status.put(ExceptionConstants.GLOBAL_RETURNS_CODE, ExceptionConstants.SERVICE_SYSTEM_ERROR_CODE);
+ status.put(ExceptionConstants.GLOBAL_RETURNS_MESSAGE, ExceptionConstants.SERVICE_SYSTEM_ERROR_MSG);
+ log.error("Global Exception Occured => url : {}, msg : {}", request.getRequestURL(), e.getMessage());
+ e.printStackTrace();
+ return status;
+ }
+}
\ No newline at end of file
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 45c8f4b8..ab9e44a3 100644
--- a/src/main/java/com/jsh/erp/service/material/MaterialService.java
+++ b/src/main/java/com/jsh/erp/service/material/MaterialService.java
@@ -5,6 +5,7 @@ import com.jsh.erp.datasource.entities.Material;
import com.jsh.erp.datasource.entities.MaterialExample;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import com.jsh.erp.datasource.mappers.MaterialMapper;
+import com.jsh.erp.datasource.mappers.MaterialMapperEx;
import com.jsh.erp.utils.BaseResponseInfo;
import com.jsh.erp.utils.StringUtil;
import org.slf4j.Logger;
@@ -25,6 +26,8 @@ public class MaterialService {
@Resource
private MaterialMapper materialMapper;
+ @Resource
+ private MaterialMapperEx materialMapperEx;
public Material getMaterial(long id) {
return materialMapper.selectByPrimaryKey(id);
@@ -38,7 +41,7 @@ public class MaterialService {
public List select(String name, String model,Long categoryId, String categoryIds,String mpList, int offset, int rows) {
String[] mpArr = mpList.split(",");
List resList = new ArrayList();
- List list = materialMapper.selectByConditionMaterial(name, model,categoryId,categoryIds,mpList, offset, rows);
+ List list = materialMapperEx.selectByConditionMaterial(name, model,categoryId,categoryIds,mpList, offset, rows);
if (null != list) {
for (MaterialVo4Unit m : list) {
//扩展信息
@@ -71,7 +74,7 @@ public class MaterialService {
}
public int countMaterial(String name, String model,Long categoryId, String categoryIds,String mpList) {
- return materialMapper.countsByMaterial(name, model,categoryId,categoryIds,mpList);
+ return materialMapperEx.countsByMaterial(name, model,categoryId,categoryIds,mpList);
}
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
@@ -88,9 +91,9 @@ public class MaterialService {
int res = materialMapper.updateByPrimaryKeySelective(material);
Long unitId = material.getUnitid();
if(unitId != null) {
- materialMapper.updatePriceNullByPrimaryKey(id); //将价格置空
+ materialMapperEx.updatePriceNullByPrimaryKey(id); //将价格置空
} else {
- materialMapper.updateUnitIdNullByPrimaryKey(id); //将多单位置空
+ materialMapperEx.updateUnitIdNullByPrimaryKey(id); //将多单位置空
}
return res;
}
@@ -146,15 +149,15 @@ public class MaterialService {
}
public String findUnitName(Long mId){
- return materialMapper.findUnitName(mId);
+ return materialMapperEx.findUnitName(mId);
}
public List findById(Long id){
- return materialMapper.findById(id);
+ return materialMapperEx.findById(id);
}
public List findBySelect(){
- return materialMapper.findBySelect();
+ return materialMapperEx.findBySelect();
}
public List findByOrder(){
@@ -165,7 +168,7 @@ public class MaterialService {
public List findByAll(String name, String model, Long categoryId, String categoryIds) {
List resList = new ArrayList();
- List list = materialMapper.findByAll(name, model, categoryId, categoryIds);
+ List list = materialMapperEx.findByAll(name, model, categoryId, categoryIds);
if (null != list) {
for (MaterialVo4Unit m : list) {
resList.add(m);
diff --git a/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberComponent.java b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberComponent.java
new file mode 100644
index 00000000..a3176e0e
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberComponent.java
@@ -0,0 +1,77 @@
+package com.jsh.erp.service.serialNumber;
+
+import com.jsh.erp.service.ICommonQuery;
+import com.jsh.erp.service.material.MaterialResource;
+import com.jsh.erp.service.material.MaterialService;
+import com.jsh.erp.utils.Constants;
+import com.jsh.erp.utils.QueryUtils;
+import com.jsh.erp.utils.StringUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/21 16:33
+ */
+@Service(value = "serialNumber_component")
+@SerialNumberResource
+public class SerialNumberComponent implements ICommonQuery {
+ @Resource
+ private SerialNumberService serialNumberService;
+
+ @Override
+ public Object selectOne(String condition) {
+ return null;
+ }
+
+ @Override
+ public List> select(Map map) {
+ return getSerialNumberList(map);
+ }
+
+ private List> getSerialNumberList(Map map) {
+ String search = map.get(Constants.SEARCH);
+ String serialNumber = StringUtil.getInfo(search, "serialNumber");
+ String materialName = StringUtil.getInfo(search, "materialName");
+ return serialNumberService.select(serialNumber,materialName,QueryUtils.offset(map), QueryUtils.rows(map));
+ }
+
+ @Override
+ public int counts(Map map) {
+ String search = map.get(Constants.SEARCH);
+ String serialNumber = StringUtil.getInfo(search, "serialNumber");
+ String materialName = StringUtil.getInfo(search, "materialName");
+ return serialNumberService.countSerialNumber(serialNumber, materialName);
+ }
+
+ @Override
+ public int insert(String beanJson, HttpServletRequest request) {
+ return serialNumberService.insertSerialNumber(beanJson, request);
+ }
+
+ @Override
+ public int update(String beanJson, Long id) {
+ return serialNumberService.updateSerialNumber(beanJson, id);
+ }
+
+ @Override
+ public int delete(Long id) {
+ return serialNumberService.deleteSerialNumber(id);
+ }
+
+ @Override
+ public int batchDelete(String ids) {
+ return serialNumberService.batchDeleteSerialNumber(ids);
+ }
+
+ @Override
+ public int checkIsNameExist(Long id, String serialNumber) {
+ return serialNumberService.checkIsNameExist(id, serialNumber);
+ }
+}
diff --git a/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberResource.java b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberResource.java
new file mode 100644
index 00000000..6da53819
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberResource.java
@@ -0,0 +1,18 @@
+package com.jsh.erp.service.serialNumber;
+
+import com.jsh.erp.service.ResourceInfo;
+
+import java.lang.annotation.*;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/21 16:33
+ */
+@ResourceInfo(value = "serialNumber", type = 105)
+@Inherited
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SerialNumberResource {
+}
diff --git a/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java
new file mode 100644
index 00000000..e893c08e
--- /dev/null
+++ b/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java
@@ -0,0 +1,235 @@
+package com.jsh.erp.service.serialNumber;
+
+import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.ExceptionConstants;
+import com.jsh.erp.datasource.entities.*;
+import com.jsh.erp.datasource.mappers.MaterialMapperEx;
+import com.jsh.erp.datasource.mappers.SerialNumberMapper;
+import com.jsh.erp.datasource.mappers.SerialNumberMapperEx;
+import com.jsh.erp.exception.BusinessRunTimeException;
+import com.jsh.erp.service.material.MaterialService;
+import com.jsh.erp.utils.StringUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Description
+ *
+ * @Author: cjl
+ * @Date: 2019/1/21 16:33
+ */
+@Service
+public class SerialNumberService {
+ private Logger logger = LoggerFactory.getLogger(MaterialService.class);
+
+ @Resource
+ private SerialNumberMapper serialNumberMapper;
+ @Resource
+ private SerialNumberMapperEx serialNumberMapperEx;
+ @Resource
+ private MaterialMapperEx materialMapperEx;
+
+
+ public SerialNumber getSerialNumber(long id) {
+ return serialNumberMapper.selectByPrimaryKey(id);
+ }
+
+ public List getSerialNumber() {
+ SerialNumberExample example = new SerialNumberExample();
+ return serialNumberMapper.selectByExample(example);
+ }
+
+ public List select(String serialNumber, String materialName, Integer offset, Integer rows) {
+ return serialNumberMapperEx.selectByConditionSerialNumber(serialNumber, materialName,offset, rows);
+
+ }
+
+ public int countSerialNumber(String serialNumber,String materialName) {
+ return serialNumberMapperEx.countSerialNumber(serialNumber, materialName);
+ }
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int insertSerialNumber(String beanJson, HttpServletRequest request) {
+ SerialNumber serialNumber = JSONObject.parseObject(beanJson, SerialNumber.class);
+ return serialNumberMapper.insertSelective(serialNumber);
+ }
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int updateSerialNumber(String beanJson, Long id) {
+ SerialNumber serialNumber = JSONObject.parseObject(beanJson, SerialNumber.class);
+ serialNumber.setId(id);
+ int res = serialNumberMapper.updateByPrimaryKeySelective(serialNumber);
+ return res;
+ }
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int deleteSerialNumber(Long id) {
+ return serialNumberMapper.deleteByPrimaryKey(id);
+ }
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchDeleteSerialNumber(String ids) {
+ List idList = StringUtil.strToLongList(ids);
+ SerialNumberExample example = new SerialNumberExample();
+ example.createCriteria().andIdIn(idList);
+ return serialNumberMapper.deleteByExample(example);
+ }
+
+ public int checkIsNameExist(Long id, String serialNumber) {
+ SerialNumberExample example = new SerialNumberExample();
+ example.createCriteria().andIdNotEqualTo(id).andSerialNumberEqualTo(serialNumber);
+ List list = serialNumberMapper.selectByExample(example);
+ return list.size();
+ }
+
+
+
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchSetEnable(Boolean enabled, String materialIDs) {
+ List ids = StringUtil.strToLongList(materialIDs);
+ SerialNumber serialNumber = new SerialNumber();
+ SerialNumberExample example = new SerialNumberExample();
+ example.createCriteria().andIdIn(ids);
+ return serialNumberMapper.updateByExampleSelective(serialNumber, example);
+ }
+
+
+ public List findById(Long id){
+ return serialNumberMapperEx.findById(id);
+ }
+
+
+
+
+ public void checkIsExist(Long id, String materialName, String serialNumber) {
+ /**
+ * 商品名称不为空时,检查商品名称是否存在
+ * */
+ if(StringUtil.isNotEmpty(materialName)){
+ List mlist = materialMapperEx.findByMaterialName(materialName);
+ if(mlist==null||mlist.size()<1){
+ //商品名称不存在
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_EXISTS_CODE,
+ ExceptionConstants.MATERIAL_NOT_EXISTS__MSG);
+ }else if(mlist.size()>1){
+ //商品信息不唯一
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_ONLY_CODE,
+ ExceptionConstants.MATERIAL_NOT_ONLY__MSG);
+
+ }
+ }
+ /***
+ * 判断序列号是否已存在
+ * */
+ List list = serialNumberMapperEx.findBySerialNumber(serialNumber);
+ if(list!=null&&list.size()>0){
+ if(list.size()>1){
+ //存在多个同名序列号
+ throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE,
+ ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG);
+ }else{
+ //存在一个序列号
+ if(id==null){
+ //新增,存在要添加的序列号
+ throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE,
+ ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG);
+ }
+ if(id.equals(list.get(0).getId())){
+ //修改的是同一条数据
+ }else{
+ //存在一条不同的序列号信息
+ throw new BusinessRunTimeException(ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_CODE,
+ ExceptionConstants.SERIAL_NUMBERE_ALREADY_EXISTS_MSG);
+ }
+ }
+
+ }
+ }
+
+ /**
+ * 新增序列号信息
+ * */
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public SerialNumberEx addSerialNumber(SerialNumberEx serialNumberEx) {
+ if(serialNumberEx==null){
+ return null;
+ }
+ /**处理商品id*/
+ if(serialNumberEx.getMaterialId()==null){
+ if(StringUtil.isNotEmpty(serialNumberEx.getMaterialName())){
+ List mlist = materialMapperEx.findByMaterialName(serialNumberEx.getMaterialName());
+ if(mlist==null||mlist.size()<1){
+ //商品名称不存在
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_EXISTS_CODE,
+ ExceptionConstants.MATERIAL_NOT_EXISTS__MSG);
+ }else if(mlist.size()>1){
+ //商品信息不唯一
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_ONLY_CODE,
+ ExceptionConstants.MATERIAL_NOT_ONLY__MSG);
+
+ }else{
+ serialNumberEx.setMaterialId(mlist.get(0).getId());
+ }
+ }
+ }
+ //删除标记,默认未删除
+ serialNumberEx.setDeleteFlag(false);
+ //已卖出,默认未否
+ serialNumberEx.setIsSell(false);
+ Date date=new Date();
+ serialNumberEx.setCreateTime(date);
+ serialNumberEx.setUpdateTime(date);
+ HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+ User userInfo=(User)request.getSession().getAttribute("user");
+ serialNumberEx.setCreator(userInfo==null?null:userInfo.getId());
+ serialNumberEx.setUpdater(userInfo==null?null:userInfo.getId());
+ int result=serialNumberMapperEx.addSerialNumber(serialNumberEx);
+ if(result==1){
+ return serialNumberEx;
+ }
+ return null;
+ }
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public SerialNumberEx updateSerialNumber(SerialNumberEx serialNumberEx) {
+ if(serialNumberEx==null){
+ return null;
+ }
+ /**处理商品id*/
+ if(StringUtil.isNotEmpty(serialNumberEx.getMaterialName())){
+ List mlist = materialMapperEx.findByMaterialName(serialNumberEx.getMaterialName());
+ if(mlist==null||mlist.size()<1){
+ //商品名称不存在
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_EXISTS_CODE,
+ ExceptionConstants.MATERIAL_NOT_EXISTS__MSG);
+ }else if(mlist.size()>1){
+ //商品信息不唯一
+ throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_NOT_ONLY_CODE,
+ ExceptionConstants.MATERIAL_NOT_ONLY__MSG);
+
+ }else{
+ serialNumberEx.setMaterialId(mlist.get(0).getId());
+ }
+ }
+ Date date=new Date();
+ serialNumberEx.setUpdateTime(date);
+ HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+ User userInfo=(User)request.getSession().getAttribute("user");
+ serialNumberEx.setUpdater(userInfo==null?null:userInfo.getId());
+ int result = serialNumberMapperEx.updateSerialNumber(serialNumberEx);
+ if(result==1){
+ return serialNumberEx;
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/com/jsh/erp/utils/JsonUtils.java b/src/main/java/com/jsh/erp/utils/JsonUtils.java
index d990ccb2..131684cf 100644
--- a/src/main/java/com/jsh/erp/utils/JsonUtils.java
+++ b/src/main/java/com/jsh/erp/utils/JsonUtils.java
@@ -1,21 +1,22 @@
-package com.jsh.erp.utils;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-
-/**
- * Created by jishenghua 2018-5-11 09:48:08
- *
- * @author jishenghua
- */
-public class JsonUtils {
-
- public static JSONObject ok(){
- JSONObject obj = new JSONObject();
- JSONObject tmp = new JSONObject();
- tmp.put("message", "成功");
- obj.put("code", 200);
- obj.put("data", tmp);
- return obj;
- }
-}
+package com.jsh.erp.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * Created by jishenghua 2018-5-11 09:48:08
+ *
+ * @author jishenghua
+ */
+public class JsonUtils {
+
+ public static JSONObject ok(){
+ JSONObject obj = new JSONObject();
+ JSONObject tmp = new JSONObject();
+ tmp.put("message", "成功");
+ obj.put("code", 200);
+ obj.put("data", tmp);
+ return obj;
+ }
+
+}
diff --git a/src/main/java/com/jsh/erp/utils/StringUtil.java b/src/main/java/com/jsh/erp/utils/StringUtil.java
index 7321449f..6c44e68a 100644
--- a/src/main/java/com/jsh/erp/utils/StringUtil.java
+++ b/src/main/java/com/jsh/erp/utils/StringUtil.java
@@ -1,214 +1,218 @@
-package com.jsh.erp.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-/**
- * @author jishenghua qq752718920 2018-10-7 15:26:27
- */
-public class StringUtil {
-
- private StringUtil() {
-
- }
-
- private static String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
-
- public static String filterNull(String str) {
- if (str == null) {
- return "";
- } else {
- return str.trim();
- }
- }
-
- public static boolean stringEquels(String source,String target) {
- if(isEmpty(source)||isEmpty(target)){
- return false;
- }else{
- return source.equals(target);
- }
- }
-
- public static boolean isEmpty(String str) {
- return str == null || "".equals(str.trim());
- }
-
- public static boolean isNotEmpty(String str) {
- return !isEmpty(str);
- }
-
- public static String getSysDate(String format) {
- if (StringUtil.isEmpty(format)) {
- format = DEFAULT_FORMAT;
- }
- SimpleDateFormat df = new SimpleDateFormat(format);
- return df.format(new Date());
- }
-
- public static Date getDateByString(String date, String format) {
- if (StringUtil.isEmpty(format)) {
- format = DEFAULT_FORMAT;
- }
- if (StringUtil.isNotEmpty(date)) {
- SimpleDateFormat sdf = new SimpleDateFormat(format);
- try {
- return sdf.parse(date);
- } catch (ParseException e) {
- throw new RuntimeException("转换为日期类型错误:DATE:" + date + " FORMAT:" + format);
- }
- } else {
- return null;
- }
- }
-
- public static Date getDateByLongDate(Long millis) {
- if (millis == null) {
- return new Date();
- }
- Calendar cal = Calendar.getInstance();
- cal.setTimeInMillis(millis);
- return cal.getTime();
-
- }
-
- public static UUID stringToUUID(String id) {
- if (StringUtil.isNotEmpty(id)) {
- return UUID.fromString(id);
- } else {
- return null;
- }
- }
-
- public static Integer parseInteger(String str) {
- if (StringUtil.isNotEmpty(str)) {
- return Integer.parseInt(str);
- } else {
- return null;
- }
- }
-
- public static List listToUUID(List listStrs) {
- if (listStrs != null && listStrs.size() > 0) {
- List uuidList = new ArrayList();
- for (String str : listStrs) {
- uuidList.add(UUID.fromString(str));
- }
- return uuidList;
- } else {
- return null;
- }
- }
-
- public static List arrayToUUIDList(String[] uuids) {
- if (uuids != null && uuids.length > 0) {
- List uuidList = new ArrayList();
- for (String str : uuids) {
- uuidList.add(UUID.fromString(str));
- }
- return uuidList;
- } else {
- return null;
- }
- }
-
- //是否是JSON
- public static boolean containsAny(String str, String... flag) {
- if (str != null) {
- if (flag == null || flag.length == 0) {
- flag = "[-{-}-]-,".split("-");
- }
- for (String s : flag) {
- if (str.contains(s)) {
- return true;
- }
- }
- }
- return false;
- }
-
- public static String getModifyOrgOperateData(UUID resourceId, UUID orgId) {
- if (resourceId != null && orgId != null) {
- Map map = new HashMap();
- map.put(resourceId, orgId);
- return JSON.toJSONString(map);
- }
- return "";
- }
-
- public static String[] listToStringArray(List list) {
- if (list != null && !list.isEmpty()) {
- return list.toArray(new String[list.size()]);
- }
- return new String[0];
- }
-
- public static List stringToListArray(String[] strings) {
- if (strings != null && strings.length > 0) {
- return Arrays.asList(strings);
- }
- return new ArrayList();
- }
-
- /**
- * String字符串转成List数据格式
- * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6];
- *
- * @param strArr
- * @return
- */
- public static List strToLongList(String strArr) {
- List idList=new ArrayList();
- String[] d=strArr.split(",");
- for (int i = 0, size = d.length; i < size; i++) {
- if(d[i]!=null) {
- idList.add(Long.parseLong(d[i]));
- }
- }
- return idList;
- }
-
- /**
- * String字符串转成List数据格式
- * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6];
- *
- * @param strArr
- * @return
- */
- public static List strToStringList(String strArr) {
- List idList=new ArrayList();
- String[] d=strArr.split(",");
- for (int i = 0, size = d.length; i < size; i++) {
- if(d[i]!=null) {
- idList.add(d[i].toString());
- }
- }
- return idList;
- }
-
- public static List searchCondition(String search) {
- if (isEmpty(search)) {
- return new ArrayList();
- }else{
- //String[] split = search.split(" ");
- String[] split = search.split("#");
- return stringToListArray(split);
- }
- }
-
- public static String getInfo(String search, String key){
- String value = "";
- if(search!=null) {
- JSONObject obj = JSONObject.parseObject(search);
- value = obj.getString(key);
- if(value.equals("")) {
- value = null;
- }
- }
- return value;
- }
-}
+package com.jsh.erp.utils;
+
+import com.alibaba.druid.util.StringUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author jishenghua qq752718920 2018-10-7 15:26:27
+ */
+public class StringUtil {
+
+ private StringUtil() {
+
+ }
+
+ private static String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
+ public static String filterNull(String str) {
+ if (str == null) {
+ return "";
+ } else {
+ return str.trim();
+ }
+ }
+
+ public static boolean stringEquels(String source,String target) {
+ if(isEmpty(source)||isEmpty(target)){
+ return false;
+ }else{
+ return source.equals(target);
+ }
+ }
+
+ public static boolean isEmpty(String str) {
+ return str == null || "".equals(str.trim());
+ }
+
+ public static boolean isNotEmpty(String str) {
+ return !isEmpty(str);
+ }
+
+ public static String getSysDate(String format) {
+ if (StringUtil.isEmpty(format)) {
+ format = DEFAULT_FORMAT;
+ }
+ SimpleDateFormat df = new SimpleDateFormat(format);
+ return df.format(new Date());
+ }
+
+ public static Date getDateByString(String date, String format) {
+ if (StringUtil.isEmpty(format)) {
+ format = DEFAULT_FORMAT;
+ }
+ if (StringUtil.isNotEmpty(date)) {
+ SimpleDateFormat sdf = new SimpleDateFormat(format);
+ try {
+ return sdf.parse(date);
+ } catch (ParseException e) {
+ throw new RuntimeException("转换为日期类型错误:DATE:" + date + " FORMAT:" + format);
+ }
+ } else {
+ return null;
+ }
+ }
+
+ public static Date getDateByLongDate(Long millis) {
+ if (millis == null) {
+ return new Date();
+ }
+ Calendar cal = Calendar.getInstance();
+ cal.setTimeInMillis(millis);
+ return cal.getTime();
+
+ }
+
+ public static UUID stringToUUID(String id) {
+ if (StringUtil.isNotEmpty(id)) {
+ return UUID.fromString(id);
+ } else {
+ return null;
+ }
+ }
+
+ public static Integer parseInteger(String str) {
+ if (StringUtil.isNotEmpty(str)) {
+ return Integer.parseInt(str);
+ } else {
+ return null;
+ }
+ }
+
+ public static List listToUUID(List listStrs) {
+ if (listStrs != null && listStrs.size() > 0) {
+ List uuidList = new ArrayList();
+ for (String str : listStrs) {
+ uuidList.add(UUID.fromString(str));
+ }
+ return uuidList;
+ } else {
+ return null;
+ }
+ }
+
+ public static List arrayToUUIDList(String[] uuids) {
+ if (uuids != null && uuids.length > 0) {
+ List uuidList = new ArrayList();
+ for (String str : uuids) {
+ uuidList.add(UUID.fromString(str));
+ }
+ return uuidList;
+ } else {
+ return null;
+ }
+ }
+
+ //是否是JSON
+ public static boolean containsAny(String str, String... flag) {
+ if (str != null) {
+ if (flag == null || flag.length == 0) {
+ flag = "[-{-}-]-,".split("-");
+ }
+ for (String s : flag) {
+ if (str.contains(s)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public static String getModifyOrgOperateData(UUID resourceId, UUID orgId) {
+ if (resourceId != null && orgId != null) {
+ Map map = new HashMap();
+ map.put(resourceId, orgId);
+ return JSON.toJSONString(map);
+ }
+ return "";
+ }
+
+ public static String[] listToStringArray(List list) {
+ if (list != null && !list.isEmpty()) {
+ return list.toArray(new String[list.size()]);
+ }
+ return new String[0];
+ }
+
+ public static List stringToListArray(String[] strings) {
+ if (strings != null && strings.length > 0) {
+ return Arrays.asList(strings);
+ }
+ return new ArrayList();
+ }
+
+ /**
+ * String字符串转成List数据格式
+ * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6];
+ *
+ * @param strArr
+ * @return
+ */
+ public static List strToLongList(String strArr) {
+ List idList=new ArrayList();
+ String[] d=strArr.split(",");
+ for (int i = 0, size = d.length; i < size; i++) {
+ if(d[i]!=null) {
+ idList.add(Long.parseLong(d[i]));
+ }
+ }
+ return idList;
+ }
+
+ /**
+ * String字符串转成List数据格式
+ * String str = "1,2,3,4,5,6" -> List listLong [1,2,3,4,5,6];
+ *
+ * @param strArr
+ * @return
+ */
+ public static List strToStringList(String strArr) {
+ if(StringUtils.isEmpty(strArr)){
+ return null;
+ }
+ List idList=new ArrayList();
+ String[] d=strArr.split(",");
+ for (int i = 0, size = d.length; i < size; i++) {
+ if(d[i]!=null) {
+ idList.add(d[i].toString());
+ }
+ }
+ return idList;
+ }
+
+ public static List searchCondition(String search) {
+ if (isEmpty(search)) {
+ return new ArrayList();
+ }else{
+ //String[] split = search.split(" ");
+ String[] split = search.split("#");
+ return stringToListArray(split);
+ }
+ }
+
+ public static String getInfo(String search, String key){
+ String value = "";
+ if(search!=null) {
+ JSONObject obj = JSONObject.parseObject(search);
+ value = obj.getString(key);
+ if(value.equals("")) {
+ value = null;
+ }
+ }
+ return value;
+ }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index d6ebbd16..f3b627ad 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -6,6 +6,8 @@ resource=src/main/resources
web.front.baseDir=erp_web
mybatis.type-aliases-package=com.chinamobile.model.*
mybatis.mapper-locations=classpath:./mapper_xml/*.xml
+#开启sql打印
+logging.level.com.jsh.erp.datasource.mappers=DEBUG
diff --git a/src/main/resources/mapper_xml/MaterialMapper.xml b/src/main/resources/mapper_xml/MaterialMapper.xml
index a5fe4075..da08d931 100644
--- a/src/main/resources/mapper_xml/MaterialMapper.xml
+++ b/src/main/resources/mapper_xml/MaterialMapper.xml
@@ -29,6 +29,7 @@
+
Id, CategoryId, Name, Mfrs, Packing, SafetyStock, Model, Standard, Color, Unit, Remark,
RetailPrice, LowPrice, PresetPriceOne, PresetPriceTwo, UnitId, FirstOutUnit, FirstInUnit,
- PriceStrategy, Enabled, OtherField1, OtherField2, OtherField3
+ PriceStrategy, Enabled, OtherField1, OtherField2, OtherField3,enableSerialNumber
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper_xml/SerialNumberMapperEx.xml b/src/main/resources/mapper_xml/SerialNumberMapperEx.xml
new file mode 100644
index 00000000..31fc202d
--- /dev/null
+++ b/src/main/resources/mapper_xml/SerialNumberMapperEx.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into jsh_serial_number
+ (material_Id, serial_Number, is_Sell, remark,delete_Flag,
+ create_Time, creator,update_Time, updater)
+ values
+ (#{materialId},#{serialNumber},#{isSell},#{remark},#{deleteFlag},
+ #{createTime},#{creator},#{updateTime},#{updater}
+ )
+
+
+ update jsh_serial_number
+
+
+ material_Id = #{materialId,jdbcType=BIGINT},
+
+
+ serial_Number = #{serialNumber,jdbcType=VARCHAR},
+
+
+ is_Sell = #{isSell,jdbcType=BIT},
+
+
+ remark = #{remark,jdbcType=VARCHAR},
+
+
+ delete_Flag = #{deleteFlag,jdbcType=BIT},
+
+
+ update_Time = #{updateTime,jdbcType=TIMESTAMP},
+
+
+ updater = #{updater,jdbcType=BIGINT},
+
+
+ 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 b4b30c31..6f27c364 100644
--- a/src/test/resources/generatorConfig.xml
+++ b/src/test/resources/generatorConfig.xml
@@ -1,68 +1,69 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|