huanglizhi 1 年之前
父节点
当前提交
d8b65d0038
共有 98 个文件被更改,包括 1880 次插入1542 次删除
  1. 1 1
      framework/src/main/java/com/hys/app/framework/context/user/AdminUserContext.java
  2. 8 54
      framework/src/main/java/com/hys/app/framework/redis/configure/RedisConnectionConfig.java
  3. 7 3
      module-erp/src/main/java/com/hys/app/controller/erp/use/AdminUserOperationManagerController.java
  4. 73 3
      module-erp/src/main/java/com/hys/app/controller/erp/use/CompanyController.java
  5. 9 7
      module-erp/src/main/java/com/hys/app/controller/erp/use/DeptController.java
  6. 42 93
      module-erp/src/main/java/com/hys/app/controller/erp/use/PayController.java
  7. 39 59
      module-erp/src/main/java/com/hys/app/controller/erp/use/ProductManagerController.java
  8. 14 11
      module-erp/src/main/java/com/hys/app/controller/erp/use/ProductStockManagerController.java
  9. 10 1
      module-erp/src/main/java/com/hys/app/controller/erp/use/RoleManagerController.java
  10. 48 14
      module-erp/src/main/java/com/hys/app/controller/erp/use/SmsMailController.java
  11. 5 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/StockDamageReportManagerController.java
  12. 6 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/StockInventoryManagerController.java
  13. 6 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/StockTransferManagerController.java
  14. 15 4
      module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseAreaController.java
  15. 4 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseEntryManagerController.java
  16. 5 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseManagerController.java
  17. 29 22
      module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseOutManagerController.java
  18. 14 9
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/AliSmsUtil.java
  19. 2 1
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MessageReceiveTypeEnum.java
  20. 43 0
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MsgContant.java
  21. 92 24
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MsgUtilClient.java
  22. 0 18
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/MailMsgContant.java
  23. 0 17
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/MailMsgDefault.java
  24. 0 17
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SMsMsgTemplate.java
  25. 0 17
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SystemMsgContent.java
  26. 0 17
      module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SystemMsgTemplate.java
  27. 1 1
      module-erp/src/main/java/com/hys/app/converter/erp/CompanyConverter.java
  28. 4 4
      module-erp/src/main/java/com/hys/app/converter/erp/ProcurementContractProductConverter.java
  29. 0 1
      module-erp/src/main/java/com/hys/app/converter/erp/ProductConverter.java
  30. 30 28
      module-erp/src/main/java/com/hys/app/framework/datapermission/dept/DeptDataPermissionRule.java
  31. 1 1
      module-erp/src/main/java/com/hys/app/mapper/erp/SmsMailMapper.java
  32. 1 5
      module-erp/src/main/java/com/hys/app/mapper/goods/ProductMapper.java
  33. 38 0
      module-erp/src/main/java/com/hys/app/model/erp/configs/KuangShiConfig.java
  34. 2 1
      module-erp/src/main/java/com/hys/app/model/erp/dos/AreaStock.java
  35. 3 1
      module-erp/src/main/java/com/hys/app/model/erp/dos/MessageReceiveDO.java
  36. 9 69
      module-erp/src/main/java/com/hys/app/model/erp/dos/ProductDO.java
  37. 2 2
      module-erp/src/main/java/com/hys/app/model/erp/dos/StockTransferProductDO.java
  38. 2 1
      module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseAreaTypeDO.java
  39. 3 3
      module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseDO.java
  40. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/BandTemplateDTO.java
  41. 7 33
      module-erp/src/main/java/com/hys/app/model/erp/dto/ProductDTO.java
  42. 5 1
      module-erp/src/main/java/com/hys/app/model/erp/dto/ProductQueryParams.java
  43. 3 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/SmsMailTemplateDTO.java
  44. 10 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportDTO.java
  45. 1 1
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportParam.java
  46. 11 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryDTO.java
  47. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryParam.java
  48. 1 1
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockTransferProductDTO.java
  49. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/StockTransferQueryParams.java
  50. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseAreaQueryParams.java
  51. 3 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseEntryDTO.java
  52. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseEntryQueryParams.java
  53. 1 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseOutQueryParams.java
  54. 2 0
      module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseQueryParams.java
  55. 9 4
      module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyBandMsg.java
  56. 25 0
      module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyDO.java
  57. 33 2
      module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyErp.java
  58. 4 0
      module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyQuery.java
  59. 26 0
      module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyVO.java
  60. 1 0
      module-erp/src/main/java/com/hys/app/model/erp/enums/MsgTypeEnum.java
  61. 2 1
      module-erp/src/main/java/com/hys/app/model/erp/vo/SmsMailTemplateVO.java
  62. 1 1
      module-erp/src/main/java/com/hys/app/model/erp/vo/StockTransferProductVO.java
  63. 4 0
      module-erp/src/main/java/com/hys/app/model/system/dos/AdminUser.java
  64. 9 5
      module-erp/src/main/java/com/hys/app/model/system/vo/AdminUserVO.java
  65. 1 5
      module-erp/src/main/java/com/hys/app/model/system/vo/DeptBaseVO.java
  66. 4 1
      module-erp/src/main/java/com/hys/app/model/system/vo/Menus.java
  67. 351 351
      module-erp/src/main/java/com/hys/app/mq/core/erp/StockStatisticsConsumer.java
  68. 2 6
      module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceMy.java
  69. 1 1
      module-erp/src/main/java/com/hys/app/service/erp/CompanyErpManager.java
  70. 23 0
      module-erp/src/main/java/com/hys/app/service/erp/ProductManager.java
  71. 110 102
      module-erp/src/main/java/com/hys/app/service/erp/ProductStockManager.java
  72. 1 1
      module-erp/src/main/java/com/hys/app/service/erp/WarehouseOutManager.java
  73. 2 29
      module-erp/src/main/java/com/hys/app/service/erp/impl/CompanyBandMsgManagerImpl.java
  74. 39 16
      module-erp/src/main/java/com/hys/app/service/erp/impl/CompanyErpManagerImpl.java
  75. 5 5
      module-erp/src/main/java/com/hys/app/service/erp/impl/GoodsManagerImpl.java
  76. 1 1
      module-erp/src/main/java/com/hys/app/service/erp/impl/GoodsSnManagerImpl.java
  77. 2 1
      module-erp/src/main/java/com/hys/app/service/erp/impl/MailSmsCountManagerImpl.java
  78. 16 16
      module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java
  79. 58 8
      module-erp/src/main/java/com/hys/app/service/erp/impl/ProductManagerImpl.java
  80. 217 196
      module-erp/src/main/java/com/hys/app/service/erp/impl/ProductStockManagerImpl.java
  81. 35 34
      module-erp/src/main/java/com/hys/app/service/erp/impl/SmsMailManagerImpl.java
  82. 40 3
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockDamageReportManagerImpl.java
  83. 42 20
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryManagerImpl.java
  84. 4 4
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockStatisticsManagerImpl.java
  85. 2 2
      module-erp/src/main/java/com/hys/app/service/erp/impl/StockTransferManagerImpl.java
  86. 3 0
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseAreaManagerImpl.java
  87. 2 2
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryBatchManagerImpl.java
  88. 5 6
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java
  89. 4 2
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseManagerImpl.java
  90. 63 60
      module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseOutManagerImpl.java
  91. 1 1
      module-erp/src/main/java/com/hys/app/service/system/AdminUserManager.java
  92. 4 2
      module-erp/src/main/java/com/hys/app/service/system/DeptManager.java
  93. 43 45
      module-erp/src/main/java/com/hys/app/service/system/impl/AdminUserManagerImpl.java
  94. 10 7
      module-erp/src/main/java/com/hys/app/service/system/impl/DeptManagerImpl.java
  95. 0 1
      module-erp/src/main/java/com/hys/app/service/system/impl/MenuManagerImpl.java
  96. 42 53
      module-erp/src/main/java/com/hys/app/service/system/impl/RoleManagerImpl.java
  97. 0 3
      module-erp/src/main/resources/mapper/ProductStockMapper.xml
  98. 11 0
      server/src/main/resources/application.yml

+ 1 - 1
framework/src/main/java/com/hys/app/framework/context/user/AdminUserContext.java

@@ -90,7 +90,7 @@ public class AdminUserContext {
         if (admin == null) {
             throw new ServiceException("未查询到人员信息");
         }
-        if (ObjectUtil.isNotNull(admin.getCompanyId()) || admin.getFounder() == 1) {
+        if (ObjectUtil.isNull(admin.getCompanyId()) || admin.getFounder() == 1) {
             throw new ServiceException("平台工作人员不允许操作公司内部业务");
         }
         return admin.getCompanyId();

+ 8 - 54
framework/src/main/java/com/hys/app/framework/redis/configure/RedisConnectionConfig.java

@@ -1,5 +1,6 @@
 package com.hys.app.framework.redis.configure;
 
+import lombok.Getter;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
@@ -10,6 +11,7 @@ import org.springframework.context.annotation.Configuration;
  * @version v1.0
  * @since v6.4.1 2017年12月26日
  */
+@Getter
 @Configuration
 @ConfigurationProperties(prefix="redis")
 public class RedisConnectionConfig {
@@ -103,46 +105,30 @@ public class RedisConnectionConfig {
 	private Long maxWaitMillis;
 
 
-	public int getDatabase() {
-		return database;
-	}
-
 	public void setDatabase(int database) {
 		this.database = database;
 	}
-	public String getHost() {
-		return host;
-	}
+
 	public void setHost(String host) {
 		this.host = host;
 	}
-	public Integer getPort() {
-		return port;
-	}
+
 	public void setPort(Integer port) {
 		this.port = port;
 	}
-	public String getPassword() {
-		return password;
-	}
+
 	public void setPassword(String password) {
 		this.password = password;
 	}
-	public Integer getMaxIdle() {
-		return maxIdle;
-	}
+
 	public void setMaxIdle(Integer maxIdle) {
 		this.maxIdle = maxIdle;
 	}
-	public Integer getMaxTotal() {
-		return maxTotal;
-	}
+
 	public void setMaxTotal(Integer maxTotal) {
 		this.maxTotal = maxTotal;
 	}
-	public Long getMaxWaitMillis() {
-		return maxWaitMillis;
-	}
+
 	public void setMaxWaitMillis(Long maxWaitMillis) {
 		this.maxWaitMillis = maxWaitMillis;
 	}
@@ -151,62 +137,30 @@ public class RedisConnectionConfig {
 		this.type = type;
 	}
 
-	public String getConfigType() {
-		return configType;
-	}
-
 	public void setConfigType(String configType) {
 		this.configType = configType;
 	}
 
-	public String getRestUrl() {
-		return restUrl;
-	}
-
 	public void setRestUrl(String restUrl) {
 		this.restUrl = restUrl;
 	}
 
-	public String getRestAppid() {
-		return restAppid;
-	}
-
 	public void setRestAppid(String restAppid) {
 		this.restAppid = restAppid;
 	}
 
-	public String getRestClientVersion() {
-		return restClientVersion;
-	}
-
 	public void setRestClientVersion(String restClientVersion) {
 		this.restClientVersion = restClientVersion;
 	}
 
-	public String getType() {
-		return type;
-	}
-
-	public String getClusterNodes() {
-		return clusterNodes;
-	}
-
 	public void setClusterNodes(String clusterNodes) {
 		this.clusterNodes = clusterNodes;
 	}
 
-	public String getSentinelMaster() {
-		return sentinelMaster;
-	}
-
 	public void setSentinelMaster(String sentinelMaster) {
 		this.sentinelMaster = sentinelMaster;
 	}
 
-	public String getSentinelNodes() {
-		return sentinelNodes;
-	}
-
 	public void setSentinelNodes(String sentinelNodes) {
 		this.sentinelNodes = sentinelNodes;
 	}

+ 7 - 3
module-erp/src/main/java/com/hys/app/controller/erp/use/AdminUserOperationManagerController.java

@@ -20,6 +20,7 @@ import springfox.documentation.annotations.ApiIgnore;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 平台管理员控制器
@@ -41,8 +42,9 @@ public class AdminUserOperationManagerController {
 
     @ApiOperation(value = "查询平台管理员列表", response = AdminUser.class)
     @GetMapping
-    public WebPage list(@ApiIgnore Long pageNo, @ApiIgnore Long pageSize, @ApiIgnore String keyword, @ApiIgnore Integer userState) {
-        return this.adminUserManager.list(pageNo, pageSize, keyword, userState);
+    public WebPage list(@ApiIgnore Long pageNo, @ApiIgnore Long pageSize, @ApiIgnore String keyword, @ApiIgnore Integer userState,@ApiIgnore Long companyId) {
+        AdminUserContext.hasSuperAdminQuery(companyId);
+        return this.adminUserManager.list(pageNo, pageSize, keyword, userState,companyId);
     }
 
 
@@ -58,7 +60,9 @@ public class AdminUserOperationManagerController {
     @ApiOperation(value = "修改平台管理员", response = AdminUser.class)
     @Log(client = LogClient.admin, detail = "修改ID为[${id}]的管理员信息")
     public AdminUser edit(@Valid AdminUserVO adminUserVO, @PathVariable Long id) {
-        AdminUserContext.hasAdmin();
+        if (Objects.equals(AdminUserContext.getAdminUserId(), id)) {
+            throw new ServiceException("只能修改自己的账号");
+        }
         return this.adminUserManager.edit(adminUserVO, id);
     }
 

+ 73 - 3
module-erp/src/main/java/com/hys/app/controller/erp/use/CompanyController.java

@@ -1,7 +1,13 @@
 package com.hys.app.controller.erp.use;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.hys.app.framework.context.user.AdminUserContext;
+import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.model.erp.configs.KuangShiConfig;
 import com.hys.app.model.erp.entity.*;
 import com.hys.app.model.support.LogClient;
 import com.hys.app.model.support.validator.annotation.Log;
@@ -9,10 +15,14 @@ import com.hys.app.service.erp.CompanyErpManager;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Api(tags = "公司")
 @RestController
@@ -20,7 +30,10 @@ import java.math.BigDecimal;
 @AllArgsConstructor
 public class CompanyController {
 
+
     private CompanyErpManager companyManager;
+    private KuangShiConfig kuangShiConfig;
+
     @PostMapping("createCompany")
     @ApiOperation(value = "创建公司")
     @Log(client = LogClient.admin, detail = "创建名称为[${companyDO.name}]的公司信息")
@@ -31,9 +44,10 @@ public class CompanyController {
     @PostMapping("updateCompany/{id}")
     @ApiOperation(value = "更新公司")
     @Log(client = LogClient.admin, detail = "修改名称为[${companyDO.name}]的公司信息")
-    public Long updateCompany(@Valid @RequestBody CompanyUpdateDO companyUpdateDO, @PathVariable Long id) {
+    public Long updateCompany(@Valid @RequestBody CompanyDO companyUpdateDO, @PathVariable Long id) {
         return companyManager.updateCompany(companyUpdateDO, id);
     }
+
     @PostMapping("renewCompany/difference/{id}")
     @ApiOperation(value = "公司续费未到期更换套餐获取差价")
     @Log(client = LogClient.admin, detail = "名称为[${companyDO.name}]的公司进行了续费")
@@ -44,9 +58,9 @@ public class CompanyController {
     @PostMapping("renewCompany/{id}/{packageId}")
     @ApiOperation(value = "公司续费")
     @Log(client = LogClient.admin, detail = "名称为[${companyDO.name}]的公司进行了续费")
-    public Long renewCompany( @PathVariable Long id, @PathVariable Long packageId) {
+    public Long renewCompany(@PathVariable Long id, @PathVariable Long packageId) {
         AdminUserContext.hasCompany();
-        return companyManager.renewCompany(id,packageId);
+        return companyManager.renewCompany(id, packageId);
     }
 
     @GetMapping("getOne/{id}")
@@ -54,9 +68,65 @@ public class CompanyController {
     public CompanyVO getOneCompany(@PathVariable Long id) {
         return companyManager.getOneCompany(id);
     }
+
     @GetMapping("getPage")
     @ApiOperation(value = "分页")
     public IPage<CompanyVO> getPage(CompanyQuery query) {
         return companyManager.getPage(query);
     }
+
+
+    @PostMapping("checkIdCardOpposite/{type}")
+    @ApiOperation(value = "校验身份证是否合法")
+    public Object checkIdCardOpposite(@RequestBody  CompanyQuery query, @PathVariable String type) {
+        try {
+            Map<String, Object> map = new HashMap<>();
+            map.put("image_url", query.getImageUrl());
+            map.put("api_key", kuangShiConfig.getApikey());
+            map.put("api_secret", kuangShiConfig.getApiSecret());
+            String post = HttpUtil.post(kuangShiConfig.getIdCardUrl(), map);
+            Map map1 = JSON.parseObject(post, Map.class);
+            if (ObjectUtil.isNull(map1.get("cards"))){
+                if ("front".equals(type)) {
+                    throw new ServiceException("身份证正面未识别到相关信息,请重新上传");
+                } else if ("opposite".equals(type)) {
+                    throw new ServiceException("身份证反面未识别到相关信息,请重新上传");
+                }
+            }
+            List<Map> maps = JSON.parseArray(JSON.toJSONString(map1.get("cards")), Map.class);
+            return maps.get(0);
+        } catch (Exception e) {
+            if ("front".equals(type)) {
+                throw new ServiceException("身份证正面未识别到相关信息,请重新上传");
+            } else if ("opposite".equals(type)) {
+                throw new ServiceException("身份证反面未识别到相关信息,请重新上传");
+            }
+        }
+        throw new ServiceException("非法请求");
+    }
+
+    @PostMapping("checkLicense")
+    @ApiOperation(value = "校验营业执照是否合法")
+    public Object checkLicense(@RequestBody  CompanyQuery query) {
+        try {
+            Map<String, Object> map = new HashMap<>();
+            map.put("image_url", query.getImageUrl());
+            map.put("api_key", kuangShiConfig.getApikey());
+            map.put("api_secret", kuangShiConfig.getApiSecret());
+            String post = HttpUtil.post(kuangShiConfig.getLicenseUrl(), map);
+            Map map1 = JSON.parseObject(post, Map.class);
+            if (ObjectUtil.isNull(map1.get("business_license_content"))){
+                throw new ServiceException("未识别到营业执照相关内容,请重新上传");
+            }
+            Map<String, Object> map2 = new HashMap<>();
+            map2.put("username","{}");
+            map2.put("password","{}");
+            map2.put("time","{}");
+            map2.put("phone","{}");
+            System.out.println(JSONUtil.toJsonStr(map2)+"---------------------------");
+            return JSON.parseObject(JSON.toJSONString(map1.get("business_license_content")), Map.class);
+        } catch (Exception e) {
+            throw new ServiceException("未识别到营业执照相关内容,请重新上传");
+        }
+    }
 }

+ 9 - 7
module-erp/src/main/java/com/hys/app/controller/erp/use/DeptController.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.hys.app.converter.system.DeptConverter;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.exception.ServiceException;
+import com.hys.app.framework.util.BeanUtils;
 import com.hys.app.framework.util.JsonUtil;
 import com.hys.app.mapper.system.AdminUserMapper;
 import com.hys.app.model.base.context.Region;
@@ -18,6 +19,7 @@ import com.hys.app.model.system.dto.DataPermissionDTO;
 import com.hys.app.model.system.dto.DeptCreateDTO;
 import com.hys.app.model.system.dto.DeptQueryParams;
 import com.hys.app.model.system.dto.DeptUpdateDTO;
+import com.hys.app.model.system.vo.DeptBaseVO;
 import com.hys.app.model.system.vo.DeptRespVO;
 import com.hys.app.model.system.vo.DeptSimpleRespVO;
 import com.hys.app.model.system.vo.Menus;
@@ -60,18 +62,17 @@ public class DeptController {
     @ApiOperation(value = "创建部门")
     @ApiImplicitParam(name = "region", value = "地区", required = true, example = "1024")
     @Log(client = LogClient.admin, detail = "创建名称为[${reqVO.name}]的部门信息")
-    public void createDept(@Valid @RequestBody DeptCreateDTO reqVO, @RequestParam("region") @RegionFormat Region region) {
+    public void createDept(@Valid @RequestBody DeptCreateDTO reqVO) {
         AdminUserContext.hasAdmin();
-        deptManager.createDept(reqVO, region);
+        deptManager.createDept(reqVO);
     }
 
-    @PutMapping("update")
+    @PutMapping("update/{id}")
     @ApiOperation(value = "更新部门")
-    @ApiImplicitParam(name = "region", value = "地区", required = true, example = "1024")
     @Log(client = LogClient.admin, detail = "修改名称为[${reqVO.name}]的部门信息")
-    public void updateDept(@Valid @RequestBody DeptUpdateDTO reqVO, @RequestParam("region") @RegionFormat Region region) {
+    public void updateDept(@Valid @RequestBody DeptBaseVO reqVO, @PathVariable Long id) {
         AdminUserContext.hasAdmin();
-        deptManager.updateDept(reqVO, region);
+        deptManager.updateDept(reqVO,id);
     }
 
     @DeleteMapping("delete")
@@ -86,9 +87,10 @@ public class DeptController {
     @GetMapping("/list")
     @ApiOperation(value = "获取部门列表")
     public List<DeptRespVO> getDeptList(DeptQueryParams reqVO) {
+        AdminUserContext.hasSuperAdminQuery(reqVO.getCompanyId());
         List<DeptDO> list = deptManager.getDeptList(reqVO);
         list.sort(Comparator.comparing(DeptDO::getSort));
-        return converter.convertList(list);
+        return BeanUtils.toBean(list,DeptRespVO.class);
     }
 
     @GetMapping("/list-all-simple")

+ 42 - 93
module-erp/src/main/java/com/hys/app/controller/erp/use/PayController.java

@@ -1,7 +1,9 @@
 package com.hys.app.controller.erp.use;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
@@ -14,6 +16,7 @@ import com.hys.app.framework.util.ScriptUtil;
 import com.hys.app.framework.util.StringUtil;
 import com.hys.app.mapper.system.AdminUserMapper;
 import com.hys.app.mapper.system.RoleMapper;
+import com.hys.app.model.erp.configs.KuangShiConfig;
 import com.hys.app.model.erp.dos.OrderCustomerFee;
 import com.hys.app.model.erp.dos.OrderDO;
 import com.hys.app.model.erp.dto.PayTypeUrl;
@@ -70,6 +73,7 @@ public class PayController extends HttpServlet {
     private CompanyErpManager companyManager;
     private AdminUserMapper adminUserMapper;
     private RoleMapper roleMapper;
+    private KuangShiConfig kuangShiConfig;
 
     private static final Logger log = LoggerFactory.getLogger(ScriptUtil.class);
 
@@ -141,15 +145,38 @@ public class PayController extends HttpServlet {
                         .eq(AdminUser::getUsername, "admin").last("limit 1"));
                 //把这个管理员能看到的所有页面保存起来
                 RoleDO roleDO = roleMapper.selectById(company.getThisRoleId());
-                List<Menus> menus = JsonUtil.jsonToList(roleDO.getAuthIds(), Menus.class);
-                List<Menus> collect = menus.stream().filter(Menus::isChecked).collect(Collectors.toList());
-                user.setAuthIds(JSON.toJSONString(collect));
+                List<Menus> menusList = JsonUtil.jsonToList(roleDO.getAuthIds(), Menus.class);
+                List<Menus> list = new ArrayList<>();
+                assert menusList != null;
+                for (Menus menu : menusList) {
+                    if (CollUtil.isNotEmpty(menu.getChildren())) {
+                        list.add(menu);
+                        getMenus(list, menu);
+                    } else {
+                        list.add(menu);
+                    }
+                }
+                //这个角色所有已勾选的菜单
+                Set<Menus> collect = list.stream().filter(Menus::isChecked).collect(Collectors.toSet());
+                for (Menus menus1 : collect) {
+                    menus1.setChildren(collect.stream().filter(item -> item.getParentId().equals(menus1.getId())).collect(Collectors.toList()));
+                }
+                List<Menus> collect2 = collect.stream().filter(item -> item.getParentId() == 0).collect(Collectors.toList());
+                user.setAuthIds(JSON.toJSONString(collect2));
                 adminUserMapper.updateById(user);
             }
         }
         return "success";
     }
 
+    private void getMenus(List<Menus> list, Menus menus) {
+        for (Menus child : menus.getChildren()) {
+            list.add(child);
+            getMenus(list, child);
+        }
+    }
+
+
     @PostMapping("/wxpay/notify")
     public String parseOrderNotify(@RequestBody String xmlData) {
         try {
@@ -174,96 +201,24 @@ public class PayController extends HttpServlet {
     }
 
     @PostMapping("getOpenIdCode/{orderId}")
-    public String getOpenIdCode(@PathVariable Long orderId, @RequestBody @Validated Map map) throws UnsupportedEncodingException {
-        String openIdCode = wxPayServiceMy.getOpenIdCode(orderId, map.get("ip").toString());
+    public String getOpenIdCode(@PathVariable Long userId, @RequestBody @Validated Map map) throws UnsupportedEncodingException {
+        String openIdCode = wxPayServiceMy.getOpenIdCode(userId, map.get("ip").toString());
         System.out.println("授权地址+“--------------------------------------------------------" + openIdCode + "ip-----------------" + map.get("ip").toString());
-        return wxPayServiceMy.getOpenIdCode(orderId, map.get("ip").toString());
+        return wxPayServiceMy.getOpenIdCode(userId, map.get("ip").toString());
     }
 
     @GetMapping("/weixin/callback/openidCode")
     public void handleWeixinCallback(@RequestParam("code") String code, @RequestParam("state") String state, HttpSession session, HttpServletResponse response) throws Exception {
-        System.out.println("授权回调来了啊    code=" + code + "-111111111111111111111111111111111111111111111state=" + state);
-//        String[] split = state.split("--");
-//        String orderId = split[0];
-//        String ip = split[1];
-//        if (!state.equals((String) session.getAttribute("WEIXIN_OAUTH_STATE"))) {
-//            log.error("用户授权,state错误");
-//        }
-//        AdminUser user = adminUserMapper.selectById(1811346086600843265L);
-//        if (ObjectUtil.isNull(aDo)) {
-//            log.error("用户授权完成后未找到订单信息:" + state);
-//        }
+        if (!state.equals(session.getAttribute("WEIXIN_OAUTH_STATE"))) {
+            log.error("用户授权,state错误");
+        }
+        AdminUser user = adminUserMapper.selectById(state);
+        if (ObjectUtil.isNull(user)) {
+            log.error("未查询到用户信息:" + state);
+        }
         String openId = wxPayServiceMy.getOpenId(code);
-//        user.setOpenid(openId);
-//        adminUserMapper.updateById(user);
-
-        sendMsg(openId);
-
-//        double price;
-//        List<OrderCustomerFee> list = orderCustomerFeeManager.list(new LambdaQueryWrapper<OrderCustomerFee>().eq(OrderCustomerFee::getOrderId, aDo.getId()));
-//        if (CollectionUtil.isNotEmpty(list)) {
-//            price = new BigDecimal(aDo.getRealPrice()).add(list.stream().map(OrderCustomerFee::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add)).multiply(new BigDecimal(1 + aDo.getTaxRate() * 0.01)).doubleValue();
-//        } else {
-//            price = aDo.getRealPrice() * (1 + aDo.getTaxRate() * 0.01);
-//        }
-//        String url = ip + "#/payType?id=" + aDo.getId() + "&sn=" + aDo.getSn() + "&price=" + price + "&openid=" + openId;
-//        response.sendRedirect(url);
-    }
-
-//    @PostMapping("/aliReturnCall/createCompany")
-//    @Transactional(rollbackFor = Exception.class)
-//    public String aliReturnCallCreateCompany(HttpServletRequest request) throws Exception {
-//        Map<String, String> params = new HashMap<>();
-//        Map<String, String[]> requestParams = request.getParameterMap();
-//        for (String name : requestParams.keySet()) {
-//            String[] values = requestParams.get(name);
-//            String valueStr = String.join(",", values);
-//            params.put(name, valueStr);
-//        }
-//        if (aliPayService.checkReturnParam(params)) {
-//            String passbackParams = URLDecoder.decode(params.get("passback_params"), "UTF-8");
-//            if ("company".equals(passbackParams)){
-//                CompanyErp company = companyManager.getById(params.get("out_trade_no"));
-//                company.setEndUseTime(company.getEndUseTime().plusDays(company.getThisDay()));
-//                company.setThisDay(null);
-//                company.setThisMoney(null);
-//                companyManager.updateById(company);
-//                //给公司创建初始账号
-//                String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-//                StringBuilder sb = new StringBuilder();
-//                Random random = new Random();
-//                for (int i = 0; i < 6; i++) {
-//                    int index = random.nextInt(characters.length());
-//                    sb.append(characters.charAt(index));
-//                }
-//                String password = sb.toString();
-//
-//                //管理员信息入库
-//                AdminUser adminUser = new AdminUser();
-//                adminUser.setCompanyId(company.getId());
-//                adminUser.setUsername("admin");
-//                adminUser.setRoleId(company.getRoleId());
-//                adminUser.setFounder(0);
-//                adminUser.setNickname(company.getName()+"管理员");
-//                adminUser.setPassword(StringUtil.md5(password + adminUser.getUsername().toLowerCase()));
-//                adminUser.setDateLine(DateUtil.getDateline());
-//                adminUser.setUserState(0);
-//                adminUserMapper.insert(adminUser);
-//                //todo  用短信和邮件把账号密码发给用户
-//            }
-//        }
-//        return "success";
-//    }
-
-    @GetMapping("/getIndustry")
-    public WxMpTemplateIndustry getIndustry() throws WxErrorException {
-        System.out.println("看一下行业----------------------------------------------------------------");
-        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
-        config.setAppId("wx51e98f2dee35237d");
-        config.setSecret("13803c1b0d911e023c7da0b300cbce89");
-        WxMpService   wxService = new WxMpServiceImpl();
-        wxService.setWxMpConfigStorage(config);
-        return wxService.getTemplateMsgService().getIndustry();
+        user.setOpenid(openId);
+        adminUserMapper.updateById(user);
     }
 
 
@@ -288,10 +243,4 @@ public class PayController extends HttpServlet {
         wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
     }
 
-
-
-
-
-
-
 }

+ 39 - 59
module-erp/src/main/java/com/hys/app/controller/erp/use/ProductManagerController.java

@@ -1,8 +1,13 @@
 package com.hys.app.controller.erp.use;
 
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.database.WebPage;
+import com.hys.app.model.erp.dos.ProductDO;
 import com.hys.app.model.erp.dos.ProductGroupDO;
 import com.hys.app.model.erp.dto.*;
 import com.hys.app.model.erp.vo.ProductStockVO;
@@ -38,85 +43,60 @@ public class ProductManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<ProductVO> list(ProductQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return productManager.list(queryParams);
     }
 
-    @ApiOperation(value = "查询")
-    @GetMapping("/{id}")
-    public ProductVO getDetail(@PathVariable String id) {
-        return productManager.getDetail(id);
-    }
-
 
-    @ApiOperation(value = "产品分组")
-    @PostMapping("/productGroup")
-    public void productGroup(@RequestBody @Valid ProductGroupDO productGroupDO) {
-        productManager.productGroup(productGroupDO);
+    @ApiOperation(value = "新增产品")
+    @PostMapping("/addProduct")
+    public void productGroup(@RequestBody @Valid ProductDTO productDTO) {
+        AdminUserContext.hasCompany();
+        productManager.addProduct(productDTO);
     }
 
-    @ApiOperation(value = "删除产品分组")
-    @PostMapping("/remove/{id}")
-    public void removeProductGroup(@PathVariable(value = "id") Long id) {
-        productManager.removeProductGroup(id);
-    }
-
-
-    @PostMapping("/update/{id}")
-    @ApiOperation(value = "修改产品分组")
-    public void updateProductGroup(@PathVariable(value = "id") Long id, @RequestBody @Valid ProductGroupDO productGroupDO) {
-        productManager.updateProductGroup(id, productGroupDO);
+    @ApiOperation(value = "修改产品")
+    @PostMapping("/updateProduct/{id}")
+    public void updateProduct(@RequestBody @Valid ProductDTO productDTO, @PathVariable Long id) {
+        AdminUserContext.hasCompany();
+        productManager.updateProduct(productDTO, id);
     }
 
-    @ApiOperation(value = "获取产品分组")
-    @GetMapping("/list")
-    public Page<ProductGroupDO> page(ProductGroupQueryParams queryParams) {
-        return productManager.getGroupPage(queryParams);
+    @ApiOperation(value = "删除产品")
+    @PostMapping("/deletedProduct/{id}")
+    public void deletedProduct(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
+        productManager.deletedProduct(id);
     }
 
-
-    @ApiOperation(value = "获取产品分组详情")
-    @GetMapping("/getById/{id}")
-    public ProductGroupDO getById(@PathVariable(value = "id") Long id) {
-        return productManager.getGroupById(id);
+    @ApiOperation(value = "获取详情")
+    @PostMapping("/getProduct/{id}")
+    public void getProduct(@PathVariable Long id) {
+        productManager.getById(id);
     }
 
-    @ApiOperation(value = "根据分组信息获取选中的sku")
-    @GetMapping("/getProductByGroup/{warehouseId}/{groupId}")
-    @Log(client = LogClient.admin, detail = "新增入库获取所有的sku信息")
-    public List<ProductStockVO> getProductByGroup(@PathVariable(value = "groupId") Long groupId, @PathVariable(value = "warehouseId") List<Long> warehouseId) {
-        return productManager.getProductByGroup(groupId, warehouseId);
+    @ApiOperation(value = "获取列表")
+    @PostMapping("/getProductList")
+    public IPage<ProductDO> getProductList(ProductQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
+        return productManager.page(new Page<>(queryParams.getPageNo(), queryParams.getPageSize()),
+                new LambdaQueryWrapper<ProductDO>()
+                        .eq(ProductDO::getCompanyId, AdminUserContext.getCompanyId())
+                        .and(StrUtil.isNotBlank(queryParams.getKeyword()), item -> item
+                                .like(ProductDO::getName, queryParams.getName())
+                                .or()
+                                .like(ProductDO::getName, queryParams.getBrand())
+                                .or()
+                                .like(ProductDO::getName, queryParams.getSn())));
     }
 
     @ApiOperation(value = "设置库存预警")
     @PostMapping("/updateWarnStock")
     @Log(client = LogClient.admin, detail = "新增入库获取所有的sku信息")
     public void updateWarnStock( @RequestBody  ProductGroupQueryParams productGroupQueryParams) {
+        AdminUserContext.hasCompany();
         productManager.updateWarnStock(productGroupQueryParams.getStockId(), productGroupQueryParams.getWarnNum());
     }
 
-    @ApiOperation(value = "首页获取库存预警列表")
-    @GetMapping("/getWarnStock/{warehouseId}")
-    @Log(client = LogClient.admin, detail = "新增入库获取所有的sku信息")
-    public List<ProductStockVO> getWarnStock(@PathVariable(value = "warehouseId") Long warehouseId) {
-
-        return productManager.getWarnStock(warehouseId);
-    }
-
-    @ApiOperation(value = "获取获取在途明细")
-    @GetMapping("/transitDetail/{stockId}")
-    @Log(client = LogClient.admin, detail = "新增入库获取所有的sku信息")
-    public List<TransitVO> transitDetail(@PathVariable(value = "stockId") Long stockId) {
-
-        return productManager.transitDetail(stockId);
-    }
-
-    @ApiOperation(value = "排序")
-    @PostMapping("/updateSort")
-    @Log(client = LogClient.admin, detail = "新增入库获取所有的sku信息")
-    public void updateSort(@RequestBody  @Valid GoodsSortDto goodsSortDto) {
-         productManager.updateSort(goodsSortDto.getData());
-    }
-
-
 }
 

+ 14 - 11
module-erp/src/main/java/com/hys/app/controller/erp/goods/ProductStockManagerController.java → module-erp/src/main/java/com/hys/app/controller/erp/use/ProductStockManagerController.java

@@ -1,6 +1,7 @@
-package com.hys.app.controller.erp.goods;
+package com.hys.app.controller.erp.use;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dos.ProductStockDO;
 import com.hys.app.model.erp.dto.GoodsSnDTO;
@@ -40,6 +41,7 @@ public class ProductStockManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<ProductStockV1> list(ProductStockQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         List<ProductStockV1> productStockV1s= productStockManager.selectList(queryParams);
         Long recordCount= productStockManager.selectCount(queryParams);
         WebPage<ProductStockV1> voWebPage1=new WebPage<>();
@@ -51,19 +53,19 @@ public class ProductStockManagerController {
     }
 
 
-    @ApiOperation(value = "查询一条数据")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query")
-    })
-    @GetMapping("/getOne")
-    public ProductStockDO getOne(@RequestParam String id){
-        return productStockManager.getOne(id);
-    }
+//    @ApiOperation(value = "查询一条数据")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query")
+//    })
+//    @GetMapping("/getOne")
+//    public ProductStockDO getOne(@RequestParam String id){
+//        return productStockManager.getOne(id);
+//    }
 
     @ApiOperation(value = "删除库存记录")
     @PostMapping("/delete")
     public void delete(@RequestBody @Valid ProductStockDeleteReq request){
-         productStockManager.deleteByIds(request.getIds());
+//         productStockManager.deleteByIds(request.getIds());
     }
 
 
@@ -78,7 +80,8 @@ public class ProductStockManagerController {
     @GetMapping("/list-stock-warning")
     public WebPage<ProductStockWarningVO> listWarningStock(@ApiIgnore Long pageNo, @ApiIgnore Long pageSize,
                                                            @ApiIgnore Long warehouseId, @ApiIgnore Long deptId, @ApiIgnore String name) {
-        return productStockManager.listWarningStock(pageNo, pageSize, warehouseId, deptId, name);
+//        return productStockManager.listWarningStock(pageNo, pageSize, warehouseId, deptId, name);
+        return null;
     }
 }
 

+ 10 - 1
module-erp/src/main/java/com/hys/app/controller/erp/use/RoleManagerController.java

@@ -2,6 +2,8 @@ package com.hys.app.controller.erp.use;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.exception.ServiceException;
@@ -41,10 +43,17 @@ public class RoleManagerController {
 
     @ApiOperation(value = "角色列表分页", response = RoleDO.class)
     @GetMapping
-    public WebPage list(@ApiIgnore @NotEmpty(message = "页码不能为空") Long pageNo, @ApiIgnore @NotEmpty(message = "每页数量不能为空") Long pageSize, @ApiIgnore String keyword) {
+    public WebPage list(@ApiIgnore @NotEmpty(message = "页码不能为空") Long pageNo, @ApiIgnore @NotEmpty(message = "每页数量不能为空") Long pageSize, @ApiIgnore String keyword, @ApiIgnore Long companyId) {
+        AdminUserContext.hasSuperAdminQuery(companyId);
         return this.roleManager.list(pageNo, pageSize, keyword,null);
     }
 
+    @ApiOperation(value = "套餐角色列表", response = RoleDO.class)
+    @GetMapping("packageList")
+    public IPage list(@ApiIgnore @NotEmpty(message = "页码不能为空") Long pageNo, @ApiIgnore @NotEmpty(message = "每页数量不能为空") Long pageSize) {
+        return this.roleManager.page(new Page<>(pageNo,pageSize),new LambdaQueryWrapper<RoleDO>().isNull(RoleDO::getCompanyId));
+    }
+
 
     @ApiOperation(value = "角色列表分页", response = RoleDO.class)
     @GetMapping("packageSuper")

+ 48 - 14
module-erp/src/main/java/com/hys/app/controller/erp/use/SmsMailController.java

@@ -1,30 +1,29 @@
 package com.hys.app.controller.erp.use;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.ListUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.hys.app.controller.erp.use.msg.entity.MessageReceiveTypeEnum;
+import com.hys.app.controller.erp.use.msg.MessageReceiveTypeEnum;
 import com.hys.app.converter.erp.SmsMailConverter;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.exception.ServiceException;
-import com.hys.app.framework.util.BeanUtil;
 import com.hys.app.framework.util.BeanUtils;
-import com.hys.app.model.erp.dos.MailSmsCountDO;
 import com.hys.app.model.erp.dos.MessageReceiveDO;
 import com.hys.app.model.erp.dos.SmsMailTemplate;
 import com.hys.app.model.erp.dto.BandTemplateDTO;
 import com.hys.app.model.erp.dto.SmsMailTemplateDTO;
 import com.hys.app.model.erp.entity.CompanyBandMsg;
-import com.hys.app.model.erp.entity.MailSmsCountQuery;
 import com.hys.app.model.erp.enums.MsgTypeEnum;
-import com.hys.app.model.erp.vo.MailSmsCountVO;
 import com.hys.app.model.erp.vo.SmsMailTemplateQuery;
 import com.hys.app.model.erp.vo.SmsMailTemplateVO;
 import com.hys.app.model.support.LogClient;
 import com.hys.app.model.support.validator.annotation.Log;
 
 import com.hys.app.model.system.dos.AdminUser;
+import com.hys.app.model.system.vo.Menus;
 import com.hys.app.service.erp.*;
 import com.hys.app.service.system.AdminUserManager;
 import io.swagger.annotations.Api;
@@ -34,8 +33,7 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Api(tags = "消息  消息模板")
@@ -107,42 +105,73 @@ public class SmsMailController {
     @GetMapping("getSendNumByCompany")
     @ApiOperation(value = "获取模板树状图,勾选之后和公司绑定")
     public List<SmsMailTemplateVO> getTemplateTree() {
-        List<SmsMailTemplateVO> bean = BeanUtils.toBean(mailSmsCountManager.list(), SmsMailTemplateVO.class);
+        List<SmsMailTemplateVO> bean = BeanUtils.toBean(smsMailManager.list(), SmsMailTemplateVO.class);
+
+        List<CompanyBandMsg> list = companyBandMsgManager.list(new LambdaQueryWrapper<CompanyBandMsg>()
+                .eq(CompanyBandMsg::getCompanyId, AdminUserContext.getCompanyId()));
+        if (CollUtil.isNotEmpty(list)){
+            for (CompanyBandMsg msg : list) {
+                for (SmsMailTemplateVO smsMailTemplateVO : bean) {
+                    if (msg.getHasSelect() && msg.getTemplateId().equals(smsMailTemplateVO.getId())){
+                        smsMailTemplateVO.setHasSelect(true);
+                    }
+                }
+            }
+        }
         for (SmsMailTemplateVO templateVO : bean) {
+            if (templateVO.getType().equals(MsgTypeEnum.SYSTEM)){
+                templateVO.setHasSelect(true);
+            }
             templateVO.setChild(bean.stream().filter(item -> item.getPid().equals(templateVO.getId())).collect(Collectors.toList()));
         }
-        return bean;
+        return bean.stream().filter(item ->item.getPid() == 0).collect(Collectors.toList());
     }
 
     @PostMapping("updateSelectMsg")
     @ApiOperation(value = "公司选中的模板")
     public void updateSeletMsg(@RequestBody BandTemplateDTO dto) {
-        AdminUserContext.hasCompany();
+        AdminUserContext.hasSuperAdminQuery(dto.getCompanyId());
         AdminUser model = adminUserManager.getModel(AdminUserContext.getAdminUserId());
         if (!model.getUsername().equals("admin")) {
             throw new ServiceException("只能admin账号才能进行此操作");
         }
+        List<SmsMailTemplateVO> arrayList = new ArrayList<>();
         for (SmsMailTemplateVO vo : dto.getVos()) {
+            if (CollUtil.isNotEmpty(vo.getChild())){
+                arrayList.add(vo);
+                getChild(arrayList,vo);
+            }else {
+                arrayList.add(vo);
+            }
             if (vo.getType().equals(MsgTypeEnum.SYSTEM)) {
                 vo.setHasSelect(true);
             }
         }
-        List<SmsMailTemplateVO> collect = dto.getVos().stream().filter(SmsMailTemplateVO::getHasSelect).collect(Collectors.toList());
-
+        Set<SmsMailTemplateVO> collect = new HashSet<>(arrayList);
         List<CompanyBandMsg> list = new ArrayList<>();
         for (SmsMailTemplateVO vo : collect) {
             CompanyBandMsg companyBandMsg = new CompanyBandMsg();
             companyBandMsg.setCompanyId(AdminUserContext.getCompanyId());
             companyBandMsg.setTemplateId(vo.getId());
             companyBandMsg.setTemplateCode(vo.getCode());
+            companyBandMsg.setHasSelect(vo.getHasSelect());
+            list.add(companyBandMsg);
         }
         companyBandMsgManager.remove(new LambdaQueryWrapper<CompanyBandMsg>().eq(CompanyBandMsg::getCompanyId,AdminUserContext.getCompanyId()));
         companyBandMsgManager.saveBatch(list);
         redisTemplate.opsForHash().delete("companyTemplate", AdminUserContext.getCompanyId().toString());
-        redisTemplate.opsForHash().put("companyTemplate",AdminUserContext.getCompanyId().toString(),list);
+        redisTemplate.opsForHash().put("companyTemplate",AdminUserContext.getCompanyId().toString(),list.stream().filter(CompanyBandMsg::getHasSelect).collect(Collectors.toList()));
+    }
+
+    private void getChild(List<SmsMailTemplateVO> list, SmsMailTemplateVO vo) {
+        for (SmsMailTemplateVO child : vo.getChild()) {
+            list.add(child);
+            getChild(list, child);
+        }
     }
 
 
+
     @GetMapping("getMessageByTypeCompany/{type}")
     @ApiOperation(value = "获取各公司发的消息记录")
     public IPage<MessageReceiveDO> getMessageByTypeCompany(BaseQueryParam query, @PathVariable String type) {
@@ -167,10 +196,15 @@ public class SmsMailController {
         messageReceiveManager.update(messageReceiveDO, new LambdaQueryWrapper<MessageReceiveDO>()
                 .eq(MessageReceiveDO::getUserId, AdminUserContext.getAdminUserId())
                 .eq(MessageReceiveDO::getType, MessageReceiveTypeEnum.SYSTEM));
-
         return messageReceiveManager.page(new Page<>(query.getPageNo(), query.getPageSize()), new LambdaQueryWrapper<MessageReceiveDO>()
                 .eq(MessageReceiveDO::getUserId, AdminUserContext.getAdminUserId())
                 .eq(MessageReceiveDO::getType, MessageReceiveTypeEnum.SYSTEM));
     }
 
+
+
+
+
+
+
 }

+ 5 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/StockDamageReportManagerController.java

@@ -1,5 +1,6 @@
 package com.hys.app.controller.erp.use;
 
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dto.StockDamageReportDTO;
 import com.hys.app.model.erp.dto.StockDamageReportParam;
@@ -39,6 +40,7 @@ public class StockDamageReportManagerController {
     @ApiOperation(value = "查询库存报损单分页列表数据")
     @GetMapping
     public WebPage list(StockDamageReportParam params) {
+        AdminUserContext.hasSuperAdminQuery(params.getCompanyId());
         return stockDamageReportManager.list(params);
     }
 
@@ -46,6 +48,7 @@ public class StockDamageReportManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "新增库存报损单")
     public void add(@RequestBody @Valid StockDamageReportDTO stockDamageReportDTO) {
+        AdminUserContext.hasCompany();
         this.stockDamageReportManager.add(stockDamageReportDTO);
     }
 
@@ -54,6 +57,7 @@ public class StockDamageReportManagerController {
     @PostMapping("/submit/{id}")
     @Log(client = LogClient.admin, detail = "修改id为[${id}]的库存报损单")
     public void submit(@PathVariable Long id, @RequestBody @Valid StockDamageReportDTO stockDamageReportDTO) {
+        AdminUserContext.hasCompany();
         this.stockDamageReportManager.submit(id, stockDamageReportDTO);
     }
 
@@ -74,6 +78,7 @@ public class StockDamageReportManagerController {
     })
     @Log(client = LogClient.admin, detail = "删除ID为[${ids}]的库存报损单")
     public void delete(@PathVariable List<Long> ids) {
+        AdminUserContext.hasCompany();
         this.stockDamageReportManager.delete(ids);
     }
 

+ 6 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/StockInventoryManagerController.java

@@ -1,5 +1,6 @@
 package com.hys.app.controller.erp.use;
 
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dto.StockInventoryDTO;
 import com.hys.app.model.erp.dto.StockInventoryParam;
@@ -37,6 +38,7 @@ public class StockInventoryManagerController {
     @ApiOperation(value = "查询库存盘点单分页列表数据")
     @GetMapping
     public WebPage list(StockInventoryParam params) {
+        AdminUserContext.hasSuperAdminQuery(params.getCompanyId());
         return stockInventoryManager.list(params);
     }
 
@@ -44,6 +46,7 @@ public class StockInventoryManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "新增库存盘点单")
     public void add(@RequestBody @Valid StockInventoryDTO stockInventoryDTO) {
+        AdminUserContext.hasCompany();
         this.stockInventoryManager.add(stockInventoryDTO);
     }
 
@@ -51,6 +54,7 @@ public class StockInventoryManagerController {
     @PostMapping("/{id}")
     @Log(client = LogClient.admin, detail = "修改id为[${id}]的库存盘点单")
     public void edit(@PathVariable Long id, @RequestBody @Valid StockInventoryDTO stockInventoryDTO) {
+        AdminUserContext.hasCompany();
         this.stockInventoryManager.edit(id, stockInventoryDTO);
     }
     @ApiOperation(value = "查询库存盘点单详细信息")
@@ -62,6 +66,7 @@ public class StockInventoryManagerController {
     @ApiOperation(value = "同步库存")
     @GetMapping("/syncStock/{id}")
     public void syncStock(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         stockInventoryManager.syncStock(id);
     }
 
@@ -72,6 +77,7 @@ public class StockInventoryManagerController {
     @DeleteMapping("/{id}")
     @Log(client = LogClient.admin, detail = "删除ID为[${ids}]的库存盘点单")
     public void delete(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         this.stockInventoryManager.delete(id);
     }
 

+ 6 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/StockTransferManagerController.java

@@ -1,5 +1,6 @@
 package com.hys.app.controller.erp.use;
 
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dto.StockTransferDTO;
 import com.hys.app.model.erp.dto.StockTransferQueryParams;
@@ -36,6 +37,7 @@ public class StockTransferManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<StockTransferVO> list(StockTransferQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return stockTransferManager.list(queryParams);
     }
 
@@ -43,6 +45,7 @@ public class StockTransferManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建调拨单")
     public void add(@RequestBody @Valid StockTransferDTO stockTransferDTO) {
+        AdminUserContext.hasCompany();
         stockTransferManager.add(stockTransferDTO);
     }
 
@@ -50,6 +53,7 @@ public class StockTransferManagerController {
     @PutMapping("/{id}")
     @Log(client = LogClient.admin, detail = "编辑ID为[${id}]的调拨单")
     public void edit(@PathVariable String id, @RequestBody @Valid StockTransferDTO stockTransferDTO) {
+        AdminUserContext.hasCompany();
         stockTransferDTO.setId(id);
         stockTransferManager.edit(stockTransferDTO);
     }
@@ -65,6 +69,7 @@ public class StockTransferManagerController {
     @PostMapping("/{id}/submit")
     @Log(client = LogClient.admin, detail = "提交ID为[${id}]的调拨单")
     public void submit(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         stockTransferManager.submit(id);
     }
 
@@ -72,6 +77,7 @@ public class StockTransferManagerController {
     @PostMapping("/{id}/withdraw")
     @Log(client = LogClient.admin, detail = "撤销ID为[${id}]的调拨单")
     public void withdraw(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         stockTransferManager.withdraw(id);
     }
 

+ 15 - 4
module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseAreaController.java

@@ -1,9 +1,10 @@
 package com.hys.app.controller.erp.use;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.database.WebPage;
-import com.hys.app.model.erp.dos.GoodsDO;
 import com.hys.app.model.erp.dos.WarehouseAreaDO;
 import com.hys.app.model.erp.dos.WarehouseAreaTypeDO;
 import com.hys.app.model.erp.dto.WarehouseAreaQueryParams;
@@ -45,6 +46,7 @@ public class WarehouseAreaController {
     @ApiOperation(value = "获取库位列表")
     @GetMapping("/query")
     public WebPage<WarehouseAreaVO> list(WarehouseAreaQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return warehouseAreaManager.list(queryParams);
     }
 
@@ -53,6 +55,7 @@ public class WarehouseAreaController {
     @PostMapping("/create")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void add(@RequestBody @Valid WarehouseAreaDO warehouseAreaDO) {
+        AdminUserContext.hasCompany();
         warehouseAreaManager.add(warehouseAreaDO);
     }
 
@@ -60,6 +63,7 @@ public class WarehouseAreaController {
     @PostMapping("/update")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void update(@RequestBody @Valid WarehouseAreaDO warehouseAreaDO) {
+        AdminUserContext.hasCompany();
         warehouseAreaManager.edit(warehouseAreaDO);
     }
 
@@ -75,6 +79,7 @@ public class WarehouseAreaController {
     @DeleteMapping("/delete")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void delete(@RequestBody @Valid WarehouseAreaRequest request) {
+        AdminUserContext.hasCompany();
         warehouseAreaManager.delete(request.getId());
     }
 
@@ -82,6 +87,8 @@ public class WarehouseAreaController {
     @PostMapping("/createAreaType")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void createAreaType(@RequestBody @Valid WarehouseAreaTypeDO warehouseAreaTypeDO) {
+        AdminUserContext.hasCompany();
+        warehouseAreaTypeDO.setCompanyId(AdminUserContext.getCompanyId());
         warehouseAreaTypeManager.save(warehouseAreaTypeDO);
     }
 
@@ -89,6 +96,7 @@ public class WarehouseAreaController {
     @DeleteMapping("/removeAreaType/{id}")
     @Log(client = LogClient.admin, detail = "删除库位信息")
     public void removeAreaType(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         warehouseAreaTypeManager.removeById(id);
     }
 
@@ -96,15 +104,17 @@ public class WarehouseAreaController {
     @PutMapping("/updateAreaType/{id}")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void updateAreaType(@RequestBody @Valid WarehouseAreaTypeDO warehouseAreaTypeDO, @PathVariable(value = "id") Long id) {
+        AdminUserContext.hasCompany();
         warehouseAreaTypeDO.setId(id);
         warehouseAreaTypeManager.updateById(warehouseAreaTypeDO);
     }
 
     @ApiOperation(value = "查询库位类型")
     @GetMapping("/listAreaType")
-    @Log(client = LogClient.admin, detail = "创建库位信息")
-    public List<WarehouseAreaTypeDO> listAreaType() {
-        return warehouseAreaTypeManager.list();
+    public List<WarehouseAreaTypeDO> listAreaType(Long companyId) {
+        AdminUserContext.hasSuperAdminQuery(companyId);
+        return warehouseAreaTypeManager.list(new LambdaQueryWrapper<WarehouseAreaTypeDO>()
+                .eq(WarehouseAreaTypeDO::getCompanyId, AdminUserContext.getCompanyId()));
     }
 
     @ApiOperation(value = "根据仓库id获取所有的库存列表")
@@ -125,6 +135,7 @@ public class WarehouseAreaController {
     @PostMapping("/bindAreaStock/{warehouseId}/{warehouseAreaId}")
     @Log(client = LogClient.admin, detail = "创建库位信息")
     public void bindAreaStock(@PathVariable Long warehouseId, @PathVariable(value = "warehouseAreaId") Long warehouseAreaId, @RequestBody WarehouseAreaDO warehouseAreaDO) {
+        AdminUserContext.hasCompany();
         warehouseAreaManager.bindAreaStock(warehouseId, warehouseAreaId, warehouseAreaDO.getStockIdList());
     }
 }

+ 4 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseEntryManagerController.java

@@ -1,5 +1,6 @@
 package com.hys.app.controller.erp.use;
 
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dos.WarehouseEntryDO;
 import com.hys.app.model.erp.dto.WarehouseEntryDTO;
@@ -44,6 +45,7 @@ public class WarehouseEntryManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<WarehouseEntryDO> list(WarehouseEntryQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return warehouseEntryManager.list(queryParams);
     }
 
@@ -51,6 +53,7 @@ public class WarehouseEntryManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建入库单")
     public Long add(@RequestBody @Valid WarehouseEntryDTO warehouseEntryDTO) {
+        AdminUserContext.hasCompany();
         return warehouseEntryManager.add(warehouseEntryDTO);
     }
 
@@ -58,6 +61,7 @@ public class WarehouseEntryManagerController {
     @PutMapping("/{id}")
     @Log(client = LogClient.admin, detail = "编辑ID为[${id}]的入库单")
     public void edit(@PathVariable Long id, @RequestBody @Valid WarehouseEntryDTO warehouseEntryDTO) {
+        AdminUserContext.hasCompany();
         warehouseEntryDTO.setId(id);
         warehouseEntryManager.edit(warehouseEntryDTO);
     }

+ 5 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseManagerController.java

@@ -1,5 +1,6 @@
 package com.hys.app.controller.erp.use;
 
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dto.WarehouseQueryParams;
 import com.hys.app.model.erp.vo.WarehouseVO;
@@ -34,6 +35,7 @@ public class WarehouseManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<WarehouseVO> list(WarehouseQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return warehouseManager.list(queryParams);
     }
 
@@ -47,6 +49,7 @@ public class WarehouseManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "添加名称为[${warehouseDTO.name}]的仓库信息")
     public void add(@RequestBody @Valid WarehouseDTO warehouseDTO) {
+        AdminUserContext.hasCompany();
         warehouseManager.add(warehouseDTO);
     }
 
@@ -54,6 +57,7 @@ public class WarehouseManagerController {
     @PutMapping("/{id}")
     @Log(client = LogClient.admin, detail = "编辑ID为[${id}]的仓库信息")
     public void edit(@PathVariable String id, @RequestBody @Valid WarehouseDTO warehouseDTO) {
+        AdminUserContext.hasCompany();
         warehouseDTO.setId(id);
         warehouseManager.edit(warehouseDTO);
     }
@@ -68,6 +72,7 @@ public class WarehouseManagerController {
     @DeleteMapping("/{id}")
     @Log(client = LogClient.admin, detail = "删除ID为[${id}]的仓库信息")
     public void delete(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         warehouseManager.delete(id);
     }
 }

+ 29 - 22
module-erp/src/main/java/com/hys/app/controller/erp/use/WarehouseOutManagerController.java

@@ -2,6 +2,7 @@ package com.hys.app.controller.erp.use;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.model.erp.dos.LockedStockDetailDO;
@@ -47,6 +48,7 @@ public class WarehouseOutManagerController {
     @ApiOperation(value = "分页列表")
     @GetMapping
     public WebPage<WarehouseOutVO> list(WarehouseOutQueryParams queryParams) {
+        AdminUserContext.hasSuperAdminQuery(queryParams.getCompanyId());
         return warehouseOutManager.list(queryParams);
     }
 
@@ -54,6 +56,7 @@ public class WarehouseOutManagerController {
     @PostMapping
     @Log(client = LogClient.admin, detail = "创建出库单")
     public Long add(@RequestBody @Valid WarehouseOutDTO warehouseOutDTO) {
+        AdminUserContext.hasCompany();
         return warehouseOutManager.add(warehouseOutDTO);
     }
 
@@ -61,6 +64,7 @@ public class WarehouseOutManagerController {
     @PutMapping("/{id}")
     @Log(client = LogClient.admin, detail = "编辑id为[${id}]出库单")
     public void edit(@PathVariable Long id, @RequestBody @Valid WarehouseOutDTO warehouseOutDTO) {
+        AdminUserContext.hasCompany();
         warehouseOutDTO.setId(id);
         warehouseOutManager.edit(warehouseOutDTO);
     }
@@ -75,6 +79,7 @@ public class WarehouseOutManagerController {
     @DeleteMapping("/{id}")
     @Log(client = LogClient.admin, detail = "删除ID为[${id}]的出库单")
     public void delete(@PathVariable Long id) {
+        AdminUserContext.hasCompany();
         warehouseOutManager.delete(id);
     }
 
@@ -84,30 +89,32 @@ public class WarehouseOutManagerController {
         this.warehouseOutManager.export(response, params);
     }
 
-    @ApiOperation(value = "根据仓库找到所有sku库存大于0的商品")
-    @GetMapping("/getGoodByWarehouse/warehouseIdAndOrderType/{orderType}/{warehouseIds}")
-    @Log(client = LogClient.admin, detail = "根据仓库找到所有sku库存大于0的商品")
-    public IPage<ProductStockVO> getGoodByWarehouse(BaseQueryParam queryParam,
-                                                    @PathVariable(value = "orderType") String orderType,
-                                                    @PathVariable(value = "warehouseIds") String warehouseIds) {
-        String[] split = warehouseIds.split(",");
-        List<Long> list = new ArrayList<>();
-        for (String s : split) {
-            list.add(Long.valueOf(s));
-        }
-        return warehouseOutManager.getGoodByWarehouse(null, queryParam, orderType, list,queryParam.getKeyWord());
-    }
-    @ApiOperation(value = "根据仓库找到所有sku库存大于0的商品")
-    @GetMapping("/getGoodByWarehouse/{warehouseId}")
-    public IPage<ProductStockVO> getGoodByWarehouse(@PathVariable(value = "warehouseId") Long warehouseId, BaseQueryParam queryParam) {
-        return warehouseOutManager.getGoodByWarehouse(warehouseId, queryParam, null, null,queryParam.getKeyWord());
-    }
+//    @ApiOperation(value = "根据仓库找到所有sku库存大于0的商品")
+//    @GetMapping("/getGoodByWarehouse/warehouseIdAndOrderType/{orderType}/{warehouseIds}")
+//    @Log(client = LogClient.admin, detail = "根据仓库找到所有sku库存大于0的商品")
+//    public IPage<ProductStockVO> getGoodByWarehouse(BaseQueryParam queryParam,
+//                                                    @PathVariable(value = "orderType") String orderType,
+//                                                    @PathVariable(value = "warehouseIds") String warehouseIds) {
+//        String[] split = warehouseIds.split(",");
+//        List<Long> list = new ArrayList<>();
+//        for (String s : split) {
+//            list.add(Long.valueOf(s));
+//        }
+//        return warehouseOutManager.getGoodByWarehouse(null, queryParam, orderType, list, queryParam.getKeyWord());
+//    }
 
-    @ApiOperation(value = "找到这个仓库所有的商品")
-    @GetMapping("/getGoodByWarehouseInventory/{warehouseId}")
-    public IPage<ProductStockVO> getGoodByWarehouseInventory(@PathVariable(value = "warehouseId") Long warehouseId, BaseQueryParam queryParam) {
-        return warehouseOutManager.getGoodByWarehouseInventory(warehouseId, queryParam,queryParam.getKeyWord());
+//    @ApiOperation(value = "根据仓库找到所有sku库存大于0的商品 出库调拨报损")
+//    @GetMapping("/getGoodByWarehouse/{warehouseId}")
+//    public IPage<ProductStockVO> getGoodByWarehouse(@PathVariable(value = "warehouseId") Long warehouseId, BaseQueryParam queryParam) {
+//        return warehouseOutManager.getGoodByWarehouse(warehouseId, queryParam, null, null, queryParam.getKeyWord());
+//    }
+
+    @ApiOperation(value = "根据仓库找商品  入库盘点库位绑定商品type=le 出库调拨报损 type =gt")
+    @GetMapping("/getGoodByWarehouse/{warehouseId}/{type}")
+    public IPage<ProductStockVO> getGoodByWarehouse(@PathVariable(value = "warehouseId") Long warehouseId, BaseQueryParam queryParam, @PathVariable String type) {
+        return warehouseOutManager.getGoodByWarehouseInventory(warehouseId, queryParam, queryParam.getKeyWord(),type);
     }
+
     @ApiOperation(value = "获取冻结库存")
     @GetMapping("/getLockedStock")
     public IPage<LockedStockDetailDO> getLockedStock(LockedStockParams queryParam) {

+ 14 - 9
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/AliSmsUtil.java

@@ -1,6 +1,7 @@
 package com.hys.app.controller.erp.use.msg;
 
 
+import cn.hutool.json.JSON;
 import cn.hutool.json.JSONUtil;
 import com.aliyun.tea.TeaException;
 import com.aliyun.teautil.models.RuntimeOptions;
@@ -11,12 +12,13 @@ import com.aliyuncs.dysmsapi.model.v20170525.AddSmsTemplateResponse;
 import com.aliyuncs.profile.DefaultProfile;
 import com.hys.app.framework.exception.ServiceException;
 
+import java.util.HashMap;
 import java.util.Map;
 
 public class AliSmsUtil {
     private static String signName = "上海瑞赢旷视科技";
-    private static String access_id = "LTAI5t9RbXSuirMa8AkvHxQf";
-    private static String access_secret = "VCmMZvMKrcN2tBHXdenyEKJIoKbwQf";
+    public static String access_id = "LTAI5t9RbXSuirMa8AkvHxQf";
+    public static String access_secret = "VCmMZvMKrcN2tBHXdenyEKJIoKbwQf";
 
 
     /**
@@ -52,14 +54,15 @@ public class AliSmsUtil {
         return new DefaultAcsClient(profile);
     }
 
-    public static Boolean sendSms(String rePhone, String templateCode, Map<String, String> map) throws Exception {
-        com.aliyun.dysmsapi20170525.Client client = AliSmsUtil.createClient();
-        com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
-                .setPhoneNumbers(rePhone)
-                .setTemplateCode(templateCode)
-                .setTemplateParam(JSONUtil.toJsonStr(map))
-                .setSignName(signName);
+    public static Boolean sendSms(String rePhone, String templateCode, String map) {
+
         try {
+            com.aliyun.dysmsapi20170525.Client client = AliSmsUtil.createClient();
+            com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
+                    .setPhoneNumbers(rePhone)
+                    .setTemplateCode(templateCode)
+                    .setTemplateParam(map)
+                    .setSignName(signName);
             // 复制代码运行请自行打印 API 的返回值
             client.sendSmsWithOptions(sendSmsRequest, new RuntimeOptions());
             return true;
@@ -79,7 +82,9 @@ public class AliSmsUtil {
         try {
             // 设置鉴权参数,初始化客户端
             DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", access_id, access_secret);
+            System.out.println("Gson version: ---------------------------------" + com.google.gson.Gson.class.getPackage().getImplementationVersion());
             IAcsClient client = new DefaultAcsClient(profile);
+
             // 创建API请求并设置参数
             AddSmsTemplateRequest request = new AddSmsTemplateRequest();
             request.setTemplateType(templateType); // 短信类型,0为验证码,1为短信通知,2为推广短信

+ 2 - 1
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/entity/MessageReceiveTypeEnum.java → module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MessageReceiveTypeEnum.java

@@ -1,4 +1,4 @@
-package com.hys.app.controller.erp.use.msg.entity;
+package com.hys.app.controller.erp.use.msg;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -14,6 +14,7 @@ public enum MessageReceiveTypeEnum {
 
     SYSTEM("SYSTEM", "系统消息"),
     SMS("SMS", "手机短息"),
+    OFFICIAL("OFFICIAL", "手机短息"),
     MAIL("MAIL", "邮件消息");
 
     MessageReceiveTypeEnum(String value, String label) {

+ 43 - 0
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MsgContant.java

@@ -0,0 +1,43 @@
+package com.hys.app.controller.erp.use.msg;
+
+public class MsgContant {
+    //公司创建成功
+    //
+    //体验账号创建成功,初始账号为:{},密码为{},使用期限到{},有任何使用问题请咨询客服:{}
+    public static final String CREATE_COMPANY_MAIL = "CREATE_COMPANY_MAIL";
+    public static final String CREATE_COMPANY_SMS = "CREATE_COMPANY_SMS";
+    public static final String CREATE_COMPANY_SYSTEM = "CREATE_COMPANY_SYSTEM";
+    public static final String CREATE_COMPANY_OFFICIAL = "CREATE_COMPANY_OFFICIAL";
+
+
+    //用户创建成功
+    //账号创建成功,快去登录体验吧。账号:{},密码:{},登录地址:https://erp.raycos.net/#/dashboard
+    public static final String CREATE_USER_MAIL = "CREATE_USER_MAIL";
+    public static final String CREATE_USER_SMS = "CREATE_USER_SMS";
+    public static final String CREATE_USER_SYSTEM = "CREATE_USER_SYSTEM";
+    public static final String CREATE_USER_OFFICIAL = "CREATE_USER_OFFICIAL";
+
+    //用户修改
+    //{}你的账号信息发生变动,新的账号为:{},密码为:{},如不是本人操作请尽快登录https://erp.raycos.net/#/dashboard进行修改
+    public static final String UPDATE_USER_MAIL = "UPDATE_USER_MAIL";
+    public static final String UPDATE_USER_SMS = "UPDATE_USER_SMS";
+    public static final String UPDATE_USER_SYSTEM = "UPDATE_USER_SYSTEM";
+    public static final String UPDATE_USER_OFFICIAL = "UPDATE_USER_OFFICIAL";
+
+
+    //盘点单创建成功,通知人同步库存
+    //${name}于${time}提交了${code},请尽快前往核定确定
+    public static final String INVENTORY_NOTICE_USER_SYSTEM = "INVENTORY_NOTICE_USER_SYSTEM";
+    public static final String INVENTORY_NOTICE_USER_SMS = "INVENTORY_NOTICE_USER_SMS";
+    public static final String INVENTORY_NOTICE_USER_MAIL = "INVENTORY_NOTICE_USER_MAIL";
+    public static final String INVENTORY_NOTICE_USER_OFFICIAL = "INVENTORY_NOTICE_USER_OFFICIAL";
+
+
+    //报损单创建成功 通知人确认
+    //{}于{}创建了报损单,请尽快到出库单里面进行确认
+    public static final String DAMAGE_NOTICE_USER_SYSTEM = "DAMAGE_NOTICE_USER_SYSTEM";
+    public static final String DAMAGE_NOTICE_USER_SMS = "DAMAGE_NOTICE_USER_SMS";
+    public static final String DAMAGE_NOTICE_USER_MAIL = "DAMAGE_NOTICE_USER_MAIL";
+    public static final String DAMAGE_NOTICE_USER_OFFICIAL = "DAMAGE_NOTICE_USER_OFFICIAL";
+
+}

+ 92 - 24
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/MsgUtilClient.java

@@ -2,17 +2,24 @@ package com.hys.app.controller.erp.use.msg;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.hys.app.controller.erp.use.msg.entity.MessageReceiveTypeEnum;
-import com.hys.app.controller.erp.use.msg.msgTemplate.MailMsgContant;
+import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.model.erp.dos.MessageReceiveDO;
 import com.hys.app.model.erp.dos.SmsMailTemplate;
+import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.service.erp.MessageReceiveManager;
 import com.hys.app.service.erp.SmsMailManager;
 import lombok.AllArgsConstructor;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
+import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @AllArgsConstructor
 @Service
 public class MsgUtilClient {
@@ -23,49 +30,110 @@ public class MsgUtilClient {
     /**
      * 发系统消息
      */
-    public  void sendSys(String contentSys, String defContent, Long userId, Long companyId, String... format) {
-//        try {
-            SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getCode, contentSys));
-            String content = ObjectUtil.isNotNull(one) ? one.getContent() : defContent;
-            String formatContent = StrUtil.format(content, format);
+    public void sendSys(String templateCode, AdminUser adminUser, Object... format) {
+        try {
+            SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getCode, templateCode));
+            if (ObjectUtil.isNull(one)) {
+                throw new ServiceException("未找到系统消息模板");
+            }
+            String formatContent = StrUtil.format(one.getContent(), format);
             MessageReceiveDO anEnum = new MessageReceiveDO();
             anEnum.setType(MessageReceiveTypeEnum.SYSTEM);
             anEnum.setContent(formatContent);
-            anEnum.setUserId(userId);
-            anEnum.setCompanyId(companyId);
+            anEnum.setUserId(adminUser.getId());
+            anEnum.setCompanyId(adminUser.getCompanyId());
             messageReceiveManager.save(anEnum);
-//        }catch (Exception e){
-//
-//        }
+        } catch (Exception e) {
+        }
     }
 
     /**
      * 发邮件
      */
-    public  void sendMail(String contentSys, String defContent, String subHead,String toMail, Long companyId, String... format)   {
+    public void sendMail(String templateCode, AdminUser adminUser, Object... format) {
         try {
-            SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getCode, contentSys));
-            String content = ObjectUtil.isNotNull(one) ? one.getContent() : defContent;
-            String formatContent = StrUtil.format(content, format);
-            String header = ObjectUtil.isNotNull(one) ? one.getName() : subHead;
-            MailSmtpUtil.sendEmail(toMail,header,formatContent);
+            SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getCode, templateCode));
+            if (ObjectUtil.isNull(one)) {
+                throw new ServiceException("未找到邮件消息模板");
+            }
+            String formatContent = StrUtil.format(one.getContent(), format);
+            MailSmtpUtil.sendEmail(adminUser.getEmail(), one.getName(), formatContent);
             MessageReceiveDO anEnum = new MessageReceiveDO();
             anEnum.setType(MessageReceiveTypeEnum.MAIL);
             anEnum.setContent(formatContent);
-            anEnum.setMail(toMail);
-            anEnum.setCompanyId(companyId);
+            anEnum.setMail(adminUser.getEmail());
+            anEnum.setCompanyId(adminUser.getCompanyId());
             messageReceiveManager.save(anEnum);
-        }catch (Exception e){
+        } catch (Exception e) {
+        }
+    }
+
+
+    /**
+     * 发公众号
+     */
+    public void sendOfficial(String templateCode, AdminUser adminUser, Object... format) {
+        try {
+            SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getTemplateCode, templateCode));
+            if (ObjectUtil.isNull(one)) {
+                throw new ServiceException("未找到公众号消息模板");
+            }
+            if (StrUtil.isBlank(adminUser.getOpenid())) {
+                throw new ServiceException("公众号通知失败,当前用户未绑定微信(前往个人信息里面进行绑定)");
+            }
+            WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
+                    .toUser(adminUser.getOpenid())
+                    .templateId(templateCode)
+                    .build();
+
+            //"character_string6--{}--#173177"  {}里面就是需要替换的内容
+            String formatContent = StrUtil.format(one.getContent(), format);
+
+            List<String> strings = JSON.parseArray(JSON.toJSONString(formatContent), String.class);
+
+            for (String string : strings) {
+                String[] split = string.split("--");
+                //公众号平台的字段名,字段值,颜色 添加模板的时候--连接
+                WxMpTemplateData data = new WxMpTemplateData(split[0], split[1], "#173177");
+                templateMessage.addData(data);
+            }
+            WxMpService wxService = new WxMpServiceImpl();
+            WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
+            config.setAppId(AliSmsUtil.access_id);  // 替换为你的 AppID
+            config.setSecret(AliSmsUtil.access_secret);  // 替换为你的 AppSecret
+            wxService.setWxMpConfigStorage(config);
+            wxService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+
+            MessageReceiveDO anEnum = new MessageReceiveDO();
+            anEnum.setType(MessageReceiveTypeEnum.OFFICIAL);
+            anEnum.setContent(formatContent);
+            anEnum.setOpenid(adminUser.getOpenid());
+            anEnum.setCompanyId(adminUser.getCompanyId());
+            messageReceiveManager.save(anEnum);
+        } catch (Exception e) {
             System.out.println("11111111111111");
         }
     }
 
+
     /**
      * 发短信
      */
-    public  void sendSms() {
-
+    public void sendSms(String templateCode, AdminUser adminUser, Object... format) {
+        SmsMailTemplate one = smsMailManager.getOne(new LambdaQueryWrapper<SmsMailTemplate>().eq(SmsMailTemplate::getTemplateCode, templateCode));
+        if (ObjectUtil.isNull(one)) {
+            throw new ServiceException("未找到短信消息模板");
+        }
+        String formatContent = StrUtil.format(one.getRemark(), format);
+        //添加模板消息的时候模板内容 应该为json格式    String aa = "{\"code\":{}\"}";
+        AliSmsUtil.sendSms(adminUser.getPhone(), one.getTemplateCode(), formatContent);
 
+        MessageReceiveDO anEnum = new MessageReceiveDO();
+        anEnum.setType(MessageReceiveTypeEnum.SMS);
+        anEnum.setContent(formatContent);
+        anEnum.setPhone(adminUser.getPhone());
+        anEnum.setCompanyId(adminUser.getCompanyId());
+        messageReceiveManager.save(anEnum);
     }
 
 

+ 0 - 18
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/MailMsgContant.java

@@ -1,18 +0,0 @@
-package com.hys.app.controller.erp.use.msg.msgTemplate;
-
-import org.springframework.stereotype.Service;
-
-/**
- * 阿里云短信API
- *
- * @author zhangsong
- * @version v1.0
- * @since v7.3.0
- * 2021-01-27
- */
-public class MailMsgContant {
-
-
-    public static final String CREATE_SUCCESS_MAIL = "CREATESUCCESS";
-
-}

+ 0 - 17
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/MailMsgDefault.java

@@ -1,17 +0,0 @@
-package com.hys.app.controller.erp.use.msg.msgTemplate;
-
-
-/**
- * 阿里云短信API
- *
- * @author zhangsong
- * @version v1.0
- * @since v7.3.0
- * 2021-01-27
- */
-public class MailMsgDefault {
-
-    public static final String CREATE_SUCCESS_HEAD_MAIL = "公司创建成功,发送初始账号密码";
-    public static final String CREATE_SUCCESS_MAIL = "公司创建成功,初始账号为admin,密码为{},体验期限到{},如需更优质的服务前往”我的“购买";
-
-}

+ 0 - 17
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SMsMsgTemplate.java

@@ -1,17 +0,0 @@
-package com.hys.app.controller.erp.use.msg.msgTemplate;
-
-
-/**
- * 阿里云短信API
- *
- * @author zhangsong
- * @version v1.0
- * @since v7.3.0
- * 2021-01-27
- */
-public class SMsMsgTemplate {
-
-
-    public static final String createSuccess = "公司创建成功,初始账号为admin,密码为{},体验期限到{},如需更优质的服务前往我的购买";
-
-}

+ 0 - 17
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SystemMsgContent.java

@@ -1,17 +0,0 @@
-package com.hys.app.controller.erp.use.msg.msgTemplate;
-
-
-/**
- * 阿里云短信API
- *
- * @author zhangsong
- * @version v1.0
- * @since v7.3.0
- * 2021-01-27
- */
-public class SystemMsgContent {
-
-
-    public static final String CREATE_SUCCESS_SYSTEM = "CREATESUCCESS";
-
-}

+ 0 - 17
module-erp/src/main/java/com/hys/app/controller/erp/use/msg/msgTemplate/SystemMsgTemplate.java

@@ -1,17 +0,0 @@
-package com.hys.app.controller.erp.use.msg.msgTemplate;
-
-
-/**
- * 阿里云短信API
- *
- * @author zhangsong
- * @version v1.0
- * @since v7.3.0
- * 2021-01-27
- */
-public class SystemMsgTemplate  {
-
-
-    public static final String CREATE_SUCCESS_SYSTEM = "公司创建成功,初始账号为admin,密码为{},体验期限到{},如需更优质的服务前往我的购买";
-
-}

+ 1 - 1
module-erp/src/main/java/com/hys/app/converter/erp/CompanyConverter.java

@@ -13,7 +13,7 @@ public interface CompanyConverter {
 
     CompanyErp convert(CompanyDO bean);
 
-    void convert(@MappingTarget CompanyErp company , CompanyUpdateDO updateDO);
+    void convert(@MappingTarget CompanyErp company , CompanyDO updateDO);
 
     CompanyVO convert(CompanyErp bean);
 

+ 4 - 4
module-erp/src/main/java/com/hys/app/converter/erp/ProcurementContractProductConverter.java

@@ -21,11 +21,11 @@ public interface ProcurementContractProductConverter {
     default ProcurementContractProduct convert(ProductDO productDO, Map<Long, CategoryDO> categoryMap, Map<String, WarehouseEntryProductDTO> warehouseEntryProductDTOMap){
         ProcurementContractProduct procurementContractProduct = new ProcurementContractProduct();
         procurementContractProduct.setProductId(productDO.getId());
-        procurementContractProduct.setProductSn(productDO.getSn());
+//        procurementContractProduct.setProductSn(productDO.getSn());
         procurementContractProduct.setProductName(productDO.getName());
-        procurementContractProduct.setCategoryName(categoryMap.get(productDO.getCategoryId()).getName());
-        procurementContractProduct.setCategoryId(productDO.getCategoryId());
-        procurementContractProduct.setGoodsId(productDO.getGoodsId());
+//        procurementContractProduct.setCategoryName(categoryMap.get(productDO.getCategoryId()).getName());
+//        procurementContractProduct.setCategoryId(productDO.getCategoryId());
+//        procurementContractProduct.setGoodsId(productDO.getGoodsId());
         procurementContractProduct.setUnit(productDO.getUnit());
         WarehouseEntryProductDTO warehouseEntryProductDTO = warehouseEntryProductDTOMap.get(productDO.getId());
         procurementContractProduct.setStockNum(warehouseEntryProductDTO.getNum());

+ 0 - 1
module-erp/src/main/java/com/hys/app/converter/erp/ProductConverter.java

@@ -43,7 +43,6 @@ public interface ProductConverter {
 
         // 填充分类名称
         for (ProductVO productVO : page.getData()) {
-            productVO.setCategoryName(categoryNameMap.get(productVO.getCategoryId()));
             productVO.setStockNum(stockNumMap.get(productVO.getId()));
         }
 

+ 30 - 28
module-erp/src/main/java/com/hys/app/framework/datapermission/dept/DeptDataPermissionRule.java

@@ -84,36 +84,38 @@ public class DeptDataPermissionRule implements DataPermissionRule {
             return null;
         }
 
-        // 获得数据权限
-        DataPermissionDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DataPermissionDTO.class);
-        // 从上下文中拿不到,则调用逻辑进行获取
-        if (deptDataPermission == null) {
-            deptDataPermission = roleManager.getDataPermission(loginUser.getUid());
-            // 添加到上下文中,避免重复计算
-            loginUser.setContext(CONTEXT_KEY, deptDataPermission);
-        }
-
-        // 情况一,如果是 ALL 可查看全部,则无需拼接条件
-        if (deptDataPermission.getAll()) {
-            return null;
-        }
-
-        // 情况二,即不能查看部门,又不能查看自己,则说明 100% 无权限
-        if (CollUtil.isEmpty(deptDataPermission.getDeptIds())
-            && Boolean.FALSE.equals(deptDataPermission.getSelf())) {
-            return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空
-        }
-
-        // 情况三,拼接 Dept 条件,最后组合
-        Expression deptExpression = buildDeptExpression(tableName,tableAlias, deptDataPermission.getDeptIds());
-        if (deptExpression == null) {
-            log.warn("[getExpression][LoginUser({}) Table({}/{}) DeptDataPermission({}) 构建的条件为空]",
-                    JsonUtil.objectToJson(loginUser), tableName, tableAlias, JsonUtil.objectToJson(deptDataPermission));
-            return EXPRESSION_NULL;
-        }
-        return deptExpression;
+//        // 获得数据权限
+//        DataPermissionDTO deptDataPermission = loginUser.getContext(CONTEXT_KEY, DataPermissionDTO.class);
+//        // 从上下文中拿不到,则调用逻辑进行获取
+//        if (deptDataPermission == null) {
+//            deptDataPermission = roleManager.getDataPermission(loginUser.getUid());
+//            // 添加到上下文中,避免重复计算
+//            loginUser.setContext(CONTEXT_KEY, deptDataPermission);
+//        }
+//
+//        // 情况一,如果是 ALL 可查看全部,则无需拼接条件
+//        if (deptDataPermission.getAll()) {
+//            return null;
+//        }
+//
+//        // 情况二,即不能查看部门,又不能查看自己,则说明 100% 无权限
+//        if (CollUtil.isEmpty(deptDataPermission.getDeptIds())
+//            && Boolean.FALSE.equals(deptDataPermission.getSelf())) {
+//            return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空
+//        }
+//
+//        // 情况三,拼接 Dept 条件,最后组合
+//        Expression deptExpression = buildDeptExpression(tableName,tableAlias, deptDataPermission.getDeptIds());
+//        if (deptExpression == null) {
+//            log.warn("[getExpression][LoginUser({}) Table({}/{}) DeptDataPermission({}) 构建的条件为空]",
+//                    JsonUtil.objectToJson(loginUser), tableName, tableAlias, JsonUtil.objectToJson(deptDataPermission));
+//            return EXPRESSION_NULL;
+//        }
+//        return deptExpression;
+        return null;
     }
 
+
     private Expression buildDeptExpression(String tableName, Alias tableAlias, Set<Long> deptIds) {
         // 如果不存在配置,则无需作为条件
         String columnName = deptColumns.get(tableName);

+ 1 - 1
module-erp/src/main/java/com/hys/app/mapper/erp/SmsMailMapper.java

@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.CacheNamespace;
  * @since 7.1.0
  * 2020/7/21
  */
-@CacheNamespace(implementation= MybatisRedisCache.class,eviction=MybatisRedisCache.class)
+//@CacheNamespace(implementation= MybatisRedisCache.class,eviction=MybatisRedisCache.class)
 public interface SmsMailMapper extends BaseMapper<SmsMailTemplate> {
 }

+ 1 - 5
module-erp/src/main/java/com/hys/app/mapper/goods/ProductMapper.java

@@ -17,14 +17,10 @@ public interface ProductMapper extends BaseMapperX<ProductDO> {
     default WebPage<ProductDO> selectPage(ProductQueryParams params) {
         return lambdaQuery()
                 .andX(StringUtil.notEmpty(params.getKeyword()),
-                        w -> w.like(ProductDO::getName, params.getKeyword()).or().like(ProductDO::getSn, params.getKeyword()))
-                .likeIfPresent(ProductDO::getSn, params.getSn())
+                        w -> w.like(ProductDO::getName, params.getKeyword()).or())
                 .likeIfPresent(ProductDO::getSku, params.getSku())
                 .likeIfPresent(ProductDO::getName, params.getName())
-                .eqIfPresent(ProductDO::getCategoryId, params.getCategoryId())
-                .eqIfPresent(ProductDO::getHireOrSail, params.getHireOrSail())
                 .likeIfPresent(ProductDO::getUnit, params.getUnit())
-                .eqIfPresent(ProductDO::getMarketEnable, params.getMarketEnable())
                 .orderByAsc(ProductDO::getSort)
                 .page(params);
     }

+ 38 - 0
module-erp/src/main/java/com/hys/app/model/erp/configs/KuangShiConfig.java

@@ -0,0 +1,38 @@
+package com.hys.app.model.erp.configs;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 配置
+ *
+ * @author zh
+ * @version v7.0
+ * @date 18/4/13 下午8:19
+ * @since v7.0
+ */
+@Configuration
+@ConfigurationProperties(prefix = "erp")
+@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
+@SuppressWarnings("ConfigurationProperties")
+@Data
+public class KuangShiConfig {
+
+
+    @Value("${kuangshi.apikey}")
+    private String apikey;
+
+    @Value("${kuangshi.apiSecret}")
+    private String apiSecret;
+
+    @Value("${kuangshi.idCardUrl}")
+    private String idCardUrl;
+
+    @Value("${kuangshi.licenseUrl}")
+    private String licenseUrl;
+
+}

+ 2 - 1
module-erp/src/main/java/com/hys/app/model/erp/dos/AreaStock.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -19,7 +20,7 @@ import java.util.List;
  */
 @TableName("erp_area_stock")
 @Data
-public class AreaStock implements Serializable {
+public class AreaStock extends BaseDO implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 3 - 1
module-erp/src/main/java/com/hys/app/model/erp/dos/MessageReceiveDO.java

@@ -3,7 +3,7 @@ package com.hys.app.model.erp.dos;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.hys.app.controller.erp.use.msg.entity.MessageReceiveTypeEnum;
+import com.hys.app.controller.erp.use.msg.MessageReceiveTypeEnum;
 import com.hys.app.framework.database.mybatisplus.base.BaseDO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -42,5 +42,7 @@ public class MessageReceiveDO extends BaseDO implements Serializable {
 
     private String mail;
 
+    private String openid;
+
 
 }

+ 9 - 69
module-erp/src/main/java/com/hys/app/model/erp/dos/ProductDO.java

@@ -41,64 +41,13 @@ public class ProductDO extends BaseDO {
     @ApiModelProperty(hidden = true)
     private Long id;
 
-    /**
-     * 关联 {@link GoodsDO#getId()}
-     */
-    @ApiModelProperty(name = "goods_id", value = "商品id")
     private Long goodsId;
 
-    // ============= product自己的字段 =============
-
-    @ApiModelProperty(name = "sn", value = "产品编号")
-    private String sn;
-
-    @ApiModelProperty(name = "price", value = "销售价格")
-    private Double price;
-
-    @ApiModelProperty(name = "cost_price", value = "成本价格")
-    private Double costPrice;
-
-    @ApiModelProperty(name = "retail_price", value = "零售价格")
-    private Double retailPrice;
-
-    @ApiModelProperty(name = "mkt_price", value = "市场价格")
-    private Double mktPrice;
-
-    @ApiModelProperty(name = "tax_rate", value = "税率")
-    private Double taxRate;
-
-    @ApiModelProperty(name = "weight", value = "重量")
-    private Double weight;
-
-    @ApiModelProperty(name = "unit", value = "单位")
-    private String unit;
-
-    @ApiModelProperty(name = "warning_value", value = "库存预警数")
-    private Integer warningValue;
-
-    @ApiModelProperty(name = "spec_list", value = "规格列表")
-    @TableField(typeHandler = FastjsonTypeHandler.class)
-    private SpecList specList;
-
-    @ApiModelProperty(name = "image", value = "产品图片")
-    private String image;
-
-    // ============= 冗余GoodsDO的字段 =============
-
     @ApiModelProperty(name = "name", value = "产品名称")
     private String name;
 
-    @ApiModelProperty(name = "category_id", value = "分类id")
-    private Long categoryId;
-
-    @ApiModelProperty(name = "brand_id", value = "品牌id")
-    private String brandId;
-
-    @ApiModelProperty(name = "market_enable", value = "是否上架 true上架")
-    private Boolean marketEnable;
-
-    @ApiModelProperty(name = "day_price", value = "日租金")
-    private BigDecimal dayPrice;
+    @ApiModelProperty(name = "name", value = "品牌")
+    private String brand;
 
     @ApiModelProperty(name = "snCode", value = "商品序列号")
     private String snCode;
@@ -109,25 +58,16 @@ public class ProductDO extends BaseDO {
     @ApiModelProperty(name = "sku", value = "sku")
     private String sku;
 
-    @ApiModelProperty(name = "spec_name", value = "规格名")
-    @TableField(typeHandler = FastjsonTypeHandler.class)
-    private List<String> specName;
-
-    @ApiModelProperty(name = "spec_value", value = "规格值")
-    private String specValue;
+    @ApiModelProperty(name = "image", value = "产品图片")
+    private String image;
 
-    @ApiModelProperty(name = "是否有序列号", value = "商品视频")
-    private Boolean haveSn;
+    @ApiModelProperty(name = "weight", value = "重量")
+    private Double weight;
 
-    @ApiModelProperty(name = "imageList", value = "商品相册")
-    private String hireOrSail;
+    @ApiModelProperty(name = "unit", value = "单位")
+    private String unit;
 
-    @ApiModelProperty(name = "产品全局排序", value = "商品相册")
     private Long sort;
 
-    /**
-     * 解决JacksonTypeHandler反序列化问题
-     */
-    public static class SpecList extends ArrayList<ProductSpec> {
-    }
+
 }

+ 2 - 2
module-erp/src/main/java/com/hys/app/model/erp/dos/StockTransferProductDO.java

@@ -85,9 +85,9 @@ public class StockTransferProductDO implements Serializable {
     private Integer num;
 
     @ApiModelProperty(name = "num", value = "调拨数量")
-    @NotNull(message = "调拨时的库存数量")
+    @NotNull(message = "调拨时的库存数量不能为空")
     @Min(value = 1, message = "调拨数量最小为1")
-    private Integer useAbleNum;
+    private Integer usableStock;
 
     @ApiModelProperty(name = "product_stock_id", value = "商品库存id")
     private Long productStockId;

+ 2 - 1
module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseAreaTypeDO.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.hys.app.framework.database.mybatisplus.base.BaseDO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -19,7 +20,7 @@ import java.io.Serializable;
  */
 @TableName("erp_warehouse_area_type")
 @Data
-public class WarehouseAreaTypeDO implements Serializable {
+public class WarehouseAreaTypeDO extends BaseDO implements Serializable {
 
     private static final long serialVersionUID = 1L;
 

+ 3 - 3
module-erp/src/main/java/com/hys/app/model/erp/dos/WarehouseDO.java

@@ -64,7 +64,7 @@ public class WarehouseDO extends BaseDO {
     @NotBlank(message = "仓库地址")
     private String description;
 
-    @TableLogic
-    @ApiModelProperty(name = "deleted", value = "是否删除")
-    private Boolean deleted;
+//    @TableLogic
+//    @ApiModelProperty(name = "deleted", value = "是否删除")
+//    private Boolean deleted;
 }

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/BandTemplateDTO.java

@@ -22,4 +22,6 @@ public class BandTemplateDTO {
 
     @NotEmpty
     List<SmsMailTemplateVO> vos;
+
+    private Long companyId;
 }

+ 7 - 33
module-erp/src/main/java/com/hys/app/model/erp/dto/ProductDTO.java

@@ -23,53 +23,27 @@ import java.util.List;
 @Data
 public class ProductDTO {
 
-    @ApiModelProperty(hidden = true)
-    private Long id;
+    @ApiModelProperty(name = "name", value = "产品名称")
+    @NotBlank(message = "商品名称不能为空")
+    private String name;
 
-    private Long goodsId;
-
-    @ApiModelProperty(name = "snCode", value = "商品序列号")
-    private String snCode;
+    @ApiModelProperty(name = "name", value = "品牌")
+    private String brand;
 
     @ApiModelProperty(name = "barCode", value = "条码")
     private String barCode;
 
     @ApiModelProperty(name = "sku", value = "sku")
-    @Length(min = 4,message = "sku最小长度4")
     private String sku;
 
-    @ApiModelProperty(name = "price", value = "售价")
-    @Min(value = 0, message = "销售价格不能小于0")
-    private Double price;
+    @ApiModelProperty(name = "image", value = "产品图片")
+    private String image;
 
     @ApiModelProperty(name = "weight", value = "重量")
-    @Min(value = 0, message = "重量不能小于0")
     private Double weight;
 
     @ApiModelProperty(name = "unit", value = "单位")
-    @NotBlank(message = "单位不能为空")
     private String unit;
 
-    @ApiModelProperty(name = "spec_name", value = "规格名")
-    private List<String> specName;
-
-    @ApiModelProperty(name = "spec_value", value = "规格值")
-    private String specValue;
-
-    @ApiModelProperty(name = "day_price", value = "日租金")
-    private BigDecimal dayPrice;
-
-    @ApiModelProperty(name = "weight", value = "规格集合")
-    private ProductDO.SpecList specList;
-
-    @ApiModelProperty(name = "是否有序列号", value = "商品视频")
-    private Boolean haveSn;
-
-    @ApiModelProperty(name = "hireOrSail", value = "商品相册")
-    private String hireOrSail;
-
-
-    @ApiModelProperty(name = "cost_price", value = "商品相册")
-    private Double costPrice;
 }
 

+ 5 - 1
module-erp/src/main/java/com/hys/app/model/erp/dto/ProductQueryParams.java

@@ -32,6 +32,9 @@ public class ProductQueryParams extends BaseQueryParam {
     @ApiModelProperty(name = "name", value = "产品名称")
     private String name;
 
+    @ApiModelProperty(name = "name", value = "产品名称")
+    private String brand;
+
     @ApiModelProperty(name = "category_id", value = "分类id")
     private Long categoryId;
 
@@ -48,8 +51,9 @@ public class ProductQueryParams extends BaseQueryParam {
     private Boolean marketEnable;
 
     @ApiModelProperty(name = "imageList", value = "商品相册")
-    @NotBlank(message = "出租商品  售卖商品")
     private String hireOrSail;
 
+    private Long companyId;
+
 }
 

+ 3 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/SmsMailTemplateDTO.java

@@ -40,6 +40,9 @@ public class SmsMailTemplateDTO {
      */
     @ApiModelProperty("短信类型,0为验证码,1为短信通知,2为推广短信")
     private Integer templateType;
+
+    @ApiModelProperty("短信平台模板code")
+    private String templateCode;
     /**
      * 模板名称
      */

+ 10 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportDTO.java

@@ -65,4 +65,14 @@ public class StockDamageReportDTO implements Serializable {
 
     @ApiModelProperty(name = "status", value = "状态")
     private DamageinventoryEnum status;
+
+    /**
+     * 通知用户的Id
+     */
+    private Long  noticeUserId;
+
+    /**
+     * 是否通知
+     */
+    private Boolean  hasNotice;
 }

+ 1 - 1
module-erp/src/main/java/com/hys/app/model/erp/dto/StockDamageReportParam.java

@@ -35,5 +35,5 @@ public class StockDamageReportParam extends BaseQueryParam implements Serializab
     @ApiModelProperty(name = "warehouse_id", value = "仓库ID")
     private Long warehouseId;
 
-
+    private Long companyId;
 }

+ 11 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryDTO.java

@@ -73,4 +73,15 @@ public class StockInventoryDTO implements Serializable {
     @ApiModelProperty(name = "inventory_type", value = "盘点类型", required = true)
     @NotEmpty(message = "盘点类型不能为空")
     private String inventoryType;
+
+    /**
+     * 通知用户的Id
+     */
+    private Long  noticeUserId;
+
+    /**
+     * 是否通知
+     */
+    private Boolean  hasNotice;
+
 }

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/StockInventoryParam.java

@@ -38,4 +38,6 @@ public class StockInventoryParam extends BaseQueryParam implements Serializable
     @ApiModelProperty(name = "inventory_person_id", value = "盘点人ID", required = true)
     private Long inventoryPersonId;
 
+    private Long companyId;
+
 }

+ 1 - 1
module-erp/src/main/java/com/hys/app/model/erp/dto/StockTransferProductDTO.java

@@ -27,7 +27,7 @@ public class StockTransferProductDTO {
     @ApiModelProperty(name = "num", value = "调拨数量")
     @NotNull(message = "调拨时的库存数量")
     @Min(value = 1, message = "调拨数量最小为1")
-    private Integer useAbleNum;
+    private Integer usableStock;
 
     @ApiModelProperty(name = "product_stock_id", value = "product_stock_id不能为空")
     private Long productStockId;

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/StockTransferQueryParams.java

@@ -59,5 +59,7 @@ public class StockTransferQueryParams extends BaseQueryParam {
     @ApiModelProperty(value = "部门id集合", hidden = true)
     private Set<Long> deptIdList;
 
+    private Long companyId;
+
 }
 

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseAreaQueryParams.java

@@ -28,6 +28,8 @@ public class WarehouseAreaQueryParams extends BaseQueryParam {
     
     @ApiModelProperty(name = "status", value = "状态")
     private String status;
+
+    private Long  companyId;
     
 }
 

+ 3 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseEntryDTO.java

@@ -37,6 +37,9 @@ public class WarehouseEntryDTO {
     @ApiModelProperty("入库类型")
     private Long  warehouseEntryTypeId;
 
+    @ApiModelProperty(name = "type", value = "入库类型")
+    private WarehouseEntyrTypeEnum type;
+
     @ApiModelProperty(name = "memo", value = "订单备注")
     private String memo;
 

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseEntryQueryParams.java

@@ -72,5 +72,7 @@ public class WarehouseEntryQueryParams extends BaseQueryParam {
     @ApiModelProperty(name = "type", value = "入库类型")
     private WarehouseEntyrTypeEnum type;
 
+    private Long companyId;
+
 }
 

+ 1 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseOutQueryParams.java

@@ -38,5 +38,6 @@ public class WarehouseOutQueryParams extends BaseQueryParam {
 //    @ApiModelProperty(name = "order_sn", value = "订单编号")
 //    private String orderSn;
 
+    private Long companyId;
 }
 

+ 2 - 0
module-erp/src/main/java/com/hys/app/model/erp/dto/WarehouseQueryParams.java

@@ -34,6 +34,8 @@ public class WarehouseQueryParams extends BaseQueryParam {
     
     @ApiModelProperty(name = "dept_id", value = "部门id")
     private Long deptId;
+
+    private Long companyId;
     
 }
 

+ 9 - 4
module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyBandMsg.java

@@ -1,8 +1,10 @@
 package com.hys.app.model.erp.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
@@ -11,21 +13,24 @@ import java.time.LocalDateTime;
  */
 @TableName(value = "erp_company_band_msg")
 @Data
-public class CompanyBandMsg {
+public class CompanyBandMsg  implements Serializable {
 
     public static final Long ROOT_ID = 0L;
 
     private Long id;
     /**
-     * 名称
+     * 公司id
      */
     private Long companyId;
     /**
-     * 营业执照
+     * 模板id
      */
     private Long templateId;
     /**
-     * 统一社会性用代码
+     * 自定义模板code
      */
     private String templateCode;
+
+    @ApiModelProperty("是否勾选")
+    private Boolean hasSelect;
 }

+ 25 - 0
module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyDO.java

@@ -8,6 +8,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Map;
 
 /**
  * 公司表
@@ -27,6 +28,30 @@ public class CompanyDO {
     @ApiModelProperty("营业执照")
     @NotBlank(message = "营业执照不能为空")
     private String license;
+
+    /**
+     * 营业执照信息
+     */
+    private Map licenseMsg;
+
+    /**
+     * 身份证正面
+     */
+    private String idCardFront;
+    /**
+     * 身份证正面信息
+     */
+    private Map idCardMsgFront;
+
+    /**
+     * 身份证反面
+     */
+    private String idCardOpposite;
+    /**
+     * 身份证反面信息
+     */
+    private Map idCardMsgOpposite;
+
     /**
      * 统一社会性用代码
      */

+ 33 - 2
module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyErp.java

@@ -1,13 +1,18 @@
 package com.hys.app.model.erp.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.hys.app.framework.database.mybatisplus.base.BaseDO;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import javax.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * 部门表
@@ -24,10 +29,36 @@ public class CompanyErp extends BaseDO {
      * 名称
      */
     private String name;
+
+    @ApiModelProperty("营业执照")
+    @NotBlank(message = "营业执照不能为空")
+    private String license;
+
     /**
-     * 营业执照
+     * 营业执照信息
      */
-    private String license;
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map licenseMsg;
+
+    /**
+     * 身份证正面
+     */
+    private String idCardFront;
+    /**
+     * 身份证正面信息
+     */
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map idCardMsgFront;
+
+    /**
+     * 身份证反面
+     */
+    private String idCardOpposite;
+    /**
+     * 身份证反面信息
+     */
+    @TableField(typeHandler = FastjsonTypeHandler.class)
+    private Map idCardMsgOpposite;
     /**
      * 统一社会性用代码
      */

+ 4 - 0
module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyQuery.java

@@ -32,4 +32,8 @@ public class CompanyQuery extends BaseQueryParam {
      */
     @ApiModelProperty("是否启用")
     private Boolean hasUse;
+
+    private String imageUrl;
+
+
 }

+ 26 - 0
module-erp/src/main/java/com/hys/app/model/erp/entity/CompanyVO.java

@@ -3,8 +3,10 @@ package com.hys.app.model.erp.entity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * 部门表
@@ -22,7 +24,31 @@ public class CompanyVO  {
      * 营业执照
      */
     @ApiModelProperty("营业执照")
+    @NotBlank(message = "营业执照不能为空")
     private String license;
+
+    /**
+     * 营业执照信息
+     */
+    private Map licenseMsg;
+
+    /**
+     * 身份证正面
+     */
+    private String idCardFront;
+    /**
+     * 身份证正面信息
+     */
+    private Map idCardMsgFront;
+
+    /**
+     * 身份证反面
+     */
+    private String idCardOpposite;
+    /**
+     * 身份证反面信息
+     */
+    private Map idCardMsgOpposite;
     /**
      * 统一社会性用代码
      */

+ 1 - 0
module-erp/src/main/java/com/hys/app/model/erp/enums/MsgTypeEnum.java

@@ -12,6 +12,7 @@ import lombok.Getter;
 public enum MsgTypeEnum {
     SYSTEM("SYSTEM", "系统"),
     SMS("SMS", "短信"),
+    OFFICIAL("OFFICIAL", "短信"),
     MAIL("MAIL", "邮件");
 
     MsgTypeEnum(String value, String label) {

+ 2 - 1
module-erp/src/main/java/com/hys/app/model/erp/vo/SmsMailTemplateVO.java

@@ -42,6 +42,7 @@ public class SmsMailTemplateVO {
      */
     @ApiModelProperty("短信类型,0为验证码,1为短信通知,2为推广短信")
     private Integer templateType;
+
     /**
      * 模板名称
      */
@@ -79,7 +80,7 @@ public class SmsMailTemplateVO {
     private String failReason;
 
     @ApiModelProperty("是否勾选")
-    private Boolean hasSelect;
+    private Boolean hasSelect =false;
 
     List<SmsMailTemplateVO> child;
 }

+ 1 - 1
module-erp/src/main/java/com/hys/app/model/erp/vo/StockTransferProductVO.java

@@ -28,7 +28,7 @@ public class StockTransferProductVO {
     private Integer num;
 
     @ApiModelProperty(name = "num", value = "库存数量")
-    private Integer useAbleNum;
+    private Integer usableStock;
 
     private GoodsVO goodsVO;
 

+ 4 - 0
module-erp/src/main/java/com/hys/app/model/system/dos/AdminUser.java

@@ -123,6 +123,10 @@ public class AdminUser implements Serializable {
     @ApiModelProperty(name = "nickname", value = "公司id", required = false)
     private Long companyId;
 
+
+    @ApiModelProperty(name = "openid", value = "openid", required = false)
+    private String openid;
+
     private String firstPassword;
 
     private String phone;

+ 9 - 5
module-erp/src/main/java/com/hys/app/model/system/vo/AdminUserVO.java

@@ -96,6 +96,15 @@ public class AdminUserVO {
     private String nickname;
 
 
+    @ApiModelProperty(name = "email", value = "昵称", required = false)
+    @NotBlank(message = "邮件不能为空")
+    private String email;
+
+    @ApiModelProperty(name = "phone", value = "昵称", required = false)
+    @NotBlank(message = "电话不能为空")
+    private String phone;
+
+
     public String getEmail() {
         return email;
     }
@@ -112,12 +121,7 @@ public class AdminUserVO {
         this.phone = phone;
     }
 
-    @ApiModelProperty(name = "email", value = "昵称", required = false)
-    private String  email;
 
-    @ApiModelProperty(name = "phone", value = "昵称", required = false)
-    private String  phone;
-    
     public String getUsername() {
         return username;
     }

+ 1 - 5
module-erp/src/main/java/com/hys/app/model/system/vo/DeptBaseVO.java

@@ -39,14 +39,10 @@ public class DeptBaseVO {
     @ApiModelProperty(value = "部门说明不能为空", example = "1024")
     private String remark;
 
-    @ApiModelProperty(value = "所在地区id")
-    private List<Long> regionIds;
 
-    @ApiModelProperty(value = "所在地区名称")
-    private List<String> regionNames;
 
     @ApiModelProperty(value = "部门权限")
-    @NotBlank(message = "部门权限不能为空")
+//    @NotBlank(message = "部门权限不能为空")
     private Long  roleId;
 
 }

+ 4 - 1
module-erp/src/main/java/com/hys/app/model/system/vo/Menus.java

@@ -2,6 +2,7 @@ package com.hys.app.model.system.vo;
 
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -15,6 +16,8 @@ import java.util.List;
 
 @Data
 public class Menus {
+    private Long id;
+
     /**
      * 菜单标题
      */
@@ -35,7 +38,7 @@ public class Menus {
     /**
      * 子菜单
      */
-    private List<Menus> children;
+    private List<Menus> children =new ArrayList<>();
 
     /**
      * 父id

+ 351 - 351
module-erp/src/main/java/com/hys/app/mq/core/erp/StockStatisticsConsumer.java

@@ -1,351 +1,351 @@
-package com.hys.app.mq.core.erp;
-
-import com.hys.app.mq.event.*;
-import com.hys.app.framework.util.DateUtil;
-import com.hys.app.model.erp.dos.*;
-import com.hys.app.model.erp.dto.StockStatisticsMessage;
-import com.hys.app.model.erp.dto.message.*;
-import com.hys.app.model.erp.enums.StockStatisticsTypeEnum;
-import com.hys.app.service.erp.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * 库存统计消费者
- *
- * @author dmy
- * 2023-12-22
- */
-@Service
-public class StockStatisticsConsumer implements StockStatisticsEvent, WarehouseEntryAuditPassEvent, SupplierReturnAuditPassEvent, WarehouseOutShipEvent, StockDamageAuditPassEvent, OrderReturnAuditPassEvent, ChangeFormAuditPassEvent, GoodsChangeEvent {
-
-    @Autowired
-    private StockStatisticsManager stockStatisticsManager;
-
-    @Autowired
-    private WarehouseEntryBatchManager warehouseEntryBatchManager;
-
-    @Autowired
-    private ProductManager productManager;
-
-    @Autowired
-    private ProductStockManager productStockManager;
-
-    @Autowired
-    private SupplierReturnItemManager supplierReturnItemManager;
-
-    @Autowired
-    private OrderReturnItemManager orderReturnItemManager;
-
-    @Autowired
-    private StockTransferProductManager stockTransferProductManager;
-
-    @Autowired
-    private StockDamageReportProductManager stockDamageReportProductManager;
-
-    @Autowired
-    private ChangeFormProductManager changeFormProductManager;
-
-    /**
-     * 库存统计
-     *
-     * @param message 库存统计消息
-     */
-    @Override
-    public void stockStatistics(StockStatisticsMessage message) {
-        //获取操作类型
-        StockStatisticsTypeEnum typeEnum = message.getStockStatisticsTypeEnum();
-        if (StockStatisticsTypeEnum.STOCK_TRANSFER.equals(typeEnum)) {
-            //更新库存统计中的库存调拨数量信息
-            this.updateStockTransferNum(message.getStockTransferList());
-        }
-    }
-
-    @Override
-    public void onWarehouseEntryAuditPass(WarehouseEntryAuditPassMessage message) {
-        // 新增库存统计信息
-        add(message.getList());
-    }
-
-    @Override
-    public void onSupplierReturnAuditPass(SupplierReturnAuditPassMessage message) {
-        //更新库存统计中的供应商退货数量信息
-        this.updateSupplierReturnNum(message.getList());
-    }
-
-    @Override
-    public void onWarehouseOutShip(WarehouseOutShipMessage message) {
-        //更新库存统计中的出库数量信息
-        this.updateStockOutNum(message.getItemList());
-    }
-
-    @Override
-    public void onStockDamageAuditPass(StockDamageAuditPassMessage message) {
-        //更新库存统计中的库存报损数量信息
-        this.updateStockDamageNum(message.getList());
-    }
-
-    @Override
-    public void onOrderReturnAuditPass(OrderReturnAuditPassMessage message) {
-        //更新库存统计中的订单退货数量信息
-        this.updateOrderReturnNum(message.getList());
-    }
-
-    @Override
-    public void onChangeFormAuditPass(ChangeFormAuditPassMessage message) {
-        //更新库存统计中的换货数量信息
-        this.updateChangeNum(message.getList());
-    }
-
-    /**
-     * 新增库存统计信息
-     *
-     * @param warehouseEntryList 入库单信息
-     */
-    private void add(List<WarehouseEntryDO> warehouseEntryList) {
-        //库存统计信息入库
-        for (WarehouseEntryDO warehouseEntryDO : warehouseEntryList) {
-            StockStatistics statistics = new StockStatistics();
-            statistics.setWarehouseId(warehouseEntryDO.getWarehouseId());
-            statistics.setWarehouseName(warehouseEntryDO.getWarehouseName());
-//            statistics.setDeptId(warehouseEntryDO.getDeptId());
-//            statistics.setDeptName(warehouseEntryDO.getDeptName());
-            statistics.setStockSn(warehouseEntryDO.getSn());
-            statistics.setCreateTime(DateUtil.getDateline());
-
-            //根据入库单ID查询入库批次信息
-            List<WarehouseEntryBatchDO> batchDOS = this.warehouseEntryBatchManager.listByWarehouseEntryIds(Collections.singletonList(warehouseEntryDO.getId()));
-
-            List<StockStatistics> stockStatisticsList = new ArrayList<>();
-            for (WarehouseEntryBatchDO batch : batchDOS) {
-                statistics.setBatchId(batch.getId());
-                statistics.setBatchSn(batch.getSn());
-                statistics.setProductId(batch.getProductId());
-                statistics.setProductSn(batch.getProductSn());
-                statistics.setProductName(batch.getProductName());
-                statistics.setSpecification(batch.getProductSpecification());
-                statistics.setCategoryId(batch.getCategoryId());
-                statistics.setCategoryName(batch.getCategoryName());
-                statistics.setUnit(batch.getProductUnit());
-                statistics.setInNum(batch.getEntryNum());
-                statistics.setRemainNum(batch.getRemainNum());
-                statistics.setOutNum(0);
-                statistics.setSupplierReturnNum(0);
-                statistics.setOrderReturnNum(0);
-                statistics.setTransferOutNum(0);
-                statistics.setTransferInNum(0);
-                statistics.setDamageNum(0);
-                statistics.setChangeNum(0);
-                //设置商品预警数量
-                ProductDO product = this.productManager.getById(batch.getProductId());
-                statistics.setWarningNum(product.getWarningValue());
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(batch.getProductId(), batch.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                stockStatisticsList.add(statistics);
-            }
-            this.stockStatisticsManager.saveBatch(stockStatisticsList);
-        }
-    }
-
-    /**
-     * 更新库存统计中的出库数量
-     *
-     * @param warehouseOutItemList 出库单商品信息集合
-     */
-    private void updateStockOutNum(List<WarehouseOutItemDO> warehouseOutItemList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //更新库存统计中的出库数量
-        for (WarehouseOutItemDO warehouseOutItemDO : warehouseOutItemList) {
-            //获取库存统计信息
-            StockStatistics statistics = this.stockStatisticsManager.getModel(warehouseOutItemDO.getWarehouseEntryBatchId());
-            //设置库存统计中的出库数量
-            statistics.setOutNum(statistics.getOutNum() + warehouseOutItemDO.getOutNum());
-            //设置库存剩余数量
-            statistics.setRemainNum(statistics.getRemainNum() - warehouseOutItemDO.getOutNum());
-            //设置商品总库存
-            ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-            statistics.setStockNum(stock.getNum());
-            //放入集合中
-            statisticsList.add(statistics);
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    /**
-     * 更新库存统计中的供应商退货数量
-     *
-     * @param supplierReturnList 供应商退货信息
-     */
-    private void updateSupplierReturnNum(List<SupplierReturnDO> supplierReturnList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //循环修改
-        for (SupplierReturnDO supplierReturnDO : supplierReturnList) {
-            //获取供应商退货产品信息
-            List<SupplierReturnItemDO> itemDOS = this.supplierReturnItemManager.listBySupplierReturnId(supplierReturnDO.getId());
-            for (SupplierReturnItemDO itemDO : itemDOS) {
-                //获取库存统计信息
-                StockStatistics statistics = this.stockStatisticsManager.getModel(itemDO.getWarehouseEntryBatchId());
-                //设置库存统计中的供应商退货数量
-                statistics.setSupplierReturnNum(statistics.getSupplierReturnNum() + itemDO.getReturnNum());
-                //设置库存剩余数量
-                statistics.setRemainNum(statistics.getRemainNum() - itemDO.getReturnNum());
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                statisticsList.add(statistics);
-            }
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    /**
-     * 更新库存统计中的订单退货数量
-     *
-     * @param orderReturnList 订单退货信息
-     */
-    private void updateOrderReturnNum(List<OrderReturnDO> orderReturnList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //循环修改
-        for (OrderReturnDO orderReturnDO : orderReturnList) {
-            //获取订单退货产品信息
-            List<OrderReturnItemDO> itemDOS = this.orderReturnItemManager.listByOrderReturnId(orderReturnDO.getId());
-            for (OrderReturnItemDO itemDO : itemDOS) {
-                //获取库存统计信息
-                StockStatistics statistics = this.stockStatisticsManager.getModel(itemDO.getWarehouseEntryBatchId());
-                //设置库存统计中的订单退货数量
-                statistics.setOrderReturnNum(statistics.getOrderReturnNum() + itemDO.getReturnNum());
-                //设置库存剩余数量
-                statistics.setRemainNum(statistics.getRemainNum() + itemDO.getReturnNum());
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                statisticsList.add(statistics);
-            }
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    /**
-     * 更新库存统计中的库存调拨数量
-     *
-     * @param stockTransferList 库存调拨信息
-     */
-    private void updateStockTransferNum(List<StockTransferDO> stockTransferList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //循环修改
-        for (StockTransferDO stockTransferDO : stockTransferList) {
-            //获取库存调拨单产品信息
-            List<StockTransferProductDO> productDOS = this.stockTransferProductManager.listByStockTransferId(stockTransferDO.getId());
-            for (StockTransferProductDO productDO : productDOS) {
-                //获取库存统计信息
-                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getWarehouseEntryBatchId());
-                statistics.setTransferOutNum(statistics.getTransferOutNum() + productDO.getNum());
-                //设置库存剩余数量
-                statistics.setRemainNum(statistics.getRemainNum() - productDO.getNum());
-
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                statisticsList.add(statistics);
-            }
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    /**
-     * 更新库存统计中的库存调整数量
-     *
-     * @param reportsList 库存调整信息
-     */
-    private void updateStockDamageNum(List<StockDamageReport> reportsList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //循环修改
-        for (StockDamageReport report : reportsList) {
-            //获取库存报损单产品信息
-            List<StockDamageReportProduct> productDOS = this.stockDamageReportProductManager.list(report.getId());
-            for (StockDamageReportProduct productDO : productDOS) {
-                //获取库存统计信息
-                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getBatchId());
-                //修改库存调整数量
-                statistics.setDamageNum(statistics.getDamageNum() - productDO.getReportNum());
-                //设置库存剩余数量
-                statistics.setRemainNum(statistics.getRemainNum() + productDO.getReportNum());
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                statisticsList.add(statistics);
-            }
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    /**
-     * 更新库存统计中的库存换货数量
-     *
-     * @param formList 换货单信息
-     */
-    private void updateChangeNum(List<ChangeForm> formList) {
-        //库存统计信息集合
-        List<StockStatistics> statisticsList = new ArrayList<>();
-        //循环修改
-        for (ChangeForm form : formList) {
-            //获取库存报损单产品信息
-            List<ChangeFormProduct> productDOS = this.changeFormProductManager.list(form.getId(), null);
-            for (ChangeFormProduct productDO : productDOS) {
-                //获取库存统计信息
-                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getStockBatchId());
-                //判断操作类型 0:退货,1:换货
-                if (productDO.getType() == 0) {
-                    //增加换货数量
-                    statistics.setChangeNum(statistics.getChangeNum() + productDO.getNum());
-                    //设置库存剩余数量
-                    statistics.setRemainNum(statistics.getRemainNum() + productDO.getNum());
-                } else {
-                    //减少换货数量
-                    statistics.setChangeNum(statistics.getChangeNum() - productDO.getNum());
-                    //设置库存剩余数量
-                    statistics.setRemainNum(statistics.getRemainNum() - productDO.getNum());
-                }
-
-                //设置商品总库存
-                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
-                statistics.setStockNum(stock.getNum());
-                //放入集合中
-                statisticsList.add(statistics);
-            }
-        }
-        //批量修改
-        this.stockStatisticsManager.updateBatchById(statisticsList);
-    }
-
-    @Override
-    public void onGoodsChange(GoodsChangeMessage message) {
-        if (message.getGoodsChangeType() == GoodsChangeMessage.GoodsChangeType.Add || message.getGoodsChangeType() == GoodsChangeMessage.GoodsChangeType.Edit) {
-            List<ProductDO> productList = productManager.listByGoodsId(message.getId());
-            for (ProductDO productDO : productList) {
-                //更新库存统计中的产品预警库存数量信息
-                this.stockStatisticsManager.updateStockWarningNum(productDO.getId(), productDO.getWarningValue());
-            }
-        }
-    }
-}
+//package com.hys.app.mq.core.erp;
+//
+//import com.hys.app.mq.event.*;
+//import com.hys.app.framework.util.DateUtil;
+//import com.hys.app.model.erp.dos.*;
+//import com.hys.app.model.erp.dto.StockStatisticsMessage;
+//import com.hys.app.model.erp.dto.message.*;
+//import com.hys.app.model.erp.enums.StockStatisticsTypeEnum;
+//import com.hys.app.service.erp.*;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Service;
+//
+//import java.util.ArrayList;
+//import java.util.Collections;
+//import java.util.List;
+//
+///**
+// * 库存统计消费者
+// *
+// * @author dmy
+// * 2023-12-22
+// */
+//@Service
+//public class StockStatisticsConsumer implements StockStatisticsEvent, WarehouseEntryAuditPassEvent, SupplierReturnAuditPassEvent, WarehouseOutShipEvent, StockDamageAuditPassEvent, OrderReturnAuditPassEvent, ChangeFormAuditPassEvent, GoodsChangeEvent {
+//
+//    @Autowired
+//    private StockStatisticsManager stockStatisticsManager;
+//
+//    @Autowired
+//    private WarehouseEntryBatchManager warehouseEntryBatchManager;
+//
+//    @Autowired
+//    private ProductManager productManager;
+//
+//    @Autowired
+//    private ProductStockManager productStockManager;
+//
+//    @Autowired
+//    private SupplierReturnItemManager supplierReturnItemManager;
+//
+//    @Autowired
+//    private OrderReturnItemManager orderReturnItemManager;
+//
+//    @Autowired
+//    private StockTransferProductManager stockTransferProductManager;
+//
+//    @Autowired
+//    private StockDamageReportProductManager stockDamageReportProductManager;
+//
+//    @Autowired
+//    private ChangeFormProductManager changeFormProductManager;
+//
+//    /**
+//     * 库存统计
+//     *
+//     * @param message 库存统计消息
+//     */
+//    @Override
+//    public void stockStatistics(StockStatisticsMessage message) {
+//        //获取操作类型
+//        StockStatisticsTypeEnum typeEnum = message.getStockStatisticsTypeEnum();
+//        if (StockStatisticsTypeEnum.STOCK_TRANSFER.equals(typeEnum)) {
+//            //更新库存统计中的库存调拨数量信息
+//            this.updateStockTransferNum(message.getStockTransferList());
+//        }
+//    }
+//
+//    @Override
+//    public void onWarehouseEntryAuditPass(WarehouseEntryAuditPassMessage message) {
+//        // 新增库存统计信息
+//        add(message.getList());
+//    }
+//
+//    @Override
+//    public void onSupplierReturnAuditPass(SupplierReturnAuditPassMessage message) {
+//        //更新库存统计中的供应商退货数量信息
+//        this.updateSupplierReturnNum(message.getList());
+//    }
+//
+//    @Override
+//    public void onWarehouseOutShip(WarehouseOutShipMessage message) {
+//        //更新库存统计中的出库数量信息
+//        this.updateStockOutNum(message.getItemList());
+//    }
+//
+//    @Override
+//    public void onStockDamageAuditPass(StockDamageAuditPassMessage message) {
+//        //更新库存统计中的库存报损数量信息
+//        this.updateStockDamageNum(message.getList());
+//    }
+//
+//    @Override
+//    public void onOrderReturnAuditPass(OrderReturnAuditPassMessage message) {
+//        //更新库存统计中的订单退货数量信息
+//        this.updateOrderReturnNum(message.getList());
+//    }
+//
+//    @Override
+//    public void onChangeFormAuditPass(ChangeFormAuditPassMessage message) {
+//        //更新库存统计中的换货数量信息
+//        this.updateChangeNum(message.getList());
+//    }
+//
+//    /**
+//     * 新增库存统计信息
+//     *
+//     * @param warehouseEntryList 入库单信息
+//     */
+//    private void add(List<WarehouseEntryDO> warehouseEntryList) {
+//        //库存统计信息入库
+//        for (WarehouseEntryDO warehouseEntryDO : warehouseEntryList) {
+//            StockStatistics statistics = new StockStatistics();
+//            statistics.setWarehouseId(warehouseEntryDO.getWarehouseId());
+//            statistics.setWarehouseName(warehouseEntryDO.getWarehouseName());
+////            statistics.setDeptId(warehouseEntryDO.getDeptId());
+////            statistics.setDeptName(warehouseEntryDO.getDeptName());
+//            statistics.setStockSn(warehouseEntryDO.getSn());
+//            statistics.setCreateTime(DateUtil.getDateline());
+//
+//            //根据入库单ID查询入库批次信息
+//            List<WarehouseEntryBatchDO> batchDOS = this.warehouseEntryBatchManager.listByWarehouseEntryIds(Collections.singletonList(warehouseEntryDO.getId()));
+//
+//            List<StockStatistics> stockStatisticsList = new ArrayList<>();
+//            for (WarehouseEntryBatchDO batch : batchDOS) {
+//                statistics.setBatchId(batch.getId());
+//                statistics.setBatchSn(batch.getSn());
+//                statistics.setProductId(batch.getProductId());
+//                statistics.setProductSn(batch.getProductSn());
+//                statistics.setProductName(batch.getProductName());
+//                statistics.setSpecification(batch.getProductSpecification());
+//                statistics.setCategoryId(batch.getCategoryId());
+//                statistics.setCategoryName(batch.getCategoryName());
+//                statistics.setUnit(batch.getProductUnit());
+//                statistics.setInNum(batch.getEntryNum());
+//                statistics.setRemainNum(batch.getRemainNum());
+//                statistics.setOutNum(0);
+//                statistics.setSupplierReturnNum(0);
+//                statistics.setOrderReturnNum(0);
+//                statistics.setTransferOutNum(0);
+//                statistics.setTransferInNum(0);
+//                statistics.setDamageNum(0);
+//                statistics.setChangeNum(0);
+//                //设置商品预警数量
+//                ProductDO product = this.productManager.getById(batch.getProductId());
+//                statistics.setWarningNum(product.getWarningValue());
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(batch.getProductId(), batch.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                stockStatisticsList.add(statistics);
+//            }
+//            this.stockStatisticsManager.saveBatch(stockStatisticsList);
+//        }
+//    }
+//
+//    /**
+//     * 更新库存统计中的出库数量
+//     *
+//     * @param warehouseOutItemList 出库单商品信息集合
+//     */
+//    private void updateStockOutNum(List<WarehouseOutItemDO> warehouseOutItemList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //更新库存统计中的出库数量
+//        for (WarehouseOutItemDO warehouseOutItemDO : warehouseOutItemList) {
+//            //获取库存统计信息
+//            StockStatistics statistics = this.stockStatisticsManager.getModel(warehouseOutItemDO.getWarehouseEntryBatchId());
+//            //设置库存统计中的出库数量
+//            statistics.setOutNum(statistics.getOutNum() + warehouseOutItemDO.getOutNum());
+//            //设置库存剩余数量
+//            statistics.setRemainNum(statistics.getRemainNum() - warehouseOutItemDO.getOutNum());
+//            //设置商品总库存
+//            ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//            statistics.setStockNum(stock.getNum());
+//            //放入集合中
+//            statisticsList.add(statistics);
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    /**
+//     * 更新库存统计中的供应商退货数量
+//     *
+//     * @param supplierReturnList 供应商退货信息
+//     */
+//    private void updateSupplierReturnNum(List<SupplierReturnDO> supplierReturnList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //循环修改
+//        for (SupplierReturnDO supplierReturnDO : supplierReturnList) {
+//            //获取供应商退货产品信息
+//            List<SupplierReturnItemDO> itemDOS = this.supplierReturnItemManager.listBySupplierReturnId(supplierReturnDO.getId());
+//            for (SupplierReturnItemDO itemDO : itemDOS) {
+//                //获取库存统计信息
+//                StockStatistics statistics = this.stockStatisticsManager.getModel(itemDO.getWarehouseEntryBatchId());
+//                //设置库存统计中的供应商退货数量
+//                statistics.setSupplierReturnNum(statistics.getSupplierReturnNum() + itemDO.getReturnNum());
+//                //设置库存剩余数量
+//                statistics.setRemainNum(statistics.getRemainNum() - itemDO.getReturnNum());
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                statisticsList.add(statistics);
+//            }
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    /**
+//     * 更新库存统计中的订单退货数量
+//     *
+//     * @param orderReturnList 订单退货信息
+//     */
+//    private void updateOrderReturnNum(List<OrderReturnDO> orderReturnList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //循环修改
+//        for (OrderReturnDO orderReturnDO : orderReturnList) {
+//            //获取订单退货产品信息
+//            List<OrderReturnItemDO> itemDOS = this.orderReturnItemManager.listByOrderReturnId(orderReturnDO.getId());
+//            for (OrderReturnItemDO itemDO : itemDOS) {
+//                //获取库存统计信息
+//                StockStatistics statistics = this.stockStatisticsManager.getModel(itemDO.getWarehouseEntryBatchId());
+//                //设置库存统计中的订单退货数量
+//                statistics.setOrderReturnNum(statistics.getOrderReturnNum() + itemDO.getReturnNum());
+//                //设置库存剩余数量
+//                statistics.setRemainNum(statistics.getRemainNum() + itemDO.getReturnNum());
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                statisticsList.add(statistics);
+//            }
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    /**
+//     * 更新库存统计中的库存调拨数量
+//     *
+//     * @param stockTransferList 库存调拨信息
+//     */
+//    private void updateStockTransferNum(List<StockTransferDO> stockTransferList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //循环修改
+//        for (StockTransferDO stockTransferDO : stockTransferList) {
+//            //获取库存调拨单产品信息
+//            List<StockTransferProductDO> productDOS = this.stockTransferProductManager.listByStockTransferId(stockTransferDO.getId());
+//            for (StockTransferProductDO productDO : productDOS) {
+//                //获取库存统计信息
+//                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getWarehouseEntryBatchId());
+//                statistics.setTransferOutNum(statistics.getTransferOutNum() + productDO.getNum());
+//                //设置库存剩余数量
+//                statistics.setRemainNum(statistics.getRemainNum() - productDO.getNum());
+//
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                statisticsList.add(statistics);
+//            }
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    /**
+//     * 更新库存统计中的库存调整数量
+//     *
+//     * @param reportsList 库存调整信息
+//     */
+//    private void updateStockDamageNum(List<StockDamageReport> reportsList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //循环修改
+//        for (StockDamageReport report : reportsList) {
+//            //获取库存报损单产品信息
+//            List<StockDamageReportProduct> productDOS = this.stockDamageReportProductManager.list(report.getId());
+//            for (StockDamageReportProduct productDO : productDOS) {
+//                //获取库存统计信息
+//                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getBatchId());
+//                //修改库存调整数量
+//                statistics.setDamageNum(statistics.getDamageNum() - productDO.getReportNum());
+//                //设置库存剩余数量
+//                statistics.setRemainNum(statistics.getRemainNum() + productDO.getReportNum());
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                statisticsList.add(statistics);
+//            }
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    /**
+//     * 更新库存统计中的库存换货数量
+//     *
+//     * @param formList 换货单信息
+//     */
+//    private void updateChangeNum(List<ChangeForm> formList) {
+//        //库存统计信息集合
+//        List<StockStatistics> statisticsList = new ArrayList<>();
+//        //循环修改
+//        for (ChangeForm form : formList) {
+//            //获取库存报损单产品信息
+//            List<ChangeFormProduct> productDOS = this.changeFormProductManager.list(form.getId(), null);
+//            for (ChangeFormProduct productDO : productDOS) {
+//                //获取库存统计信息
+//                StockStatistics statistics = this.stockStatisticsManager.getModel(productDO.getStockBatchId());
+//                //判断操作类型 0:退货,1:换货
+//                if (productDO.getType() == 0) {
+//                    //增加换货数量
+//                    statistics.setChangeNum(statistics.getChangeNum() + productDO.getNum());
+//                    //设置库存剩余数量
+//                    statistics.setRemainNum(statistics.getRemainNum() + productDO.getNum());
+//                } else {
+//                    //减少换货数量
+//                    statistics.setChangeNum(statistics.getChangeNum() - productDO.getNum());
+//                    //设置库存剩余数量
+//                    statistics.setRemainNum(statistics.getRemainNum() - productDO.getNum());
+//                }
+//
+//                //设置商品总库存
+//                ProductStockDO stock = this.productStockManager.getStock(statistics.getProductId(), statistics.getWarehouseId());
+//                statistics.setStockNum(stock.getNum());
+//                //放入集合中
+//                statisticsList.add(statistics);
+//            }
+//        }
+//        //批量修改
+//        this.stockStatisticsManager.updateBatchById(statisticsList);
+//    }
+//
+//    @Override
+//    public void onGoodsChange(GoodsChangeMessage message) {
+//        if (message.getGoodsChangeType() == GoodsChangeMessage.GoodsChangeType.Add || message.getGoodsChangeType() == GoodsChangeMessage.GoodsChangeType.Edit) {
+//            List<ProductDO> productList = productManager.listByGoodsId(message.getId());
+//            for (ProductDO productDO : productList) {
+//                //更新库存统计中的产品预警库存数量信息
+//                this.stockStatisticsManager.updateStockWarningNum(productDO.getId(), productDO.getWarningValue());
+//            }
+//        }
+//    }
+//}

+ 2 - 6
module-erp/src/main/java/com/hys/app/pay/wx/WxPayServiceMy.java

@@ -125,13 +125,9 @@ public class WxPayServiceMy {
         }
     }
 
-    public String getOpenIdCode(Long orderId, String ip) throws UnsupportedEncodingException {
-        String oAuth2Url = wxConfig.getOAuth2Url();
-        Map<String, Object> map = new HashMap<>();
-        map.put("orderId", orderId);
-        map.put("ip", ip);
+    public String getOpenIdCode(Long userId, String ip) throws UnsupportedEncodingException {
         return String.format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s#wechat_redirect",
-                wxConfig.getAppId(), URLEncoder.encode(wxConfig.getOAuth2Url(), "UTF-8"), "snsapi_userinfo", orderId+"--"+ip);
+                wxConfig.getAppId(), URLEncoder.encode(wxConfig.getOAuth2Url(), "UTF-8"), "snsapi_userinfo", userId);
     }
 
     public String getOpenId(String code) {

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/erp/CompanyErpManager.java

@@ -25,7 +25,7 @@ public interface CompanyErpManager extends BaseService<CompanyErp> {
      * @param id
      * @return
      */
-    Long updateCompany(CompanyUpdateDO companyUpdateDO, Long id);
+    Long updateCompany(CompanyDO companyUpdateDO, Long id);
 
     /**
      * 公司续费

+ 23 - 0
module-erp/src/main/java/com/hys/app/service/erp/ProductManager.java

@@ -141,5 +141,28 @@ public interface ProductManager extends BaseService<ProductDO> {
      * @return
      */
     void updateSort(List<SortItem>  sortItem);
+
+    /**
+     * 新增商品
+     *
+     * @param productDTO
+     */
+
+    void addProduct(ProductDTO productDTO);
+
+    /**
+     * 修改商品
+     *
+     * @param productDTO
+     * @param id
+     */
+    void updateProduct(ProductDTO productDTO, Long id);
+
+    /**
+     * 删除商品
+     *
+     * @param id
+     */
+    void deletedProduct(Long id);
 }
 

+ 110 - 102
module-erp/src/main/java/com/hys/app/service/erp/ProductStockManager.java

@@ -5,6 +5,8 @@ import com.hys.app.framework.database.mybatisplus.base.BaseService;
 import com.hys.app.model.erp.dos.GoodsDO;
 import com.hys.app.model.erp.dos.ProductDO;
 import com.hys.app.model.erp.dos.ProductStockDO;
+import com.hys.app.model.erp.dos.WarehouseDO;
+import com.hys.app.model.erp.dto.ProductDTO;
 import com.hys.app.model.erp.dto.ProductStockQueryParams;
 import com.hys.app.model.erp.dto.StockDTO;
 import com.hys.app.model.erp.enums.StockOperateEnum;
@@ -22,121 +24,127 @@ import java.util.Map;
  * @since 2023-12-07 10:08:44
  */
 public interface ProductStockManager extends BaseService<ProductStockDO> {
-    /**
-     * 分页列表
-     *
-     * @param queryParams 查询条件
-     * @return 分页数据
-     */
-    WebPage<ProductStockVO> list(ProductStockQueryParams queryParams);
-
-    ProductStockDO getOne(String id);
-
-
+//    /**
+//     * 分页列表
+//     *
+//     * @param queryParams 查询条件
+//     * @return 分页数据
+//     */
+//    WebPage<ProductStockVO> list(ProductStockQueryParams queryParams);
+//
+//    ProductStockDO getOne(String id);
+//
+//
     List<ProductStockV1> selectList(ProductStockQueryParams request);
-
-
+//
+//
     Long selectCount(ProductStockQueryParams request);
-
-    /**
-     * 初始化库存
-     *
-     * @param goodsId
-     */
-    public void initStockByProduct(Long goodsId);
-
-    /**
-     * 初始化商品的库存
-     *
-     * @param warehouseId
-     */
-    void initStockByWarehouse(Long warehouseId);
-
-    //批量删除
-    void deleteByIds(List<Long> ids);
-
-    /**
-     * 删除商品的库存
-     *
-     * @param productIds
-     */
-    void deleteStockByProduct(List<Long> productIds);
-
-    /**
-     * 删除商品的库存
-     *
-     * @param warehouseId
-     */
-    void deleteStockByWarehouse(Long warehouseId);
-
-    /**
-     * 查询商品库存预警分页列表数据
-     *
-     * @param pageNo      分页数
-     * @param pageSize    每页数量
-     * @param warehouseId 仓库ID
-     * @param deptId      部门ID
-     * @param name        商品名称
-     * @return
-     */
-    WebPage<ProductStockWarningVO> listWarningStock(Long pageNo, Long pageSize, Long warehouseId, Long deptId, String name);
-
-    /**
-     * 获取某个仓库中某个商品的库存信息
-     *
-     * @param productId   产品ID
-     * @param warehouseId 仓库ID
-     * @return
-     */
-    ProductStockDO getStock(Long productId, Long warehouseId);
-
-    /**
-     * 查询多个产品在多个仓库的库存
-     *
-     * @param warehouseIds
-     * @param productIds
-     */
-    List<ProductStockDO> listByWarehouseAndProduct(List<Long> warehouseIds, List<Long> productIds);
-
-    /**
-     * 查询产品库存数量
-     *
-     * @param warehouseIds
-     * @param productIds
-     */
-    Map<Long, Integer> queryStockNum(List<Long> warehouseIds, List<Long> productIds);
-
-    /**
-     * 更新库存
-     *
-     * @param warehouseId
-     * @param productId
-     * @param operate
-     * @param changeNum
-     */
-    void updateStock(Long warehouseId, Long productId, StockOperateEnum operate, int changeNum);
-
-    /**
-     * 初始化库存  所有的sku在所有的仓库库存初始化为0
-     *
-     * @param bean
-     */
-    void intStock(List<ProductDO> bean, GoodsDO goodsDO);
-
+//
+//    /**
+//     * 初始化库存
+//     *
+//     * @param goodsId
+//     */
+//    public void initStockByProduct(Long goodsId);
+
+
+//
+//    //批量删除
+//    void deleteByIds(List<Long> ids);
+//
+//    /**
+//     * 删除商品的库存
+//     *
+//     * @param productIds
+//     */
+//    void deleteStockByProduct(List<Long> productIds);
+//
+//    /**
+//     * 删除商品的库存
+//     *
+//     * @param warehouseId
+//     */
+//    void deleteStockByWarehouse(Long warehouseId);
+//
+//    /**
+//     * 查询商品库存预警分页列表数据
+//     *
+//     * @param pageNo      分页数
+//     * @param pageSize    每页数量
+//     * @param warehouseId 仓库ID
+//     * @param deptId      部门ID
+//     * @param name        商品名称
+//     * @return
+//     */
+//    WebPage<ProductStockWarningVO> listWarningStock(Long pageNo, Long pageSize, Long warehouseId, Long deptId, String name);
+//
+//    /**
+//     * 获取某个仓库中某个商品的库存信息
+//     *
+//     * @param productId   产品ID
+//     * @param warehouseId 仓库ID
+//     * @return
+//     */
+//    ProductStockDO getStock(Long productId, Long warehouseId);
+//
+//    /**
+//     * 查询多个产品在多个仓库的库存
+//     *
+//     * @param warehouseIds
+//     * @param productIds
+//     */
+//    List<ProductStockDO> listByWarehouseAndProduct(List<Long> warehouseIds, List<Long> productIds);
+//
+//    /**
+//     * 查询产品库存数量
+//     *
+//     * @param warehouseIds
+//     * @param productIds
+//     */
+//    Map<Long, Integer> queryStockNum(List<Long> warehouseIds, List<Long> productIds);
+//
+//    /**
+//     * 更新库存
+//     *
+//     * @param warehouseId
+//     * @param productId
+//     * @param operate
+//     * @param changeNum
+//     */
+//    void updateStock(Long warehouseId, Long productId, StockOperateEnum operate, int changeNum);
+//
+//    /**
+//     * 初始化库存  所有的sku在所有的仓库库存初始化为0
+//     *
+//     * @param bean
+//     */
+//    void intStock(List<ProductDO> bean, GoodsDO goodsDO);
+//
     /**
      * 更新冻结库存
      */
     void updateLockedStock(List<StockDTO> ids);
-
+//
     /**
      * 更新实际库存
      */
     void updateActualStock(List<StockDTO> ids, String inventory);
+//
+//
+//    /**
+//     * 跟新在途库存
+//     */
+//    void updateTransitStock(List<StockDTO> ids);
 
 
+    void addProduct(ProductDO productDO);
+
     /**
-     * 跟新在途库存
+     * 初始化商品的库存 新建仓库
+     *
+     * @param warehouseId
      */
-    void updateTransitStock(List<StockDTO> ids);
+    void initStockByWarehouse(Long warehouseId);
+
 }
 

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/erp/WarehouseOutManager.java

@@ -125,7 +125,7 @@ public interface WarehouseOutManager extends BaseService<WarehouseOutDO> {
      * @param queryParam
      * @return
      */
-    IPage<ProductStockVO> getGoodByWarehouseInventory(Long warehouseId, BaseQueryParam queryParam,String keyWord);
+    IPage<ProductStockVO> getGoodByWarehouseInventory(Long warehouseId, BaseQueryParam queryParam,String keyWord,String type);
 
     /**
      * 获取冻结库存

+ 2 - 29
module-erp/src/main/java/com/hys/app/service/erp/impl/CompanyBandMsgManagerImpl.java

@@ -1,44 +1,16 @@
 package com.hys.app.service.erp.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.hys.app.controller.erp.use.msg.MsgUtilClient;
-import com.hys.app.controller.erp.use.msg.msgTemplate.MailMsgContant;
-import com.hys.app.controller.erp.use.msg.msgTemplate.MailMsgDefault;
-import com.hys.app.controller.erp.use.msg.msgTemplate.SystemMsgContent;
-import com.hys.app.controller.erp.use.msg.msgTemplate.SystemMsgTemplate;
-import com.hys.app.converter.erp.CompanyConverter;
-import com.hys.app.framework.context.user.AdminUserContext;
-import com.hys.app.framework.exception.ServiceException;
-import com.hys.app.framework.util.StringUtil;
 import com.hys.app.mapper.erp.CompanyBandMsgMapper;
-import com.hys.app.mapper.erp.CompanyErpMapper;
-import com.hys.app.mapper.system.AdminUserMapper;
 import com.hys.app.model.erp.entity.*;
-import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.service.erp.CompanyBandMsgManager;
-import com.hys.app.service.erp.CompanyErpManager;
-import com.hys.app.service.erp.CompanyPackageManager;
-import com.hys.app.util.PinYingUtil;
-import com.hys.app.util.ValidateUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.List;
-import java.util.Random;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -59,7 +31,8 @@ public class CompanyBandMsgManagerImpl extends ServiceImpl<CompanyBandMsgMapper,
     public List<CompanyBandMsg> getCompanyBandMsg(Long companyId) {
         List<CompanyBandMsg> msgs = (List<CompanyBandMsg>) redisTemplate.opsForHash().get("companyTemplate", companyId.toString());
         if (CollUtil.isEmpty(msgs)) {
-            msgs = list(new LambdaQueryWrapper<CompanyBandMsg>().eq(CompanyBandMsg::getCompanyId, companyId));
+            List<CompanyBandMsg> list = list(new LambdaQueryWrapper<CompanyBandMsg>().eq(CompanyBandMsg::getCompanyId, companyId));
+            msgs = list.stream().filter(CompanyBandMsg::getHasSelect).collect(Collectors.toList());
         }
         redisTemplate.opsForHash().put("companyTemplate", companyId.toString(), msgs);
         return msgs;

+ 39 - 16
module-erp/src/main/java/com/hys/app/service/erp/impl/CompanyErpManagerImpl.java

@@ -9,11 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hys.app.controller.erp.use.msg.MsgContant;
 import com.hys.app.controller.erp.use.msg.MsgUtilClient;
-import com.hys.app.controller.erp.use.msg.msgTemplate.MailMsgContant;
-import com.hys.app.controller.erp.use.msg.msgTemplate.MailMsgDefault;
-import com.hys.app.controller.erp.use.msg.msgTemplate.SystemMsgContent;
-import com.hys.app.controller.erp.use.msg.msgTemplate.SystemMsgTemplate;
 import com.hys.app.converter.erp.CompanyConverter;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.exception.ServiceException;
@@ -32,16 +29,14 @@ import com.hys.app.service.erp.CompanyPackageManager;
 import com.hys.app.util.PinYingUtil;
 import com.hys.app.util.ValidateUtil;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
+import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -63,6 +58,9 @@ public class CompanyErpManagerImpl extends ServiceImpl<CompanyErpMapper, Company
     private CompanyBandMsgManager companyBandMsgManager;
     private RoleMapper roleMapper;
 
+
+
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String createCompany(CompanyDO companyDO) {
@@ -96,7 +94,6 @@ public class CompanyErpManagerImpl extends ServiceImpl<CompanyErpMapper, Company
         convert.setFirstPyLower(pinyinFirstLetter.toLowerCase());
 
 
-
         save(convert);
         //给公司创建初始账号
         String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
@@ -124,21 +121,47 @@ public class CompanyErpManagerImpl extends ServiceImpl<CompanyErpMapper, Company
         //把这个管理员能看到的所有页面保存起来
         RoleDO roleDO = roleMapper.selectById(byId.getRoleId());
         List<Menus> menus = JsonUtil.jsonToList(roleDO.getAuthIds(), Menus.class);
-        List<Menus> collect = menus.stream().filter(Menus::isChecked).collect(Collectors.toList());
-        adminUser.setAuthIds(JSON.toJSONString(collect));
+        List<Menus> list = new ArrayList<>();
+        for (Menus menu : menus) {
+            if (CollUtil.isNotEmpty(menu.getChildren())) {
+                list.add(menu);
+                getMenus(list, menu);
+            } else {
+                list.add(menu);
+            }
+        }
+        //这个角色所有已勾选的菜单
+        Set<Menus> collect = list.stream().filter(Menus::isChecked).collect(Collectors.toSet());
+        for (Menus menus1 : collect) {
+            menus1.setChildren(collect.stream().filter(item -> item.getParentId().equals(menus1.getId())).collect(Collectors.toList()));
+        }
+        List<Menus> collect2 = collect.stream().filter(item -> item.getParentId() == 0).collect(Collectors.toList());
+
+
+        adminUser.setAuthIds(JSON.toJSONString(collect2));
         adminUserMapper.insert(adminUser);
+
+
         //  发消息
-        msgUtilClient.sendSys(SystemMsgContent.CREATE_SUCCESS_SYSTEM, SystemMsgTemplate.CREATE_SUCCESS_SYSTEM, adminUser.getId(), convert.getId(), password, calendar.getTime().toString());
+        msgUtilClient.sendSys(MsgContant.CREATE_COMPANY_SYSTEM, adminUser, password, calendar.getTime(),"13127911751");
+        msgUtilClient.sendMail(MsgContant.CREATE_COMPANY_MAIL, adminUser, password, calendar.getTime(),"13127911751");
+        //todo 模板没审核通过
+//        msgUtilClient.sendSms(MsgContant.CREATE_COMPANY_SMS, adminUser, password, calendar.getTime(),"13127911751");
 
         List<String> companyBandMsg = companyBandMsgManager.getCompanyBandMsgCode(convert.getId());
-        if (companyBandMsg.contains(MailMsgContant.CREATE_SUCCESS_MAIL)) {
-            msgUtilClient.sendMail(MailMsgContant.CREATE_SUCCESS_MAIL, MailMsgDefault.CREATE_SUCCESS_MAIL, MailMsgDefault.CREATE_SUCCESS_HEAD_MAIL, convert.getEmail(), convert.getId(), password, calendar.getTime().toString());
-        }
+
         return password;
     }
 
+    private void getMenus(List<Menus> list, Menus menus) {
+        for (Menus child : menus.getChildren()) {
+            list.add(child);
+            getMenus(list, child);
+        }
+    }
+
     @Override
-    public Long updateCompany(CompanyUpdateDO companyUpdateDO, Long id) {
+    public Long updateCompany(CompanyDO companyUpdateDO, Long id) {
         CompanyErp company = ValidateUtil.getOne(baseMapper, CompanyErp::getId, id, "企业");
         CompanyConverter.INSTANCE.convert(company, companyUpdateDO);
         updateById(company);

+ 5 - 5
module-erp/src/main/java/com/hys/app/service/erp/impl/GoodsManagerImpl.java

@@ -80,7 +80,7 @@ public class GoodsManagerImpl extends BaseServiceImpl<GoodsMapper, GoodsDO> impl
         }
         productManager.updateBatchById(bean);
         //初始化库存
-        productStockManager.intStock(bean,goodsDO);
+//        productStockManager.intStock(bean,goodsDO);
         ;
 
         // 发送商品消息
@@ -99,7 +99,7 @@ public class GoodsManagerImpl extends BaseServiceImpl<GoodsMapper, GoodsDO> impl
         // 更新商品
         BeanUtil.copyProperties(goodsDTO, goodsDO);
         //先删除sku在新增
-        productManager.remove(new LambdaQueryWrapper<ProductDO>().eq(ProductDO::getGoodsId, goodsDTO.getId()));
+//        productManager.remove(new LambdaQueryWrapper<ProductDO>().eq(ProductDO::getGoodsId, goodsDTO.getId()));
         List<ProductDO> bean = BeanUtils.toBean(goodsDTO.getProductList(), ProductDO.class);
         // 保存相册
         goodsGalleryManager.edit(goodsDTO.getImageList(), goodsDTO.getId());
@@ -107,7 +107,7 @@ public class GoodsManagerImpl extends BaseServiceImpl<GoodsMapper, GoodsDO> impl
         GoodsGalleryDO goodsGallery = goodsGalleryManager.getGoodsGallery(goodsDTO.getImageList().get(0).getOriginal());
         goodsDO.setImageSmallList(goodsGallery.getSmall());
         updateById(goodsDO);
-        bean.forEach(item -> item.setGoodsId(goodsDO.getId()));
+//        bean.forEach(item -> item.setGoodsId(goodsDO.getId()));
         productManager.saveBatch(bean);
         for (int i = 1; i <= bean.size(); i++) {
             bean.get(i-1).setSort(bean.get(i-1).getId()+100000000*i);
@@ -144,7 +144,7 @@ public class GoodsManagerImpl extends BaseServiceImpl<GoodsMapper, GoodsDO> impl
         for (ProductDTO productDTO : goodsDTO.getProductList()) {
             ProductDO productDO = productManager.getOne(new LambdaQueryWrapper<ProductDO>()
                     .eq(ProductDO::getSku, productDTO.getSku())
-                    .ne(ObjectUtil.isNotNull(productDTO.getId()), ProductDO::getId, productDTO.getId())
+//                    .ne(ObjectUtil.isNotNull(productDTO.getId()), ProductDO::getId, productDTO.getId())
                     .last("limit 1"));
             if (ObjectUtil.isNotNull(productDO)) {
                 throw new ServiceException("sku已存在");
@@ -157,7 +157,7 @@ public class GoodsManagerImpl extends BaseServiceImpl<GoodsMapper, GoodsDO> impl
             }
             ProductDO codeOne = productManager.getOne(new LambdaQueryWrapper<ProductDO>()
                     .eq(ProductDO::getBarCode, productDTO.getBarCode())
-                    .ne(ObjectUtil.isNotNull(productDTO.getId()), ProductDO::getId, productDTO.getId())
+//                    .ne(ObjectUtil.isNotNull(productDTO.getId()), ProductDO::getId, productDTO.getId())
                     .last("limit 1"));
             if (ObjectUtil.isNotNull(codeOne)) {
                 throw new ServiceException("条码已存在");

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/erp/impl/GoodsSnManagerImpl.java

@@ -139,7 +139,7 @@ public class GoodsSnManagerImpl extends BaseServiceImpl<GoodsSnMapper, GoodsSnDO
     @Override
     public Page<ProductVO> getSnProduct(GoodsSnQueryParams queryParams) {
         Page<ProductDO> page = productManager.page(new Page<>(queryParams.getPageNo(), queryParams.getPageSize()), new LambdaQueryWrapper<ProductDO>()
-                .eq(ProductDO::getHaveSn, true)
+//                .eq(ProductDO::getHaveSn, true)
                 .like(StrUtil.isNotBlank(queryParams.getSku()), ProductDO::getSku, queryParams.getSku()));
 
         Page<ProductVO> convert = productConverter.convert(page);

+ 2 - 1
module-erp/src/main/java/com/hys/app/service/erp/impl/MailSmsCountManagerImpl.java

@@ -1,6 +1,7 @@
 package com.hys.app.service.erp.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -40,7 +41,7 @@ public class MailSmsCountManagerImpl extends BaseServiceImpl<MailSmsCountMapper,
     @Override
     public void sendSms(String rePhone, String templateCode, Map<String, String> map) {
         try {
-            if (AliSmsUtil.sendSms(rePhone, templateCode, map)) {
+            if (AliSmsUtil.sendSms(rePhone, templateCode, JSON.toJSONString(map) )) {
                 addNum("mail");
             }
         } catch (Exception e) {

+ 16 - 16
module-erp/src/main/java/com/hys/app/service/erp/impl/OrderManagerImpl.java

@@ -128,7 +128,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
             stockDTO.setNum(-itemDO.getNum());
             stockDTOS.add(stockDTO);
         }
-        productStockManager.updateLockedStock(stockDTOS);
+//        productStockManager.updateLockedStock(stockDTOS);
         orderItemManager.remove(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderDTO.getId()));
         List<LockedStockDetailDO> list = lockedStockDetailManager.list(new LambdaQueryWrapper<LockedStockDetailDO>().eq(LockedStockDetailDO::getOrderId, orderDTO.getId()));
         //删除冻结明细
@@ -140,7 +140,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
             dto.setNum(-item.getLockedNum());
             arrayList.add(dto);
         });
-        productStockManager.updateLockedStock(arrayList);
+//        productStockManager.updateLockedStock(arrayList);
 
 
         if (OrderTypeEnum.TO_C.equals(orderDTO.getType())) {
@@ -272,7 +272,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
         }
 
         lockedStockDetailManager.saveBatch(detailDOS);
-        productStockManager.updateLockedStock(arrayList);
+//        productStockManager.updateLockedStock(arrayList);
         aDo.setStatus(SaleOrderStatusEnum.TO_BE_SEND);
         updateById(aDo);
     }
@@ -430,18 +430,18 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
             detailDOS.add(one);
             //判断发货数量是不是和明细数量一致,不一样不让保存
             ProductDO byId = productManager.getById(sendItemVO.getProductId());
-            if (byId.getHaveSn()) {
-                if (CollUtil.isEmpty(sendItemVO.getSnCodeList())) {
-                    throw new ServiceException("有序列号的商品出库必须录入序列号");
-                }
-                if (sendItemVO.getSnCodeList().size() != sendItemVO.getNum()) {
-                    throw new ServiceException("录入的序列号数量和发货数量必须一样多");
-                }
-                Set<Long> set = sendItemVO.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
-                if (set.size() != sendItemVO.getSnCodeList().size()){
-                    throw new ServiceException("序列号重复");
-                }
-            }
+//            if (byId.getHaveSn()) {
+//                if (CollUtil.isEmpty(sendItemVO.getSnCodeList())) {
+//                    throw new ServiceException("有序列号的商品出库必须录入序列号");
+//                }
+//                if (sendItemVO.getSnCodeList().size() != sendItemVO.getNum()) {
+//                    throw new ServiceException("录入的序列号数量和发货数量必须一样多");
+//                }
+//                Set<Long> set = sendItemVO.getSnCodeList().stream().map(GoodsSnDO::getId).collect(Collectors.toSet());
+//                if (set.size() != sendItemVO.getSnCodeList().size()){
+//                    throw new ServiceException("序列号重复");
+//                }
+//            }
             if (CollUtil.isNotEmpty(sendItemVO.getSnCodeList())) {
                 snDOS.addAll(sendItemVO.getSnCodeList());
                 for (GoodsSnDO snDO : sendItemVO.getSnCodeList()) {
@@ -710,7 +710,7 @@ public class OrderManagerImpl extends BaseServiceImpl<OrderMapper, OrderDO> impl
             stockDTO.setNum(-itemDO.getNum());
             stockDTOS.add(stockDTO);
         }
-        productStockManager.updateLockedStock(stockDTOS);
+//        productStockManager.updateLockedStock(stockDTOS);
         orderItemManager.remove(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, id));
     }
 

+ 58 - 8
module-erp/src/main/java/com/hys/app/service/erp/impl/ProductManagerImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hys.app.converter.erp.ProductConverter;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
 import com.hys.app.framework.exception.ServiceException;
@@ -61,10 +62,10 @@ public class ProductManagerImpl extends BaseServiceImpl<ProductMapper, ProductDO
         WebPage<ProductDO> webPage = baseMapper.selectPage(queryParams);
         WebPage<ProductVO> convert = converter.convert(webPage);
         for (ProductVO datum : convert.getData()) {
-            GoodsVO goodsVO = BeanUtil.copyProperties(goodsMapper.selectById(datum.getGoodsId()), GoodsVO.class);
+//            GoodsVO goodsVO = BeanUtil.copyProperties(goodsMapper.selectById(datum.getGoodsId()), GoodsVO.class);
             // 商品相册
 //            goodsVO.setImageList(goodsGalleryManager.list(goodsVO.getId()));
-            datum.setGoodsVo(goodsVO);
+//            datum.setGoodsVo(goodsVO);
         }
         return convert;
     }
@@ -81,7 +82,7 @@ public class ProductManagerImpl extends BaseServiceImpl<ProductMapper, ProductDO
     @Override
     public void edit(GoodsDO goodsDO, List<ProductDTO> productDTOList) {
         // 查询之前的数据,构建规格与SKU的映射关系
-        Map<String, Long> oldProductMap = convertMap(listByGoodsId(goodsDO.getId()), productDO -> buildSpecKey(productDO.getSpecList()), ProductDO::getId);
+//        Map<String, Long> oldProductMap = convertMap(listByGoodsId(goodsDO.getId()), productDO -> buildSpecKey(productDO.getSpecList()), ProductDO::getId);
 
         // 拆分三个集合,新插入的、需要更新的、需要删除的(oldProductMap)
         List<ProductDTO> insertDTOList = new ArrayList<>();
@@ -100,19 +101,20 @@ public class ProductManagerImpl extends BaseServiceImpl<ProductMapper, ProductDO
             List<ProductDO> updateList = converter.convertList(updateDTOList, goodsDO);
             super.updateBatchById(updateList);
         }
-        if (CollUtil.isNotEmpty(oldProductMap)) {
-            super.removeBatchByIds(oldProductMap.values());
-        }
+//        if (CollUtil.isNotEmpty(oldProductMap)) {
+//            super.removeBatchByIds(oldProductMap.values());
+//        }
     }
 
     @Override
     public List<ProductDO> listByGoodsId(Long goodsId) {
-        return lambdaQuery().eq(ProductDO::getGoodsId, goodsId).list();
+//        return lambdaQuery().eq(ProductDO::getGoodsId, goodsId).list();
+        return null;
     }
 
     @Override
     public void deleteByGoodsId(List<Long> goodsIds) {
-        lambdaUpdate().in(ProductDO::getGoodsId, goodsIds).remove();
+//        lambdaUpdate().in(ProductDO::getGoodsId, goodsIds).remove();
     }
 
     private String buildSpecKey(List<ProductSpec> specList) {
@@ -265,6 +267,54 @@ public class ProductManagerImpl extends BaseServiceImpl<ProductMapper, ProductDO
         aDo.setSort(beforeSort+random.nextInt());
         updateById(aDo);
     }
+
+    @Override
+    public void addProduct(ProductDTO productDTO) {
+        ProductDO productDO = BeanUtil.copyProperties(productDTO, ProductDO.class);
+        checkParam(productDO);
+        save(productDO);
+        //添加库存
+        productStockManager.addProduct(productDO);
+    }
+
+    @Override
+    public void updateProduct(ProductDTO productDTO, Long id) {
+        ProductDO productDO = getById(id);
+        if (ObjectUtil.isNull(productDO)) {
+            throw new ServiceException("未查询到商品信息");
+        }
+        BeanUtil.copyProperties(productDTO, productDO);
+        checkParam(productDO);
+        updateById(productDO);
+    }
+
+    @Override
+    public void deletedProduct(Long id) {
+        List<ProductStockDO> list = productStockManager.list(new LambdaQueryWrapper<ProductStockDO>()
+                .eq(ProductStockDO::getCompanyId, AdminUserContext.getCompanyId())
+                .eq(ProductStockDO::getProductId, id).gt(ProductStockDO::getActualStock, 0));
+        if (CollUtil.isNotEmpty(list)) {
+            throw new ServiceException("删除失败,该商品在仓库里面还有库存");
+        }
+        //删除库存
+        productStockManager.remove(new LambdaQueryWrapper<ProductStockDO>().eq(ProductStockDO::getProductId,id));
+        removeById(id);
+    }
+
+    private void checkParam(ProductDO productDO){
+        ProductDO oneName = getOne(new LambdaQueryWrapper<ProductDO>()
+                .eq(ProductDO::getName, productDO.getName())
+                .ne(ObjectUtil.isNotNull(productDO.getId()), ProductDO::getId, productDO.getId()));
+        if (ObjectUtil.isNotNull(oneName)){
+            throw new ServiceException("商品名称重复");
+        }
+        ProductDO oneSn = getOne(new LambdaQueryWrapper<ProductDO>()
+                .eq(ProductDO::getSnCode, productDO.getSnCode())
+                .ne(ObjectUtil.isNotNull(productDO.getId()), ProductDO::getId, productDO.getId()));
+        if (ObjectUtil.isNotNull(oneSn)){
+            throw new ServiceException("商品sn码重复");
+        }
+    }
 }
 
 

+ 217 - 196
module-erp/src/main/java/com/hys/app/service/erp/impl/ProductStockManagerImpl.java

@@ -13,12 +13,14 @@ import com.hys.app.framework.exception.ServiceException;
 import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
 import com.hys.app.framework.util.PageConvert;
 import com.hys.app.mapper.erp.ProductStockMapper;
+import com.hys.app.mapper.erp.WarehouseMapper;
 import com.hys.app.mapper.goods.GoodsMapper;
 import com.hys.app.mapper.goods.ProductMapper;
 import com.hys.app.model.erp.dos.GoodsDO;
 import com.hys.app.model.erp.dos.ProductDO;
 import com.hys.app.model.erp.dos.ProductStockDO;
 import com.hys.app.model.erp.dos.WarehouseDO;
+import com.hys.app.model.erp.dto.ProductDTO;
 import com.hys.app.model.erp.dto.ProductStockQueryParams;
 import com.hys.app.model.erp.dto.StockDTO;
 import com.hys.app.model.erp.dto.WarehouseQueryParams;
@@ -30,6 +32,7 @@ import com.hys.app.model.erp.vo.WarehouseVO;
 import com.hys.app.service.erp.ProductManager;
 import com.hys.app.service.erp.ProductStockManager;
 import com.hys.app.service.erp.WarehouseManager;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -48,40 +51,60 @@ import java.util.stream.Collectors;
  * @since 2023-12-07 10:08:44
  */
 @Service
+@AllArgsConstructor
 public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper, ProductStockDO> implements ProductStockManager {
 
-    @Autowired
-    private ProductStockConverter converter;
-
-    @Autowired
-    private WarehouseManager warehouseManager;
-
-    @Autowired
+    private WarehouseMapper warehouseMapper;
     private ProductMapper productMapper;
 
-    @Autowired
-    private ProductStockMapper productStockMapper;
-
-    @Autowired
-    private GoodsMapper goodsMapper;
-
     @Override
-    public WebPage<ProductStockVO> list(ProductStockQueryParams queryParams) {
-        WebPage<ProductStockDO> webPage = baseMapper.selectPage(queryParams);
-        return converter.convert(webPage);
-    }
-
-    @Override
-    public ProductStockDO getOne(String id) {
-        return productStockMapper.getOne(id);
+    public void addProduct(ProductDO productDO) {
+        List<WarehouseDO> list = warehouseMapper.selectList(new LambdaQueryWrapper<WarehouseDO>().eq(WarehouseDO::getCompanyId, AdminUserContext.getCompanyId()));
+        if (CollUtil.isNotEmpty(list)) {
+            List<ProductStockDO> stockList = new ArrayList<>();
+            for (WarehouseDO warehouseDO : list) {
+                ProductStockDO productStockDO = new ProductStockDO();
+                productStockDO.setProductId(productDO.getId());
+                productStockDO.setWarehouseId(warehouseDO.getId());
+                productStockDO.setCompanyId(AdminUserContext.getCompanyId());
+                stockList.add(productStockDO);
+            }
+            super.saveBatch(stockList);
+        }
     }
 
-    /**
-     * 获取仓库列表
-     *
-     * @param request
-     * @return
-     */
+    //    @Autowired
+//    private ProductStockConverter converter;
+//
+//    @Autowired
+//    private WarehouseManager warehouseManager;
+//
+//    @Autowired
+//    private ProductMapper productMapper;
+//
+//    @Autowired
+//    private ProductStockMapper productStockMapper;
+//
+//    @Autowired
+//    private GoodsMapper goodsMapper;
+//
+//    @Override
+//    public WebPage<ProductStockVO> list(ProductStockQueryParams queryParams) {
+//        WebPage<ProductStockDO> webPage = baseMapper.selectPage(queryParams);
+//        return converter.convert(webPage);
+//    }
+//
+//    @Override
+//    public ProductStockDO getOne(String id) {
+//        return productStockMapper.getOne(id);
+//    }
+//
+//    /**
+//     * 获取仓库列表
+//     *
+//     * @param request
+//     * @return
+//     */
     @Override
     public List<ProductStockV1> selectList(ProductStockQueryParams request) {
         request.setCompanyId(AdminUserContext.getCompanyId());
@@ -91,173 +114,171 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
         }
         return productStockV1s;
     }
-
-    /**
-     * 获取仓库列表
-     *
-     * @param request
-     * @return
-     */
+//
+//    /**
+//     * 获取仓库列表
+//     *
+//     * @param request
+//     * @return
+//     */
     @Override
     public Long selectCount(ProductStockQueryParams request) {
         return baseMapper.selectCount(request);
     }
-
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void initStockByProduct(Long goodsId) {
-        List<WarehouseDO> list1 = warehouseManager.list(new LambdaQueryWrapper<WarehouseDO>().eq(WarehouseDO::getDeleted, 0));
-        List<ProductStockDO> list = new ArrayList<>();
-        for (WarehouseDO warehouseDO : list1) {
-            ProductStockDO productStockDO = new ProductStockDO();
-            productStockDO.setWarehouseId(warehouseDO.getId());
-            productStockDO.setGoodsId(goodsId);
-            list.add(productStockDO);
-        }
-        super.saveBatch(list);
-    }
-
+//
+//
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public void initStockByProduct(Long goodsId) {
+//        List<WarehouseDO> list1 = warehouseManager.list(new LambdaQueryWrapper<WarehouseDO>().eq(WarehouseDO::getDeleted, 0));
+//        List<ProductStockDO> list = new ArrayList<>();
+//        for (WarehouseDO warehouseDO : list1) {
+//            ProductStockDO productStockDO = new ProductStockDO();
+//            productStockDO.setWarehouseId(warehouseDO.getId());
+//            productStockDO.setGoodsId(goodsId);
+//            list.add(productStockDO);
+//        }
+//        super.saveBatch(list);
+//    }
+//
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void initStockByWarehouse(Long warehouseId) {
         List<ProductDO> list = productMapper.selectList(new LambdaQueryWrapper<ProductDO>().eq(ProductDO::getCompanyId, AdminUserContext.hasCompany()));
-        List<ProductStockDO> arrayList = new ArrayList<>();
-        for (ProductDO aDo : list) {
-            GoodsDO goodsDO = goodsMapper.selectById(aDo.getGoodsId());
-            ProductStockDO aDo1 = new ProductStockDO();
-            aDo1.setWarehouseId(warehouseId);
-            aDo1.setGoodsId(aDo.getGoodsId());
-            aDo1.setGoodsName(goodsDO.getName());
-            aDo1.setGoodsBarCode(aDo.getSku());
-            aDo1.setGoodsSnCode(goodsDO.getSn());
-            aDo1.setHireOrSail(aDo.getHireOrSail());
-            aDo1.setProductId(aDo.getId());
-            arrayList.add(aDo1);
-        }
-        saveBatch(arrayList);
-    }
-
-    @Override
-    public void deleteStockByProduct(List<Long> productIds) {
-    }
-
-
-    @Override
-    public void deleteByIds(List<Long> ids) {
-        if (ids.isEmpty()) {
-            return;
-        }
-        productStockMapper.deleteBatchIds(ids);
-    }
-
-    @Override
-    public void deleteStockByWarehouse(Long warehouseId) {
-        // 目前注释掉下面的代码,暂时先不需要删除产品库存数据,因为比如入库单退货时要扣批次的库存,批次库存和产品库存应该是保持一致的
-//        lambdaUpdate().eq(ProductStockDO::getWarehouseId, warehouseId).remove();
-    }
-
-    /**
-     * 查询商品库存预警分页列表数据
-     *
-     * @param pageNo      分页数
-     * @param pageSize    每页数量
-     * @param warehouseId 仓库ID
-     * @param deptId      部门ID
-     * @param name        商品名称
-     * @return
-     */
-    @Override
-    public WebPage<ProductStockWarningVO> listWarningStock(Long pageNo, Long pageSize, Long warehouseId, Long deptId, String name) {
-        IPage<ProductStockWarningVO> iPage = this.productStockMapper.listWarningStockPage(new Page(pageNo, pageSize), warehouseId, deptId, name);
-        return PageConvert.convert(iPage);
-    }
-
-    /**
-     * 获取某个仓库中某个商品的库存信息
-     *
-     * @param productId   产品ID
-     * @param warehouseId 仓库ID
-     * @return
-     */
-    @Override
-    public ProductStockDO getStock(Long productId, Long warehouseId) {
-        return this.lambdaQuery()
-                .eq(ProductStockDO::getProductId, productId)
-                .eq(ProductStockDO::getWarehouseId, warehouseId)
-                .one();
-    }
-
-    @Override
-    public List<ProductStockDO> listByWarehouseAndProduct(List<Long> warehouseIds, List<Long> productIds) {
-        if (CollUtil.isEmpty(productIds)) {
-            return Collections.emptyList();
-        }
-        return lambdaQuery()
-                .in(warehouseIds != null, ProductStockDO::getWarehouseId, warehouseIds)
-                .in(ProductStockDO::getProductId, productIds)
-                .list();
-    }
-
-    @Override
-    public Map<Long, Integer> queryStockNum(List<Long> warehouseIds, List<Long> productIds) {
-        // 批量查询库存
-        List<ProductStockDO> productStockList = listByWarehouseAndProduct(warehouseIds, productIds);
-        // 按产品分组
-        Map<Long, List<ProductStockDO>> groupByProduct = productStockList.stream().collect(Collectors.groupingBy(ProductStockDO::getProductId));
-        // 循环每个产品,计算产品的总库存
-        return productIds.stream().collect(Collectors.toMap(Function.identity(), productId -> {
-            List<ProductStockDO> stockList = groupByProduct.get(productId);
-            return stockList == null ? 0 : stockList.stream().mapToInt(ProductStockDO::getNum).sum();
-        }));
-    }
-
-    /**
-     * 该方法不应该单独调用,应该在更新批次是调用
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void updateStock(Long warehouseId, Long productId, StockOperateEnum operate, int changeNum) {
-        if (changeNum <= 0) {
-            throw new ServiceException("库存变更数量必须大于0");
-        }
-
-        boolean update = lambdaUpdate()
-                .setSql("num = num + " + (operate == StockOperateEnum.Increase ? changeNum : -changeNum))
-                .eq(ProductStockDO::getWarehouseId, warehouseId)
-                .eq(ProductStockDO::getProductId, productId)
-                // 如果是扣减库存,需要校验剩余库存是否充足
-                .ge(operate == StockOperateEnum.Reduce, ProductStockDO::getNum, changeNum)
-                .update();
-
-        if (!update) {
-            // 因为都是基于批次来更新仓库库存,只要批次校验没问题,这里就没问题,走到这里应该是代码有bug
-            throw new ServiceException("库存更新失败,请联系管理员排查:" + warehouseId + "_" + productId);
-        }
-    }
-
-    @Override
-    public void intStock(List<ProductDO> bean, GoodsDO goodsDO) {
-        List<WarehouseDO> list = warehouseManager.list(new LambdaQueryWrapper<WarehouseDO>().eq(WarehouseDO::getCompanyId, AdminUserContext.hasCompany()));
-        if (CollUtil.isNotEmpty(list)) {
+        if (CollUtil.isNotEmpty(list)){
             List<ProductStockDO> arrayList = new ArrayList<>();
-            for (ProductDO aDo : bean) {
-                for (WarehouseDO warehouseDO : list) {
-                    ProductStockDO aDo1 = new ProductStockDO();
-                    aDo1.setWarehouseId(warehouseDO.getId());
-                    aDo1.setGoodsId(aDo.getGoodsId());
-                    aDo1.setGoodsName(goodsDO.getName());
-                    aDo1.setGoodsBarCode(aDo.getSku());
-                    aDo1.setGoodsSnCode(goodsDO.getSn());
-                    aDo1.setHireOrSail(aDo.getHireOrSail());
-                    aDo1.setProductId(aDo.getId());
-                    arrayList.add(aDo1);
-                }
+            for (ProductDO aDo : list) {
+                ProductStockDO stockDO = new ProductStockDO();
+                stockDO.setWarehouseId(warehouseId);
+                stockDO.setProductId(aDo.getId());
+                stockDO.setCompanyId(AdminUserContext.getCompanyId());
+                arrayList.add(stockDO);
             }
             saveBatch(arrayList);
         }
-    }
 
+    }
+//
+//    @Override
+//    public void deleteStockByProduct(List<Long> productIds) {
+//    }
+//
+//
+//    @Override
+//    public void deleteByIds(List<Long> ids) {
+//        if (ids.isEmpty()) {
+//            return;
+//        }
+//        productStockMapper.deleteBatchIds(ids);
+//    }
+//
+//    @Override
+//    public void deleteStockByWarehouse(Long warehouseId) {
+//        // 目前注释掉下面的代码,暂时先不需要删除产品库存数据,因为比如入库单退货时要扣批次的库存,批次库存和产品库存应该是保持一致的
+////        lambdaUpdate().eq(ProductStockDO::getWarehouseId, warehouseId).remove();
+//    }
+//
+//    /**
+//     * 查询商品库存预警分页列表数据
+//     *
+//     * @param pageNo      分页数
+//     * @param pageSize    每页数量
+//     * @param warehouseId 仓库ID
+//     * @param deptId      部门ID
+//     * @param name        商品名称
+//     * @return
+//     */
+//    @Override
+//    public WebPage<ProductStockWarningVO> listWarningStock(Long pageNo, Long pageSize, Long warehouseId, Long deptId, String name) {
+//        IPage<ProductStockWarningVO> iPage = this.productStockMapper.listWarningStockPage(new Page(pageNo, pageSize), warehouseId, deptId, name);
+//        return PageConvert.convert(iPage);
+//    }
+//
+//    /**
+//     * 获取某个仓库中某个商品的库存信息
+//     *
+//     * @param productId   产品ID
+//     * @param warehouseId 仓库ID
+//     * @return
+//     */
+//    @Override
+//    public ProductStockDO getStock(Long productId, Long warehouseId) {
+//        return this.lambdaQuery()
+//                .eq(ProductStockDO::getProductId, productId)
+//                .eq(ProductStockDO::getWarehouseId, warehouseId)
+//                .one();
+//    }
+//
+//    @Override
+//    public List<ProductStockDO> listByWarehouseAndProduct(List<Long> warehouseIds, List<Long> productIds) {
+//        if (CollUtil.isEmpty(productIds)) {
+//            return Collections.emptyList();
+//        }
+//        return lambdaQuery()
+//                .in(warehouseIds != null, ProductStockDO::getWarehouseId, warehouseIds)
+//                .in(ProductStockDO::getProductId, productIds)
+//                .list();
+//    }
+//
+//    @Override
+//    public Map<Long, Integer> queryStockNum(List<Long> warehouseIds, List<Long> productIds) {
+//        // 批量查询库存
+//        List<ProductStockDO> productStockList = listByWarehouseAndProduct(warehouseIds, productIds);
+//        // 按产品分组
+//        Map<Long, List<ProductStockDO>> groupByProduct = productStockList.stream().collect(Collectors.groupingBy(ProductStockDO::getProductId));
+//        // 循环每个产品,计算产品的总库存
+//        return productIds.stream().collect(Collectors.toMap(Function.identity(), productId -> {
+//            List<ProductStockDO> stockList = groupByProduct.get(productId);
+//            return stockList == null ? 0 : stockList.stream().mapToInt(ProductStockDO::getNum).sum();
+//        }));
+//    }
+//
+//    /**
+//     * 该方法不应该单独调用,应该在更新批次是调用
+//     */
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public void updateStock(Long warehouseId, Long productId, StockOperateEnum operate, int changeNum) {
+//        if (changeNum <= 0) {
+//            throw new ServiceException("库存变更数量必须大于0");
+//        }
+//
+//        boolean update = lambdaUpdate()
+//                .setSql("num = num + " + (operate == StockOperateEnum.Increase ? changeNum : -changeNum))
+//                .eq(ProductStockDO::getWarehouseId, warehouseId)
+//                .eq(ProductStockDO::getProductId, productId)
+//                // 如果是扣减库存,需要校验剩余库存是否充足
+//                .ge(operate == StockOperateEnum.Reduce, ProductStockDO::getNum, changeNum)
+//                .update();
+//
+//        if (!update) {
+//            // 因为都是基于批次来更新仓库库存,只要批次校验没问题,这里就没问题,走到这里应该是代码有bug
+//            throw new ServiceException("库存更新失败,请联系管理员排查:" + warehouseId + "_" + productId);
+//        }
+//    }
+//
+//    @Override
+//    public void intStock(List<ProductDO> bean, GoodsDO goodsDO) {
+//        List<WarehouseDO> list = warehouseManager.list(new LambdaQueryWrapper<WarehouseDO>().eq(WarehouseDO::getCompanyId, AdminUserContext.hasCompany()));
+//        if (CollUtil.isNotEmpty(list)) {
+//            List<ProductStockDO> arrayList = new ArrayList<>();
+//            for (ProductDO aDo : bean) {
+//                for (WarehouseDO warehouseDO : list) {
+//                    ProductStockDO aDo1 = new ProductStockDO();
+//                    aDo1.setWarehouseId(warehouseDO.getId());
+//                    aDo1.setGoodsId(aDo.getGoodsId());
+//                    aDo1.setGoodsName(goodsDO.getName());
+//                    aDo1.setGoodsBarCode(aDo.getSku());
+//                    aDo1.setGoodsSnCode(goodsDO.getSn());
+//                    aDo1.setHireOrSail(aDo.getHireOrSail());
+//                    aDo1.setProductId(aDo.getId());
+//                    arrayList.add(aDo1);
+//                }
+//            }
+//            saveBatch(arrayList);
+//        }
+//    }
+//
     @Override
     public void updateLockedStock(List<StockDTO> ids) {
         List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
@@ -273,7 +294,7 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
         }
         updateBatchById(list);
     }
-
+//
     @Override
     public void updateActualStock(List<StockDTO> ids, String inventory) {
         List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
@@ -291,19 +312,19 @@ public class ProductStockManagerImpl extends BaseServiceImpl<ProductStockMapper,
         }
         updateBatchById(list);
     }
-
-    @Override
-    public void updateTransitStock(List<StockDTO> ids) {
-        List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
-        List<ProductStockDO> list = list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId, collect));
-        if (list.size() != ids.size()) {
-            throw new ServiceException("部分库存信息记录未查询到");
-        }
-        for (ProductStockDO aDo : list) {
-            StockDTO stockDTO = ids.stream().filter(item -> item.getId().equals(aDo.getId())).findFirst().get();
-            aDo.setTransitStock(aDo.getTransitStock() + stockDTO.getNum());
-        }
-        updateBatchById(list);
-    }
+//
+//    @Override
+//    public void updateTransitStock(List<StockDTO> ids) {
+//        List<Long> collect = ids.stream().map(StockDTO::getId).collect(Collectors.toList());
+//        List<ProductStockDO> list = list(new LambdaQueryWrapper<ProductStockDO>().in(ProductStockDO::getId, collect));
+//        if (list.size() != ids.size()) {
+//            throw new ServiceException("部分库存信息记录未查询到");
+//        }
+//        for (ProductStockDO aDo : list) {
+//            StockDTO stockDTO = ids.stream().filter(item -> item.getId().equals(aDo.getId())).findFirst().get();
+//            aDo.setTransitStock(aDo.getTransitStock() + stockDTO.getNum());
+//        }
+//        updateBatchById(list);
+//    }
 }
 

+ 35 - 34
module-erp/src/main/java/com/hys/app/service/erp/impl/SmsMailManagerImpl.java

@@ -53,10 +53,10 @@ public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTempla
         SmsMailTemplate convert = SmsMailConverter.INSTANCE.convert(smsMailTemplateDTO);
         checkParam(convert);
         //如果是短信模板向短信平台提交申请
-        if (convert.getType().equals(MsgTypeEnum.SMS)){
-            String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
-            convert.setTemplateCode(smsTemplateCode);
-        }
+//        if (convert.getType().equals(MsgTypeEnum.SMS)){
+//            String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
+//            convert.setTemplateCode(smsTemplateCode);
+//        }
         save(convert);
         return convert.getId();
     }
@@ -64,36 +64,36 @@ public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTempla
     @Override
     public Long updateTemplate(SmsMailTemplateDTO smsMailTemplateDTO, Long id) {
         SmsMailTemplate template = ValidateUtil.getOne(baseMapper, SmsMailTemplate::getId, id, "模板");
-        if (template.getType().equals(MsgTypeEnum.SMS) && template.getAuditStatus()) {
-            throw new ServiceException("已审核通过的模板不允许修改,如有需求变动另建模板");
-        }
+//        if (template.getType().equals(MsgTypeEnum.SMS) && template.getAuditStatus()) {
+//            throw new ServiceException("已审核通过的模板不允许修改,如有需求变动另建模板");
+//        }
         BeanUtil.copyProperties(smsMailTemplateDTO, template);
-        if (template.getType().equals(MsgTypeEnum.SMS)) {
-            //如果是短信模板向短信平台提交申请
-            String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
-            template.setTemplateCode(smsTemplateCode);
-            updateById(template);
-            return template.getId();
-        }
+//        if (template.getType().equals(MsgTypeEnum.SMS)) {
+//            //如果是短信模板向短信平台提交申请
+//            String smsTemplateCode = AliSmsUtil.createSmsTemplate(smsMailTemplateDTO.getTemplateType(), smsMailTemplateDTO.getName(), smsMailTemplateDTO.getContent(), smsMailTemplateDTO.getRemark());
+//            template.setTemplateCode(smsTemplateCode);
+//            updateById(template);
+//            return template.getId();
+//        }
         updateById(template);
         return null;
     }
 
-    private static WxMpService wxService;
-
-    static {
-        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
-        config.setAppId("你的AppID");
-        config.setSecret("你的AppSecret");
-        wxService = new WxMpServiceImpl();
-        wxService.setWxMpConfigStorage(config);
-    }
-
-    public static String applyTemplate(String shortTemplateId) throws WxErrorException {
-        String templateId = wxService.getTemplateMsgService().addTemplate(shortTemplateId);
-        System.out.println("成功添加模板,模板ID: " + templateId);
-        return templateId;
-    }
+//    private static WxMpService wxService;
+//
+//    static {
+//        WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
+//        config.setAppId("你的AppID");
+//        config.setSecret("你的AppSecret");
+//        wxService = new WxMpServiceImpl();
+//        wxService.setWxMpConfigStorage(config);
+//    }
+//
+//    public static String applyTemplate(String shortTemplateId) throws WxErrorException {
+//        String templateId = wxService.getTemplateMsgService().addTemplate(shortTemplateId);
+//        System.out.println("成功添加模板,模板ID: " + templateId);
+//        return templateId;
+//    }
 
 
     @Override
@@ -121,9 +121,10 @@ public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTempla
         List<SmsMailTemplate> list = list(new LambdaQueryWrapper<SmsMailTemplate>()
                 .select(SmsMailTemplate::getPid)
                 .eq(SmsMailTemplate::getType,type)
-                .eq(SmsMailTemplate::getEnableStatus,type));
+                .eq(SmsMailTemplate::getEnableStatus,true));
         Set<Long> set = list.stream().map(SmsMailTemplate::getPid).collect(Collectors.toSet());
         LambdaQueryWrapper<SmsMailTemplate> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SmsMailTemplate::getType,MsgTypeEnum.SYSTEM);
         if (CollUtil.isNotEmpty(set)){
             wrapper.notIn(SmsMailTemplate::getId,set);
         }
@@ -136,9 +137,9 @@ public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTempla
                 throw new ServiceException("短信模板,邮件模板,公众号模板必须挂在消息模板下面");
             }
         }
-        if (Pattern.matches(".*[\\u4e00-\\u9fa5\\p{P}].*", smsMailTemplate.getCode())) {
-            throw new ServiceException("自定义编码不能包含中文和特殊符号");
-        }
+//        if (Pattern.matches(".*[\\u4e00-\\u9fa5\\p{P}].*", smsMailTemplate.getCode())) {
+//            throw new ServiceException("自定义编码不能包含中文和特殊符号");
+//        }
         if (ValidateUtil.checkRepeat(baseMapper, SmsMailTemplate::getCode, smsMailTemplate.getCode(), SmsMailTemplate::getId, smsMailTemplate.getId())) {
             throw new ServiceException("编码已存在");
         }
@@ -162,7 +163,7 @@ public class SmsMailManagerImpl extends ServiceImpl<SmsMailMapper, SmsMailTempla
     }
 
 
-    @Scheduled(cron = "0 0 1 * * ?")  // 每天凌晨1点执行查看哪些没有审核通过的模板的查询
+//    @Scheduled(cron = "0 0 1 * * ?")  // 每天凌晨1点执行查看哪些没有审核通过的模板的查询
     public void updateTemplateStatus() throws Exception {
         List<SmsMailTemplate> list = list(new LambdaQueryWrapper<SmsMailTemplate>()
                 .eq(SmsMailTemplate::getType, MsgTypeEnum.SMS).eq(SmsMailTemplate::getAuditStatus, false)

+ 40 - 3
module-erp/src/main/java/com/hys/app/service/erp/impl/StockDamageReportManagerImpl.java

@@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hys.app.controller.erp.use.msg.MsgContant;
+import com.hys.app.controller.erp.use.msg.MsgUtilClient;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.exception.ServiceException;
@@ -30,7 +32,9 @@ import com.hys.app.model.erp.vo.GoodsVO;
 import com.hys.app.model.erp.vo.ProductVO;
 import com.hys.app.model.erp.vo.StockDamageReportStatistics;
 import com.hys.app.model.erp.vo.StockDamageReportVO;
+import com.hys.app.model.system.dos.AdminUser;
 import com.hys.app.service.erp.*;
+import com.hys.app.service.system.AdminUserManager;
 import lombok.AllArgsConstructor;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -40,6 +44,8 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -67,6 +73,9 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
     private GoodsSnManager goodsSnManager;
     private RedisTemplate redisTemplate;
     private AreaStockManager areaStockManager;
+    private AdminUserManager adminUserManager;
+    private MsgUtilClient msgUtilClient;
+    private CompanyBandMsgManager companyBandMsgManager;
 
     /**
      * 查询库存报损单分页列表数据
@@ -125,6 +134,10 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
         bean.forEach(item -> item.setReportId(report.getId()));
         stockDamageReportProductManager.saveBatch(bean);
 
+        if (stockDamageReportDTO.getHasNotice() && ObjectUtil.isNotNull(stockDamageReportDTO.getNoticeUserId())){
+            noticeUser(stockDamageReportDTO.getNoticeUserId(),sn);
+        }
+
 //        List<ItemSnCodeDO> itemSnCodeDOS = new ArrayList<>();
 //        //更爱序列号的状态
 //        List<GoodsSnDO> snList = new ArrayList<>();
@@ -152,6 +165,32 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
     }
 
 
+    /**
+     * 给通知的人发消息
+     *
+     * @param userId
+     */
+    private void noticeUser(Long userId,String sn) {
+        AdminUser adminUser = adminUserManager.getModel(userId);
+        //发消息
+        List<String> companyBandMsg = companyBandMsgManager.getCompanyBandMsgCode(AdminUserContext.getCompanyId());
+        msgUtilClient.sendSys(MsgContant.DAMAGE_NOTICE_USER_SYSTEM, adminUser, AdminUserContext.getAdminUserName()
+                , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"报损单");
+        if (companyBandMsg.contains(MsgContant.DAMAGE_NOTICE_USER_MAIL)){
+            msgUtilClient.sendMail(MsgContant.DAMAGE_NOTICE_USER_MAIL, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"报损单");
+        }
+        if (companyBandMsg.contains(MsgContant.DAMAGE_NOTICE_USER_SMS)){
+            msgUtilClient.sendSms(MsgContant.DAMAGE_NOTICE_USER_SMS, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"报损单");
+        }
+        if (companyBandMsg.contains(MsgContant.DAMAGE_NOTICE_USER_OFFICIAL)){
+            msgUtilClient.sendOfficial(MsgContant.DAMAGE_NOTICE_USER_OFFICIAL, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"报损单");
+        }
+    }
+
+
     /**
      * 获取库存报损单详情
      *
@@ -171,8 +210,6 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
         List<StockDamageReportProductDTO> beanList = BeanUtils.toBean(goodsList, StockDamageReportProductDTO.class);
         for (StockDamageReportProductDTO dto : beanList) {
             ProductStockDO aDo = page.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
-            GoodsVO goodsVO = BeanUtil.copyProperties(goodsManager.getById(aDo.getGoodsId()), GoodsVO.class);
-            dto.setGoodsVO(goodsVO);
             dto.setUsableStock(aDo.getUsableStock());
             dto.setProductVO(BeanUtil.copyProperties(productManager.getById(aDo.getProductId()), ProductVO.class));
             List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, dto.getProductStockId()));
@@ -264,7 +301,7 @@ public class StockDamageReportManagerImpl extends ServiceImpl<StockDamageReportM
             stockDTO.setNum(-dto.getReportNum());
             arrayList.add(stockDTO);
         }
-        productStockManager.updateActualStock(arrayList, null);
+//        productStockManager.updateActualStock(arrayList, null);
         //生成出库单
         WarehouseOutDO outDO = new WarehouseOutDO();
         outDO.setType(WarehouseOutTypeEnum.DAMAGE_OUT);

+ 42 - 20
module-erp/src/main/java/com/hys/app/service/erp/impl/StockInventoryManagerImpl.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hys.app.controller.erp.use.msg.MsgContant;
+import com.hys.app.controller.erp.use.msg.MsgUtilClient;
 import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.exception.ServiceException;
@@ -36,6 +38,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -60,6 +64,8 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
     private GoodsSnManager goodsSnManager;
     private RedisTemplate redisTemplate;
     private AreaStockManager areaStockManager;
+    private CompanyBandMsgManager companyBandMsgManager;
+    private MsgUtilClient msgUtilClient;
 
 
     /**
@@ -94,13 +100,9 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         List<StockInventoryProduct> list = BeanUtils.toBean(stockInventoryDTO.getProductList(), StockInventoryProduct.class);
         list.forEach(item -> item.setInventoryId(copied.getId()));
         this.stockInventoryProductManager.saveBatch(list);
-//        //如果这个商品有序列号补习不全序列号关系
-//        for (StockInventoryProductDTO dto : stockInventoryDTO.getProductList()) {
-//            StockInventoryProduct product = list.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
-//            dto.setId(product.getId());
-//        }
-//        saveSnCode(copied.getId(), stockInventoryDTO.getProductList());
-
+        if (stockInventoryDTO.getHasNotice() && ObjectUtil.isNotNull(stockInventoryDTO.getNoticeUserId())){
+            noticeUser(stockInventoryDTO.getNoticeUserId(),copied.getSn());
+        }
     }
 
     /**
@@ -121,13 +123,34 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         List<StockInventoryProduct> list = BeanUtils.toBean(stockInventoryDTO.getProductList(), StockInventoryProduct.class);
         list.forEach(item -> item.setInventoryId(id));
         this.stockInventoryProductManager.saveBatch(list);
-//        //如果这个商品有序列号补习不全序列号关系
-//        for (StockInventoryProductDTO dto : stockInventoryDTO.getProductList()) {
-//            StockInventoryProduct product = list.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
-//            dto.setId(product.getId());
-//        }
-//        itemSnCodeManager.remove(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getEntryOutHouseId, id));
-//        saveSnCode(id, stockInventoryDTO.getProductList());
+        if (stockInventoryDTO.getHasNotice() && ObjectUtil.isNotNull(stockInventoryDTO.getNoticeUserId())){
+            noticeUser(stockInventoryDTO.getNoticeUserId(),stockInventory.getSn());
+        }
+    }
+
+    /**
+     * 给通知的人发消息
+     *
+     * @param userId
+     */
+    private void noticeUser(Long userId,String sn) {
+        AdminUser adminUser = adminUserManager.getModel(userId);
+        //发消息
+        List<String> companyBandMsg = companyBandMsgManager.getCompanyBandMsgCode(AdminUserContext.getCompanyId());
+        msgUtilClient.sendSys(MsgContant.INVENTORY_NOTICE_USER_SYSTEM, adminUser, AdminUserContext.getAdminUserName()
+                , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"盘点单");
+        if (companyBandMsg.contains(MsgContant.INVENTORY_NOTICE_USER_MAIL)){
+            msgUtilClient.sendMail(MsgContant.INVENTORY_NOTICE_USER_MAIL, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"盘点单");
+        }
+        if (companyBandMsg.contains(MsgContant.INVENTORY_NOTICE_USER_SMS)){
+            msgUtilClient.sendSms(MsgContant.INVENTORY_NOTICE_USER_SMS, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"盘点单");
+        }
+        if (companyBandMsg.contains(MsgContant.INVENTORY_NOTICE_USER_OFFICIAL)){
+            msgUtilClient.sendOfficial(MsgContant.INVENTORY_NOTICE_USER_OFFICIAL, adminUser, AdminUserContext.getAdminUserName()
+                    , LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME),"盘点单");
+        }
     }
 
 
@@ -137,9 +160,9 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         List<String> arrayList = new ArrayList<>();
         for (StockInventoryProductDTO aDo : productList) {
             ProductDO byId = productManager.getById(aDo.getProductId());
-            if (byId.getHaveSn() && CollUtil.isEmpty(aDo.getSnCodeList())) {
-                throw new ServiceException("有序列号的商品序列号不能为空");
-            }
+//            if (byId.getHaveSn() && CollUtil.isEmpty(aDo.getSnCodeList())) {
+//                throw new ServiceException("有序列号的商品序列号不能为空");
+//            }
             if (CollUtil.isNotEmpty(aDo.getSnCodeList())) {
                 if (aDo.getInventoryNum() != aDo.getSnCodeList().size()) {
                     throw new ServiceException("序列号个数和盘点个数不等");
@@ -173,7 +196,7 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
         stockInventory.setStatus(DamageinventoryEnum.HAS_HANDLE);
         updateById(stockInventory);
         List<StockInventoryProduct> goodsList = this.stockInventoryProductManager.list(id);
-        if (CollUtil.isEmpty(goodsList)){
+        if (CollUtil.isEmpty(goodsList)) {
             throw new ServiceException("未录入任何商品");
         }
         List<Long> collect = goodsList.stream().map(StockInventoryProduct::getProductId).collect(Collectors.toList());
@@ -240,7 +263,7 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
                 ProductStockDO aDo = page.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get();
                 ProductVO productVO = BeanUtil.copyProperties(productManager.getById(dto.getProductId()), ProductVO.class);
                 dto.setProductVO(productVO);
-                GoodsVO goodsVO = BeanUtil.copyProperties(goodsManager.getById(productVO.getGoodsId()), GoodsVO.class);
+
                 dto.setUsableStock(aDo.getUsableStock());
                 dto.setActualStock(aDo.getActualStock());
                 List<ItemSnCodeDO> list2 = itemSnCodeManager.list(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getItemId, dto.getId()));
@@ -251,7 +274,6 @@ public class StockInventoryManagerImpl extends ServiceImpl<StockInventoryMapper,
                 List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, dto.getProductStockId()));
                 dto.setAreaStockList(areaStockList);
                 dto.setGoodsId(productVO.getGoodsId());
-                dto.setGoodsVO(goodsVO);
             }
             stockInventoryVO.setProductList(beanList);
         }

+ 4 - 4
module-erp/src/main/java/com/hys/app/service/erp/impl/StockStatisticsManagerImpl.java

@@ -215,9 +215,9 @@ public class StockStatisticsManagerImpl extends ServiceImpl<StockStatisticsMappe
         // 查询预警库存
         List<Long> productIds = convertList(list, StockStatistics::getProductId);
         List<ProductDO> productList = productManager.listByIds(productIds);
-        Map<Long, Integer> productWarningValueMap = convertMap(productList, ProductDO::getId, ProductDO::getWarningValue);
-        for (StockStatistics stockStatistics : list) {
-            stockStatistics.setWarningNum(productWarningValueMap.getOrDefault(stockStatistics.getProductId(), 0));
-        }
+//        Map<Long, Integer> productWarningValueMap = convertMap(productList, ProductDO::getId, ProductDO::getWarningValue);
+//        for (StockStatistics stockStatistics : list) {
+//            stockStatistics.setWarningNum(productWarningValueMap.getOrDefault(stockStatistics.getProductId(), 0));
+//        }
     }
 }

+ 2 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/StockTransferManagerImpl.java

@@ -104,6 +104,7 @@ public class StockTransferManagerImpl extends BaseServiceImpl<StockTransferMappe
             dto.setId(aDoOut.getId());
             dto.setNum(productDTO.getNum());
             arrayList.add(dto);
+
             LockedStockDetailDO detailDO = new LockedStockDetailDO();
             detailDO.setProductStockId(aDoOut.getId());
             detailDO.setOrderId(aDo.getId());
@@ -121,7 +122,7 @@ public class StockTransferManagerImpl extends BaseServiceImpl<StockTransferMappe
         //生成出库单
         WarehouseOutDO outDO = new WarehouseOutDO();
         outDO.setType(WarehouseOutTypeEnum.TRANSFER_OUT);
-        outDO.setOrderIdList(aDo.getId());
+        outDO.setOrderId(aDo.getId());
         outDO.setWarehouseId(aDo.getOutWarehouseId());
         outDO.setNotes("调拨出生成的出货单");
         outDO.setSn(noGenerateManager.generate(NoBusinessTypeEnum.WarehouseOut, 66L));
@@ -166,7 +167,6 @@ public class StockTransferManagerImpl extends BaseServiceImpl<StockTransferMappe
         convert.forEach(item -> {
             ProductVO productVO = BeanUtil.copyProperties(productManager.getById(item.getProductId()), ProductVO.class);
             item.setProductVO(productVO);
-            item.setGoodsVO(BeanUtil.copyProperties(goodsManager.getById(productVO.getGoodsId()), GoodsVO.class));
         });
         stockTransferVO.setProductList(convert);
         return stockTransferVO;

+ 3 - 0
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseAreaManagerImpl.java

@@ -11,6 +11,7 @@ import com.github.yulichang.interfaces.MPJBaseJoin;
 import com.hys.app.converter.erp.ProductStockConverter;
 import com.hys.app.converter.erp.WarehouseAreaConverter;
 import com.hys.app.converter.erp.WarehouseOutItemConverter;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
@@ -73,6 +74,7 @@ public class WarehouseAreaManagerImpl extends BaseServiceImpl<WarehouseAreaMappe
         if (ObjectUtil.isNotNull(one)) {
             throw new ServiceException("该仓库下库位编号已存在");
         }
+        warehouseAreaDO.setCompanyId(AdminUserContext.getCompanyId());
         save(warehouseAreaDO);
     }
 
@@ -122,6 +124,7 @@ public class WarehouseAreaManagerImpl extends BaseServiceImpl<WarehouseAreaMappe
             stock.setProductStockId(aLong);
             stock.setWarehouseAreaName(areaDO.getCode());
             stock.setWarehouseId(warehouseId);
+            stock.setCompanyId(AdminUserContext.getCompanyId());
             stock.setWarehouseAreaId(warehouseAreaId);
             list.add(stock);
         }

+ 2 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryBatchManagerImpl.java

@@ -106,7 +106,7 @@ public class WarehouseEntryBatchManagerImpl extends BaseServiceImpl<WarehouseEnt
             // 将多个批次的库存数量合并
             int totalNum = batchGroupList.stream().mapToInt(WarehouseEntryBatchDO::getEntryNum).sum();
             // 更新
-            productStockManager.updateStock(batchDO.getWarehouseId(), batchDO.getProductId(), StockOperateEnum.Increase, totalNum);
+//            productStockManager.updateStock(batchDO.getWarehouseId(), batchDO.getProductId(), StockOperateEnum.Increase, totalNum);
         }
 
         // 3.生成库存流水
@@ -132,7 +132,7 @@ public class WarehouseEntryBatchManagerImpl extends BaseServiceImpl<WarehouseEnt
         for (StockUpdateDTO stockUpdateDTO : updateStockList) {
             WarehouseEntryBatchDO batchDO = batchMap.get(stockUpdateDTO.getBatchId());
             // 更新库存
-            productStockManager.updateStock(batchDO.getWarehouseId(), batchDO.getProductId(), stockUpdateDTO.getOperate(), stockUpdateDTO.getChangeNum());
+//            productStockManager.updateStock(batchDO.getWarehouseId(), batchDO.getProductId(), stockUpdateDTO.getOperate(), stockUpdateDTO.getChangeNum());
         }
 
         // 3.生成库存流水

+ 5 - 6
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseEntryManagerImpl.java

@@ -316,7 +316,6 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
                 .eq(ProductStockDO::getWarehouseId, warehouseEntryVO.getWarehouseId()).in(ProductStockDO::getProductId, collect));
         for (WarehouseEntryProductDO productDO : productList) {
             ProductDO aDo = productDOS.stream().filter(item -> item.getId().equals(productDO.getProductId())).findFirst().get();
-            productDO.setGoodsVO(goodsMapper.selectById(aDo.getGoodsId()));
             productDO.setProductVO(aDo);
             List<ItemSnCodeDO> list = itemSnCodeManager.list(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getItemId, productDO.getId()));
             if (CollUtil.isNotEmpty(list)) {
@@ -583,14 +582,14 @@ public class WarehouseEntryManagerImpl extends BaseServiceImpl<WarehouseEntryMap
         List<ProductDO> noContractProducts = productManager.list(productWrapper);
         Map<Long, ProductDO> noContractProductMap = convertMap(noContractProducts, ProductDO::getId, Function.identity());
         //查询分类信息
-        List<Long> categoryIds = noContractProducts.stream().map(ProductDO::getCategoryId).collect(Collectors.toList());
-        List<CategoryDO> categories = categoryManager.list(new QueryWrapper<CategoryDO>().in("category_id", categoryIds));
-        Map<Long, CategoryDO> categoryMap = convertMap(categories, CategoryDO::getCategoryId, Function.identity());
+//        List<Long> categoryIds = noContractProducts.stream().map(ProductDO::getCategoryId).collect(Collectors.toList());
+//        List<CategoryDO> categories = categoryManager.list(new QueryWrapper<CategoryDO>().in("category_id", categoryIds));
+//        Map<Long, CategoryDO> categoryMap = convertMap(categories, CategoryDO::getCategoryId, Function.identity());
         //组装数据
         noContractProductIds.forEach(id -> {
             ProductDO productDO = noContractProductMap.get(id);
-            ProcurementContractProduct procurementContractProduct = procurementContractProductConverter.convert(productDO, categoryMap, warehouseEntryProductMap);
-            contractProductMap.put(id, procurementContractProduct);
+//            ProcurementContractProduct procurementContractProduct = procurementContractProductConverter.convert(productDO, categoryMap, warehouseEntryProductMap);
+//            contractProductMap.put(id, procurementContractProduct);
         });
         return contractProductMap;
     }

+ 4 - 2
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseManagerImpl.java

@@ -61,7 +61,9 @@ public class WarehouseManagerImpl extends BaseServiceImpl<WarehouseMapper, Wareh
     public void add(WarehouseDTO warehouseDTO) {
         check(warehouseDTO);
         WarehouseDO warehouseDO = converter.convert(warehouseDTO);
+        warehouseDO.setCompanyId(AdminUserContext.getCompanyId());
         save(warehouseDO);
+        //初始化库存
         productStockManager.initStockByWarehouse(warehouseDO.getId());
     }
 
@@ -91,13 +93,13 @@ public class WarehouseManagerImpl extends BaseServiceImpl<WarehouseMapper, Wareh
             throw new ServiceException("该仓库已关联入库单,不能进行删除操作");
         }
         removeById(id);
-        productStockManager.deleteStockByWarehouse(id);
+//        productStockManager.deleteStockByWarehouse(id);
     }
 
     @Override
     public List<WarehouseVO> listAll(Long deptId) {
         List<WarehouseDO> list = baseMapper.selectList(new LambdaQueryWrapper<WarehouseDO>()
-                .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()),WarehouseDO::getCompanyId,AdminUserContext.getCompanyId()));
+                .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), WarehouseDO::getCompanyId, AdminUserContext.getCompanyId()));
         return converter.convert(list);
     }
 

+ 63 - 60
module-erp/src/main/java/com/hys/app/service/erp/impl/WarehouseOutManagerImpl.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.hys.app.converter.erp.ProductStockConverter;
 import com.hys.app.converter.erp.WarehouseOutConverter;
+import com.hys.app.framework.context.user.AdminUserContext;
 import com.hys.app.framework.database.BaseQueryParam;
 import com.hys.app.framework.database.WebPage;
 import com.hys.app.framework.database.mybatisplus.base.BaseServiceImpl;
@@ -156,33 +157,38 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
 
         List<StockDTO> arrayList = new ArrayList<>();
         //修改凍結库存明细
-//        List<LockedStockDetailDO> detailDOS = new ArrayList<>();
+        List<LockedStockDetailDO> detailDOS = new ArrayList<>();
         for (WarehouseOutItemDO aDo : productList) {
-//            if (WarehouseOutTypeEnum.SALE_OUT.equals(warehouseOutDO.getType()) ||
+            if (WarehouseOutTypeEnum.TRANSFER_OUT.equals(warehouseOutDO.getType())
 //                    WarehouseOutTypeEnum.TRANSFER_OUT.equals(warehouseOutDO.getType()) ||
 //                    WarehouseOutTypeEnum.DAMAGE_OUT.equals(warehouseOutDO.getType()) ||
-//                    WarehouseOutTypeEnum.HAIL_OUT.equals(warehouseOutDO.getType())) {
-//                LockedStockDetailDO one = lockedStockDetailManager.getOne(new LambdaQueryWrapper<LockedStockDetailDO>()
-//                        .eq(LockedStockDetailDO::getOrderId, aDo.getOrderId()).eq(LockedStockDetailDO::getOrderItemId, aDo.getOrderItemId()));
-//                if (ObjectUtil.isNull(one)) {
-//                    throw new ServiceException("未找到冻结记录");
-//                }
-//                one.setUnLockedTime(new Date());
-//                if (one.getLockedNum() == (aDo.getOutNum() + one.getUnLockedNum())) {
-//                    one.setStatus(true);
-//                }
-//                one.setUnLockedNum(one.getUnLockedNum() + aDo.getOutNum());
-//                detailDOS.add(one);
-//            }
+//                    WarehouseOutTypeEnum.HAIL_OUT.equals(warehouseOutDO.getType())
+                    ) {
+                LockedStockDetailDO one = lockedStockDetailManager.getOne(new LambdaQueryWrapper<LockedStockDetailDO>()
+                        .eq(LockedStockDetailDO::getOrderId, aDo.getOrderId()).eq(LockedStockDetailDO::getOrderItemId, aDo.getOrderItemId()));
+                if (ObjectUtil.isNull(one)) {
+                    throw new ServiceException("未找到冻结记录");
+                }
+                one.setUnLockedTime(new Date());
+                if (one.getLockedNum() == (aDo.getOutNum() + one.getUnLockedNum())) {
+                    one.setStatus(true);
+                }
+                one.setUnLockedNum(one.getUnLockedNum() + aDo.getOutNum());
+                detailDOS.add(one);
+            }
             WarehouseOutProductDTO productDO = warehouseOutDTO.getProductList().stream().filter(item -> item.getProductId().equals(aDo.getProductId())).findFirst().get();
             StockDTO dto = new StockDTO();
             dto.setId(aDo.getProductStockId());
             dto.setNum(-productDO.getOutNum());
             arrayList.add(dto);
         }
-//        lockedStockDetailManager.updateBatchById(detailDOS);
+        lockedStockDetailManager.updateBatchById(detailDOS);
         //更爱可用库存实际库存冻结库存
         productStockManager.updateActualStock(arrayList, null);
+        if (warehouseOutDTO.getType().equals(WarehouseOutTypeEnum.TRANSFER_OUT)) {
+            //如果是调拨出库,锁定库存解冻
+            productStockManager.updateLockedStock(arrayList);
+        }
 //        productStockManager.updateLockedStock(arrayList);
 //        //更改在途库存
 //        if (WarehouseOutTypeEnum.HAIL_OUT.equals(warehouseOutDTO.getType())) {
@@ -244,17 +250,13 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
         for (WarehouseOutProductDTO dto : productList) {
             ProductVO productVO = BeanUtil.copyProperties(list.stream().filter(item -> item.getId().equals(dto.getProductId())).findFirst().get(), ProductVO.class);
             dto.setProductVO(productVO);
-            dto.setGoodsId(productVO.getGoodsId());
-            GoodsDO goodsDO = goodsMapper.selectById(productVO.getGoodsId());
             List<ItemSnCodeDO> list2 = itemSnCodeManager.list(new LambdaQueryWrapper<ItemSnCodeDO>().eq(ItemSnCodeDO::getItemId, dto.getId()));
             if (CollUtil.isNotEmpty(list2)) {
                 List<Long> collected = list2.stream().map(ItemSnCodeDO::getSnCodeId).collect(Collectors.toList());
                 dto.setSnCodeList(goodsSnManager.list(new LambdaQueryWrapper<GoodsSnDO>().in(GoodsSnDO::getId, collected)));
             }
-
             dto.setUsableStock(stockDOList.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get().getUsableStock());
             dto.setActualStock(stockDOList.stream().filter(item -> item.getProductId().equals(dto.getProductId())).findFirst().get().getActualStock());
-            dto.setGoodsVO(BeanUtil.copyProperties(goodsDO, GoodsVO.class));
             List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, dto.getProductStockId()));
             dto.setAreaStockList(areaStockList);
         }
@@ -415,57 +417,57 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
     @Override
     public Page<ProductStockVO> getGoodByWarehouse(Long warehouseId, BaseQueryParam queryParam, String orderType, List<Long> warehouseIds, String keyWord) {
         //找出所有上架的商品
-        LambdaQueryWrapper<GoodsDO> wrapper = new LambdaQueryWrapper<GoodsDO>().eq(GoodsDO::getMarketEnable, true);
-
-        if (StrUtil.isNotBlank(orderType)) {
-            switch (orderType) {
-                case "TO_B":
-                    wrapper.eq(GoodsDO::getHireOrSail, "sail");
-                    break;
-                case "TO_C":
-                    wrapper.eq(GoodsDO::getHireOrSail, "hire");
-                    break;
-                default:
-                    break;
-            }
-        }
-        List<GoodsDO> list = goodsMapper.selectList(wrapper);
-        List<Long> goodsId = list.stream().map(GoodsDO::getId).collect(Collectors.toList());
-        if (CollUtil.isEmpty(list)) {
-            throw new ServiceException("暂无对应类型的商品可供操作");
-        }
-        Page<ProductStockDO> page = new Page<>(queryParam.getPageNo(), queryParam.getPageSize());
-        Page<ProductStockDO> page1 = productStockManager.page(page, new LambdaQueryWrapper<ProductStockDO>()
-                .eq(ObjectUtil.isNotNull(warehouseId), ProductStockDO::getWarehouseId, warehouseId)
-                .in(CollUtil.isNotEmpty(warehouseIds), ProductStockDO::getWarehouseId, warehouseIds)
-                .in(ProductStockDO::getGoodsId, goodsId)
-                .and(StrUtil.isNotBlank(keyWord), wa -> wa
-                        .like(ProductStockDO::getGoodsName, keyWord)
-                        .or()
-                        .like(ProductStockDO::getGoodsBarCode, keyWord)
-                        .or()
-                        .like(ProductStockDO::getGoodsSnCode, keyWord))
-                .gt(ProductStockDO::getUsableStock, 0));
+//        LambdaQueryWrapper<GoodsDO> wrapper = new LambdaQueryWrapper<GoodsDO>().eq(GoodsDO::getMarketEnable, true);
+//        if (StrUtil.isNotBlank(orderType)) {
+//            switch (orderType) {
+//                case "TO_B":
+//                    wrapper.eq(GoodsDO::getHireOrSail, "sail");
+//                    break;
+//                case "TO_C":
+//                    wrapper.eq(GoodsDO::getHireOrSail, "hire");
+//                    break;
+//                default:
+//                    break;
+//            }
+//        }
+//        List<GoodsDO> list = goodsMapper.selectList(wrapper);
+//        List<Long> goodsId = list.stream().map(GoodsDO::getId).collect(Collectors.toList());
+//        if (CollUtil.isEmpty(list)) {
+//            throw new ServiceException("暂无对应类型的商品可供操作");
+//        }
+        Page<ProductStockDO> page1 = productStockManager.page(new Page<>(queryParam.getPageNo(), queryParam.getPageSize())
+                , new LambdaQueryWrapper<ProductStockDO>()
+                        .eq(ObjectUtil.isNotNull(warehouseId), ProductStockDO::getWarehouseId, warehouseId)
+                        .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), ProductStockDO::getCompanyId, AdminUserContext.getCompanyId())
+                        .and(StrUtil.isNotBlank(keyWord), wa -> wa
+                                .like(ProductStockDO::getGoodsName, keyWord)
+                                .or()
+                                .like(ProductStockDO::getGoodsBarCode, keyWord)
+                                .or()
+                                .like(ProductStockDO::getGoodsSnCode, keyWord))
+                        .gt(ProductStockDO::getUsableStock, 0));
         Page<ProductStockVO> convert = productStockConverter.convert(page1);
         for (ProductStockVO record : convert.getRecords()) {
-            GoodsVO goodsVO = BeanUtil.copyProperties(goodsMapper.selectById(record.getGoodsId()), GoodsVO.class);
-            record.setGoodsVO(goodsVO);
             record.setProductVO(BeanUtil.copyProperties(productManager.getById(record.getProductId()), ProductVO.class));
             record.setWarehouseVO(warehouseManager.getById(record.getWarehouseId()));
-            List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, record.getId()));
+            List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>()
+                    .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), AreaStock::getCompanyId, AdminUserContext.getCompanyId())
+                    .eq(AreaStock::getProductStockId, record.getId()));
             record.setAreaStockList(areaStockList);
         }
         return convert;
     }
 
     @Override
-    public IPage<ProductStockVO> getGoodByWarehouseInventory(Long warehouseId, BaseQueryParam queryParam, String keyWord) {
+    public IPage<ProductStockVO> getGoodByWarehouseInventory(Long warehouseId, BaseQueryParam queryParam, String keyWord, String type) {
         //找出所有上架的商品
-        List<GoodsDO> list = goodsMapper.selectList(new LambdaQueryWrapper<GoodsDO>().eq(GoodsDO::getMarketEnable, true));
-        List<Long> goodsId = list.stream().map(GoodsDO::getId).collect(Collectors.toList());
+//        List<GoodsDO> list = goodsMapper.selectList(new LambdaQueryWrapper<GoodsDO>().eq(GoodsDO::getMarketEnable, true));
+//        List<Long> goodsId = list.stream().map(GoodsDO::getId).collect(Collectors.toList());
         //找到所有的商品
         Page<ProductStockDO> page = productStockManager.page(new Page<>(queryParam.getPageNo(), queryParam.getPageSize()), new LambdaQueryWrapper<ProductStockDO>()
-                .eq(ProductStockDO::getWarehouseId, warehouseId).in(ProductStockDO::getGoodsId, goodsId)
+                .eq(ProductStockDO::getWarehouseId, warehouseId)
+                .gt(StrUtil.isNotBlank(type) && "gt".equals(type), ProductStockDO::getUsableStock, 0)
+                .eq(ProductStockDO::getCompanyId, AdminUserContext.getCompanyId())
                 .and(StrUtil.isNotBlank(keyWord), wa -> wa
                         .like(ProductStockDO::getGoodsName, keyWord)
                         .or()
@@ -474,10 +476,11 @@ public class WarehouseOutManagerImpl extends BaseServiceImpl<WarehouseOutMapper,
                         .like(ProductStockDO::getGoodsSnCode, keyWord)));
         Page<ProductStockVO> convert = productStockConverter.convert(page);
         for (ProductStockVO record : convert.getRecords()) {
-            record.setGoodsVO(BeanUtil.copyProperties(goodsMapper.selectById(record.getGoodsId()), GoodsVO.class));
             record.setProductVO(BeanUtil.copyProperties(productManager.getById(record.getProductId()), ProductVO.class));
             record.setWarehouseVO(warehouseManager.getById(record.getWarehouseId()));
-            List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>().eq(AreaStock::getProductStockId, record.getId()));
+            List<AreaStock> areaStockList = areaStockManager.list(new LambdaQueryWrapper<AreaStock>()
+                    .eq(AreaStock::getProductStockId, record.getId())
+                    .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), AreaStock::getCompanyId, AdminUserContext.getCompanyId()));
             record.setAreaStockList(areaStockList);
         }
         return convert;

+ 1 - 1
module-erp/src/main/java/com/hys/app/service/system/AdminUserManager.java

@@ -26,7 +26,7 @@ public interface AdminUserManager {
      * @param userState
      * @return WebPage
      */
-    WebPage list(long page, long pageSize, String keyword, Integer userState);
+    WebPage list(long page, long pageSize, String keyword, Integer userState,Long companyId);
 
     /**
      * 添加平台管理员

+ 4 - 2
module-erp/src/main/java/com/hys/app/service/system/DeptManager.java

@@ -8,6 +8,8 @@ import com.hys.app.framework.database.mybatisplus.base.BaseService;
 import com.hys.app.model.base.context.Region;
 import com.hys.app.model.system.dos.DeptDO;
 import com.hys.app.framework.util.CollectionUtils;
+import com.hys.app.model.system.vo.DeptBaseVO;
+import org.springframework.web.bind.annotation.PathVariable;
 
 import java.util.*;
 
@@ -23,7 +25,7 @@ public interface DeptManager extends BaseService<DeptDO> {
      * @param region
      * @return 部门编号
      */
-    Long createDept(DeptCreateDTO reqVO, Region region);
+    Long createDept(DeptCreateDTO reqVO);
 
     /**
      * 更新部门
@@ -31,7 +33,7 @@ public interface DeptManager extends BaseService<DeptDO> {
      * @param reqVO  部门信息
      * @param region
      */
-    void updateDept(DeptUpdateDTO reqVO, Region region);
+    void updateDept(DeptBaseVO reqVO,Long id);
 
     /**
      * 删除部门

+ 43 - 45
module-erp/src/main/java/com/hys/app/service/system/impl/AdminUserManagerImpl.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hys.app.controller.erp.use.msg.MsgContant;
+import com.hys.app.controller.erp.use.msg.MsgUtilClient;
 import com.hys.app.framework.auth.Token;
 import com.hys.app.framework.context.request.ThreadContextHolder;
 import com.hys.app.framework.context.user.AdminUserContext;
@@ -29,10 +31,12 @@ import com.hys.app.model.system.dos.SystemLogs;
 import com.hys.app.model.system.dto.AdminUserDTO;
 import com.hys.app.model.system.vo.AdminLoginVO;
 import com.hys.app.model.system.vo.AdminUserVO;
+import com.hys.app.service.erp.CompanyBandMsgManager;
 import com.hys.app.service.erp.CompanyErpManager;
 import com.hys.app.service.system.AdminUserManager;
 import com.hys.app.service.system.RoleManager;
 import com.hys.app.service.system.SystemLogsManager;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
@@ -40,6 +44,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -53,23 +58,17 @@ import java.util.stream.Collectors;
  * 2018-06-20 20:38:26
  */
 @Service
+@AllArgsConstructor
 public class AdminUserManagerImpl implements AdminUserManager {
 
-    @Autowired
     private RoleManager roleManager;
-    @Autowired
     private AdminUserMapper adminUserMapper;
-    @Autowired
-    private StringRedisTemplate redisTemplate;
-    @Autowired
     private TokenManager tokenManager;
-    @Autowired
     private SystemLogsManager systemLogsManager;
-    @Autowired
     private CompanyErpManager companyManager;
-    @Autowired
     private DeptMapper deptMapper;
-    private List<Long> ids = new ArrayList<>();
+    private MsgUtilClient msgUtilClient;
+    private CompanyBandMsgManager companyBandMsgManager;
 
     /**
      * 查询平台管理员列表
@@ -80,13 +79,9 @@ public class AdminUserManagerImpl implements AdminUserManager {
      * @return WebPage
      */
     @Override
-    public WebPage list(long page, long pageSize, String keyword, Integer userState) {
-        IPage<AdminUserDTO> iPage;
-        if (ObjectUtil.isNotNull(AdminUserContext.getCompanyId())) {
-            iPage = adminUserMapper.selectPageDto(new Page<>(page, pageSize), keyword, userState, AdminUserContext.getCompanyId());
-        } else {
-            iPage = adminUserMapper.selectPageDto(new Page<>(page, pageSize), keyword, userState, null);
-        }
+    public WebPage list(long page, long pageSize, String keyword, Integer userState,Long companyId) {
+        IPage<AdminUserDTO> iPage = adminUserMapper.selectPageDto(new Page<>(page, pageSize), keyword, userState, AdminUserContext.getCompanyId());
+
         return PageConvert.convert(iPage);
     }
 
@@ -135,13 +130,23 @@ public class AdminUserManagerImpl implements AdminUserManager {
         AdminUser adminUser = new AdminUser();
         adminUser.setCompanyId(company.getId());
         BeanUtil.copyProperties(adminUserVO, adminUser);
-        adminUser.setPassword(StringUtil.md5(password + adminUser.getUsername().toLowerCase()));
+        adminUser.setPassword(StringUtil.md5(password));
         adminUser.setDateLine(DateUtil.getDateline());
         adminUser.setUserState(0);
         adminUser.setFounder(0);
         adminUserMapper.insert(adminUser);
-
-
+        //发消息
+        List<String> companyBandMsg = companyBandMsgManager.getCompanyBandMsgCode(adminUser.getCompanyId());
+            msgUtilClient.sendSys(MsgContant.CREATE_USER_SYSTEM, adminUser, adminUser.getUsername(),adminUser.getPassword());
+        if (companyBandMsg.contains(MsgContant.CREATE_USER_MAIL)){
+            msgUtilClient.sendMail(MsgContant.CREATE_USER_MAIL, adminUser, adminUser.getUsername(),adminUser.getPassword());
+        }
+        if (companyBandMsg.contains(MsgContant.CREATE_USER_SMS)){
+            msgUtilClient.sendSms(MsgContant.CREATE_USER_SMS, adminUser, adminUser.getUsername(),adminUser.getPassword());
+        }
+        if (companyBandMsg.contains(MsgContant.CREATE_USER_OFFICIAL)){
+            msgUtilClient.sendOfficial(MsgContant.CREATE_USER_OFFICIAL, adminUser, adminUser.getUsername(),adminUser.getPassword());
+        }
         return adminUser;
     }
 
@@ -153,38 +158,16 @@ public class AdminUserManagerImpl implements AdminUserManager {
      * @return AdminUser 平台管理员
      */
     @Override
-    @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    @Transactional( propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public AdminUser edit(AdminUserVO adminUserVO, Long id) {
         //对要修改的管理员是否存在进行校验
         AdminUser adminUser = this.getModel(id);
         if (adminUser == null) {
             throw new ResourceNotFoundException("需要修改的账号不存在");
         }
-        if (!Objects.equals(AdminUserContext.getCompanyId(), adminUser.getCompanyId())) {
-            throw new ServiceException("只能修改自己公司的账号");
-        }
         if ("admin".equals(adminUser.getUsername()) && !"admin".equals(adminUserVO.getUsername())) {
             throw new ServiceException("admin 登录名称不允许修改");
         }
-//        //如果修改的是从超级管理员到普通管理员 需要校验此管理员是否是最后一个超级管理员
-//        if (adminUser.getFounder().equals(1) && !adminUserVO.getFounder().equals(1)) {
-//
-//            QueryWrapper<AdminUser> wrapper = new QueryWrapper<>();
-//            wrapper.eq("founder", 1).eq("user_state", 0);
-//            List<AdminUser> adminUsers = adminUserMapper.selectList(wrapper);
-//
-//            if (adminUsers.size() <= 1) {
-//                throw new ServiceException(SystemErrorCode.E916.code(), "必须保留一个超级管理员");
-//            }
-//        }
-//        if (!adminUserVO.getFounder().equals(1)) {
-//            RoleDO roleDO = roleManager.getModel(adminUserVO.getRoleId());
-//            if (roleDO == null) {
-//                throw new ResourceNotFoundException("所属权限不存在");
-//            }
-//        } else {
-//            adminUserVO.setRoleId(0L);
-//        }
         //管理员原密码
         String password = adminUser.getPassword();
         //对管理员是否修改密码进行校验
@@ -193,7 +176,7 @@ public class AdminUserManagerImpl implements AdminUserManager {
             if (!bool) {
                 throw new ServiceException(SystemErrorCode.E917.code(), "密码格式不正确");
             }
-            adminUserVO.setPassword(StringUtil.md5(adminUserVO.getPassword() + adminUser.getUsername().toLowerCase()));
+            adminUserVO.setPassword(StringUtil.md5(adminUserVO.getPassword()));
         } else {
             adminUserVO.setPassword(password);
         }
@@ -201,6 +184,19 @@ public class AdminUserManagerImpl implements AdminUserManager {
         adminUserVO.setUsername(adminUser.getUsername());
         BeanUtil.copyProperties(adminUserVO, adminUser);
         adminUserMapper.updateById(adminUser);
+
+        //发消息
+        List<String> companyBandMsg = companyBandMsgManager.getCompanyBandMsgCode(adminUser.getCompanyId());
+            msgUtilClient.sendSys(MsgContant.UPDATE_USER_SYSTEM, adminUser, adminUser.getUsername(),adminUser.getPassword());
+        if (companyBandMsg.contains(MsgContant.UPDATE_USER_MAIL)){
+            msgUtilClient.sendMail(MsgContant.UPDATE_USER_MAIL, adminUser,LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE), adminUser.getUsername(),adminUser.getPassword());
+        }
+        if (companyBandMsg.contains(MsgContant.UPDATE_USER_SMS)){
+            msgUtilClient.sendSms(MsgContant.UPDATE_USER_SMS, adminUser,LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE), adminUser.getUsername(),adminUser.getPassword());
+        }
+        if (companyBandMsg.contains(MsgContant.UPDATE_USER_OFFICIAL)){
+            msgUtilClient.sendOfficial(MsgContant.UPDATE_USER_OFFICIAL, adminUser,LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE), adminUser.getUsername(),adminUser.getPassword());
+        }
         return adminUser;
     }
 
@@ -467,8 +463,10 @@ public class AdminUserManagerImpl implements AdminUserManager {
     @Override
     public List<AdminUser> getUserByCompany() {
         //找出所有人子部门下的所有人
-        return adminUserMapper.selectList(new LambdaQueryWrapper<AdminUser>()
-                .eq(ObjectUtil.isNotNull(AdminUserContext.getAdminUserId()), AdminUser::getCompanyId, AdminUserContext.getAdminUserId()));
+        List<AdminUser> adminUsers = adminUserMapper.selectList(new LambdaQueryWrapper<AdminUser>()
+                .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), AdminUser::getCompanyId, AdminUserContext.getCompanyId()));
+
+        return adminUsers;
     }
 
 

+ 10 - 7
module-erp/src/main/java/com/hys/app/service/system/impl/DeptManagerImpl.java

@@ -1,5 +1,6 @@
 package com.hys.app.service.system.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
@@ -18,6 +19,7 @@ import com.hys.app.mapper.system.DeptMapper;
 import com.hys.app.model.base.CachePrefix;
 import com.hys.app.model.base.context.Region;
 import com.hys.app.model.system.dos.DeptDO;
+import com.hys.app.model.system.vo.DeptBaseVO;
 import com.hys.app.model.system.vo.Menus;
 import com.hys.app.service.erp.WarehouseManager;
 import com.hys.app.service.system.AdminUserManager;
@@ -61,10 +63,10 @@ public class DeptManagerImpl extends BaseServiceImpl<DeptMapper, DeptDO> impleme
     private RoleMapper roleMapper;
 
     @Override
-    public Long createDept(DeptCreateDTO reqVO, Region region) {
+    public Long createDept(DeptCreateDTO reqVO) {
         validateForCreateOrUpdate(null, reqVO.getParentId(), reqVO.getName());
         // 插入部门
-        DeptDO dept = converter.convert(reqVO, region);
+        DeptDO dept = BeanUtil.copyProperties(reqVO, DeptDO.class);
         dept.setCompanyId(AdminUserContext.getCompanyId());
         deptMapper.insert(dept);
         cache.remove(CachePrefix.DEPT_CHILDREN_ID_LIST.getPrefix());
@@ -72,16 +74,17 @@ public class DeptManagerImpl extends BaseServiceImpl<DeptMapper, DeptDO> impleme
     }
 
     @Override
-    public void updateDept(DeptUpdateDTO reqVO, Region region) {
+    public void updateDept(DeptBaseVO reqVO, Long id) {
         // 校验正确性
         if (reqVO.getParentId() == null) {
             reqVO.setParentId(DeptDO.ROOT_ID);
         }
-        validateForCreateOrUpdate(reqVO.getId(), reqVO.getParentId(), reqVO.getName());
+        DeptDO byId = getById(id);
+        validateForCreateOrUpdate(id, reqVO.getParentId(), reqVO.getName());
         // 更新部门
-        DeptDO updateObj = converter.convert(reqVO, region);
-        updateObj.setCompanyId(AdminUserContext.getCompanyId());
-        deptMapper.updateById(updateObj);
+       BeanUtil.copyProperties(reqVO,byId);
+        byId.setCompanyId(AdminUserContext.getCompanyId());
+        deptMapper.updateById(byId);
         cache.remove(CachePrefix.DEPT_CHILDREN_ID_LIST.getPrefix());
     }
 

+ 0 - 1
module-erp/src/main/java/com/hys/app/service/system/impl/MenuManagerImpl.java

@@ -246,7 +246,6 @@ public class MenuManagerImpl implements MenuManager {
     /**
      * 根据id获取菜单集合
      *
-     * @param id 菜单的id
      * @return
      */
     @Override

+ 42 - 53
module-erp/src/main/java/com/hys/app/service/system/impl/RoleManagerImpl.java

@@ -55,8 +55,6 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
     private AdminUserMapper adminUserMapper;
     @Autowired
     private RoleMapper roleMapper;
-    @Autowired
-    private AdminUserManager adminUserManager;
 
     /**
      * 查询角色表列表
@@ -85,7 +83,7 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
      * @return Role 角色表
      */
     @Override
-    @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    @Transactional( propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public RoleVO add(RoleVO role) {
 
         this.checkRole(role);
@@ -95,7 +93,7 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
         roleDO.setRoleDescribe(role.getRoleDescribe());
         roleDO.setDataScope(role.getDataScope());
         roleDO.setDeptIds(role.getDeptIds());
-        roleDO.setCompanyId(AdminUserContext.getCompanyId());
+        roleDO.setCompanyId(ObjectUtil.isNotNull(AdminUserContext.getCompanyId())?AdminUserContext.getCompanyId():null);
         roleMapper.insert(roleDO);
         role.setRoleId(roleDO.getRoleId());
 
@@ -110,28 +108,18 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
      * @param role
      */
     private void checkRole(RoleVO role) {
+        List list = roleMapper.selectList(new LambdaQueryWrapper<RoleDO>()
+                .eq(RoleDO::getRoleName, role.getRoleName())
+                .ne(ObjectUtil.isNotNull(role.getRoleId()), RoleDO::getRoleId, role.getRoleId())
+                .eq(ObjectUtil.isNotNull(AdminUserContext.getCompanyId()), RoleDO::getCompanyId, AdminUserContext.getCompanyId()));
 
-        Long id = role.getRoleId();
-
-        QueryWrapper<RoleDO> wrapper = new QueryWrapper<>();
-
-        //添加
-        wrapper.eq(id == null, "role_name", role.getRoleName());
-
-        wrapper.eq("role_name", role.getRoleName());
-        wrapper.ne("role_id", id);
-        wrapper.ne("company_id", AdminUserContext.getCompanyId());
-
-
-        List list = roleMapper.selectList(wrapper);
-
-        if (list.size() > 0) {
+        if (!list.isEmpty()) {
             throw new ServiceException(SystemErrorCode.E924.code(), "角色名称重复");
         }
-
-        if(role.getDataScope() == DataPermissionScopeEnum.DEPT_CUSTOM && role.getDeptIds() == null){
-            role.setDeptIds("");
-        }
+//
+//        if(role.getDataScope() == DataPermissionScopeEnum.DEPT_CUSTOM && role.getDeptIds() == null){
+//            role.setDeptIds("");
+//        }
     }
 
     /**
@@ -142,7 +130,7 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
      * @return Role 角色表
      */
     @Override
-    @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    @Transactional( propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public RoleVO edit(RoleVO role, Long id) {
         //校验权限是否存在
         RoleDO roleDO = this.getModel(id);
@@ -171,7 +159,7 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
      * @param id 角色表主键
      */
     @Override
-    @Transactional(value = "systemTransactionManager", propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    @Transactional( propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void delete(Long id) {
         RoleDO roleDO = this.getModel(id);
         if (roleDO == null) {
@@ -285,34 +273,35 @@ public class RoleManagerImpl extends ServiceImpl<RoleMapper, RoleDO> implements
     @Override
     @DataPermission(enable = false)
     public DataPermissionDTO getDataPermission(Long adminUserId) {
-        // 默认可以查看自己的数据
-        DataPermissionDTO result = new DataPermissionDTO();
-        result.setSelf(true);
-
-        // 获取用户的部门id    todo 改为本地缓存
-        AdminUser adminUser = adminUserManager.getModel(adminUserId);
-        if(adminUser.getRoleId() == 0){
-            result.setAll(true);
-            return result;
-        }
-
-        // 获得用户的角色      todo 改为本地缓存
-        RoleDO role = getModel(adminUser.getRoleId());
-
-        // 情况一,全部数据权限
-        if (role.getDataScope() == DataPermissionScopeEnum.ALL) {
-            result.setAll(true);
-        }
-        // 情况二,指定部门数据权限
-        if (role.getDataScope() == DataPermissionScopeEnum.DEPT_CUSTOM) {
-            // 指定部门的id集合
-            Set<Long> deptIds = Arrays.stream(role.getDeptIds().split(","))
-                    .filter(StringUtil::notEmpty).map(Long::valueOf).collect(Collectors.toSet());
-            result.setDeptIds(deptIds);
-            // 可以看到自己所在部门的数据,防止看不到自己发布的单据
-            deptIds.add(adminUser.getDeptId());
-        }
-        return result;
+//        // 默认可以查看自己的数据
+//        DataPermissionDTO result = new DataPermissionDTO();
+//        result.setSelf(true);
+//
+//        // 获取用户的部门id    todo 改为本地缓存
+//        AdminUser adminUser = adminUserManager.getModel(adminUserId);
+//        if(adminUser.getRoleId() == 0){
+//            result.setAll(true);
+//            return result;
+//        }
+//
+//        // 获得用户的角色      todo 改为本地缓存
+//        RoleDO role = getModel(adminUser.getRoleId());
+//
+//        // 情况一,全部数据权限
+//        if (role.getDataScope() == DataPermissionScopeEnum.ALL) {
+//            result.setAll(true);
+//        }
+//        // 情况二,指定部门数据权限
+//        if (role.getDataScope() == DataPermissionScopeEnum.DEPT_CUSTOM) {
+//            // 指定部门的id集合
+//            Set<Long> deptIds = Arrays.stream(role.getDeptIds().split(","))
+//                    .filter(StringUtil::notEmpty).map(Long::valueOf).collect(Collectors.toSet());
+//            result.setDeptIds(deptIds);
+//            // 可以看到自己所在部门的数据,防止看不到自己发布的单据
+//            deptIds.add(adminUser.getDeptId());
+//        }
+//        return result;
+        return null;
     }
 
     /**

+ 0 - 3
module-erp/src/main/resources/mapper/ProductStockMapper.xml

@@ -21,7 +21,6 @@
         w.name as warehouse_name,
         g.id as goods_id,
         g.name as goodsName,
-        g.bar_code as goods_bar_code,
         g.sn ,
         p.id as product_id,
         p.name as product_name,
@@ -40,7 +39,6 @@
             <if test="request.keyword != null and request.keyword != ''">
                 and (
                 g.name like concat("%",#{request.keyword },"%")
-                or g.bar_code like concat("%",#{request.keyword },"%")
                 or g.name like concat("%",#{request.keyword },"%")
                 )
             </if>
@@ -69,7 +67,6 @@
             <if test="request.keyword != null and request.keyword != ''">
                 and (
                 g.name like concat("%",#{request.keyword },"%")
-                or g.bar_code like concat("%",#{request.keyword },"%")
                 or g.name like concat("%",#{request.keyword },"%")
                 )
             </if>

+ 11 - 0
server/src/main/resources/application.yml

@@ -69,4 +69,15 @@ merchantPayInfo:
   dutyParagraph: 91310117MA7JB1TQ71
   invoice: 崴叁(上海)文化传媒有限公司
 
+kuangshi:
+  apikey: Jn5BwrI0kuXx8HFNb6ZsxC86s1b6-URH
+  apiSecret: uxMKTbXzGyTyDrh6ABm0bs25VxGF6uLt
+  idCardUrl: https://api-cn.faceplusplus.com/cardpp/v1/ocridcard
+  licenseUrl: https://api-cn.faceplusplus.com/cardpp/v1/business_license
+
+
+ali:
+  apikey:  LTAI5t9RbXSuirMa8AkvHxQf
+  access_secret:  VCmMZvMKrcN2tBHXdenyEKJIoKbwQf
+