diff --git a/erp_web/pages/manage/unit.html b/erp_web/pages/manage/unit.html
index 7b352659..c36b433a 100644
--- a/erp_web/pages/manage/unit.html
+++ b/erp_web/pages/manage/unit.html
@@ -206,7 +206,17 @@
if(res && res.code == 200) {
$("#searchBtn").click();
} else {
- $.messager.alert('删除提示', '删除计量单位失败,请稍后再试!', 'error');
+ if(res && res.code == 601){
+ var jsondata={};
+ jsondata.ids=unitID;
+ jsondata.deleteType='2';
+ var type='single';
+ batDeleteUnitForceConfirm(res,"/unit/batchDeleteUnitByIds",jsondata,type);
+ }else if(res && res.code == 600){
+ $.messager.alert('删除提示', res.msg, 'error');
+ }else{
+ $.messager.alert('删除提示', '删除计量单位异常,请稍后再试!', 'error');
+ }
}
},
//此处添加错误处理
@@ -251,7 +261,17 @@
$("#searchBtn").click();
$(":checkbox").attr("checked", false);
} else {
- $.messager.alert('删除提示', '删除计量单位失败,请稍后再试!', 'error');
+ if(res && res.code == 601){
+ var jsondata={};
+ jsondata.ids=ids;
+ jsondata.deleteType='2';
+ var type='batch';
+ batDeleteUnitForceConfirm(res,"/unit/batchDeleteUnitByIds",jsondata,type);
+ }else if(res && res.code == 600){
+ $.messager.alert('删除提示', res.msg, 'error');
+ }else{
+ $.messager.alert('删除提示', '删除计量单位异常,请稍后再试!', 'error');
+ }
}
},
//此处添加错误处理
@@ -264,6 +284,38 @@
});
}
}
+ /**
+ * 确认强制删除
+ * */
+ function batDeleteUnitForceConfirm(res,url,jsondata,type) {
+ $.messager.confirm('删除确认', res.msg, function (r) {
+ if (r) {
+ $.ajax({
+ type: "post",
+ url: url,
+ dataType: "json",
+ data: (jsondata),
+ success: function (res) {
+ if(res && res.code == 200) {
+ $("#searchBtn").click();
+ if(type=='batch'){
+ $(":checkbox").attr("checked", false);
+ }
+ }else if(res && res.code == 600){
+ $.messager.alert('删除提示', res.msg, 'error');
+ }else {
+ $.messager.alert('删除提示', '删除计量单位异常,请稍后再试!', 'error');
+ }
+ },
+ //此处添加错误处理
+ error: function () {
+ $.messager.alert('删除提示', '删除计量单位异常,请稍后再试!', 'error');
+ return;
+ }
+ });
+ }
+ });
+ }
//增加
var url;
diff --git a/erp_web/pages/materials/materialcategory.html b/erp_web/pages/materials/materialcategory.html
index d4c4b611..0c71ecaa 100644
--- a/erp_web/pages/materials/materialcategory.html
+++ b/erp_web/pages/materials/materialcategory.html
@@ -196,11 +196,21 @@
ids: ids
}),
success: function (res) {
- if(res.code!=200){
- $.messager.alert('提示', res.msg, 'error');
- return;
+ if(res && res.code === 200) {
+ $('#tt').tree('reload');
+ } else {
+ if(res && res.code == 601){
+ var jsondata={};
+ jsondata.ids=ids;
+ jsondata.deleteType='2';
+ var type='batch';
+ batDeleteMaterialCategoryForceConfirm(res,"/materialCategory/batchDeleteMaterialCategory",jsondata,type);
+ }else if(res && res.code == 600){
+ $.messager.alert('删除提示', res.msg, 'error');
+ }else{
+ $.messager.alert('删除提示', '删除商品信息异常,请稍后再试!', 'error');
+ }
}
- $('#tt').tree('reload');
},
//此处添加错误处理
error: function () {
@@ -212,6 +222,35 @@
});
}
}
+ /**
+ * 确认强制删除
+ * */
+ function batDeleteMaterialCategoryForceConfirm(res,url,jsondata,type) {
+ $.messager.confirm('删除确认', res.msg, function (r) {
+ if (r) {
+ $.ajax({
+ type: "post",
+ url: url,
+ dataType: "json",
+ data: (jsondata),
+ success: function (res) {
+ if(res && res.code == 200) {
+ $('#tt').tree('reload');
+ }else if(res && res.code == 600){
+ $.messager.alert('删除提示', res.msg, 'error');
+ }else {
+ $.messager.alert('删除提示', '删除商品类别信息异常,请稍后再试!', 'error');
+ }
+ },
+ //此处添加错误处理
+ error: function () {
+ $.messager.alert('删除提示', '删除商品类别信息异常,请稍后再试!', 'error');
+ return;
+ }
+ });
+ }
+ });
+ }
//保存信息
$("#saveMaterialCategory").off("click").on("click", function () {
diff --git a/sql/jsh_erp.sql b/sql/jsh_erp.sql
index e6ab82cc..b87fa1c8 100644
--- a/sql/jsh_erp.sql
+++ b/sql/jsh_erp.sql
@@ -1549,4 +1549,60 @@ alter table jsh_depothead add delete_Flag varchar(1) DEFAULT '0' COMMENT '删
-- 单据子表 jsh_depotitem
alter table jsh_depotitem add delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
-- 收支项目表 jsh_inoutitem
-alter table jsh_inoutitem add delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
\ No newline at end of file
+alter table jsh_inoutitem add delete_Flag varchar(1) DEFAULT '0' COMMENT '删除标记,0未删除,1删除';
+
+-- ----------------------------
+-- 时间:2019年4月11日
+-- version:1.0.13
+-- 此次更新
+-- 删除所有外键
+-- 特别提醒:之后的sql都是在之前基础上迭代,可以对已存在的系统进行数据保留更新
+-- ----------------------------
+
+-- ----------------------------
+-- 删除财务主表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DAAE50527;
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DB610FC06;
+ALTER TABLE jsh_accounthead DROP FOREIGN KEY FK9F4C0D8DC4170B37;
+-- ----------------------------
+-- 删除财务子表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0AAE50527;
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0C5FE6007;
+ALTER TABLE jsh_accountitem DROP FOREIGN KEY FK9F4CBAC0D203EDC5;
+-- ----------------------------
+-- 删除资产记录表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED27D23FE4;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED3E226853;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED61FE182C;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690ED9B6CB285;
+ALTER TABLE jsh_asset DROP FOREIGN KEY FK353690EDAD45B659;
+-- ----------------------------
+-- 删除资产信息表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_assetname DROP FOREIGN KEY FKA4ADCCF866BC8AD3;
+-- ----------------------------
+-- 删除单据主表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depothead DROP FOREIGN KEY FK2A80F214AAE50527;
+ALTER TABLE jsh_depothead DROP FOREIGN KEY jsh_depothead_ibfk_1;
+ALTER TABLE jsh_depothead DROP FOREIGN KEY jsh_depothead_ibfk_4;
+ALTER TABLE jsh_depothead DROP FOREIGN KEY jsh_depothead_ibfk_5;
+-- ----------------------------
+-- 删除单据子表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_depotitem DROP FOREIGN KEY FK2A819F47729F5392;
+ALTER TABLE jsh_depotitem DROP FOREIGN KEY FK2A819F479485B3F5;
+ALTER TABLE jsh_depotitem DROP FOREIGN KEY jsh_depotitem_ibfk_2;
+-- ----------------------------
+-- 删除操作日志表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_log DROP FOREIGN KEY FKF2696AA13E226853;
+-- ----------------------------
+-- 删除产品表对应外键约束
+-- ----------------------------
+ALTER TABLE jsh_material DROP FOREIGN KEY FK675951272AB6672C;
+ALTER TABLE jsh_material DROP FOREIGN KEY jsh_material_ibfk_1;
+
diff --git a/sql/华夏ERP数据库设计汇总.xlsx b/sql/华夏ERP数据库设计汇总.xlsx
index 06b216c5..51aba82e 100644
Binary files a/sql/华夏ERP数据库设计汇总.xlsx and b/sql/华夏ERP数据库设计汇总.xlsx differ
diff --git a/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
index 66478149..3b91415c 100644
--- a/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
+++ b/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
+import com.jsh.erp.constants.BusinessConstants;
import com.jsh.erp.constants.ExceptionConstants;
import com.jsh.erp.datasource.entities.MaterialCategory;
import com.jsh.erp.datasource.entities.SerialNumberEx;
@@ -151,9 +152,20 @@ public class MaterialCategoryController {
* @return java.lang.Object
*/
@RequestMapping(value = "/batchDeleteMaterialCategory")
- public Object batchDeleteMaterialCategory(@RequestParam("ids") String ids) throws Exception {
+ public Object batchDeleteMaterialCategory(@RequestParam("ids") String ids,@RequestParam(value="deleteType",
+ required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception {
JSONObject result = ExceptionConstants.standardSuccess();
- int i= materialCategoryService.batchDeleteMaterialCategoryByIds(ids);
+ int i=0;
+ if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){
+ i= materialCategoryService.batchDeleteMaterialCategoryByIdsNormal(ids);
+ }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){
+ i= materialCategoryService.batchDeleteMaterialCategoryByIds(ids);
+ }else{
+ logger.error("异常码[{}],异常提示[{}],参数,ids[{}],deleteType[{}]",
+ ExceptionConstants.DELETE_REFUSED_CODE,ExceptionConstants.DELETE_REFUSED_MSG,ids,deleteType);
+ throw new BusinessRunTimeException(ExceptionConstants.DELETE_REFUSED_CODE,
+ ExceptionConstants.DELETE_REFUSED_MSG);
+ }
if(i<1){
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_CATEGORY_DELETE_FAILED_CODE,
ExceptionConstants.MATERIAL_CATEGORY_DELETE_FAILED_MSG);
diff --git a/src/main/java/com/jsh/erp/controller/UnitController.java b/src/main/java/com/jsh/erp/controller/UnitController.java
index 72c031b6..1dbf7dd2 100644
--- a/src/main/java/com/jsh/erp/controller/UnitController.java
+++ b/src/main/java/com/jsh/erp/controller/UnitController.java
@@ -1,6 +1,7 @@
package com.jsh.erp.controller;
import com.alibaba.fastjson.JSONObject;
+import com.jsh.erp.constants.BusinessConstants;
import com.jsh.erp.constants.ExceptionConstants;
import com.jsh.erp.exception.BusinessRunTimeException;
import com.jsh.erp.service.unit.UnitService;
@@ -34,9 +35,20 @@ public class UnitController {
* @return java.lang.Object
*/
@RequestMapping(value = "/batchDeleteUnitByIds")
- public Object batchDeleteUnitByIds(@RequestParam("ids") String ids) throws Exception {
+ public Object batchDeleteUnitByIds(@RequestParam("ids") String ids,@RequestParam(value="deleteType",
+ required =false,defaultValue= BusinessConstants.DELETE_TYPE_NORMAL)String deleteType) throws Exception {
JSONObject result = ExceptionConstants.standardSuccess();
- int i= unitService.batchDeleteUnitByIds(ids);
+ int i=0;
+ if(BusinessConstants.DELETE_TYPE_NORMAL.equals(deleteType)){
+ i= unitService.batchDeleteUnitByIdsNormal(ids);
+ }else if(BusinessConstants.DELETE_TYPE_FORCE.equals(deleteType)){
+ i= unitService.batchDeleteUnitByIds(ids);
+ }else{
+ logger.error("异常码[{}],异常提示[{}],参数,ids[{}],deleteType[{}]",
+ ExceptionConstants.DELETE_REFUSED_CODE,ExceptionConstants.DELETE_REFUSED_MSG,ids,deleteType);
+ throw new BusinessRunTimeException(ExceptionConstants.DELETE_REFUSED_CODE,
+ ExceptionConstants.DELETE_REFUSED_MSG);
+ }
if(i<1){
logger.error("异常码[{}],异常提示[{}],参数,ids[{}]",
ExceptionConstants.UNIT_DELETE_FAILED_CODE,ExceptionConstants.UNIT_DELETE_FAILED_MSG,ids);
diff --git a/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapperEx.java b/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapperEx.java
index d55a7328..80787581 100644
--- a/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapperEx.java
+++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialCategoryMapperEx.java
@@ -35,4 +35,6 @@ public interface MaterialCategoryMapperEx {
int editMaterialCategory(MaterialCategory mc);
List getMaterialCategoryBySerialNo(@Param("serialNo") String serialNo);
+
+ List getMaterialCategoryListByCategoryIds(@Param("parentIds") String[] categoryIds);
}
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 8f022cc4..20b609c4 100644
--- a/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java
+++ b/src/main/java/com/jsh/erp/datasource/mappers/MaterialMapperEx.java
@@ -1,5 +1,6 @@
package com.jsh.erp.datasource.mappers;
+import com.jsh.erp.datasource.entities.AccountHead;
import com.jsh.erp.datasource.entities.Material;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import org.apache.ibatis.annotations.Param;
@@ -57,4 +58,8 @@ public interface MaterialMapperEx {
List getMaterialEnableSerialNumberList(Map parameterMap);
int batchDeleteMaterialByIds(@Param("updateTime") Date updateTime, @Param("updater") Long updater, @Param("ids") String ids[]);
+
+ List getMaterialListByCategoryIds(@Param("categoryIds") String[] categoryIds);
+
+ List getMaterialListByUnitIds(@Param("unitIds") String[] unitIds);
}
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 484ce299..9ef30210 100644
--- a/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java
+++ b/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java
@@ -1,13 +1,13 @@
package com.jsh.erp.service.materialCategory;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jsh.erp.constants.BusinessConstants;
import com.jsh.erp.constants.ExceptionConstants;
-import com.jsh.erp.datasource.entities.MaterialCategory;
-import com.jsh.erp.datasource.entities.MaterialCategoryExample;
-import com.jsh.erp.datasource.entities.User;
+import com.jsh.erp.datasource.entities.*;
import com.jsh.erp.datasource.mappers.MaterialCategoryMapper;
import com.jsh.erp.datasource.mappers.MaterialCategoryMapperEx;
+import com.jsh.erp.datasource.mappers.MaterialMapperEx;
import com.jsh.erp.datasource.vo.TreeNode;
import com.jsh.erp.exception.BusinessRunTimeException;
import com.jsh.erp.service.log.LogService;
@@ -37,6 +37,8 @@ public class MaterialCategoryService {
private UserService userService;
@Resource
private LogService logService;
+ @Resource
+ private MaterialMapperEx materialMapperEx;
public MaterialCategory getMaterialCategory(long id) {
return materialCategoryMapper.selectByPrimaryKey(id);
@@ -216,5 +218,52 @@ public class MaterialCategoryService {
}
}
-
+ /**
+ * create by: qiankunpingtai
+ * website:https://qiankunpingtai.cn
+ * description:
+ * 正常删除,要考虑数据完整性,进行完整性校验
+ * create time: 2019/4/11 9:26
+ * @Param: ids
+ * @return int
+ */
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchDeleteMaterialCategoryByIdsNormal(String ids) throws Exception {
+ /**
+ * 校验
+ * 1、产品表 jsh_material
+ * 2、产品类型表 jsh_materialcategory
+ * 是否有相关数据
+ * */
+ int deleteTotal=0;
+ if(StringUtils.isEmpty(ids)){
+ return deleteTotal;
+ }
+ String [] idArray=ids.split(",");
+ /**
+ * 校验产品表 jsh_material
+ * */
+ List materialList=materialMapperEx.getMaterialListByCategoryIds(idArray);
+ if(materialList!=null&&materialList.size()>0){
+ logger.error("异常码[{}],异常提示[{}],参数,CategoryIds[{}]",
+ ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids);
+ throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,
+ ExceptionConstants.DELETE_FORCE_CONFIRM_MSG);
+ }
+ /**
+ * 校验产品类型表 jsh_materialcategory
+ * */
+ List materialCategoryList=materialCategoryMapperEx.getMaterialCategoryListByCategoryIds(idArray);
+ if(materialCategoryList!=null&&materialCategoryList.size()>0){
+ logger.error("异常码[{}],异常提示[{}],参数,CategoryIds[{}]",
+ ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids);
+ throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,
+ ExceptionConstants.DELETE_FORCE_CONFIRM_MSG);
+ }
+ /**
+ * 校验通过执行删除操作
+ * */
+ deleteTotal= batchDeleteMaterialCategoryByIds(ids);
+ return deleteTotal;
+ }
}
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 2838306a..65a7b0dc 100644
--- a/src/main/java/com/jsh/erp/service/unit/UnitService.java
+++ b/src/main/java/com/jsh/erp/service/unit/UnitService.java
@@ -1,12 +1,17 @@
package com.jsh.erp.service.unit;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jsh.erp.constants.BusinessConstants;
+import com.jsh.erp.constants.ExceptionConstants;
+import com.jsh.erp.datasource.entities.Material;
import com.jsh.erp.datasource.entities.Unit;
import com.jsh.erp.datasource.entities.UnitExample;
import com.jsh.erp.datasource.entities.User;
+import com.jsh.erp.datasource.mappers.MaterialMapperEx;
import com.jsh.erp.datasource.mappers.UnitMapper;
import com.jsh.erp.datasource.mappers.UnitMapperEx;
+import com.jsh.erp.exception.BusinessRunTimeException;
import com.jsh.erp.service.log.LogService;
import com.jsh.erp.service.user.UserService;
import com.jsh.erp.utils.StringUtil;
@@ -35,6 +40,8 @@ public class UnitService {
private UserService userService;
@Resource
private LogService logService;
+ @Resource
+ private MaterialMapperEx materialMapperEx;
public Unit getUnit(long id) {
return unitMapper.selectByPrimaryKey(id);
@@ -95,5 +102,41 @@ public class UnitService {
return unitMapperEx.batchDeleteUnitByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray);
}
-
+ /**
+ * create by: qiankunpingtai
+ * website:https://qiankunpingtai.cn
+ * description:
+ * 正常删除,要考虑数据完整性,进行完整性校验
+ * create time: 2019/4/11 10:20
+ * @Param: ids
+ * @return int
+ */
+ @Transactional(value = "transactionManager", rollbackFor = Exception.class)
+ public int batchDeleteUnitByIdsNormal(String ids) throws Exception {
+ /**
+ * 校验
+ * 1、产品表 jsh_material
+ * 是否有相关数据
+ * */
+ int deleteTotal=0;
+ if(StringUtils.isEmpty(ids)){
+ return deleteTotal;
+ }
+ String [] idArray=ids.split(",");
+ /**
+ * 校验产品表 jsh_material
+ * */
+ List materialList=materialMapperEx.getMaterialListByUnitIds(idArray);
+ if(materialList!=null&&materialList.size()>0){
+ logger.error("异常码[{}],异常提示[{}],参数,UnitIds[{}]",
+ ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,ExceptionConstants.DELETE_FORCE_CONFIRM_MSG,ids);
+ throw new BusinessRunTimeException(ExceptionConstants.DELETE_FORCE_CONFIRM_CODE,
+ ExceptionConstants.DELETE_FORCE_CONFIRM_MSG);
+ }
+ /**
+ * 校验通过执行删除操作
+ * */
+ deleteTotal= batchDeleteUnitByIds(ids);
+ return deleteTotal;
+ }
}
diff --git a/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml b/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml
index bd73eaba..b2563ed8 100644
--- a/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml
+++ b/src/main/resources/mapper_xml/MaterialCategoryMapperEx.xml
@@ -107,5 +107,17 @@
and serial_no=#{serialNo}
and ifnull(status,'0') !='2'
+
\ No newline at end of file
diff --git a/src/main/resources/mapper_xml/MaterialMapperEx.xml b/src/main/resources/mapper_xml/MaterialMapperEx.xml
index 3e5c6a02..fe000c24 100644
--- a/src/main/resources/mapper_xml/MaterialMapperEx.xml
+++ b/src/main/resources/mapper_xml/MaterialMapperEx.xml
@@ -149,6 +149,30 @@
)
+
+
\ No newline at end of file