diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java index 712758f6d..064239622 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountController.java @@ -7,8 +7,8 @@ import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Account; import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; -import com.jsh.erp.service.account.AccountService; -import com.jsh.erp.service.systemConfig.SystemConfigService; +import com.jsh.erp.service.AccountService; +import com.jsh.erp.service.SystemConfigService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountHeadController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountHeadController.java index 37ab599a3..99729f65f 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountHeadController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountHeadController.java @@ -7,7 +7,7 @@ import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.AccountHead; import com.jsh.erp.datasource.entities.AccountHeadVo4Body; import com.jsh.erp.datasource.entities.AccountHeadVo4ListEx; -import com.jsh.erp.service.accountHead.AccountHeadService; +import com.jsh.erp.service.AccountHeadService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountItemController.java index 6d8f6694e..7ced5b224 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/AccountItemController.java @@ -4,8 +4,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.vo.AccountItemVo4List; -import com.jsh.erp.service.accountHead.AccountHeadService; -import com.jsh.erp.service.accountItem.AccountItemService; +import com.jsh.erp.service.AccountHeadService; +import com.jsh.erp.service.AccountItemService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.StringUtil; import io.swagger.annotations.Api; @@ -21,9 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * @author ji sheng hua 752*718*920 diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotController.java index d531a1507..b3b5b3be4 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotController.java @@ -7,9 +7,9 @@ import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Depot; import com.jsh.erp.datasource.entities.DepotEx; import com.jsh.erp.datasource.entities.MaterialInitialStock; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.DepotService; +import com.jsh.erp.service.MaterialService; +import com.jsh.erp.service.UserBusinessService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java index a0b4bc8b5..63cd23cef 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotHeadController.java @@ -12,11 +12,11 @@ import com.jsh.erp.datasource.vo.DepotHeadVo4InDetail; import com.jsh.erp.datasource.vo.DepotHeadVo4InOutMCount; import com.jsh.erp.datasource.vo.DepotHeadVo4List; import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.DepotService; +import com.jsh.erp.service.DepotHeadService; +import com.jsh.erp.service.MaterialService; +import com.jsh.erp.service.SystemConfigService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java index 21f60d6ab..d05d812f7 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/DepotItemController.java @@ -9,14 +9,14 @@ import com.jsh.erp.datasource.vo.DepotItemStockWarningCount; import com.jsh.erp.datasource.vo.DepotItemVoBatchNumberList; import com.jsh.erp.datasource.vo.InOutPriceVo; import com.jsh.erp.exception.BusinessRunTimeException; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.depotItem.DepotItemService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.role.RoleService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.unit.UnitService; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.DepotService; +import com.jsh.erp.service.DepotHeadService; +import com.jsh.erp.service.DepotItemService; +import com.jsh.erp.service.MaterialService; +import com.jsh.erp.service.RoleService; +import com.jsh.erp.service.SystemConfigService; +import com.jsh.erp.service.UnitService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/FunctionController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/FunctionController.java index d71be18c8..196b485dd 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/FunctionController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/FunctionController.java @@ -8,9 +8,9 @@ import com.jsh.erp.datasource.entities.Function; import com.jsh.erp.datasource.entities.FunctionEx; import com.jsh.erp.datasource.entities.SystemConfig; import com.jsh.erp.datasource.entities.UserBusiness; -import com.jsh.erp.service.functions.FunctionService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.FunctionService; +import com.jsh.erp.service.SystemConfigService; +import com.jsh.erp.service.UserBusinessService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/InOutItemController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/InOutItemController.java index aa5ff5701..6a33dfe95 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/InOutItemController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/InOutItemController.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.InOutItem; -import com.jsh.erp.service.inOutItem.InOutItemService; +import com.jsh.erp.service.InOutItemService; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/LogController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/LogController.java index 5e71ac06c..637a926fa 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/LogController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/LogController.java @@ -5,7 +5,7 @@ import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Log; import com.jsh.erp.datasource.vo.LogVo4List; -import com.jsh.erp.service.log.LogService; +import com.jsh.erp.service.LogService; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialAttributeController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialAttributeController.java index 3da8bacd2..30c0cc170 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialAttributeController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialAttributeController.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.MaterialAttribute; -import com.jsh.erp.service.materialAttribute.MaterialAttributeService; +import com.jsh.erp.service.MaterialAttributeService; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java index caedc5cbe..506c0f71e 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialCategoryController.java @@ -7,7 +7,7 @@ import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.MaterialCategory; import com.jsh.erp.datasource.vo.TreeNode; -import com.jsh.erp.service.materialCategory.MaterialCategoryService; +import com.jsh.erp.service.MaterialCategoryService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java index 7f28df6d8..ed97e9ea0 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialController.java @@ -8,13 +8,13 @@ import com.jsh.erp.datasource.entities.Material; import com.jsh.erp.datasource.entities.MaterialExtend; import com.jsh.erp.datasource.entities.MaterialVo4Unit; import com.jsh.erp.datasource.entities.Unit; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotItem.DepotItemService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.role.RoleService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.unit.UnitService; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.DepotService; +import com.jsh.erp.service.DepotItemService; +import com.jsh.erp.service.MaterialService; +import com.jsh.erp.service.RoleService; +import com.jsh.erp.service.SystemConfigService; +import com.jsh.erp.service.UnitService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java index 009f8a1a8..c1a45a753 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialExtendController.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.datasource.entities.MaterialExtend; import com.jsh.erp.datasource.vo.MaterialExtendVo4List; -import com.jsh.erp.service.materialExtend.MaterialExtendService; +import com.jsh.erp.service.MaterialExtendService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialPropertyController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialPropertyController.java index 234728c57..0da64f412 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialPropertyController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MaterialPropertyController.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.MaterialProperty; -import com.jsh.erp.service.materialProperty.MaterialPropertyService; +import com.jsh.erp.service.MaterialPropertyService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/MsgController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/MsgController.java index 8491a7ab2..db690cbdd 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/MsgController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/MsgController.java @@ -5,7 +5,7 @@ import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Msg; import com.jsh.erp.datasource.entities.MsgEx; -import com.jsh.erp.service.msg.MsgService; +import com.jsh.erp.service.MsgService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/OrganizationController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/OrganizationController.java index bce838751..8aab77b39 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/OrganizationController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/OrganizationController.java @@ -6,8 +6,8 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.entities.Organization; import com.jsh.erp.datasource.vo.TreeNode; -import com.jsh.erp.service.organization.OrganizationService; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.OrganizationService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.ErpInfo; import io.swagger.annotations.Api; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/PersonController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/PersonController.java index f9d41b3c6..ac244aeeb 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/PersonController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/PersonController.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Person; -import com.jsh.erp.service.person.PersonService; +import com.jsh.erp.service.PersonService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/PlatformConfigController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/PlatformConfigController.java index 7ee2ac568..7d8d0dea1 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/PlatformConfigController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/PlatformConfigController.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.PlatformConfig; -import com.jsh.erp.service.platformConfig.PlatformConfigService; +import com.jsh.erp.service.PlatformConfigService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/PluginController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/PluginController.java index 011e34847..87fcb07db 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/PluginController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/PluginController.java @@ -5,7 +5,7 @@ import com.gitee.starblues.integration.operator.PluginOperator; import com.gitee.starblues.integration.operator.module.PluginInfo; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.entities.User; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.ComputerInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/RoleController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/RoleController.java index 7f1e16fc4..cdbed023f 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/RoleController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/RoleController.java @@ -6,8 +6,8 @@ import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Role; import com.jsh.erp.datasource.entities.RoleEx; -import com.jsh.erp.service.role.RoleService; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.RoleService; +import com.jsh.erp.service.UserBusinessService; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SequenceController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SequenceController.java index ffe922662..f0c4ec797 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SequenceController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SequenceController.java @@ -1,7 +1,6 @@ package com.jsh.erp.controller; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.sequence.SequenceService; +import com.jsh.erp.service.SequenceService; import com.jsh.erp.utils.BaseResponseInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java index b922a888f..a2c9bc068 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SerialNumberController.java @@ -3,9 +3,9 @@ package com.jsh.erp.controller; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.datasource.entities.DepotItem; import com.jsh.erp.datasource.entities.SerialNumberEx; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.depotItem.DepotItemService; -import com.jsh.erp.service.serialNumber.SerialNumberService; +import com.jsh.erp.service.DepotHeadService; +import com.jsh.erp.service.DepotItemService; +import com.jsh.erp.service.SerialNumberService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.Tools; import io.swagger.annotations.Api; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java index 69bb542d0..ce81ed8ba 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SupplierController.java @@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Supplier; -import com.jsh.erp.service.supplier.SupplierService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.SupplierService; +import com.jsh.erp.service.SystemConfigService; +import com.jsh.erp.service.UserService; +import com.jsh.erp.service.UserBusinessService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/SystemConfigController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/SystemConfigController.java index f535605f4..844bed2e4 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/SystemConfigController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/SystemConfigController.java @@ -4,12 +4,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; -import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.entities.SystemConfig; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.SystemConfigService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -30,7 +26,6 @@ import java.awt.image.BufferedImage; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/TenantController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/TenantController.java index b8bf027f9..7619555bb 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/TenantController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/TenantController.java @@ -5,7 +5,7 @@ import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.Tenant; import com.jsh.erp.datasource.entities.TenantEx; -import com.jsh.erp.service.tenant.TenantService; +import com.jsh.erp.service.TenantService; import com.jsh.erp.utils.Constants; import com.jsh.erp.utils.ErpInfo; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/UnitController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/UnitController.java index cc81da8f4..406d2775b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/UnitController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/UnitController.java @@ -3,9 +3,8 @@ package com.jsh.erp.controller; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; -import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.entities.Unit; -import com.jsh.erp.service.unit.UnitService; +import com.jsh.erp.service.UnitService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -15,7 +14,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserBusinessController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserBusinessController.java index 38bd4b5a2..f49793489 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserBusinessController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserBusinessController.java @@ -2,7 +2,7 @@ package com.jsh.erp.controller; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.datasource.entities.UserBusiness; -import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.service.UserBusinessService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.ErpInfo; import io.swagger.annotations.Api; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java index da484601c..fd2070c99 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/controller/UserController.java @@ -13,10 +13,10 @@ import com.jsh.erp.datasource.entities.UserEx; import com.jsh.erp.datasource.vo.TreeNodeEx; import com.jsh.erp.exception.BusinessParamCheckingException; import com.jsh.erp.exception.BusinessRunTimeException; -import com.jsh.erp.service.redis.RedisService; -import com.jsh.erp.service.role.RoleService; -import com.jsh.erp.service.tenant.TenantService; -import com.jsh.erp.service.user.UserService; +import com.jsh.erp.service.RedisService; +import com.jsh.erp.service.RoleService; +import com.jsh.erp.service.TenantService; +import com.jsh.erp.service.UserService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/filter/LogCostFilter.java b/jshERP-boot/src/main/java/com/jsh/erp/filter/LogCostFilter.java index 6dc472c17..e17155e8b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/filter/LogCostFilter.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/filter/LogCostFilter.java @@ -1,6 +1,6 @@ package com.jsh.erp.filter; -import com.jsh.erp.service.redis.RedisService; +import com.jsh.erp.service.RedisService; import org.springframework.util.StringUtils; import javax.annotation.Resource; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java index 25beabd36..af32a710a 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/accountHead/AccountHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountHeadService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.accountHead; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -11,12 +11,6 @@ import com.jsh.erp.datasource.mappers.AccountItemMapperEx; import com.jsh.erp.datasource.mappers.AccountMapper; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.accountItem.AccountItemService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; -import com.jsh.erp.service.supplier.SupplierService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountItemService.java similarity index 96% rename from jshERP-boot/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/AccountItemService.java index 325dc1517..d03680a52 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/accountItem/AccountItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountItemService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.accountItem; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -6,17 +6,12 @@ import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.AccountItem; import com.jsh.erp.datasource.entities.AccountItemExample; -import com.jsh.erp.datasource.entities.DepotHead; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.AccountItemMapper; import com.jsh.erp.datasource.mappers.AccountItemMapperEx; import com.jsh.erp.datasource.vo.AccountItemVo4List; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; @@ -27,7 +22,6 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/AccountService.java index d80f5f64f..91d0a94ae 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/account/AccountService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/AccountService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.account; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.PageDomain; @@ -11,9 +11,6 @@ import com.jsh.erp.datasource.vo.AccountVo4InOutList; import com.jsh.erp.datasource.vo.AccountVo4List; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java similarity index 97% rename from jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java index 89894f2c6..83bc4dded 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotHeadService.java @@ -1,1729 +1,1714 @@ -package com.jsh.erp.service.depotHead; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; -import com.jsh.erp.datasource.entities.*; -import com.jsh.erp.datasource.mappers.DepotHeadMapper; -import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; -import com.jsh.erp.datasource.mappers.DepotItemMapperEx; -import com.jsh.erp.datasource.vo.*; -import com.jsh.erp.exception.BusinessRunTimeException; -import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.account.AccountService; -import com.jsh.erp.service.accountHead.AccountHeadService; -import com.jsh.erp.service.accountItem.AccountItemService; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotItem.DepotItemService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; -import com.jsh.erp.service.person.PersonService; -import com.jsh.erp.service.role.RoleService; -import com.jsh.erp.service.sequence.SequenceService; -import com.jsh.erp.service.serialNumber.SerialNumberService; -import com.jsh.erp.service.supplier.SupplierService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; -import com.jsh.erp.utils.ExcelUtils; -import com.jsh.erp.utils.PageUtils; -import com.jsh.erp.utils.StringUtil; -import com.jsh.erp.utils.Tools; -import jxl.Workbook; -import jxl.write.WritableWorkbook; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.*; -import java.util.stream.Collectors; - -import static com.jsh.erp.utils.Tools.getCenternTime; -import static com.jsh.erp.utils.Tools.getNow3; - -@Service -public class DepotHeadService { - private Logger logger = LoggerFactory.getLogger(DepotHeadService.class); - - @Resource - private DepotHeadMapper depotHeadMapper; - @Resource - private DepotHeadMapperEx depotHeadMapperEx; - @Resource - private UserService userService; - @Resource - private RoleService roleService; - @Resource - private DepotService depotService; - @Resource - DepotItemService depotItemService; - @Resource - private SupplierService supplierService; - @Resource - private UserBusinessService userBusinessService; - @Resource - private SystemConfigService systemConfigService; - @Resource - private SerialNumberService serialNumberService; - @Resource - private OrgaUserRelService orgaUserRelService; - @Resource - private PersonService personService; - @Resource - private AccountService accountService; - @Resource - private AccountHeadService accountHeadService; - @Resource - private AccountItemService accountItemService; - @Resource - private SequenceService sequenceService; - @Resource - DepotItemMapperEx depotItemMapperEx; - @Resource - private LogService logService; - - public DepotHead getDepotHead(long id)throws Exception { - DepotHead result=null; - try{ - result=depotHeadMapper.selectByPrimaryKey(id); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - public List getDepotHead()throws Exception { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list=null; - try{ - list=depotHeadMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public List select(String type, String subType, String hasDebt, String status, String purchaseStatus, String number, String linkApply, String linkNumber, - String beginTime, String endTime, String materialParam, Long organId, Long creator, Long depotId, Long accountId, String remark) throws Exception { - List list = new ArrayList<>(); - try{ - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - Long userId = userService.getUserId(request); - String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); - String billCategory = getBillCategory(subType); - String [] depotArray = getDepotArray(subType); - String [] creatorArray = getCreatorArray(); - String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; - String [] purchaseStatusArray = StringUtil.isNotEmpty(purchaseStatus) ? purchaseStatus.split(",") : null; - String [] organArray = getOrganArray(subType, purchaseStatus); - //以销定购,查看全部数据 - creatorArray = StringUtil.isNotEmpty(purchaseStatus) ? null: creatorArray; - Map personMap = personService.getPersonMap(); - Map accountMap = accountService.getAccountMap(); - beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - PageUtils.startPage(); - list = depotHeadMapperEx.selectByConditionDepotHead(type, subType, creatorArray, hasDebt, - statusArray, purchaseStatusArray, number, linkApply, linkNumber, beginTime, endTime, - materialParam, organId, organArray, creator, depotId, depotArray, accountId, remark); - if (null != list) { - List idList = new ArrayList<>(); - List numberList = new ArrayList<>(); - for (DepotHeadVo4List dh : list) { - idList.add(dh.getId()); - numberList.add(dh.getNumber()); - } - //通过批量查询去构造map - Map finishDepositMap = getFinishDepositMapByNumberList(numberList); - Map financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); - Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); - Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); - Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); - for (DepotHeadVo4List dh : list) { - if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { - String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); - dh.setAccountName(accountStr); - } - if(dh.getAccountIdList() != null) { - String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); - dh.setAccountIdList(accountidlistStr); - } - if(dh.getAccountMoneyList() != null) { - String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); - dh.setAccountMoneyList(accountmoneylistStr); - } - if(dh.getChangeAmount() != null) { - dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); - } else { - dh.setChangeAmount(BigDecimal.ZERO); - } - if(dh.getTotalPrice() != null) { - BigDecimal lastTotalPrice = BusinessConstants.SUB_TYPE_CHECK_ENTER.equals(dh.getSubType())|| - BusinessConstants.SUB_TYPE_REPLAY.equals(dh.getSubType())?dh.getTotalPrice():dh.getTotalPrice().abs(); - dh.setTotalPrice(roleService.parseBillPriceByLimit(lastTotalPrice, billCategory, priceLimit, request)); - } - BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; - dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); - BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; - dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); - if(dh.getDeposit() == null) { - dh.setDeposit(BigDecimal.ZERO); - } else { - dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); - } - //已经完成的欠款 - if(finishDepositMap!=null) { - BigDecimal finishDeposit = finishDepositMap.get(dh.getNumber()) != null ? finishDepositMap.get(dh.getNumber()) : BigDecimal.ZERO; - dh.setFinishDeposit(roleService.parseBillPriceByLimit(finishDeposit, billCategory, priceLimit, request)); - } - //欠款计算 - BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; - BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; - BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; - BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); - dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); - //是否有付款单或收款单 - if(financialBillNoMap!=null) { - Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); - dh.setHasFinancialFlag(financialBillNoSize!=null && financialBillNoSize>0); - } - //是否有退款单 - if(billSizeMap!=null) { - Integer billListSize = billSizeMap.get(dh.getNumber()); - dh.setHasBackFlag(billListSize!=null && billListSize>0); - } - if(StringUtil.isNotEmpty(dh.getSalesMan())) { - dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); - } - if(dh.getOperTime() != null) { - dh.setOperTimeStr(getCenternTime(dh.getOperTime())); - } - //商品信息简述 - if(materialsListMap!=null) { - dh.setMaterialsList(materialsListMap.get(dh.getId())); - } - //商品总数量 - if(materialCountListMap!=null) { - dh.setMaterialCount(materialCountListMap.get(dh.getId())); - } - //以销定购的情况(不能显示销售单据的金额和客户名称) - if(StringUtil.isNotEmpty(purchaseStatus)) { - dh.setOrganName("****"); - dh.setTotalPrice(null); - dh.setDiscountLastMoney(null); - } - } - } - } catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - /** - * 根据单据类型获取仓库数组 - * @param subType - * @return - * @throws Exception - */ - public String[] getDepotArray(String subType) throws Exception { - String [] depotArray = null; - if(!BusinessConstants.SUB_TYPE_PURCHASE_APPLY.equals(subType) - && !BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(subType) - && !BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType)) { - String depotIds = depotService.findDepotStrByCurrentUser(); - depotArray = StringUtil.isNotEmpty(depotIds) ? depotIds.split(",") : null; - } - return depotArray; - } - - /** - * 根据角色类型获取操作员数组 - * @return - * @throws Exception - */ - public String[] getCreatorArray() throws Exception { - String creator = getCreatorByCurrentUser(); - String [] creatorArray=null; - if(StringUtil.isNotEmpty(creator)){ - creatorArray = creator.split(","); - } - return creatorArray; - } - - /** - * 根据角色类型获取操作员数组 - * @param organizationId - * @return - * @throws Exception - */ - public String[] getCreatorArrayByOrg(Long organizationId) throws Exception { - List userIdList = orgaUserRelService.getUserIdListByOrgId(organizationId); - if(userIdList.size()>0) { - List userIdStrList = userIdList.stream().map(Object::toString).collect(Collectors.toList()); - return StringUtil.listToStringArray(userIdStrList); - } else { - return "-1".split(","); - } - } - - /** - * 获取机构数组 - * @return - */ - public String[] getOrganArray(String subType, String purchaseStatus) throws Exception { - String [] organArray = null; - String type = "UserCustomer"; - Long userId = userService.getCurrentUser().getId(); - //获取权限信息 - String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, userId.toString()); - List supplierList = supplierService.findBySelectCus(); - if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType) || BusinessConstants.SUB_TYPE_SALES.equals(subType) - ||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType) ) { - //采购订单里面选择销售订单的时候不要过滤 - if(StringUtil.isEmpty(purchaseStatus)) { - if (null != supplierList && supplierList.size() > 0) { - boolean customerFlag = systemConfigService.getCustomerFlag(); - List organList = new ArrayList<>(); - for (Supplier supplier : supplierList) { - boolean flag = ubValue.contains("[" + supplier.getId().toString() + "]"); - if (!customerFlag || flag) { - organList.add(supplier.getId().toString()); - } - } - if(organList.size() > 0) { - organArray = StringUtil.listToStringArray(organList); - } - } - } - } - return organArray; - } - - /** - * 根据角色类型获取操作员 - * @return - * @throws Exception - */ - public String getCreatorByCurrentUser() throws Exception { - String creator = ""; - User user = userService.getCurrentUser(); - String roleType = userService.getRoleTypeByUserId(user.getId()).getType(); //角色类型 - if(BusinessConstants.ROLE_TYPE_PRIVATE.equals(roleType)) { - creator = user.getId().toString(); - } else if(BusinessConstants.ROLE_TYPE_THIS_ORG.equals(roleType)) { - creator = orgaUserRelService.getUserIdListByUserId(user.getId()); - } - return creator; - } - - public Map getFinishDepositMapByNumberList(List numberList) { - Map finishDepositMap = new HashMap<>(); - if(numberList.size()>0) { - List list = depotHeadMapperEx.getFinishDepositByNumberList(numberList); - if(list!=null && list.size()>0) { - for (FinishDepositVo finishDepositVo : list) { - if(finishDepositVo!=null) { - finishDepositMap.put(finishDepositVo.getNumber(), finishDepositVo.getFinishDeposit()); - } - } - } - } - return finishDepositMap; - } - - public Map getBillSizeMapByLinkNumberList(List numberList) throws Exception { - Map billListMap = new HashMap<>(); - if(numberList.size()>0) { - List list = getBillListByLinkNumberList(numberList); - if(list!=null && list.size()>0) { - for (DepotHead depotHead : list) { - if(depotHead!=null) { - billListMap.put(depotHead.getLinkNumber(), list.size()); - } - } - } - } - return billListMap; - } - - public Map getFinancialBillNoMapByBillIdList(List idList) { - Map billListMap = new HashMap<>(); - if(idList.size()>0) { - List list = accountHeadService.getFinancialBillNoByBillIdList(idList); - if(list!=null && list.size()>0) { - for (AccountItem accountItem : list) { - if(accountItem!=null) { - billListMap.put(accountItem.getBillId(), list.size()); - } - } - } - } - return billListMap; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int insertDepotHead(JSONObject obj, HttpServletRequest request)throws Exception { - DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); - depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); - depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); - int result=0; - try{ - result=depotHeadMapper.insert(depotHead); - logService.insertLog("单据", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int updateDepotHead(JSONObject obj, HttpServletRequest request) throws Exception{ - DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); - DepotHead dh=null; - try{ - dh = depotHeadMapper.selectByPrimaryKey(depotHead.getId()); - }catch(Exception e){ - JshException.readFail(logger, e); - } - depotHead.setStatus(dh.getStatus()); - depotHead.setCreateTime(dh.getCreateTime()); - int result=0; - try{ - result = depotHeadMapper.updateByPrimaryKey(depotHead); - logService.insertLog("单据", - new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getId()).toString(), request); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int deleteDepotHead(Long id, HttpServletRequest request)throws Exception { - return batchDeleteBillByIds(id.toString()); - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchDeleteDepotHead(String ids, HttpServletRequest request)throws Exception { - return batchDeleteBillByIds(ids); - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchDeleteBillByIds(String ids)throws Exception { - StringBuffer sb = new StringBuffer(); - sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); - List dhList = getDepotHeadListByIds(ids); - for(DepotHead depotHead: dhList){ - //只有未审核的单据才能被删除 - if(!"0".equals(depotHead.getStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_MSG)); - } - } - for(DepotHead depotHead: dhList){ - sb.append("[").append(depotHead.getNumber()).append("]"); - User userInfo = userService.getCurrentUser(); - //删除入库单据,先校验序列号是否出库,如果未出库则同时删除序列号,如果已出库则不能删除单据 - if (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())) { - List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); - if (depotItemList != null && depotItemList.size() > 0) { - //单据明细里面存在序列号商品 - int serialNumberSellCount = depotHeadMapperEx.getSerialNumberBySell(depotHead.getNumber()); - if (serialNumberSellCount > 0) { - //已出库则不能删除单据 - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_MSG, depotHead.getNumber())); - } else { - //删除序列号 - SerialNumberExample example = new SerialNumberExample(); - example.createCriteria().andInBillNoEqualTo(depotHead.getNumber()); - serialNumberService.deleteByExample(example); - } - } - } - //删除出库数据回收序列号 - if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) - && !BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { - //查询单据子表列表 - List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); - /**回收序列号*/ - if (depotItemList != null && depotItemList.size() > 0) { - for (DepotItem depotItem : depotItemList) { - //BasicNumber=OperNumber*ratio - serialNumberService.cancelSerialNumber(depotItem.getMaterialId(), depotHead.getNumber(), (depotItem.getBasicNumber() == null ? 0 : depotItem.getBasicNumber()).intValue(), userInfo); - } - } - } - List list = depotItemService.getListByHeaderId(depotHead.getId()); - //删除单据子表数据 - depotItemMapperEx.batchDeleteDepotItemByDepotHeadIds(new Long[]{depotHead.getId()}); - //删除单据主表信息 - batchDeleteDepotHeadByIds(depotHead.getId().toString()); - //将关联的单据置为审核状态-针对采购入库、销售出库、盘点复盘、其它入库、其它出库 - if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ - if((BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType())) - || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType())) - || (BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_REPLAY.equals(depotHead.getSubType())) - || (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType())) - || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType()))) { - String status = BusinessConstants.BILLS_STATUS_AUDIT; - //查询除当前单据之外的关联单据列表 - List exceptCurrentList = getListByLinkNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber(), depotHead.getType()); - if(exceptCurrentList!=null && exceptCurrentList.size()>0) { - status = BusinessConstants.BILLS_STATUS_SKIPING; - } - DepotHead dh = new DepotHead(); - dh.setStatus(status); - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); - depotHeadMapper.updateByExampleSelective(dh, example); - } - } - //将关联的单据置为审核状态-针对请购单转采购订单的情况 - if(StringUtil.isNotEmpty(depotHead.getLinkApply())){ - if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { - String status = BusinessConstants.BILLS_STATUS_AUDIT; - //查询除当前单据之外的关联单据列表 - List exceptCurrentList = getListByLinkApplyExceptCurrent(depotHead.getLinkApply(), depotHead.getNumber(), depotHead.getType()); - if(exceptCurrentList!=null && exceptCurrentList.size()>0) { - status = BusinessConstants.BILLS_STATUS_SKIPING; - } - DepotHead dh = new DepotHead(); - dh.setStatus(status); - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andNumberEqualTo(depotHead.getLinkApply()); - depotHeadMapper.updateByExampleSelective(dh, example); - } - } - //将关联的销售订单单据置为未采购状态-针对销售订单转采购订单的情况 - if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ - if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && - BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { - DepotHead dh = new DepotHead(); - //获取分批操作后单据的商品和商品数量(汇总) - List batchList = depotItemMapperEx.getBatchBillDetailMaterialSum(depotHead.getLinkNumber(), "normal", depotHead.getType()); - if(batchList.size()>0) { - dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_SKIPING); - } else { - dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_UN_AUDIT); - } - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); - depotHeadMapper.updateByExampleSelective(dh, example); - } - } - //对于零售出库单据,更新会员的预收款信息 - if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) - && BusinessConstants.SUB_TYPE_RETAIL.equals(depotHead.getSubType())){ - if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())) { - if (depotHead.getOrganId() != null) { - //更新会员预付款 - supplierService.updateAdvanceIn(depotHead.getOrganId()); - } - } - } - for (DepotItem depotItem : list) { - //更新当前库存 - depotItemService.updateCurrentStock(depotItem); - //更新当前成本价 - depotItemService.updateCurrentUnitPrice(depotItem); - } - } - //路径列表 - List pathList = new ArrayList<>(); - for(DepotHead depotHead: dhList){ - if(StringUtil.isNotEmpty(depotHead.getFileName())) { - pathList.add(depotHead.getFileName()); - } - } - //逻辑删除文件 - systemConfigService.deleteFileByPathList(pathList); - logService.insertLog("单据", sb.toString(), - ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); - return 1; - } - - /** - * 删除单据主表信息 - * @param ids - * @return - * @throws Exception - */ - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchDeleteDepotHeadByIds(String ids)throws Exception { - User userInfo=userService.getCurrentUser(); - String [] idArray=ids.split(","); - int result=0; - try{ - result = depotHeadMapperEx.batchDeleteDepotHeadByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - public List getDepotHeadListByIds(String ids)throws Exception { - List idList = StringUtil.strToLongList(ids); - List list = new ArrayList<>(); - try{ - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andIdIn(idList); - list = depotHeadMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - /** - * 校验单据编号是否存在 - * @param id - * @param number - * @return - * @throws Exception - */ - public int checkIsBillNumberExist(Long id, String number)throws Exception { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andIdNotEqualTo(id).andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = null; - try{ - list = depotHeadMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list==null?0:list.size(); - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchSetStatus(String status, String depotHeadIDs)throws Exception { - int result = 0; - List dhIds = new ArrayList<>(); - List ids = StringUtil.strToLongList(depotHeadIDs); - for(Long id: ids) { - DepotHead depotHead = getDepotHead(id); - if("0".equals(status)){ - //进行反审核操作 - if("1".equals(depotHead.getStatus()) && "0".equals(depotHead.getPurchaseStatus())) { - dhIds.add(id); - } else if("2".equals(depotHead.getPurchaseStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_MSG)); - } else if("3".equals(depotHead.getPurchaseStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_MSG)); - } else { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG)); - } - } else if("1".equals(status)){ - //进行审核操作 - if("0".equals(depotHead.getStatus())) { - dhIds.add(id); - } else { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG)); - } - } - } - if(dhIds.size()>0) { - DepotHead depotHead = new DepotHead(); - depotHead.setStatus(status); - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andIdIn(dhIds); - result = depotHeadMapper.updateByExampleSelective(depotHead, example); - //更新当前库存 - if(systemConfigService.getForceApprovalFlag()) { - for(Long dhId: dhIds) { - List list = depotItemService.getListByHeaderId(dhId); - for (DepotItem depotItem : list) { - depotItemService.updateCurrentStock(depotItem); - } - } - } - } - return result; - } - - public Map findMaterialsListMapByHeaderIdList(List idList)throws Exception { - Map materialsListMap = new HashMap<>(); - if(idList.size()>0) { - List list = depotHeadMapperEx.findMaterialsListMapByHeaderIdList(idList); - for (MaterialsListVo materialsListVo : list) { - String materialsList = materialsListVo.getMaterialsList(); - if(StringUtil.isNotEmpty(materialsList)) { - materialsList = materialsList.replace(",",","); - } - materialsListMap.put(materialsListVo.getHeaderId(), materialsList); - } - } - return materialsListMap; - } - - public Map getMaterialCountListMapByHeaderIdList(List idList)throws Exception { - Map materialCountListMap = new HashMap<>(); - if(idList.size()>0) { - List list = depotHeadMapperEx.getMaterialCountListByHeaderIdList(idList); - for(MaterialCountVo materialCountVo : list){ - materialCountListMap.put(materialCountVo.getHeaderId(), materialCountVo.getMaterialCount()); - } - } - return materialCountListMap; - } - - public List findInOutDetail(String beginTime, String endTime, String type, String[] creatorArray, - String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, - String materialParam, List depotList, Integer oId, String number, - Long creator, String remark, String column, String order, Integer offset, Integer rows) throws Exception{ - List list = null; - try{ - list =depotHeadMapperEx.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, - materialParam, depotList, oId, number, creator, remark, column, order, offset, rows); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public int findInOutDetailCount(String beginTime, String endTime, String type, String[] creatorArray, - String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, String materialParam, List depotList, Integer oId, String number, - Long creator, String remark) throws Exception{ - int result = 0; - try{ - result =depotHeadMapperEx.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, - materialParam, depotList, oId, number, creator, remark); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - public DepotHeadVo4InDetail findInOutDetailStatistic(String beginTime, String endTime, String type, String [] creatorArray, - String [] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, - String materialParam, List depotList, Integer oId, String number, - Long creator, String remark) throws Exception{ - DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); - try{ - List list =depotHeadMapperEx.findInOutDetailStatistic(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, - materialParam, depotList, oId, number, creator, remark); - if(list.size()>0) { - item.setOperNumber(list.get(0).getOperNumber()); - item.setAllPrice(list.get(0).getAllPrice()); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return item; - } - - public List findInOutMaterialCount(String beginTime, String endTime, String type, List categoryList, - Boolean forceFlag, Boolean inOutManageFlag, String materialParam, - List depotList, Long organizationId, Integer oId, String column, String order, - Integer offset, Integer rows)throws Exception { - List list = null; - try{ - String [] creatorArray = getCreatorArray(); - if(creatorArray == null && organizationId != null) { - creatorArray = getCreatorArrayByOrg(organizationId); - } - String subType = "出库".equals(type)? "销售" : ""; - String [] organArray = getOrganArray(subType, ""); - list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, - creatorArray, organArray, column, order, offset, rows); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, List categoryList, - Boolean forceFlag, Boolean inOutManageFlag, String materialParam, - List depotList, Long organizationId, Integer oId)throws Exception { - int result = 0; - try{ - String [] creatorArray = getCreatorArray(); - if(creatorArray == null && organizationId != null) { - creatorArray = getCreatorArrayByOrg(organizationId); - } - String subType = "出库".equals(type)? "销售" : ""; - String [] organArray = getOrganArray(subType, ""); - result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, - creatorArray, organArray); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - public DepotHeadVo4InOutMCount findInOutMaterialCountStatistic(String beginTime, String endTime, String type, List categoryList, - Boolean forceFlag, Boolean inOutManageFlag, String materialParam, - List depotList, Long organizationId, Integer oId) throws Exception { - DepotHeadVo4InOutMCount item = new DepotHeadVo4InOutMCount(); - try{ - String [] creatorArray = getCreatorArray(); - if(creatorArray == null && organizationId != null) { - creatorArray = getCreatorArrayByOrg(organizationId); - } - String subType = "出库".equals(type)? "销售" : ""; - String [] organArray = getOrganArray(subType, ""); - List list = depotHeadMapperEx.findInOutMaterialCountStatistic(beginTime, endTime, type, categoryList, - forceFlag, inOutManageFlag, materialParam, depotList, oId, creatorArray, organArray); - if(list.size()>0) { - item.setNumSum(list.get(0).getNumSum()); - item.setPriceSum(list.get(0).getPriceSum()); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return item; - } - - public List findAllocationDetail(String beginTime, String endTime, String subType, String number, - String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, - String remark, String column, String order, Integer offset, Integer rows) throws Exception{ - List list = null; - try{ - list =depotHeadMapperEx.findAllocationDetail(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, - materialParam, depotList, depotFList, remark, column, order, offset, rows); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public int findAllocationDetailCount(String beginTime, String endTime, String subType, String number, - String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, - String remark) throws Exception{ - int result = 0; - try{ - result =depotHeadMapperEx.findAllocationDetailCount(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, - materialParam, depotList, depotFList, remark); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - public DepotHeadVo4InDetail findAllocationStatistic(String beginTime, String endTime, String subType, String number, - String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, - String remark) throws Exception{ - DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); - try{ - List list =depotHeadMapperEx.findAllocationStatistic(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, - materialParam, depotList, depotFList, remark); - if(list.size()>0) { - item.setOperNumber(list.get(0).getOperNumber()); - item.setAllPrice(list.get(0).getAllPrice()); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return item; - } - - public List getStatementAccount(String beginTime, String endTime, Integer organId, String [] organArray, - Integer hasDebt, String supplierType, String type, String subType, String typeBack, - String subTypeBack, String billType, Integer offset, Integer rows) { - List list = null; - try{ - list = depotHeadMapperEx.getStatementAccount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType, offset, rows); - } catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public int getStatementAccountCount(String beginTime, String endTime, Integer organId, String [] organArray, - Integer hasDebt, String supplierType, String type, String subType, String typeBack, String subTypeBack, String billType) { - int result = 0; - try{ - result = depotHeadMapperEx.getStatementAccountCount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); - } catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - public List getStatementAccountTotalPay(String beginTime, String endTime, Integer organId, String [] organArray, - Integer hasDebt, String supplierType, String type, String subType, - String typeBack, String subTypeBack, String billType) { - List list = null; - try{ - list = depotHeadMapperEx.getStatementAccountTotalPay(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); - } catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public List getDetailByNumber(String number, HttpServletRequest request)throws Exception { - List resList = new ArrayList<>(); - try{ - Long userId = userService.getUserId(request); - String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); - Map personMap = personService.getPersonMap(); - Map accountMap = accountService.getAccountMap(); - List list = depotHeadMapperEx.getDetailByNumber(number); - if (null != list) { - List idList = new ArrayList<>(); - List numberList = new ArrayList<>(); - for (DepotHeadVo4List dh : list) { - idList.add(dh.getId()); - numberList.add(dh.getNumber()); - } - //通过批量查询去构造map - Map financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); - Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); - Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); - DepotHeadVo4List dh = list.get(0); - String billCategory = getBillCategory(dh.getSubType()); - if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { - String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); - dh.setAccountName(accountStr); - } - if(dh.getAccountIdList() != null) { - String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); - dh.setAccountIdList(accountidlistStr); - } - if(dh.getAccountMoneyList() != null) { - String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); - dh.setAccountMoneyList(accountmoneylistStr); - } - if(dh.getChangeAmount() != null) { - dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); - } else { - dh.setChangeAmount(BigDecimal.ZERO); - } - if(dh.getTotalPrice() != null) { - dh.setTotalPrice(roleService.parseBillPriceByLimit(dh.getTotalPrice().abs(), billCategory, priceLimit, request)); - } - BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; - dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); - BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; - dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); - if(dh.getDeposit() == null) { - dh.setDeposit(BigDecimal.ZERO); - } else { - dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); - } - //欠款计算 - BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; - BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; - BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; - BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); - dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); - //是否有付款单或收款单 - if(financialBillNoMap!=null) { - Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); - dh.setHasFinancialFlag(financialBillNoSize!=null && financialBillNoSize>0); - } - //是否有退款单 - if(billSizeMap!=null) { - Integer billListSize = billSizeMap.get(dh.getNumber()); - dh.setHasBackFlag(billListSize!=null && billListSize>0); - } - if(StringUtil.isNotEmpty(dh.getSalesMan())) { - dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); - } - if(dh.getOperTime() != null) { - dh.setOperTimeStr(getCenternTime(dh.getOperTime())); - } - //商品信息简述 - if(materialsListMap!=null) { - dh.setMaterialsList(materialsListMap.get(dh.getId())); - } - dh.setCreatorName(userService.getUser(dh.getCreator()).getUsername()); - resList.add(dh); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return resList; - } - - /** - * 查询除当前单据之外的关联单据列表 - * @param linkNumber - * @param number - * @return - * @throws Exception - */ - public List getListByLinkNumberExceptCurrent(String linkNumber, String number, String type)throws Exception { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andLinkNumberEqualTo(linkNumber).andNumberNotEqualTo(number).andTypeEqualTo(type) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - return depotHeadMapper.selectByExample(example); - } - - /** - * 查询除当前单据之外的关联单据列表 - * @param linkApply - * @param number - * @return - * @throws Exception - */ - public List getListByLinkApplyExceptCurrent(String linkApply, String number, String type)throws Exception { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andLinkApplyEqualTo(linkApply).andNumberNotEqualTo(number).andTypeEqualTo(type) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - return depotHeadMapper.selectByExample(example); - } - - /** - * 根据原单号查询关联的单据列表(批量) - * @param linkNumberList - * @return - * @throws Exception - */ - public List getBillListByLinkNumberList(List linkNumberList)throws Exception { - if(linkNumberList!=null && linkNumberList.size()>0) { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andLinkNumberIn(linkNumberList).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - return depotHeadMapper.selectByExample(example); - } else { - return new ArrayList<>(); - } - } - - /** - * 根据原单号查询关联的单据列表 - * @param linkNumber - * @return - * @throws Exception - */ - public List getBillListByLinkNumber(String linkNumber)throws Exception { - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andLinkNumberEqualTo(linkNumber).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - return depotHeadMapper.selectByExample(example); - } - - /** - * 新增单据主表及单据子表信息 - * @param beanJson - * @param rows - * @param request - * @throws Exception - */ - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public void addDepotHeadAndDetail(String beanJson, String rows, - HttpServletRequest request) throws Exception { - /**处理单据主表数据*/ - DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); - //校验单号是否重复 - if(checkIsBillNumberExist(0L, depotHead.getNumber())>0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); - } - //校验是否同时录入关联请购单号和关联订单号 - if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); - } - String subType = depotHead.getSubType(); - //结算账户校验 - if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { - if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); - } - } - //判断用户是否已经登录过,登录过不再处理 - User userInfo=userService.getCurrentUser(); - depotHead.setCreator(userInfo==null?null:userInfo.getId()); - depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); - if(StringUtil.isEmpty(depotHead.getStatus())) { - depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); - } - depotHead.setPurchaseStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); - depotHead.setPayType(depotHead.getPayType()==null?"现付":depotHead.getPayType()); - if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ - depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); - } - if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { - //校验多账户的结算金额 - String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); - BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); - BigDecimal manyAccountSum = sum.abs(); - if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); - } - depotHead.setAccountMoneyList(accountMoneyList); - } - //校验累计扣除订金是否超出订单中的金额 - if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { - BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); - //订单中的订金金额 - BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); - if(changeAmount!=null) { - BigDecimal preDeposit = changeAmount.abs(); - if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); - } - } - } - //校验附件的数量 - if(StringUtil.isNotEmpty(depotHead.getFileName())) { - String[] fileArr = depotHead.getFileName().split(","); - if(fileArr.length>4) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); - } - } - depotHeadMapper.insertSelective(depotHead); - /**入库和出库处理预付款信息*/ - if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ - if(depotHead.getOrganId()!=null) { - BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); - if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { - //更新会员的预付款 - supplierService.updateAdvanceIn(depotHead.getOrganId()); - } else { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); - } - } - } - //根据单据编号查询单据id - DepotHeadExample dhExample = new DepotHeadExample(); - dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = depotHeadMapper.selectByExample(dhExample); - if(list!=null) { - Long headId = list.get(0).getId(); - /**入库和出库处理单据子表信息*/ - depotItemService.saveDetials(rows,headId, "add",request); - } - logService.insertLog("单据", - new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(depotHead.getNumber()).toString(), - ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); - } - - /** - * 更新单据主表及单据子表信息 - * @param beanJson - * @param rows - * @param request - * @throws Exception - */ - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public void updateDepotHeadAndDetail(String beanJson, String rows,HttpServletRequest request)throws Exception { - /**更新单据主表信息*/ - DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); - //校验单号是否重复 - if(checkIsBillNumberExist(depotHead.getId(), depotHead.getNumber())>0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); - } - //校验是否同时录入关联请购单号和关联订单号 - if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); - } - //校验单据状态,如果不是未审核则提示 - if(!"0".equals(getDepotHead(depotHead.getId()).getStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_MSG)); - } - //获取之前的会员id - Long preOrganId = getDepotHead(depotHead.getId()).getOrganId(); - String subType = depotHead.getSubType(); - //结算账户校验 - if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { - if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); - } - } - if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ - depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); - } - if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { - //校验多账户的结算金额 - String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); - BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); - BigDecimal manyAccountSum = sum.abs(); - if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); - } - depotHead.setAccountMoneyList(accountMoneyList); - } - //校验累计扣除订金是否超出订单中的金额 - if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { - BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); - //订单中的订金金额 - BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); - if(changeAmount!=null) { - BigDecimal preDeposit = changeAmount.abs(); - if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); - } - } - } - //校验附件的数量 - if(StringUtil.isNotEmpty(depotHead.getFileName())) { - String[] fileArr = depotHead.getFileName().split(","); - if(fileArr.length>4) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); - } - } - depotHeadMapper.updateByPrimaryKeySelective(depotHead); - //如果存在多账户结算需要将原账户的id置空 - if(StringUtil.isNotEmpty(depotHead.getAccountIdList())) { - depotHeadMapperEx.setAccountIdToNull(depotHead.getId()); - } - /**入库和出库处理预付款信息*/ - if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ - if(depotHead.getOrganId()!=null){ - BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); - if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { - //更新会员的预付款 - supplierService.updateAdvanceIn(depotHead.getOrganId()); - if(null != preOrganId && !preOrganId.equals(depotHead.getOrganId())) { - //更新之前会员的预付款 - supplierService.updateAdvanceIn(preOrganId); - } - } else { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, - String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); - } - } - } - /**入库和出库处理单据子表信息*/ - depotItemService.saveDetials(rows,depotHead.getId(), "update",request); - logService.insertLog("单据", - new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getNumber()).toString(), - ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); - } - - public Map getBuyAndSaleStatistics(String today, String monthFirstDay, String yesterdayBegin, String yesterdayEnd, - String yearBegin, String yearEnd, HttpServletRequest request) throws Exception { - Long userId = userService.getUserId(request); - String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); - Boolean forceFlag = systemConfigService.getForceApprovalFlag(); - String[] creatorArray = getCreatorArray(); - List inOutPriceVoList = depotHeadMapperEx.getBuyAndSaleStatisticsList(yearBegin, yearEnd, creatorArray, forceFlag); - - String[] periods = {"today", "month", "yesterday", "year"}; - String[] types = {"Buy", "BuyBack", "Sale", "SaleBack", "RetailSale", "RetailSaleBack"}; - - Map statistics = new HashMap<>(); - - // 初始化 statistics Map - for (String period : periods) { - for (String type : types) { - statistics.put(period + type, BigDecimal.ZERO); - } - } - - Date todayDate = Tools.strToDate(today); - Date monthFirstDate = Tools.strToDate(monthFirstDay); - Date yesterdayStartDate = Tools.strToDate(yesterdayBegin); - Date yesterdayEndDate = Tools.strToDate(yesterdayEnd); - Date yearStartDate = Tools.strToDate(yearBegin); - Date yearEndDate = Tools.strToDate(yearEnd); - - for (InOutPriceVo item : inOutPriceVoList) { - Date operTime = item.getOperTime(); - BigDecimal discountLastMoney = item.getDiscountLastMoney(); - BigDecimal totalPriceAbs = item.getTotalPrice().abs(); - - if (isWithinRange(operTime, todayDate, Tools.strToDate(getNow3()))) { - updateStatistics(statistics, item, "today", discountLastMoney, totalPriceAbs); - } - - if (isWithinRange(operTime, monthFirstDate, Tools.strToDate(getNow3()))) { - updateStatistics(statistics, item, "month", discountLastMoney, totalPriceAbs); - } - - if (isWithinRange(operTime, yesterdayStartDate, yesterdayEndDate)) { - updateStatistics(statistics, item, "yesterday", discountLastMoney, totalPriceAbs); - } - - if (isWithinRange(operTime, yearStartDate, yearEndDate)) { - updateStatistics(statistics, item, "year", discountLastMoney, totalPriceAbs); - } - } - - Map result = new HashMap<>(); - for (String period : periods) { - result.put(period + "Buy", roleService.parseHomePriceByLimit(statistics.get(period + "Buy").subtract(statistics.get(period + "BuyBack")), "buy", priceLimit, "***", request)); - result.put(period + "Sale", roleService.parseHomePriceByLimit(statistics.get(period + "Sale").subtract(statistics.get(period + "SaleBack")), "sale", priceLimit, "***", request)); - result.put(period + "RetailSale", roleService.parseHomePriceByLimit(statistics.get(period + "RetailSale").subtract(statistics.get(period + "RetailSaleBack")), "retail", priceLimit, "***", request)); - } - - return result; - } - - private boolean isWithinRange(Date operTime, Date startDate, Date endDate) { - return operTime.compareTo(startDate) >= 0 && operTime.compareTo(endDate) <= 0; - } - - private void updateStatistics(Map statistics, InOutPriceVo item, String period, BigDecimal discountLastMoney, BigDecimal totalPriceAbs) { - switch (item.getType()) { - case "入库": - switch (item.getSubType()) { - case "采购": - statistics.put(period + "Buy", statistics.get(period + "Buy").add(discountLastMoney)); - break; - case "销售退货": - statistics.put(period + "SaleBack", statistics.get(period + "SaleBack").add(discountLastMoney)); - break; - case "零售退货": - statistics.put(period + "RetailSaleBack", statistics.get(period + "RetailSaleBack").add(totalPriceAbs)); - break; - } - break; - case "出库": - switch (item.getSubType()) { - case "采购退货": - statistics.put(period + "BuyBack", statistics.get(period + "BuyBack").add(discountLastMoney)); - break; - case "销售": - statistics.put(period + "Sale", statistics.get(period + "Sale").add(discountLastMoney)); - break; - case "零售": - statistics.put(period + "RetailSale", statistics.get(period + "RetailSale").add(totalPriceAbs)); - break; - } - break; - } - } - - - public DepotHead getDepotHead(String number)throws Exception { - DepotHead depotHead = new DepotHead(); - try{ - DepotHeadExample example = new DepotHeadExample(); - example.createCriteria().andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = depotHeadMapper.selectByExample(example); - if(null!=list && list.size()>0) { - depotHead = list.get(0); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return depotHead; - } - - public List debtList(Long organId, String materialParam, String number, String beginTime, String endTime, - String status, Integer offset, Integer rows) { - List resList = new ArrayList<>(); - try{ - String depotIds = depotService.findDepotStrByCurrentUser(); - String [] depotArray=depotIds.split(","); - String [] creatorArray = getCreatorArray(); - beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - List list=depotHeadMapperEx.debtList(organId, creatorArray, status, number, - beginTime, endTime, materialParam, depotArray, offset, rows); - if (null != list) { - resList = parseDebtBillList(list); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return resList; - } - - public int debtListCount(Long organId, String materialParam, String number, String beginTime, String endTime, - String status) { - int total = 0; - try { - String depotIds = depotService.findDepotStrByCurrentUser(); - String[] depotArray = depotIds.split(","); - String[] creatorArray = getCreatorArray(); - beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); - total = depotHeadMapperEx.debtListCount(organId, creatorArray, status, number, - beginTime, endTime, materialParam, depotArray); - } catch(Exception e){ - JshException.readFail(logger, e); - } - return total; - } - - public void debtExport(Long organId, String materialParam, String number, String type, String subType, - String beginTime, String endTime, String status, String mpList, - HttpServletRequest request, HttpServletResponse response) { - try { - Long userId = userService.getUserId(request); - String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); - String billCategory = getBillCategory(subType); - String depotIds = depotService.findDepotStrByCurrentUser(); - String[] depotArray = depotIds.split(","); - String[] creatorArray = getCreatorArray(); - status = StringUtil.isNotEmpty(status) ? status : null; - beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); - List dhList = new ArrayList<>(); - List list = depotHeadMapperEx.debtList(organId, creatorArray, status, number, - beginTime, endTime, materialParam, depotArray, null, null); - if (null != list) { - dhList = parseDebtBillList(list); - } - //生成Excel文件 - String fileName = "单据信息"; - File file = new File("/opt/"+ fileName); - WritableWorkbook wtwb = Workbook.createWorkbook(file); - String oneTip = ""; - String sheetOneStr = ""; - if("采购".equals(subType)) { - oneTip = "供应商对账列表"; - sheetOneStr = "供应商,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已付欠款,待付欠款,备注"; - } else if("出库".equals(type) && "销售".equals(subType)) { - oneTip = "客户对账列表"; - sheetOneStr = "客户,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已收欠款,待收欠款,备注"; - } - if(StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { - oneTip = oneTip + "(" + beginTime + "至" + endTime + ")"; - } - List sheetOneList = StringUtil.strToStringList(sheetOneStr); - String[] sheetOneArr = StringUtil.listToStringArray(sheetOneList); - List idList = new ArrayList<>(); - List billList = new ArrayList<>(); - Map billListCacheVoMap = new HashMap<>(); - for (DepotHeadVo4List dh : dhList) { - idList.add(dh.getId()); - BillListCacheVo billListCacheVo = new BillListCacheVo(); - billListCacheVo.setNumber(dh.getNumber()); - billListCacheVo.setOrganName(dh.getOrganName()); - billListCacheVo.setOperTimeStr(getCenternTime(dh.getOperTime())); - billListCacheVoMap.put(dh.getId(), billListCacheVo); - String[] objs = new String[sheetOneArr.length]; - objs[0] = dh.getOrganName(); - objs[1] = dh.getNumber(); - objs[2] = dh.getLinkNumber(); - objs[3] = dh.getMaterialsList(); - objs[4] = dh.getOperTimeStr(); - objs[5] = dh.getUserName(); - BigDecimal discountLastMoney = dh.getDiscountLastMoney() == null ? BigDecimal.ZERO : dh.getDiscountLastMoney(); - BigDecimal otherMoney = dh.getOtherMoney() == null ? BigDecimal.ZERO : dh.getOtherMoney(); - BigDecimal deposit = dh.getDeposit() == null ? BigDecimal.ZERO : dh.getDeposit(); - objs[6] = parseDecimalToStr(discountLastMoney.add(otherMoney).subtract(deposit), 2); - objs[7] = parseDecimalToStr(dh.getNeedDebt(), 2); - objs[8] = parseDecimalToStr(dh.getFinishDebt(), 2); - objs[9] = parseDecimalToStr(dh.getDebt(), 2); - objs[10] = dh.getRemark(); - billList.add(objs); - } - ExcelUtils.exportObjectsManySheet(wtwb, oneTip, sheetOneArr, "单据列表", 0, billList); - //导出明细数据 - if(idList.size()>0) { - List dataList = depotItemMapperEx.getBillDetailListByIds(idList); - String[] mpArr = mpList.split(","); - String twoTip = ""; - String sheetTwoStr = ""; - if ("采购".equals(subType)) { - twoTip = "供应商单据明细"; - sheetTwoStr = "供应商,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商,扩展信息,单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; - } else if ("销售".equals(subType)) { - twoTip = "客户单据明细"; - sheetTwoStr = "客户,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商,扩展信息,单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; - } - if (StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { - twoTip = twoTip + "(" + beginTime + "至" + endTime + ")"; - } - List sheetTwoList = StringUtil.strToStringList(sheetTwoStr); - String[] sheetTwoArr = StringUtil.listToStringArray(sheetTwoList); - List billDetail = new ArrayList<>(); - for (DepotItemVo4WithInfoEx diEx : dataList) { - String[] objs = new String[sheetTwoArr.length]; - BillListCacheVo billListCacheVo = billListCacheVoMap.get(diEx.getHeaderId()); - objs[0] = billListCacheVo != null ? billListCacheVo.getOrganName() : ""; - objs[1] = billListCacheVo != null ? billListCacheVo.getNumber() : ""; - objs[2] = billListCacheVo != null ? billListCacheVo.getOperTimeStr() : ""; - objs[3] = diEx.getDepotId() == null ? "" : diEx.getDepotName(); - objs[4] = diEx.getBarCode(); - objs[5] = diEx.getMName(); - objs[6] = diEx.getMStandard(); - objs[7] = diEx.getMModel(); - objs[8] = diEx.getMColor(); - objs[9] = diEx.getBrand(); - objs[10] = diEx.getMMfrs(); - objs[11] = depotItemService.getOtherInfo(mpArr, diEx); - objs[12] = diEx.getMaterialUnit(); - objs[13] = diEx.getSnList(); - objs[14] = diEx.getBatchNumber(); - objs[15] = Tools.parseDateToStr(diEx.getExpirationDate()); - objs[16] = diEx.getSku(); - objs[17] = parseDecimalToStr(diEx.getOperNumber(), 2); - objs[18] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getUnitPrice(), billCategory, priceLimit, request), 2); - objs[19] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getAllPrice(), billCategory, priceLimit, request), 2); - objs[20] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxRate(), billCategory, priceLimit, request), 2); - objs[21] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxMoney(), billCategory, priceLimit, request), 2); - objs[22] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxLastMoney(), billCategory, priceLimit, request), 2); - BigDecimal allWeight = diEx.getBasicNumber() == null || diEx.getWeight() == null ? BigDecimal.ZERO : diEx.getBasicNumber().multiply(diEx.getWeight()); - objs[23] = parseDecimalToStr(allWeight, 2); - objs[24] = diEx.getRemark(); - billDetail.add(objs); - } - ExcelUtils.exportObjectsManySheet(wtwb, twoTip, sheetTwoArr, "单据明细", 1, billDetail); - } - wtwb.write(); - wtwb.close(); - ExcelUtils.downloadExcel(file, file.getName(), response); - } catch(Exception e){ - JshException.readFail(logger, e); - } - } - - public List parseDebtBillList(List list) throws Exception { - List idList = new ArrayList<>(); - List dhList = new ArrayList<>(); - for (DepotHeadVo4List dh : list) { - idList.add(dh.getId()); - } - //通过批量查询去构造map - Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); - for (DepotHeadVo4List dh : list) { - if(dh.getChangeAmount() != null) { - dh.setChangeAmount(dh.getChangeAmount().abs()); - } - if(dh.getTotalPrice() != null) { - dh.setTotalPrice(dh.getTotalPrice().abs()); - } - if(dh.getDeposit() == null) { - dh.setDeposit(BigDecimal.ZERO); - } - if(dh.getOperTime() != null) { - dh.setOperTimeStr(getCenternTime(dh.getOperTime())); - } - BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; - BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; - BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; - BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount().abs():BigDecimal.ZERO; - //本单欠款(如果退货则为负数) - dh.setNeedDebt(discountLastMoney.add(otherMoney).subtract(deposit.add(changeAmount))); - if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(dh.getSubType()) || BusinessConstants.SUB_TYPE_SALES_RETURN.equals(dh.getSubType())) { - dh.setNeedDebt(BigDecimal.ZERO.subtract(dh.getNeedDebt())); - } - BigDecimal needDebt = dh.getNeedDebt()!=null?dh.getNeedDebt():BigDecimal.ZERO; - BigDecimal finishDebt = accountItemService.getEachAmountByBillId(dh.getId()); - finishDebt = finishDebt!=null?finishDebt:BigDecimal.ZERO; - //已收欠款 - dh.setFinishDebt(finishDebt); - //待收欠款 - dh.setDebt(needDebt.subtract(finishDebt)); - //商品信息简述 - if(materialsListMap!=null) { - dh.setMaterialsList(materialsListMap.get(dh.getId())); - } - dhList.add(dh); - } - return dhList; - } - - public String getBillCategory(String subType) { - if(subType.equals("零售") || subType.equals("零售退货")) { - return "retail"; - } else if(subType.equals("销售订单") || subType.equals("销售") || subType.equals("销售退货")) { - return "sale"; - } else { - return "buy"; - } - } - - /** - * 格式化金额样式 - * @param decimal - * @param num - * @return - */ - private String parseDecimalToStr(BigDecimal decimal, Integer num) { - return decimal == null ? "" : decimal.setScale(num, BigDecimal.ROUND_HALF_UP).toString(); - } - - private String parseStatusToStr(String status, String type) { - if(StringUtil.isNotEmpty(status)) { - if("purchase".equals(type)) { - switch (status) { - case "2": - return "完成采购"; - case "3": - return "部分采购"; - } - } else if("sale".equals(type)) { - switch (status) { - case "2": - return "完成销售"; - case "3": - return "部分销售"; - } - } - switch (status) { - case "0": - return "未审核"; - case "1": - return "已审核"; - case "9": - return "审核中"; - } - } - return ""; - } - - public List waitBillList(String number, String materialParam, String type, String subType, - String beginTime, String endTime, String status, int offset, int rows) { - List resList = new ArrayList<>(); - try{ - String [] depotArray = getDepotArray("其它"); - //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) - String [] creatorArray = null; - String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; - String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; - Map accountMap = accountService.getAccountMap(); - beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - List list = depotHeadMapperEx.waitBillList(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, - materialParam, depotArray, offset, rows); - if (null != list) { - List idList = new ArrayList<>(); - for (DepotHeadVo4List dh : list) { - idList.add(dh.getId()); - } - //通过批量查询去构造map - Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); - Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); - for (DepotHeadVo4List dh : list) { - if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { - String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); - dh.setAccountName(accountStr); - } - if(dh.getOperTime() != null) { - dh.setOperTimeStr(getCenternTime(dh.getOperTime())); - } - //商品信息简述 - if(materialsListMap!=null) { - dh.setMaterialsList(materialsListMap.get(dh.getId())); - } - //商品总数量 - if(materialCountListMap!=null) { - dh.setMaterialCount(materialCountListMap.get(dh.getId())); - } - resList.add(dh); - } - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return resList; - } - - public Long waitBillCount(String number, String materialParam, String type, String subType, - String beginTime, String endTime, String status) { - Long result=null; - try{ - String [] depotArray = getDepotArray("其它"); - //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) - String [] creatorArray = null; - String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; - String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; - beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); - endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); - result=depotHeadMapperEx.waitBillCount(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, - materialParam, depotArray); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public void batchAddDepotHeadAndDetail(String ids, HttpServletRequest request) throws Exception { - List dhList = getDepotHeadListByIds(ids); - StringBuilder sb = new StringBuilder(); - User userInfo=userService.getCurrentUser(); - for(DepotHead depotHead : dhList) { - String prefixNo = BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())?"QTRK":"QTCK"; - //关联单据单号 - String oldNumber = depotHead.getNumber(); - //校验单据最新状态不能进行批量操作 - if("0".equals(depotHead.getStatus()) || "2".equals(depotHead.getStatus()) || "9".equals(depotHead.getStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); - } - //校验是否是部分入库或者部分出库 - if("3".equals(depotHead.getStatus())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); - } - depotHead.setLinkNumber(oldNumber); - //给单号重新赋值 - String number = prefixNo + sequenceService.buildOnlyNumber(); - depotHead.setNumber(number); - depotHead.setDefaultNumber(number); - depotHead.setOperTime(new Date()); - depotHead.setSubType(BusinessConstants.SUB_TYPE_OTHER); - depotHead.setChangeAmount(BigDecimal.ZERO); - depotHead.setTotalPrice(BigDecimal.ZERO); - depotHead.setDiscountLastMoney(BigDecimal.ZERO); - depotHead.setCreator(userInfo==null?null:userInfo.getId()); - depotHead.setOrganId(null); - depotHead.setAccountId(null); - depotHead.setAccountIdList(null); - depotHead.setAccountMoneyList(null); - depotHead.setSalesMan(null); - depotHead.setStatus("0"); - depotHead.setTenantId(null); - //查询明细 - List itemList = depotItemService.getDetailList(depotHead.getId()); - depotHead.setId(null); - JSONArray rowArr = new JSONArray(); - for(DepotItemVo4WithInfoEx item: itemList) { - if("1".equals(item.getEnableSerialNumber())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG, oldNumber)); - } - if("1".equals(item.getEnableBatchNumber())) { - throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE, - String.format(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG, oldNumber)); - } - item.setUnitPrice(BigDecimal.ZERO); - item.setAllPrice(BigDecimal.ZERO); - item.setLinkId(item.getId()); - item.setTenantId(null); - String itemStr = JSONObject.toJSONString(item); - JSONObject itemObj = JSONObject.parseObject(itemStr); - itemObj.put("unit", itemObj.getString("materialUnit")); - rowArr.add(itemObj.toJSONString()); - } - String rows = rowArr.toJSONString(); - //新增其它入库单或其它出库单 - sb.append("[").append(depotHead.getNumber()).append("]"); - depotHeadMapper.insertSelective(depotHead); - //根据单据编号查询单据id - DepotHeadExample dhExample = new DepotHeadExample(); - dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = depotHeadMapper.selectByExample(dhExample); - if(list!=null) { - Long headId = list.get(0).getId(); - /**入库和出库处理单据子表信息*/ - depotItemService.saveDetials(rows, headId, "add", request); - } - } - logService.insertLog("单据", - new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(sb).toString(), - ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); - } -} +package com.jsh.erp.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.*; +import com.jsh.erp.datasource.mappers.DepotHeadMapper; +import com.jsh.erp.datasource.mappers.DepotHeadMapperEx; +import com.jsh.erp.datasource.mappers.DepotItemMapperEx; +import com.jsh.erp.datasource.vo.*; +import com.jsh.erp.exception.BusinessRunTimeException; +import com.jsh.erp.exception.JshException; +import com.jsh.erp.utils.ExcelUtils; +import com.jsh.erp.utils.PageUtils; +import com.jsh.erp.utils.StringUtil; +import com.jsh.erp.utils.Tools; +import jxl.Workbook; +import jxl.write.WritableWorkbook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.*; +import java.util.stream.Collectors; + +import static com.jsh.erp.utils.Tools.getCenternTime; +import static com.jsh.erp.utils.Tools.getNow3; + +@Service +public class DepotHeadService { + private Logger logger = LoggerFactory.getLogger(DepotHeadService.class); + + @Resource + private DepotHeadMapper depotHeadMapper; + @Resource + private DepotHeadMapperEx depotHeadMapperEx; + @Resource + private UserService userService; + @Resource + private RoleService roleService; + @Resource + private DepotService depotService; + @Resource + DepotItemService depotItemService; + @Resource + private SupplierService supplierService; + @Resource + private UserBusinessService userBusinessService; + @Resource + private SystemConfigService systemConfigService; + @Resource + private SerialNumberService serialNumberService; + @Resource + private OrgaUserRelService orgaUserRelService; + @Resource + private PersonService personService; + @Resource + private AccountService accountService; + @Resource + private AccountHeadService accountHeadService; + @Resource + private AccountItemService accountItemService; + @Resource + private SequenceService sequenceService; + @Resource + DepotItemMapperEx depotItemMapperEx; + @Resource + private LogService logService; + + public DepotHead getDepotHead(long id)throws Exception { + DepotHead result=null; + try{ + result=depotHeadMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getDepotHead()throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list=null; + try{ + list=depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List select(String type, String subType, String hasDebt, String status, String purchaseStatus, String number, String linkApply, String linkNumber, + String beginTime, String endTime, String materialParam, Long organId, Long creator, Long depotId, Long accountId, String remark) throws Exception { + List list = new ArrayList<>(); + try{ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + String billCategory = getBillCategory(subType); + String [] depotArray = getDepotArray(subType); + String [] creatorArray = getCreatorArray(); + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + String [] purchaseStatusArray = StringUtil.isNotEmpty(purchaseStatus) ? purchaseStatus.split(",") : null; + String [] organArray = getOrganArray(subType, purchaseStatus); + //以销定购,查看全部数据 + creatorArray = StringUtil.isNotEmpty(purchaseStatus) ? null: creatorArray; + Map personMap = personService.getPersonMap(); + Map accountMap = accountService.getAccountMap(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + PageUtils.startPage(); + list = depotHeadMapperEx.selectByConditionDepotHead(type, subType, creatorArray, hasDebt, + statusArray, purchaseStatusArray, number, linkApply, linkNumber, beginTime, endTime, + materialParam, organId, organArray, creator, depotId, depotArray, accountId, remark); + if (null != list) { + List idList = new ArrayList<>(); + List numberList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + numberList.add(dh.getNumber()); + } + //通过批量查询去构造map + Map finishDepositMap = getFinishDepositMapByNumberList(numberList); + Map financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getAccountIdList() != null) { + String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountIdList(accountidlistStr); + } + if(dh.getAccountMoneyList() != null) { + String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountMoneyList(accountmoneylistStr); + } + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); + } else { + dh.setChangeAmount(BigDecimal.ZERO); + } + if(dh.getTotalPrice() != null) { + BigDecimal lastTotalPrice = BusinessConstants.SUB_TYPE_CHECK_ENTER.equals(dh.getSubType())|| + BusinessConstants.SUB_TYPE_REPLAY.equals(dh.getSubType())?dh.getTotalPrice():dh.getTotalPrice().abs(); + dh.setTotalPrice(roleService.parseBillPriceByLimit(lastTotalPrice, billCategory, priceLimit, request)); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); + BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; + dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } else { + dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); + } + //已经完成的欠款 + if(finishDepositMap!=null) { + BigDecimal finishDeposit = finishDepositMap.get(dh.getNumber()) != null ? finishDepositMap.get(dh.getNumber()) : BigDecimal.ZERO; + dh.setFinishDeposit(roleService.parseBillPriceByLimit(finishDeposit, billCategory, priceLimit, request)); + } + //欠款计算 + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; + BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); + dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); + //是否有付款单或收款单 + if(financialBillNoMap!=null) { + Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); + dh.setHasFinancialFlag(financialBillNoSize!=null && financialBillNoSize>0); + } + //是否有退款单 + if(billSizeMap!=null) { + Integer billListSize = billSizeMap.get(dh.getNumber()); + dh.setHasBackFlag(billListSize!=null && billListSize>0); + } + if(StringUtil.isNotEmpty(dh.getSalesMan())) { + dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + //商品总数量 + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } + //以销定购的情况(不能显示销售单据的金额和客户名称) + if(StringUtil.isNotEmpty(purchaseStatus)) { + dh.setOrganName("****"); + dh.setTotalPrice(null); + dh.setDiscountLastMoney(null); + } + } + } + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 根据单据类型获取仓库数组 + * @param subType + * @return + * @throws Exception + */ + public String[] getDepotArray(String subType) throws Exception { + String [] depotArray = null; + if(!BusinessConstants.SUB_TYPE_PURCHASE_APPLY.equals(subType) + && !BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(subType) + && !BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType)) { + String depotIds = depotService.findDepotStrByCurrentUser(); + depotArray = StringUtil.isNotEmpty(depotIds) ? depotIds.split(",") : null; + } + return depotArray; + } + + /** + * 根据角色类型获取操作员数组 + * @return + * @throws Exception + */ + public String[] getCreatorArray() throws Exception { + String creator = getCreatorByCurrentUser(); + String [] creatorArray=null; + if(StringUtil.isNotEmpty(creator)){ + creatorArray = creator.split(","); + } + return creatorArray; + } + + /** + * 根据角色类型获取操作员数组 + * @param organizationId + * @return + * @throws Exception + */ + public String[] getCreatorArrayByOrg(Long organizationId) throws Exception { + List userIdList = orgaUserRelService.getUserIdListByOrgId(organizationId); + if(userIdList.size()>0) { + List userIdStrList = userIdList.stream().map(Object::toString).collect(Collectors.toList()); + return StringUtil.listToStringArray(userIdStrList); + } else { + return "-1".split(","); + } + } + + /** + * 获取机构数组 + * @return + */ + public String[] getOrganArray(String subType, String purchaseStatus) throws Exception { + String [] organArray = null; + String type = "UserCustomer"; + Long userId = userService.getCurrentUser().getId(); + //获取权限信息 + String ubValue = userBusinessService.getUBValueByTypeAndKeyId(type, userId.toString()); + List supplierList = supplierService.findBySelectCus(); + if(BusinessConstants.SUB_TYPE_SALES_ORDER.equals(subType) || BusinessConstants.SUB_TYPE_SALES.equals(subType) + ||BusinessConstants.SUB_TYPE_SALES_RETURN.equals(subType) ) { + //采购订单里面选择销售订单的时候不要过滤 + if(StringUtil.isEmpty(purchaseStatus)) { + if (null != supplierList && supplierList.size() > 0) { + boolean customerFlag = systemConfigService.getCustomerFlag(); + List organList = new ArrayList<>(); + for (Supplier supplier : supplierList) { + boolean flag = ubValue.contains("[" + supplier.getId().toString() + "]"); + if (!customerFlag || flag) { + organList.add(supplier.getId().toString()); + } + } + if(organList.size() > 0) { + organArray = StringUtil.listToStringArray(organList); + } + } + } + } + return organArray; + } + + /** + * 根据角色类型获取操作员 + * @return + * @throws Exception + */ + public String getCreatorByCurrentUser() throws Exception { + String creator = ""; + User user = userService.getCurrentUser(); + String roleType = userService.getRoleTypeByUserId(user.getId()).getType(); //角色类型 + if(BusinessConstants.ROLE_TYPE_PRIVATE.equals(roleType)) { + creator = user.getId().toString(); + } else if(BusinessConstants.ROLE_TYPE_THIS_ORG.equals(roleType)) { + creator = orgaUserRelService.getUserIdListByUserId(user.getId()); + } + return creator; + } + + public Map getFinishDepositMapByNumberList(List numberList) { + Map finishDepositMap = new HashMap<>(); + if(numberList.size()>0) { + List list = depotHeadMapperEx.getFinishDepositByNumberList(numberList); + if(list!=null && list.size()>0) { + for (FinishDepositVo finishDepositVo : list) { + if(finishDepositVo!=null) { + finishDepositMap.put(finishDepositVo.getNumber(), finishDepositVo.getFinishDeposit()); + } + } + } + } + return finishDepositMap; + } + + public Map getBillSizeMapByLinkNumberList(List numberList) throws Exception { + Map billListMap = new HashMap<>(); + if(numberList.size()>0) { + List list = getBillListByLinkNumberList(numberList); + if(list!=null && list.size()>0) { + for (DepotHead depotHead : list) { + if(depotHead!=null) { + billListMap.put(depotHead.getLinkNumber(), list.size()); + } + } + } + } + return billListMap; + } + + public Map getFinancialBillNoMapByBillIdList(List idList) { + Map billListMap = new HashMap<>(); + if(idList.size()>0) { + List list = accountHeadService.getFinancialBillNoByBillIdList(idList); + if(list!=null && list.size()>0) { + for (AccountItem accountItem : list) { + if(accountItem!=null) { + billListMap.put(accountItem.getBillId(), list.size()); + } + } + } + } + return billListMap; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int insertDepotHead(JSONObject obj, HttpServletRequest request)throws Exception { + DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); + depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); + depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + int result=0; + try{ + result=depotHeadMapper.insert(depotHead); + logService.insertLog("单据", BusinessConstants.LOG_OPERATION_TYPE_ADD, request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int updateDepotHead(JSONObject obj, HttpServletRequest request) throws Exception{ + DepotHead depotHead = JSONObject.parseObject(obj.toJSONString(), DepotHead.class); + DepotHead dh=null; + try{ + dh = depotHeadMapper.selectByPrimaryKey(depotHead.getId()); + }catch(Exception e){ + JshException.readFail(logger, e); + } + depotHead.setStatus(dh.getStatus()); + depotHead.setCreateTime(dh.getCreateTime()); + int result=0; + try{ + result = depotHeadMapper.updateByPrimaryKey(depotHead); + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getId()).toString(), request); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteDepotHead(Long id, HttpServletRequest request)throws Exception { + return batchDeleteBillByIds(id.toString()); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotHead(String ids, HttpServletRequest request)throws Exception { + return batchDeleteBillByIds(ids); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteBillByIds(String ids)throws Exception { + StringBuffer sb = new StringBuffer(); + sb.append(BusinessConstants.LOG_OPERATION_TYPE_DELETE); + List dhList = getDepotHeadListByIds(ids); + for(DepotHead depotHead: dhList){ + //只有未审核的单据才能被删除 + if(!"0".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_DELETE_FAILED_MSG)); + } + } + for(DepotHead depotHead: dhList){ + sb.append("[").append(depotHead.getNumber()).append("]"); + User userInfo = userService.getCurrentUser(); + //删除入库单据,先校验序列号是否出库,如果未出库则同时删除序列号,如果已出库则不能删除单据 + if (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())) { + List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); + if (depotItemList != null && depotItemList.size() > 0) { + //单据明细里面存在序列号商品 + int serialNumberSellCount = depotHeadMapperEx.getSerialNumberBySell(depotHead.getNumber()); + if (serialNumberSellCount > 0) { + //已出库则不能删除单据 + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_SERIAL_IS_SELL_MSG, depotHead.getNumber())); + } else { + //删除序列号 + SerialNumberExample example = new SerialNumberExample(); + example.createCriteria().andInBillNoEqualTo(depotHead.getNumber()); + serialNumberService.deleteByExample(example); + } + } + } + //删除出库数据回收序列号 + if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) + && !BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubType())) { + //查询单据子表列表 + List depotItemList = depotItemMapperEx.findDepotItemListBydepotheadId(depotHead.getId(), BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED); + /**回收序列号*/ + if (depotItemList != null && depotItemList.size() > 0) { + for (DepotItem depotItem : depotItemList) { + //BasicNumber=OperNumber*ratio + serialNumberService.cancelSerialNumber(depotItem.getMaterialId(), depotHead.getNumber(), (depotItem.getBasicNumber() == null ? 0 : depotItem.getBasicNumber()).intValue(), userInfo); + } + } + } + List list = depotItemService.getListByHeaderId(depotHead.getId()); + //删除单据子表数据 + depotItemMapperEx.batchDeleteDepotItemByDepotHeadIds(new Long[]{depotHead.getId()}); + //删除单据主表信息 + batchDeleteDepotHeadByIds(depotHead.getId().toString()); + //将关联的单据置为审核状态-针对采购入库、销售出库、盘点复盘、其它入库、其它出库 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ + if((BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_SALES.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_REPLAY.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType())) + || (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_OTHER.equals(depotHead.getSubType()))) { + String status = BusinessConstants.BILLS_STATUS_AUDIT; + //查询除当前单据之外的关联单据列表 + List exceptCurrentList = getListByLinkNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber(), depotHead.getType()); + if(exceptCurrentList!=null && exceptCurrentList.size()>0) { + status = BusinessConstants.BILLS_STATUS_SKIPING; + } + DepotHead dh = new DepotHead(); + dh.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //将关联的单据置为审核状态-针对请购单转采购订单的情况 + if(StringUtil.isNotEmpty(depotHead.getLinkApply())){ + if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { + String status = BusinessConstants.BILLS_STATUS_AUDIT; + //查询除当前单据之外的关联单据列表 + List exceptCurrentList = getListByLinkApplyExceptCurrent(depotHead.getLinkApply(), depotHead.getNumber(), depotHead.getType()); + if(exceptCurrentList!=null && exceptCurrentList.size()>0) { + status = BusinessConstants.BILLS_STATUS_SKIPING; + } + DepotHead dh = new DepotHead(); + dh.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkApply()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //将关联的销售订单单据置为未采购状态-针对销售订单转采购订单的情况 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber())){ + if(BusinessConstants.DEPOTHEAD_TYPE_OTHER.equals(depotHead.getType()) && + BusinessConstants.SUB_TYPE_PURCHASE_ORDER.equals(depotHead.getSubType())) { + DepotHead dh = new DepotHead(); + //获取分批操作后单据的商品和商品数量(汇总) + List batchList = depotItemMapperEx.getBatchBillDetailMaterialSum(depotHead.getLinkNumber(), "normal", depotHead.getType()); + if(batchList.size()>0) { + dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_SKIPING); + } else { + dh.setPurchaseStatus(BusinessConstants.PURCHASE_STATUS_UN_AUDIT); + } + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(depotHead.getLinkNumber()); + depotHeadMapper.updateByExampleSelective(dh, example); + } + } + //对于零售出库单据,更新会员的预收款信息 + if (BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) + && BusinessConstants.SUB_TYPE_RETAIL.equals(depotHead.getSubType())){ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())) { + if (depotHead.getOrganId() != null) { + //更新会员预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + } + } + } + for (DepotItem depotItem : list) { + //更新当前库存 + depotItemService.updateCurrentStock(depotItem); + //更新当前成本价 + depotItemService.updateCurrentUnitPrice(depotItem); + } + } + //路径列表 + List pathList = new ArrayList<>(); + for(DepotHead depotHead: dhList){ + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + pathList.add(depotHead.getFileName()); + } + } + //逻辑删除文件 + systemConfigService.deleteFileByPathList(pathList); + logService.insertLog("单据", sb.toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + return 1; + } + + /** + * 删除单据主表信息 + * @param ids + * @return + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteDepotHeadByIds(String ids)throws Exception { + User userInfo=userService.getCurrentUser(); + String [] idArray=ids.split(","); + int result=0; + try{ + result = depotHeadMapperEx.batchDeleteDepotHeadByIds(new Date(),userInfo==null?null:userInfo.getId(),idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getDepotHeadListByIds(String ids)throws Exception { + List idList = StringUtil.strToLongList(ids); + List list = new ArrayList<>(); + try{ + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(idList); + list = depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + /** + * 校验单据编号是否存在 + * @param id + * @param number + * @return + * @throws Exception + */ + public int checkIsBillNumberExist(Long id, String number)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdNotEqualTo(id).andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = null; + try{ + list = depotHeadMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchSetStatus(String status, String depotHeadIDs)throws Exception { + int result = 0; + List dhIds = new ArrayList<>(); + List ids = StringUtil.strToLongList(depotHeadIDs); + for(Long id: ids) { + DepotHead depotHead = getDepotHead(id); + if("0".equals(status)){ + //进行反审核操作 + if("1".equals(depotHead.getStatus()) && "0".equals(depotHead.getPurchaseStatus())) { + dhIds.add(id); + } else if("2".equals(depotHead.getPurchaseStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_TWO_MSG)); + } else if("3".equals(depotHead.getPurchaseStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_PURCHASE_STATUS_THREE_MSG)); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_AUDIT_TO_UN_AUDIT_FAILED_MSG)); + } + } else if("1".equals(status)){ + //进行审核操作 + if("0".equals(depotHead.getStatus())) { + dhIds.add(id); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_UN_AUDIT_TO_AUDIT_FAILED_MSG)); + } + } + } + if(dhIds.size()>0) { + DepotHead depotHead = new DepotHead(); + depotHead.setStatus(status); + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andIdIn(dhIds); + result = depotHeadMapper.updateByExampleSelective(depotHead, example); + //更新当前库存 + if(systemConfigService.getForceApprovalFlag()) { + for(Long dhId: dhIds) { + List list = depotItemService.getListByHeaderId(dhId); + for (DepotItem depotItem : list) { + depotItemService.updateCurrentStock(depotItem); + } + } + } + } + return result; + } + + public Map findMaterialsListMapByHeaderIdList(List idList)throws Exception { + Map materialsListMap = new HashMap<>(); + if(idList.size()>0) { + List list = depotHeadMapperEx.findMaterialsListMapByHeaderIdList(idList); + for (MaterialsListVo materialsListVo : list) { + String materialsList = materialsListVo.getMaterialsList(); + if(StringUtil.isNotEmpty(materialsList)) { + materialsList = materialsList.replace(",",","); + } + materialsListMap.put(materialsListVo.getHeaderId(), materialsList); + } + } + return materialsListMap; + } + + public Map getMaterialCountListMapByHeaderIdList(List idList)throws Exception { + Map materialCountListMap = new HashMap<>(); + if(idList.size()>0) { + List list = depotHeadMapperEx.getMaterialCountListByHeaderIdList(idList); + for(MaterialCountVo materialCountVo : list){ + materialCountListMap.put(materialCountVo.getHeaderId(), materialCountVo.getMaterialCount()); + } + } + return materialCountListMap; + } + + public List findInOutDetail(String beginTime, String endTime, String type, String[] creatorArray, + String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, + String materialParam, List depotList, Integer oId, String number, + Long creator, String remark, String column, String order, Integer offset, Integer rows) throws Exception{ + List list = null; + try{ + list =depotHeadMapperEx.findInOutDetail(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findInOutDetailCount(String beginTime, String endTime, String type, String[] creatorArray, + String[] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, String materialParam, List depotList, Integer oId, String number, + Long creator, String remark) throws Exception{ + int result = 0; + try{ + result =depotHeadMapperEx.findInOutDetailCount(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InDetail findInOutDetailStatistic(String beginTime, String endTime, String type, String [] creatorArray, + String [] organArray, List categoryList, Boolean forceFlag, Boolean inOutManageFlag, + String materialParam, List depotList, Integer oId, String number, + Long creator, String remark) throws Exception{ + DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); + try{ + List list =depotHeadMapperEx.findInOutDetailStatistic(beginTime, endTime, type, creatorArray, organArray, categoryList, forceFlag, inOutManageFlag, + materialParam, depotList, oId, number, creator, remark); + if(list.size()>0) { + item.setOperNumber(list.get(0).getOperNumber()); + item.setAllPrice(list.get(0).getAllPrice()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List findInOutMaterialCount(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId, String column, String order, + Integer offset, Integer rows)throws Exception { + List list = null; + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + list =depotHeadMapperEx.findInOutMaterialCount(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, + creatorArray, organArray, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findInOutMaterialCountTotal(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId)throws Exception { + int result = 0; + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + result =depotHeadMapperEx.findInOutMaterialCountTotal(beginTime, endTime, type, categoryList, forceFlag, inOutManageFlag, materialParam, depotList, oId, + creatorArray, organArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InOutMCount findInOutMaterialCountStatistic(String beginTime, String endTime, String type, List categoryList, + Boolean forceFlag, Boolean inOutManageFlag, String materialParam, + List depotList, Long organizationId, Integer oId) throws Exception { + DepotHeadVo4InOutMCount item = new DepotHeadVo4InOutMCount(); + try{ + String [] creatorArray = getCreatorArray(); + if(creatorArray == null && organizationId != null) { + creatorArray = getCreatorArrayByOrg(organizationId); + } + String subType = "出库".equals(type)? "销售" : ""; + String [] organArray = getOrganArray(subType, ""); + List list = depotHeadMapperEx.findInOutMaterialCountStatistic(beginTime, endTime, type, categoryList, + forceFlag, inOutManageFlag, materialParam, depotList, oId, creatorArray, organArray); + if(list.size()>0) { + item.setNumSum(list.get(0).getNumSum()); + item.setPriceSum(list.get(0).getPriceSum()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List findAllocationDetail(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark, String column, String order, Integer offset, Integer rows) throws Exception{ + List list = null; + try{ + list =depotHeadMapperEx.findAllocationDetail(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark, column, order, offset, rows); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int findAllocationDetailCount(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark) throws Exception{ + int result = 0; + try{ + result =depotHeadMapperEx.findAllocationDetailCount(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public DepotHeadVo4InDetail findAllocationStatistic(String beginTime, String endTime, String subType, String number, + String [] creatorArray, List categoryList, Boolean forceFlag, String materialParam, List depotList, List depotFList, + String remark) throws Exception{ + DepotHeadVo4InDetail item = new DepotHeadVo4InDetail(); + try{ + List list =depotHeadMapperEx.findAllocationStatistic(beginTime, endTime, subType, number, creatorArray, categoryList, forceFlag, + materialParam, depotList, depotFList, remark); + if(list.size()>0) { + item.setOperNumber(list.get(0).getOperNumber()); + item.setAllPrice(list.get(0).getAllPrice()); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return item; + } + + public List getStatementAccount(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, String typeBack, + String subTypeBack, String billType, Integer offset, Integer rows) { + List list = null; + try{ + list = depotHeadMapperEx.getStatementAccount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType, offset, rows); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public int getStatementAccountCount(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, String typeBack, String subTypeBack, String billType) { + int result = 0; + try{ + result = depotHeadMapperEx.getStatementAccountCount(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + public List getStatementAccountTotalPay(String beginTime, String endTime, Integer organId, String [] organArray, + Integer hasDebt, String supplierType, String type, String subType, + String typeBack, String subTypeBack, String billType) { + List list = null; + try{ + list = depotHeadMapperEx.getStatementAccountTotalPay(beginTime, endTime, organId, organArray, hasDebt, supplierType, type, subType,typeBack, subTypeBack, billType); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getDetailByNumber(String number, HttpServletRequest request)throws Exception { + List resList = new ArrayList<>(); + try{ + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Map personMap = personService.getPersonMap(); + Map accountMap = accountService.getAccountMap(); + List list = depotHeadMapperEx.getDetailByNumber(number); + if (null != list) { + List idList = new ArrayList<>(); + List numberList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + numberList.add(dh.getNumber()); + } + //通过批量查询去构造map + Map financialBillNoMap = getFinancialBillNoMapByBillIdList(idList); + Map billSizeMap = getBillSizeMapByLinkNumberList(numberList); + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + DepotHeadVo4List dh = list.get(0); + String billCategory = getBillCategory(dh.getSubType()); + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getAccountIdList() != null) { + String accountidlistStr = dh.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountIdList(accountidlistStr); + } + if(dh.getAccountMoneyList() != null) { + String accountmoneylistStr = dh.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + dh.setAccountMoneyList(accountmoneylistStr); + } + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(roleService.parseBillPriceByLimit(dh.getChangeAmount().abs(), billCategory, priceLimit, request)); + } else { + dh.setChangeAmount(BigDecimal.ZERO); + } + if(dh.getTotalPrice() != null) { + dh.setTotalPrice(roleService.parseBillPriceByLimit(dh.getTotalPrice().abs(), billCategory, priceLimit, request)); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + dh.setDiscountLastMoney(roleService.parseBillPriceByLimit(discountLastMoney, billCategory, priceLimit, request)); + BigDecimal backAmount = dh.getBackAmount()!=null?dh.getBackAmount():BigDecimal.ZERO; + dh.setBackAmount(roleService.parseBillPriceByLimit(backAmount, billCategory, priceLimit, request)); + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } else { + dh.setDeposit(roleService.parseBillPriceByLimit(dh.getDeposit(), billCategory, priceLimit, request)); + } + //欠款计算 + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount():BigDecimal.ZERO; + BigDecimal debt = discountLastMoney.add(otherMoney).subtract((deposit.add(changeAmount))); + dh.setDebt(roleService.parseBillPriceByLimit(debt, billCategory, priceLimit, request)); + //是否有付款单或收款单 + if(financialBillNoMap!=null) { + Integer financialBillNoSize = financialBillNoMap.get(dh.getId()); + dh.setHasFinancialFlag(financialBillNoSize!=null && financialBillNoSize>0); + } + //是否有退款单 + if(billSizeMap!=null) { + Integer billListSize = billSizeMap.get(dh.getNumber()); + dh.setHasBackFlag(billListSize!=null && billListSize>0); + } + if(StringUtil.isNotEmpty(dh.getSalesMan())) { + dh.setSalesManStr(personService.getPersonByMapAndIds(personMap,dh.getSalesMan())); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + dh.setCreatorName(userService.getUser(dh.getCreator()).getUsername()); + resList.add(dh); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + /** + * 查询除当前单据之外的关联单据列表 + * @param linkNumber + * @param number + * @return + * @throws Exception + */ + public List getListByLinkNumberExceptCurrent(String linkNumber, String number, String type)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberEqualTo(linkNumber).andNumberNotEqualTo(number).andTypeEqualTo(type) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 查询除当前单据之外的关联单据列表 + * @param linkApply + * @param number + * @return + * @throws Exception + */ + public List getListByLinkApplyExceptCurrent(String linkApply, String number, String type)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkApplyEqualTo(linkApply).andNumberNotEqualTo(number).andTypeEqualTo(type) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 根据原单号查询关联的单据列表(批量) + * @param linkNumberList + * @return + * @throws Exception + */ + public List getBillListByLinkNumberList(List linkNumberList)throws Exception { + if(linkNumberList!=null && linkNumberList.size()>0) { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberIn(linkNumberList).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } else { + return new ArrayList<>(); + } + } + + /** + * 根据原单号查询关联的单据列表 + * @param linkNumber + * @return + * @throws Exception + */ + public List getBillListByLinkNumber(String linkNumber)throws Exception { + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andLinkNumberEqualTo(linkNumber).andSubTypeLike("退货").andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return depotHeadMapper.selectByExample(example); + } + + /** + * 新增单据主表及单据子表信息 + * @param beanJson + * @param rows + * @param request + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void addDepotHeadAndDetail(String beanJson, String rows, + HttpServletRequest request) throws Exception { + /**处理单据主表数据*/ + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + //校验单号是否重复 + if(checkIsBillNumberExist(0L, depotHead.getNumber())>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); + } + //校验是否同时录入关联请购单号和关联订单号 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); + } + String subType = depotHead.getSubType(); + //结算账户校验 + if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { + if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); + } + } + //判断用户是否已经登录过,登录过不再处理 + User userInfo=userService.getCurrentUser(); + depotHead.setCreator(userInfo==null?null:userInfo.getId()); + depotHead.setCreateTime(new Timestamp(System.currentTimeMillis())); + if(StringUtil.isEmpty(depotHead.getStatus())) { + depotHead.setStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + } + depotHead.setPurchaseStatus(BusinessConstants.BILLS_STATUS_UN_AUDIT); + depotHead.setPayType(depotHead.getPayType()==null?"现付":depotHead.getPayType()); + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ + depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); + } + if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { + //校验多账户的结算金额 + String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); + BigDecimal manyAccountSum = sum.abs(); + if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); + } + depotHead.setAccountMoneyList(accountMoneyList); + } + //校验累计扣除订金是否超出订单中的金额 + if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); + //订单中的订金金额 + BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); + if(changeAmount!=null) { + BigDecimal preDeposit = changeAmount.abs(); + if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); + } + } + } + //校验附件的数量 + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + String[] fileArr = depotHead.getFileName().split(","); + if(fileArr.length>4) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); + } + } + depotHeadMapper.insertSelective(depotHead); + /**入库和出库处理预付款信息*/ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ + if(depotHead.getOrganId()!=null) { + BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); + if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { + //更新会员的预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); + } + } + } + //根据单据编号查询单据id + DepotHeadExample dhExample = new DepotHeadExample(); + dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + /**入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows,headId, "add",request); + } + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_ADD).append(depotHead.getNumber()).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + + /** + * 更新单据主表及单据子表信息 + * @param beanJson + * @param rows + * @param request + * @throws Exception + */ + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void updateDepotHeadAndDetail(String beanJson, String rows,HttpServletRequest request)throws Exception { + /**更新单据主表信息*/ + DepotHead depotHead = JSONObject.parseObject(beanJson, DepotHead.class); + //校验单号是否重复 + if(checkIsBillNumberExist(depotHead.getId(), depotHead.getNumber())>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_NUMBER_EXIST_MSG)); + } + //校验是否同时录入关联请购单号和关联订单号 + if(StringUtil.isNotEmpty(depotHead.getLinkNumber()) && StringUtil.isNotEmpty(depotHead.getLinkApply())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_REPEAT_NO_FAILED_MSG)); + } + //校验单据状态,如果不是未审核则提示 + if(!"0".equals(getDepotHead(depotHead.getId()).getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_BILL_CANNOT_EDIT_MSG)); + } + //获取之前的会员id + Long preOrganId = getDepotHead(depotHead.getId()).getOrganId(); + String subType = depotHead.getSubType(); + //结算账户校验 + if("采购".equals(subType) || "采购退货".equals(subType) || "销售".equals(subType) || "销售退货".equals(subType)) { + if (StringUtil.isEmpty(depotHead.getAccountIdList()) && depotHead.getAccountId() == null) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_ACCOUNT_FAILED_MSG)); + } + } + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())){ + depotHead.setAccountIdList(depotHead.getAccountIdList().replace("[", "").replace("]", "").replaceAll("\"", "")); + } + if(StringUtil.isNotEmpty(depotHead.getAccountMoneyList())) { + //校验多账户的结算金额 + String accountMoneyList = depotHead.getAccountMoneyList().replace("[", "").replace("]", "").replaceAll("\"", ""); + BigDecimal sum = StringUtil.getArrSum(accountMoneyList.split(",")); + BigDecimal manyAccountSum = sum.abs(); + if(manyAccountSum.compareTo(depotHead.getChangeAmount().abs())!=0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MANY_ACCOUNT_FAILED_MSG)); + } + depotHead.setAccountMoneyList(accountMoneyList); + } + //校验累计扣除订金是否超出订单中的金额 + if(depotHead.getDeposit()!=null && StringUtil.isNotEmpty(depotHead.getLinkNumber())) { + BigDecimal finishDeposit = depotHeadMapperEx.getFinishDepositByNumberExceptCurrent(depotHead.getLinkNumber(), depotHead.getNumber()); + //订单中的订金金额 + BigDecimal changeAmount = getDepotHead(depotHead.getLinkNumber()).getChangeAmount(); + if(changeAmount!=null) { + BigDecimal preDeposit = changeAmount.abs(); + if(depotHead.getDeposit().add(finishDeposit).compareTo(preDeposit)>0) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_DEPOSIT_OVER_PRE_MSG)); + } + } + } + //校验附件的数量 + if(StringUtil.isNotEmpty(depotHead.getFileName())) { + String[] fileArr = depotHead.getFileName().split(","); + if(fileArr.length>4) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_FILE_NUM_LIMIT_MSG, 4)); + } + } + depotHeadMapper.updateByPrimaryKeySelective(depotHead); + //如果存在多账户结算需要将原账户的id置空 + if(StringUtil.isNotEmpty(depotHead.getAccountIdList())) { + depotHeadMapperEx.setAccountIdToNull(depotHead.getId()); + } + /**入库和出库处理预付款信息*/ + if(BusinessConstants.PAY_TYPE_PREPAID.equals(depotHead.getPayType())){ + if(depotHead.getOrganId()!=null){ + BigDecimal currentAdvanceIn = supplierService.getSupplier(depotHead.getOrganId()).getAdvanceIn(); + if(currentAdvanceIn.compareTo(depotHead.getTotalPrice())>=0) { + //更新会员的预付款 + supplierService.updateAdvanceIn(depotHead.getOrganId()); + if(null != preOrganId && !preOrganId.equals(depotHead.getOrganId())) { + //更新之前会员的预付款 + supplierService.updateAdvanceIn(preOrganId); + } + } else { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_CODE, + String.format(ExceptionConstants.DEPOT_HEAD_MEMBER_PAY_LACK_MSG)); + } + } + } + /**入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows,depotHead.getId(), "update",request); + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_EDIT).append(depotHead.getNumber()).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } + + public Map getBuyAndSaleStatistics(String today, String monthFirstDay, String yesterdayBegin, String yesterdayEnd, + String yearBegin, String yearEnd, HttpServletRequest request) throws Exception { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + Boolean forceFlag = systemConfigService.getForceApprovalFlag(); + String[] creatorArray = getCreatorArray(); + List inOutPriceVoList = depotHeadMapperEx.getBuyAndSaleStatisticsList(yearBegin, yearEnd, creatorArray, forceFlag); + + String[] periods = {"today", "month", "yesterday", "year"}; + String[] types = {"Buy", "BuyBack", "Sale", "SaleBack", "RetailSale", "RetailSaleBack"}; + + Map statistics = new HashMap<>(); + + // 初始化 statistics Map + for (String period : periods) { + for (String type : types) { + statistics.put(period + type, BigDecimal.ZERO); + } + } + + Date todayDate = Tools.strToDate(today); + Date monthFirstDate = Tools.strToDate(monthFirstDay); + Date yesterdayStartDate = Tools.strToDate(yesterdayBegin); + Date yesterdayEndDate = Tools.strToDate(yesterdayEnd); + Date yearStartDate = Tools.strToDate(yearBegin); + Date yearEndDate = Tools.strToDate(yearEnd); + + for (InOutPriceVo item : inOutPriceVoList) { + Date operTime = item.getOperTime(); + BigDecimal discountLastMoney = item.getDiscountLastMoney(); + BigDecimal totalPriceAbs = item.getTotalPrice().abs(); + + if (isWithinRange(operTime, todayDate, Tools.strToDate(getNow3()))) { + updateStatistics(statistics, item, "today", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, monthFirstDate, Tools.strToDate(getNow3()))) { + updateStatistics(statistics, item, "month", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, yesterdayStartDate, yesterdayEndDate)) { + updateStatistics(statistics, item, "yesterday", discountLastMoney, totalPriceAbs); + } + + if (isWithinRange(operTime, yearStartDate, yearEndDate)) { + updateStatistics(statistics, item, "year", discountLastMoney, totalPriceAbs); + } + } + + Map result = new HashMap<>(); + for (String period : periods) { + result.put(period + "Buy", roleService.parseHomePriceByLimit(statistics.get(period + "Buy").subtract(statistics.get(period + "BuyBack")), "buy", priceLimit, "***", request)); + result.put(period + "Sale", roleService.parseHomePriceByLimit(statistics.get(period + "Sale").subtract(statistics.get(period + "SaleBack")), "sale", priceLimit, "***", request)); + result.put(period + "RetailSale", roleService.parseHomePriceByLimit(statistics.get(period + "RetailSale").subtract(statistics.get(period + "RetailSaleBack")), "retail", priceLimit, "***", request)); + } + + return result; + } + + private boolean isWithinRange(Date operTime, Date startDate, Date endDate) { + return operTime.compareTo(startDate) >= 0 && operTime.compareTo(endDate) <= 0; + } + + private void updateStatistics(Map statistics, InOutPriceVo item, String period, BigDecimal discountLastMoney, BigDecimal totalPriceAbs) { + switch (item.getType()) { + case "入库": + switch (item.getSubType()) { + case "采购": + statistics.put(period + "Buy", statistics.get(period + "Buy").add(discountLastMoney)); + break; + case "销售退货": + statistics.put(period + "SaleBack", statistics.get(period + "SaleBack").add(discountLastMoney)); + break; + case "零售退货": + statistics.put(period + "RetailSaleBack", statistics.get(period + "RetailSaleBack").add(totalPriceAbs)); + break; + } + break; + case "出库": + switch (item.getSubType()) { + case "采购退货": + statistics.put(period + "BuyBack", statistics.get(period + "BuyBack").add(discountLastMoney)); + break; + case "销售": + statistics.put(period + "Sale", statistics.get(period + "Sale").add(discountLastMoney)); + break; + case "零售": + statistics.put(period + "RetailSale", statistics.get(period + "RetailSale").add(totalPriceAbs)); + break; + } + break; + } + } + + + public DepotHead getDepotHead(String number)throws Exception { + DepotHead depotHead = new DepotHead(); + try{ + DepotHeadExample example = new DepotHeadExample(); + example.createCriteria().andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(example); + if(null!=list && list.size()>0) { + depotHead = list.get(0); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return depotHead; + } + + public List debtList(Long organId, String materialParam, String number, String beginTime, String endTime, + String status, Integer offset, Integer rows) { + List resList = new ArrayList<>(); + try{ + String depotIds = depotService.findDepotStrByCurrentUser(); + String [] depotArray=depotIds.split(","); + String [] creatorArray = getCreatorArray(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List list=depotHeadMapperEx.debtList(organId, creatorArray, status, number, + beginTime, endTime, materialParam, depotArray, offset, rows); + if (null != list) { + resList = parseDebtBillList(list); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + public int debtListCount(Long organId, String materialParam, String number, String beginTime, String endTime, + String status) { + int total = 0; + try { + String depotIds = depotService.findDepotStrByCurrentUser(); + String[] depotArray = depotIds.split(","); + String[] creatorArray = getCreatorArray(); + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); + total = depotHeadMapperEx.debtListCount(organId, creatorArray, status, number, + beginTime, endTime, materialParam, depotArray); + } catch(Exception e){ + JshException.readFail(logger, e); + } + return total; + } + + public void debtExport(Long organId, String materialParam, String number, String type, String subType, + String beginTime, String endTime, String status, String mpList, + HttpServletRequest request, HttpServletResponse response) { + try { + Long userId = userService.getUserId(request); + String priceLimit = userService.getRoleTypeByUserId(userId).getPriceLimit(); + String billCategory = getBillCategory(subType); + String depotIds = depotService.findDepotStrByCurrentUser(); + String[] depotArray = depotIds.split(","); + String[] creatorArray = getCreatorArray(); + status = StringUtil.isNotEmpty(status) ? status : null; + beginTime = Tools.parseDayToTime(beginTime, BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime, BusinessConstants.DAY_LAST_TIME); + List dhList = new ArrayList<>(); + List list = depotHeadMapperEx.debtList(organId, creatorArray, status, number, + beginTime, endTime, materialParam, depotArray, null, null); + if (null != list) { + dhList = parseDebtBillList(list); + } + //生成Excel文件 + String fileName = "单据信息"; + File file = new File("/opt/"+ fileName); + WritableWorkbook wtwb = Workbook.createWorkbook(file); + String oneTip = ""; + String sheetOneStr = ""; + if("采购".equals(subType)) { + oneTip = "供应商对账列表"; + sheetOneStr = "供应商,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已付欠款,待付欠款,备注"; + } else if("出库".equals(type) && "销售".equals(subType)) { + oneTip = "客户对账列表"; + sheetOneStr = "客户,单据编号,关联单据,商品信息,单据日期,操作员,单据金额,本单欠款,已收欠款,待收欠款,备注"; + } + if(StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { + oneTip = oneTip + "(" + beginTime + "至" + endTime + ")"; + } + List sheetOneList = StringUtil.strToStringList(sheetOneStr); + String[] sheetOneArr = StringUtil.listToStringArray(sheetOneList); + List idList = new ArrayList<>(); + List billList = new ArrayList<>(); + Map billListCacheVoMap = new HashMap<>(); + for (DepotHeadVo4List dh : dhList) { + idList.add(dh.getId()); + BillListCacheVo billListCacheVo = new BillListCacheVo(); + billListCacheVo.setNumber(dh.getNumber()); + billListCacheVo.setOrganName(dh.getOrganName()); + billListCacheVo.setOperTimeStr(getCenternTime(dh.getOperTime())); + billListCacheVoMap.put(dh.getId(), billListCacheVo); + String[] objs = new String[sheetOneArr.length]; + objs[0] = dh.getOrganName(); + objs[1] = dh.getNumber(); + objs[2] = dh.getLinkNumber(); + objs[3] = dh.getMaterialsList(); + objs[4] = dh.getOperTimeStr(); + objs[5] = dh.getUserName(); + BigDecimal discountLastMoney = dh.getDiscountLastMoney() == null ? BigDecimal.ZERO : dh.getDiscountLastMoney(); + BigDecimal otherMoney = dh.getOtherMoney() == null ? BigDecimal.ZERO : dh.getOtherMoney(); + BigDecimal deposit = dh.getDeposit() == null ? BigDecimal.ZERO : dh.getDeposit(); + objs[6] = parseDecimalToStr(discountLastMoney.add(otherMoney).subtract(deposit), 2); + objs[7] = parseDecimalToStr(dh.getNeedDebt(), 2); + objs[8] = parseDecimalToStr(dh.getFinishDebt(), 2); + objs[9] = parseDecimalToStr(dh.getDebt(), 2); + objs[10] = dh.getRemark(); + billList.add(objs); + } + ExcelUtils.exportObjectsManySheet(wtwb, oneTip, sheetOneArr, "单据列表", 0, billList); + //导出明细数据 + if(idList.size()>0) { + List dataList = depotItemMapperEx.getBillDetailListByIds(idList); + String[] mpArr = mpList.split(","); + String twoTip = ""; + String sheetTwoStr = ""; + if ("采购".equals(subType)) { + twoTip = "供应商单据明细"; + sheetTwoStr = "供应商,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商,扩展信息,单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; + } else if ("销售".equals(subType)) { + twoTip = "客户单据明细"; + sheetTwoStr = "客户,单据编号,单据日期,仓库名称,条码,名称,规格,型号,颜色,品牌,制造商,扩展信息,单位,序列号,批号,有效期,多属性,数量,单价,金额,税率(%),税额,价税合计,重量,备注"; + } + if (StringUtil.isNotEmpty(beginTime) && StringUtil.isNotEmpty(endTime)) { + twoTip = twoTip + "(" + beginTime + "至" + endTime + ")"; + } + List sheetTwoList = StringUtil.strToStringList(sheetTwoStr); + String[] sheetTwoArr = StringUtil.listToStringArray(sheetTwoList); + List billDetail = new ArrayList<>(); + for (DepotItemVo4WithInfoEx diEx : dataList) { + String[] objs = new String[sheetTwoArr.length]; + BillListCacheVo billListCacheVo = billListCacheVoMap.get(diEx.getHeaderId()); + objs[0] = billListCacheVo != null ? billListCacheVo.getOrganName() : ""; + objs[1] = billListCacheVo != null ? billListCacheVo.getNumber() : ""; + objs[2] = billListCacheVo != null ? billListCacheVo.getOperTimeStr() : ""; + objs[3] = diEx.getDepotId() == null ? "" : diEx.getDepotName(); + objs[4] = diEx.getBarCode(); + objs[5] = diEx.getMName(); + objs[6] = diEx.getMStandard(); + objs[7] = diEx.getMModel(); + objs[8] = diEx.getMColor(); + objs[9] = diEx.getBrand(); + objs[10] = diEx.getMMfrs(); + objs[11] = depotItemService.getOtherInfo(mpArr, diEx); + objs[12] = diEx.getMaterialUnit(); + objs[13] = diEx.getSnList(); + objs[14] = diEx.getBatchNumber(); + objs[15] = Tools.parseDateToStr(diEx.getExpirationDate()); + objs[16] = diEx.getSku(); + objs[17] = parseDecimalToStr(diEx.getOperNumber(), 2); + objs[18] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getUnitPrice(), billCategory, priceLimit, request), 2); + objs[19] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getAllPrice(), billCategory, priceLimit, request), 2); + objs[20] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxRate(), billCategory, priceLimit, request), 2); + objs[21] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxMoney(), billCategory, priceLimit, request), 2); + objs[22] = parseDecimalToStr(roleService.parseBillPriceByLimit(diEx.getTaxLastMoney(), billCategory, priceLimit, request), 2); + BigDecimal allWeight = diEx.getBasicNumber() == null || diEx.getWeight() == null ? BigDecimal.ZERO : diEx.getBasicNumber().multiply(diEx.getWeight()); + objs[23] = parseDecimalToStr(allWeight, 2); + objs[24] = diEx.getRemark(); + billDetail.add(objs); + } + ExcelUtils.exportObjectsManySheet(wtwb, twoTip, sheetTwoArr, "单据明细", 1, billDetail); + } + wtwb.write(); + wtwb.close(); + ExcelUtils.downloadExcel(file, file.getName(), response); + } catch(Exception e){ + JshException.readFail(logger, e); + } + } + + public List parseDebtBillList(List list) throws Exception { + List idList = new ArrayList<>(); + List dhList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + } + //通过批量查询去构造map + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(dh.getChangeAmount() != null) { + dh.setChangeAmount(dh.getChangeAmount().abs()); + } + if(dh.getTotalPrice() != null) { + dh.setTotalPrice(dh.getTotalPrice().abs()); + } + if(dh.getDeposit() == null) { + dh.setDeposit(BigDecimal.ZERO); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + BigDecimal discountLastMoney = dh.getDiscountLastMoney()!=null?dh.getDiscountLastMoney():BigDecimal.ZERO; + BigDecimal otherMoney = dh.getOtherMoney()!=null?dh.getOtherMoney():BigDecimal.ZERO; + BigDecimal deposit = dh.getDeposit()!=null?dh.getDeposit():BigDecimal.ZERO; + BigDecimal changeAmount = dh.getChangeAmount()!=null?dh.getChangeAmount().abs():BigDecimal.ZERO; + //本单欠款(如果退货则为负数) + dh.setNeedDebt(discountLastMoney.add(otherMoney).subtract(deposit.add(changeAmount))); + if(BusinessConstants.SUB_TYPE_PURCHASE_RETURN.equals(dh.getSubType()) || BusinessConstants.SUB_TYPE_SALES_RETURN.equals(dh.getSubType())) { + dh.setNeedDebt(BigDecimal.ZERO.subtract(dh.getNeedDebt())); + } + BigDecimal needDebt = dh.getNeedDebt()!=null?dh.getNeedDebt():BigDecimal.ZERO; + BigDecimal finishDebt = accountItemService.getEachAmountByBillId(dh.getId()); + finishDebt = finishDebt!=null?finishDebt:BigDecimal.ZERO; + //已收欠款 + dh.setFinishDebt(finishDebt); + //待收欠款 + dh.setDebt(needDebt.subtract(finishDebt)); + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + dhList.add(dh); + } + return dhList; + } + + public String getBillCategory(String subType) { + if(subType.equals("零售") || subType.equals("零售退货")) { + return "retail"; + } else if(subType.equals("销售订单") || subType.equals("销售") || subType.equals("销售退货")) { + return "sale"; + } else { + return "buy"; + } + } + + /** + * 格式化金额样式 + * @param decimal + * @param num + * @return + */ + private String parseDecimalToStr(BigDecimal decimal, Integer num) { + return decimal == null ? "" : decimal.setScale(num, BigDecimal.ROUND_HALF_UP).toString(); + } + + private String parseStatusToStr(String status, String type) { + if(StringUtil.isNotEmpty(status)) { + if("purchase".equals(type)) { + switch (status) { + case "2": + return "完成采购"; + case "3": + return "部分采购"; + } + } else if("sale".equals(type)) { + switch (status) { + case "2": + return "完成销售"; + case "3": + return "部分销售"; + } + } + switch (status) { + case "0": + return "未审核"; + case "1": + return "已审核"; + case "9": + return "审核中"; + } + } + return ""; + } + + public List waitBillList(String number, String materialParam, String type, String subType, + String beginTime, String endTime, String status, int offset, int rows) { + List resList = new ArrayList<>(); + try{ + String [] depotArray = getDepotArray("其它"); + //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) + String [] creatorArray = null; + String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + Map accountMap = accountService.getAccountMap(); + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + List list = depotHeadMapperEx.waitBillList(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, + materialParam, depotArray, offset, rows); + if (null != list) { + List idList = new ArrayList<>(); + for (DepotHeadVo4List dh : list) { + idList.add(dh.getId()); + } + //通过批量查询去构造map + Map materialsListMap = findMaterialsListMapByHeaderIdList(idList); + Map materialCountListMap = getMaterialCountListMapByHeaderIdList(idList); + for (DepotHeadVo4List dh : list) { + if(accountMap!=null && StringUtil.isNotEmpty(dh.getAccountIdList()) && StringUtil.isNotEmpty(dh.getAccountMoneyList())) { + String accountStr = accountService.getAccountStrByIdAndMoney(accountMap, dh.getAccountIdList(), dh.getAccountMoneyList()); + dh.setAccountName(accountStr); + } + if(dh.getOperTime() != null) { + dh.setOperTimeStr(getCenternTime(dh.getOperTime())); + } + //商品信息简述 + if(materialsListMap!=null) { + dh.setMaterialsList(materialsListMap.get(dh.getId())); + } + //商品总数量 + if(materialCountListMap!=null) { + dh.setMaterialCount(materialCountListMap.get(dh.getId())); + } + resList.add(dh); + } + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return resList; + } + + public Long waitBillCount(String number, String materialParam, String type, String subType, + String beginTime, String endTime, String status) { + Long result=null; + try{ + String [] depotArray = getDepotArray("其它"); + //给仓管可以看全部的单据(此时可以通过分配仓库去控制权限) + String [] creatorArray = null; + String [] subTypeArray = StringUtil.isNotEmpty(subType) ? subType.split(",") : null; + String [] statusArray = StringUtil.isNotEmpty(status) ? status.split(",") : null; + beginTime = Tools.parseDayToTime(beginTime,BusinessConstants.DAY_FIRST_TIME); + endTime = Tools.parseDayToTime(endTime,BusinessConstants.DAY_LAST_TIME); + result=depotHeadMapperEx.waitBillCount(type, subTypeArray, creatorArray, statusArray, number, beginTime, endTime, + materialParam, depotArray); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public void batchAddDepotHeadAndDetail(String ids, HttpServletRequest request) throws Exception { + List dhList = getDepotHeadListByIds(ids); + StringBuilder sb = new StringBuilder(); + User userInfo=userService.getCurrentUser(); + for(DepotHead depotHead : dhList) { + String prefixNo = BusinessConstants.DEPOTHEAD_TYPE_IN.equals(depotHead.getType())?"QTRK":"QTCK"; + //关联单据单号 + String oldNumber = depotHead.getNumber(); + //校验单据最新状态不能进行批量操作 + if("0".equals(depotHead.getStatus()) || "2".equals(depotHead.getStatus()) || "9".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_NEW_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); + } + //校验是否是部分入库或者部分出库 + if("3".equals(depotHead.getStatus())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_PARTIALLY_STATUS_FAILED_MSG, oldNumber, depotHead.getType())); + } + depotHead.setLinkNumber(oldNumber); + //给单号重新赋值 + String number = prefixNo + sequenceService.buildOnlyNumber(); + depotHead.setNumber(number); + depotHead.setDefaultNumber(number); + depotHead.setOperTime(new Date()); + depotHead.setSubType(BusinessConstants.SUB_TYPE_OTHER); + depotHead.setChangeAmount(BigDecimal.ZERO); + depotHead.setTotalPrice(BigDecimal.ZERO); + depotHead.setDiscountLastMoney(BigDecimal.ZERO); + depotHead.setCreator(userInfo==null?null:userInfo.getId()); + depotHead.setOrganId(null); + depotHead.setAccountId(null); + depotHead.setAccountIdList(null); + depotHead.setAccountMoneyList(null); + depotHead.setSalesMan(null); + depotHead.setStatus("0"); + depotHead.setTenantId(null); + //查询明细 + List itemList = depotItemService.getDetailList(depotHead.getId()); + depotHead.setId(null); + JSONArray rowArr = new JSONArray(); + for(DepotItemVo4WithInfoEx item: itemList) { + if("1".equals(item.getEnableSerialNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_SERIAL_NUMBER_FAILED_MSG, oldNumber)); + } + if("1".equals(item.getEnableBatchNumber())) { + throw new BusinessRunTimeException(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_CODE, + String.format(ExceptionConstants.DEPOT_ITEM_EXIST_BATCH_NUMBER_FAILED_MSG, oldNumber)); + } + item.setUnitPrice(BigDecimal.ZERO); + item.setAllPrice(BigDecimal.ZERO); + item.setLinkId(item.getId()); + item.setTenantId(null); + String itemStr = JSONObject.toJSONString(item); + JSONObject itemObj = JSONObject.parseObject(itemStr); + itemObj.put("unit", itemObj.getString("materialUnit")); + rowArr.add(itemObj.toJSONString()); + } + String rows = rowArr.toJSONString(); + //新增其它入库单或其它出库单 + sb.append("[").append(depotHead.getNumber()).append("]"); + depotHeadMapper.insertSelective(depotHead); + //根据单据编号查询单据id + DepotHeadExample dhExample = new DepotHeadExample(); + dhExample.createCriteria().andNumberEqualTo(depotHead.getNumber()).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = depotHeadMapper.selectByExample(dhExample); + if(list!=null) { + Long headId = list.get(0).getId(); + /**入库和出库处理单据子表信息*/ + depotItemService.saveDetials(rows, headId, "add", request); + } + } + logService.insertLog("单据", + new StringBuffer(BusinessConstants.LOG_OPERATION_TYPE_BATCH_ADD).append(sb).toString(), + ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); + } +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java index 7f8b92348..c03174f8d 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotItemService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.depotItem; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -12,15 +12,6 @@ import com.jsh.erp.datasource.vo.DepotItemVoBatchNumberList; import com.jsh.erp.datasource.vo.InOutPriceVo; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.materialExtend.MaterialExtendService; -import com.jsh.erp.service.serialNumber.SerialNumberService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.unit.UnitService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/depot/DepotService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/depot/DepotService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java index 24e62a622..85ad11c22 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/depot/DepotService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/DepotService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.depot; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -8,10 +8,6 @@ import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.*; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/functions/FunctionService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/FunctionService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/functions/FunctionService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/FunctionService.java index 2d958c324..11cb5a232 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/functions/FunctionService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/FunctionService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.functions; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -9,9 +9,6 @@ import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.FunctionMapper; import com.jsh.erp.datasource.mappers.FunctionMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java index b9f9b169b..efaf043ba 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/inOutItem/InOutItemService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/InOutItemService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.inOutItem; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -12,8 +12,6 @@ import com.jsh.erp.datasource.mappers.InOutItemMapper; import com.jsh.erp.datasource.mappers.InOutItemMapperEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/log/LogService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/LogService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/log/LogService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/LogService.java index e96eaed12..5f6a30114 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/log/LogService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/LogService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.log; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -8,8 +8,6 @@ import com.jsh.erp.datasource.mappers.LogMapper; import com.jsh.erp.datasource.mappers.LogMapperEx; import com.jsh.erp.datasource.vo.LogVo4List; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.redis.RedisService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialAttribute/MaterialAttributeService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialAttributeService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/materialAttribute/MaterialAttributeService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MaterialAttributeService.java index 2ae20c6cf..69a30d724 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialAttribute/MaterialAttributeService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialAttributeService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.materialAttribute; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -9,7 +9,6 @@ import com.jsh.erp.datasource.mappers.MaterialAttributeMapper; import com.jsh.erp.datasource.mappers.MaterialAttributeMapperEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialCategoryService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MaterialCategoryService.java index 10e4a452d..68c78f6da 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialCategory/MaterialCategoryService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialCategoryService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.materialCategory; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -13,8 +13,6 @@ import com.jsh.erp.datasource.mappers.MaterialMapperEx; import com.jsh.erp.datasource.vo.TreeNode; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java similarity index 97% rename from jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java index ef0f628fd..e13be6e13 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialExtend/MaterialExtendService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialExtendService.java @@ -1,409 +1,406 @@ -package com.jsh.erp.service.materialExtend; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; -import com.jsh.erp.datasource.entities.MaterialExtend; -import com.jsh.erp.datasource.entities.MaterialExtendExample; -import com.jsh.erp.datasource.entities.User; -import com.jsh.erp.datasource.mappers.MaterialExtendMapper; -import com.jsh.erp.datasource.mappers.MaterialExtendMapperEx; -import com.jsh.erp.datasource.vo.MaterialExtendVo4List; -import com.jsh.erp.exception.BusinessRunTimeException; -import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.redis.RedisService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.utils.StringUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - - -@Service -public class MaterialExtendService { - private Logger logger = LoggerFactory.getLogger(MaterialExtendService.class); - - @Resource - private MaterialExtendMapper materialExtendMapper; - @Resource - private MaterialExtendMapperEx materialExtendMapperEx; - @Resource - private UserService userService; - @Resource - private RedisService redisService; - - public MaterialExtend getMaterialExtend(long id)throws Exception { - MaterialExtend result=null; - try{ - result=materialExtendMapper.selectByPrimaryKey(id); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return result; - } - public List getDetailList(Long materialId) { - List list=null; - try{ - list = materialExtendMapperEx.getDetailList(materialId); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - public List getListByMIds(List idList) { - List meList = null; - try{ - Long [] idArray= StringUtil.listToLongArray(idList); - if(idArray!=null && idArray.length>0) { - meList = materialExtendMapperEx.getListByMId(idArray); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return meList; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public String saveDetials(JSONObject obj, String sortList, Long materialId, String type) throws Exception { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - JSONArray meArr = obj.getJSONArray("meList"); - JSONArray insertedJson = new JSONArray(); - JSONArray updatedJson = new JSONArray(); - JSONArray deletedJson = obj.getJSONArray("meDeleteIdList"); - JSONArray sortJson = JSONArray.parseArray(sortList); - if (null != meArr) { - if("insert".equals(type)){ - for (int i = 0; i < meArr.size(); i++) { - JSONObject tempJson = meArr.getJSONObject(i); - insertedJson.add(tempJson); - } - } else if("update".equals(type)){ - for (int i = 0; i < meArr.size(); i++) { - JSONObject tempJson = meArr.getJSONObject(i); - String tempId = tempJson.getString("id"); - if(tempId.length()>19){ - insertedJson.add(tempJson); - } else { - updatedJson.add(tempJson); - } - } - } - } - if (null != deletedJson) { - StringBuffer bf=new StringBuffer(); - for (int i = 0; i < deletedJson.size(); i++) { - bf.append(deletedJson.getString(i)); - if(i<(deletedJson.size()-1)){ - bf.append(","); - } - } - this.batchDeleteMaterialExtendByIds(bf.toString(), request); - } - if (null != insertedJson) { - for (int i = 0; i < insertedJson.size(); i++) { - MaterialExtend materialExtend = new MaterialExtend(); - JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); - materialExtend.setMaterialId(materialId); - if (StringUtils.isNotEmpty(tempInsertedJson.getString("barCode"))) { - int exist = checkIsBarCodeExist(0L, tempInsertedJson.getString("barCode")); - if(exist>0) { - throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, - String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempInsertedJson.getString("barCode"))); - } else { - materialExtend.setBarCode(tempInsertedJson.getString("barCode")); - } - } - if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityUnit"))) { - materialExtend.setCommodityUnit(tempInsertedJson.getString("commodityUnit")); - } - if (tempInsertedJson.get("sku")!=null) { - materialExtend.setSku(tempInsertedJson.getString("sku")); - } - if (StringUtils.isNotEmpty(tempInsertedJson.getString("purchaseDecimal"))) { - materialExtend.setPurchaseDecimal(tempInsertedJson.getBigDecimal("purchaseDecimal")); - } - if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityDecimal"))) { - materialExtend.setCommodityDecimal(tempInsertedJson.getBigDecimal("commodityDecimal")); - } - if (StringUtils.isNotEmpty(tempInsertedJson.getString("wholesaleDecimal"))) { - materialExtend.setWholesaleDecimal(tempInsertedJson.getBigDecimal("wholesaleDecimal")); - } - if (StringUtils.isNotEmpty(tempInsertedJson.getString("lowDecimal"))) { - materialExtend.setLowDecimal(tempInsertedJson.getBigDecimal("lowDecimal")); - } - this.insertMaterialExtend(materialExtend); - } - } - if (null != updatedJson) { - for (int i = 0; i < updatedJson.size(); i++) { - JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i)); - MaterialExtend materialExtend = new MaterialExtend(); - materialExtend.setId(tempUpdatedJson.getLong("id")); - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("barCode"))) { - int exist = checkIsBarCodeExist(tempUpdatedJson.getLong("id"), tempUpdatedJson.getString("barCode")); - if(exist>0) { - throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, - String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempUpdatedJson.getString("barCode"))); - } else { - materialExtend.setBarCode(tempUpdatedJson.getString("barCode")); - } - } - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityUnit"))) { - materialExtend.setCommodityUnit(tempUpdatedJson.getString("commodityUnit")); - } - if (tempUpdatedJson.get("sku")!=null) { - materialExtend.setSku(tempUpdatedJson.getString("sku")); - } - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("purchaseDecimal"))) { - materialExtend.setPurchaseDecimal(tempUpdatedJson.getBigDecimal("purchaseDecimal")); - } - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityDecimal"))) { - materialExtend.setCommodityDecimal(tempUpdatedJson.getBigDecimal("commodityDecimal")); - } - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("wholesaleDecimal"))) { - materialExtend.setWholesaleDecimal(tempUpdatedJson.getBigDecimal("wholesaleDecimal")); - } - if (StringUtils.isNotEmpty(tempUpdatedJson.getString("lowDecimal"))) { - materialExtend.setLowDecimal(tempUpdatedJson.getBigDecimal("lowDecimal")); - } - this.updateMaterialExtend(materialExtend); - //如果金额为空,此处单独置空 - materialExtendMapperEx.specialUpdatePrice(materialExtend); - } - } - //处理条码的排序,基本单位排第一个 - if (null != sortJson && sortJson.size()>0) { - //此处为更新的逻辑 - for (int i = 0; i < sortJson.size(); i++) { - JSONObject tempSortJson = JSONObject.parseObject(sortJson.getString(i)); - MaterialExtend materialExtend = new MaterialExtend(); - if(StringUtil.isExist(tempSortJson.get("id"))) { - materialExtend.setId(tempSortJson.getLong("id")); - } - if(StringUtil.isExist(tempSortJson.get("defaultFlag"))) { - materialExtend.setDefaultFlag(tempSortJson.getString("defaultFlag")); - } - this.updateMaterialExtend(materialExtend); - } - } else { - //新增的时候将第一条记录设置为默认基本单位 - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andMaterialIdEqualTo(materialId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List meList = materialExtendMapper.selectByExample(example); - if(meList!=null) { - for(int i=0; i 0) { - criteria.andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } else { - criteria.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - } - List list =null; - try{ - list = materialExtendMapper.selectByExample(example); - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list==null?0:list.size(); - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int deleteMaterialExtend(Long id, HttpServletRequest request)throws Exception { - int result =0; - MaterialExtend materialExtend = new MaterialExtend(); - materialExtend.setId(id); - materialExtend.setDeleteFlag(BusinessConstants.DELETE_FLAG_DELETED); - Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); - User user = userService.getUser(userId); - materialExtend.setUpdateTime(new Date().getTime()); - materialExtend.setUpdateSerial(user.getLoginName()); - try{ - result= materialExtendMapper.updateByPrimaryKeySelective(materialExtend); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public int batchDeleteMaterialExtendByIds(String ids, HttpServletRequest request) throws Exception{ - String [] idArray=ids.split(","); - int result = 0; - try{ - result = materialExtendMapperEx.batchDeleteMaterialExtendByIds(idArray); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - public int insertMaterialExtend(JSONObject obj, HttpServletRequest request) throws Exception{ - MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); - int result=0; - try{ - result = materialExtendMapper.insertSelective(materialExtend); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - public int updateMaterialExtend(JSONObject obj, HttpServletRequest request)throws Exception { - MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); - int result=0; - try{ - result = materialExtendMapper.updateByPrimaryKeySelective(materialExtend); - }catch(Exception e){ - JshException.writeFail(logger, e); - } - return result; - } - - public List getMaterialExtendByTenantAndTime(Long tenantId, Long lastTime, Long syncNum)throws Exception { - List list=new ArrayList(); - try{ - //先获取最大的时间戳,再查两个时间戳之间的数据,这样同步能够防止丢失数据(应为时间戳有重复) - Long maxTime = materialExtendMapperEx.getMaxTimeByTenantAndTime(tenantId, lastTime, syncNum); - if(tenantId!=null && lastTime!=null && maxTime!=null) { - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andTenantIdEqualTo(tenantId) - .andUpdateTimeGreaterThan(lastTime) - .andUpdateTimeLessThanOrEqualTo(maxTime); - list=materialExtendMapper.selectByExample(example); - } - }catch(Exception e){ - JshException.readFail(logger, e); - } - return list; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public Long selectIdByMaterialIdAndDefaultFlag(Long materialId, String defaultFlag) { - Long id = 0L; - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = materialExtendMapper.selectByExample(example); - if(list!=null && list.size()>0) { - id = list.get(0).getId(); - } - return id; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public Long selectIdByMaterialIdAndBarCode(Long materialId, String barCode) { - Long id = 0L; - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andMaterialIdEqualTo(materialId).andBarCodeEqualTo(barCode) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = materialExtendMapper.selectByExample(example); - if(list!=null && list.size()>0) { - id = list.get(0).getId(); - } - return id; - } - - @Transactional(value = "transactionManager", rollbackFor = Exception.class) - public List getListByMaterialIdAndDefaultFlagAndBarCode(Long materialId, String defaultFlag, String barCode) { - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag).andBarCodeNotEqualTo(barCode) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - return materialExtendMapper.selectByExample(example); - } - - public MaterialExtend getInfoByBarCode(String barCode)throws Exception { - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andBarCodeEqualTo(barCode) - .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = materialExtendMapper.selectByExample(example); - if(list!=null && list.size()>0) { - return list.get(0); - } else { - return null; - } - } - - /** - * 商品的副条码和数据库里面的商品条码存在重复(除自身商品之外) - * @param manyBarCode - * @param barCode - * @return - */ - public int getCountByManyBarCodeWithoutUs(String manyBarCode, String barCode) { - MaterialExtendExample example = new MaterialExtendExample(); - example.createCriteria().andBarCodeEqualTo(manyBarCode).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); - List list = materialExtendMapper.selectByExample(example); - if(list!=null && list.size()>0) { - for(MaterialExtend me: list) { - List basicMeList = materialExtendMapperEx.getBasicInfoByMid(me.getMaterialId()); - for(MaterialExtend basicMe: basicMeList) { - if(basicMe!=null && !barCode.equals(basicMe.getBarCode())) { - return 1; - } - } - } - } - return 0; - } -} +package com.jsh.erp.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; +import com.jsh.erp.datasource.entities.MaterialExtend; +import com.jsh.erp.datasource.entities.MaterialExtendExample; +import com.jsh.erp.datasource.entities.User; +import com.jsh.erp.datasource.mappers.MaterialExtendMapper; +import com.jsh.erp.datasource.mappers.MaterialExtendMapperEx; +import com.jsh.erp.datasource.vo.MaterialExtendVo4List; +import com.jsh.erp.exception.BusinessRunTimeException; +import com.jsh.erp.exception.JshException; +import com.jsh.erp.utils.StringUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +@Service +public class MaterialExtendService { + private Logger logger = LoggerFactory.getLogger(MaterialExtendService.class); + + @Resource + private MaterialExtendMapper materialExtendMapper; + @Resource + private MaterialExtendMapperEx materialExtendMapperEx; + @Resource + private UserService userService; + @Resource + private RedisService redisService; + + public MaterialExtend getMaterialExtend(long id)throws Exception { + MaterialExtend result=null; + try{ + result=materialExtendMapper.selectByPrimaryKey(id); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return result; + } + public List getDetailList(Long materialId) { + List list=null; + try{ + list = materialExtendMapperEx.getDetailList(materialId); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + public List getListByMIds(List idList) { + List meList = null; + try{ + Long [] idArray= StringUtil.listToLongArray(idList); + if(idArray!=null && idArray.length>0) { + meList = materialExtendMapperEx.getListByMId(idArray); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return meList; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public String saveDetials(JSONObject obj, String sortList, Long materialId, String type) throws Exception { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + JSONArray meArr = obj.getJSONArray("meList"); + JSONArray insertedJson = new JSONArray(); + JSONArray updatedJson = new JSONArray(); + JSONArray deletedJson = obj.getJSONArray("meDeleteIdList"); + JSONArray sortJson = JSONArray.parseArray(sortList); + if (null != meArr) { + if("insert".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + insertedJson.add(tempJson); + } + } else if("update".equals(type)){ + for (int i = 0; i < meArr.size(); i++) { + JSONObject tempJson = meArr.getJSONObject(i); + String tempId = tempJson.getString("id"); + if(tempId.length()>19){ + insertedJson.add(tempJson); + } else { + updatedJson.add(tempJson); + } + } + } + } + if (null != deletedJson) { + StringBuffer bf=new StringBuffer(); + for (int i = 0; i < deletedJson.size(); i++) { + bf.append(deletedJson.getString(i)); + if(i<(deletedJson.size()-1)){ + bf.append(","); + } + } + this.batchDeleteMaterialExtendByIds(bf.toString(), request); + } + if (null != insertedJson) { + for (int i = 0; i < insertedJson.size(); i++) { + MaterialExtend materialExtend = new MaterialExtend(); + JSONObject tempInsertedJson = JSONObject.parseObject(insertedJson.getString(i)); + materialExtend.setMaterialId(materialId); + if (StringUtils.isNotEmpty(tempInsertedJson.getString("barCode"))) { + int exist = checkIsBarCodeExist(0L, tempInsertedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempInsertedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempInsertedJson.getString("barCode")); + } + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityUnit"))) { + materialExtend.setCommodityUnit(tempInsertedJson.getString("commodityUnit")); + } + if (tempInsertedJson.get("sku")!=null) { + materialExtend.setSku(tempInsertedJson.getString("sku")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("purchaseDecimal"))) { + materialExtend.setPurchaseDecimal(tempInsertedJson.getBigDecimal("purchaseDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("commodityDecimal"))) { + materialExtend.setCommodityDecimal(tempInsertedJson.getBigDecimal("commodityDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("wholesaleDecimal"))) { + materialExtend.setWholesaleDecimal(tempInsertedJson.getBigDecimal("wholesaleDecimal")); + } + if (StringUtils.isNotEmpty(tempInsertedJson.getString("lowDecimal"))) { + materialExtend.setLowDecimal(tempInsertedJson.getBigDecimal("lowDecimal")); + } + this.insertMaterialExtend(materialExtend); + } + } + if (null != updatedJson) { + for (int i = 0; i < updatedJson.size(); i++) { + JSONObject tempUpdatedJson = JSONObject.parseObject(updatedJson.getString(i)); + MaterialExtend materialExtend = new MaterialExtend(); + materialExtend.setId(tempUpdatedJson.getLong("id")); + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("barCode"))) { + int exist = checkIsBarCodeExist(tempUpdatedJson.getLong("id"), tempUpdatedJson.getString("barCode")); + if(exist>0) { + throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_BARCODE_EXISTS_CODE, + String.format(ExceptionConstants.MATERIAL_BARCODE_EXISTS_MSG,tempUpdatedJson.getString("barCode"))); + } else { + materialExtend.setBarCode(tempUpdatedJson.getString("barCode")); + } + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityUnit"))) { + materialExtend.setCommodityUnit(tempUpdatedJson.getString("commodityUnit")); + } + if (tempUpdatedJson.get("sku")!=null) { + materialExtend.setSku(tempUpdatedJson.getString("sku")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("purchaseDecimal"))) { + materialExtend.setPurchaseDecimal(tempUpdatedJson.getBigDecimal("purchaseDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("commodityDecimal"))) { + materialExtend.setCommodityDecimal(tempUpdatedJson.getBigDecimal("commodityDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("wholesaleDecimal"))) { + materialExtend.setWholesaleDecimal(tempUpdatedJson.getBigDecimal("wholesaleDecimal")); + } + if (StringUtils.isNotEmpty(tempUpdatedJson.getString("lowDecimal"))) { + materialExtend.setLowDecimal(tempUpdatedJson.getBigDecimal("lowDecimal")); + } + this.updateMaterialExtend(materialExtend); + //如果金额为空,此处单独置空 + materialExtendMapperEx.specialUpdatePrice(materialExtend); + } + } + //处理条码的排序,基本单位排第一个 + if (null != sortJson && sortJson.size()>0) { + //此处为更新的逻辑 + for (int i = 0; i < sortJson.size(); i++) { + JSONObject tempSortJson = JSONObject.parseObject(sortJson.getString(i)); + MaterialExtend materialExtend = new MaterialExtend(); + if(StringUtil.isExist(tempSortJson.get("id"))) { + materialExtend.setId(tempSortJson.getLong("id")); + } + if(StringUtil.isExist(tempSortJson.get("defaultFlag"))) { + materialExtend.setDefaultFlag(tempSortJson.getString("defaultFlag")); + } + this.updateMaterialExtend(materialExtend); + } + } else { + //新增的时候将第一条记录设置为默认基本单位 + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List meList = materialExtendMapper.selectByExample(example); + if(meList!=null) { + for(int i=0; i 0) { + criteria.andIdNotEqualTo(id).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } else { + criteria.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + } + List list =null; + try{ + list = materialExtendMapper.selectByExample(example); + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list==null?0:list.size(); + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int deleteMaterialExtend(Long id, HttpServletRequest request)throws Exception { + int result =0; + MaterialExtend materialExtend = new MaterialExtend(); + materialExtend.setId(id); + materialExtend.setDeleteFlag(BusinessConstants.DELETE_FLAG_DELETED); + Long userId = Long.parseLong(redisService.getObjectFromSessionByKey(request,"userId").toString()); + User user = userService.getUser(userId); + materialExtend.setUpdateTime(new Date().getTime()); + materialExtend.setUpdateSerial(user.getLoginName()); + try{ + result= materialExtendMapper.updateByPrimaryKeySelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public int batchDeleteMaterialExtendByIds(String ids, HttpServletRequest request) throws Exception{ + String [] idArray=ids.split(","); + int result = 0; + try{ + result = materialExtendMapperEx.batchDeleteMaterialExtendByIds(idArray); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int insertMaterialExtend(JSONObject obj, HttpServletRequest request) throws Exception{ + MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); + int result=0; + try{ + result = materialExtendMapper.insertSelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public int updateMaterialExtend(JSONObject obj, HttpServletRequest request)throws Exception { + MaterialExtend materialExtend = JSONObject.parseObject(obj.toJSONString(), MaterialExtend.class); + int result=0; + try{ + result = materialExtendMapper.updateByPrimaryKeySelective(materialExtend); + }catch(Exception e){ + JshException.writeFail(logger, e); + } + return result; + } + + public List getMaterialExtendByTenantAndTime(Long tenantId, Long lastTime, Long syncNum)throws Exception { + List list=new ArrayList(); + try{ + //先获取最大的时间戳,再查两个时间戳之间的数据,这样同步能够防止丢失数据(应为时间戳有重复) + Long maxTime = materialExtendMapperEx.getMaxTimeByTenantAndTime(tenantId, lastTime, syncNum); + if(tenantId!=null && lastTime!=null && maxTime!=null) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andTenantIdEqualTo(tenantId) + .andUpdateTimeGreaterThan(lastTime) + .andUpdateTimeLessThanOrEqualTo(maxTime); + list=materialExtendMapper.selectByExample(example); + } + }catch(Exception e){ + JshException.readFail(logger, e); + } + return list; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Long selectIdByMaterialIdAndDefaultFlag(Long materialId, String defaultFlag) { + Long id = 0L; + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public Long selectIdByMaterialIdAndBarCode(Long materialId, String barCode) { + Long id = 0L; + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andBarCodeEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + id = list.get(0).getId(); + } + return id; + } + + @Transactional(value = "transactionManager", rollbackFor = Exception.class) + public List getListByMaterialIdAndDefaultFlagAndBarCode(Long materialId, String defaultFlag, String barCode) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andMaterialIdEqualTo(materialId).andDefaultFlagEqualTo(defaultFlag).andBarCodeNotEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + return materialExtendMapper.selectByExample(example); + } + + public MaterialExtend getInfoByBarCode(String barCode)throws Exception { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andBarCodeEqualTo(barCode) + .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + return list.get(0); + } else { + return null; + } + } + + /** + * 商品的副条码和数据库里面的商品条码存在重复(除自身商品之外) + * @param manyBarCode + * @param barCode + * @return + */ + public int getCountByManyBarCodeWithoutUs(String manyBarCode, String barCode) { + MaterialExtendExample example = new MaterialExtendExample(); + example.createCriteria().andBarCodeEqualTo(manyBarCode).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); + List list = materialExtendMapper.selectByExample(example); + if(list!=null && list.size()>0) { + for(MaterialExtend me: list) { + List basicMeList = materialExtendMapperEx.getBasicInfoByMid(me.getMaterialId()); + for(MaterialExtend basicMe: basicMeList) { + if(basicMe!=null && !barCode.equals(basicMe.getBarCode())) { + return 1; + } + } + } + } + return 0; + } +} diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialPropertyService.java similarity index 95% rename from jshERP-boot/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MaterialPropertyService.java index 3e071bf1e..3e5ff33d8 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/materialProperty/MaterialPropertyService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialPropertyService.java @@ -1,19 +1,14 @@ -package com.jsh.erp.service.materialProperty; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.MaterialProperty; import com.jsh.erp.datasource.entities.MaterialPropertyExample; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.MaterialPropertyMapper; import com.jsh.erp.datasource.mappers.MaterialPropertyMapperEx; -import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; -import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java index 294847a10..83d41e837 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/material/MaterialService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MaterialService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.material; +package com.jsh.erp.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -10,14 +10,6 @@ import com.jsh.erp.datasource.mappers.*; import com.jsh.erp.datasource.vo.MaterialVoSearch; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.depot.DepotService; -import com.jsh.erp.service.depotItem.DepotItemService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.materialCategory.MaterialCategoryService; -import com.jsh.erp.service.materialExtend.MaterialExtendService; -import com.jsh.erp.service.systemConfig.SystemConfigService; -import com.jsh.erp.service.unit.UnitService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.*; import jxl.Sheet; import jxl.Workbook; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/msg/MsgService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/MsgService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/msg/MsgService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/MsgService.java index 0632d927a..43b73820e 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/msg/MsgService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/MsgService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.msg; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -9,11 +9,7 @@ import com.jsh.erp.datasource.entities.MsgExample; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.MsgMapper; import com.jsh.erp.datasource.mappers.MsgMapperEx; -import com.jsh.erp.datasource.vo.DepotHeadVo4List; import com.jsh.erp.exception.BusinessRunTimeException; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/OrgaUserRelService.java similarity index 96% rename from jshERP-boot/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/OrgaUserRelService.java index 3dec26396..f56e5a71a 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/orgaUserRel/OrgaUserRelService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/OrgaUserRelService.java @@ -1,18 +1,13 @@ -package com.jsh.erp.service.orgaUserRel; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.OrgaUserRel; import com.jsh.erp.datasource.entities.OrgaUserRelExample; import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.OrgaUserRelMapper; import com.jsh.erp.datasource.mappers.OrgaUserRelMapperEx; -import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.organization.OrganizationService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/organization/OrganizationService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/OrganizationService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/organization/OrganizationService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/OrganizationService.java index 16dd0d716..148a9ad45 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/organization/OrganizationService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/OrganizationService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.organization; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -11,8 +11,6 @@ import com.jsh.erp.datasource.mappers.OrganizationMapperEx; import com.jsh.erp.datasource.vo.TreeNode; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/person/PersonService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/PersonService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/person/PersonService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/PersonService.java index 143bcc788..62743fb6b 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/person/PersonService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/PersonService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.person; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -13,8 +13,6 @@ import com.jsh.erp.datasource.mappers.PersonMapper; import com.jsh.erp.datasource.mappers.PersonMapperEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/platformConfig/PlatformConfigService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/PlatformConfigService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/platformConfig/PlatformConfigService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/PlatformConfigService.java index 7ed1f19bf..7efc817d9 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/platformConfig/PlatformConfigService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/PlatformConfigService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.platformConfig; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -7,7 +7,6 @@ import com.jsh.erp.datasource.entities.PlatformConfigExample; import com.jsh.erp.datasource.mappers.PlatformConfigMapper; import com.jsh.erp.datasource.mappers.PlatformConfigMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/redis/RedisService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/RedisService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/redis/RedisService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/RedisService.java index 5de746482..be78f094d 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/redis/RedisService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/RedisService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.redis; +package com.jsh.erp.service; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.utils.StringUtil; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/role/RoleService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/role/RoleService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java index 16695e82e..56c6d75ff 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/role/RoleService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/RoleService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.role; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -9,8 +9,6 @@ import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.RoleMapper; import com.jsh.erp.datasource.mappers.RoleMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/sequence/SequenceService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SequenceService.java similarity index 86% rename from jshERP-boot/src/main/java/com/jsh/erp/service/sequence/SequenceService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/SequenceService.java index fbfdb75c7..9a4bd3fee 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/sequence/SequenceService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SequenceService.java @@ -1,26 +1,17 @@ -package com.jsh.erp.service.sequence; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; -import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.*; -import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Date; import java.util.List; /** diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SerialNumberService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/SerialNumberService.java index b15f6e7b0..f71c2e5a0 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/serialNumber/SerialNumberService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SerialNumberService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.serialNumber; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -7,9 +7,6 @@ import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.*; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.material.MaterialService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/supplier/SupplierService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/supplier/SupplierService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java index 48b7705d9..2b086f94a 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/supplier/SupplierService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SupplierService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.supplier; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -8,10 +8,6 @@ import com.jsh.erp.datasource.mappers.*; import com.jsh.erp.datasource.vo.DepotHeadVo4StatementAccount; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.depotHead.DepotHeadService; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; -import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.*; import jxl.Sheet; import jxl.Workbook; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java index 5ac90ec18..6c2ff99de 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/systemConfig/SystemConfigService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/SystemConfigService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.systemConfig; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -15,9 +15,6 @@ import com.jsh.erp.datasource.entities.User; import com.jsh.erp.datasource.mappers.SystemConfigMapper; import com.jsh.erp.datasource.mappers.SystemConfigMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.platformConfig.PlatformConfigService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/tenant/TenantService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/TenantService.java similarity index 97% rename from jshERP-boot/src/main/java/com/jsh/erp/service/tenant/TenantService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/TenantService.java index fa2c1b388..67fcd3ceb 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/tenant/TenantService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/TenantService.java @@ -1,7 +1,6 @@ -package com.jsh.erp.service.tenant; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.jsh.erp.constants.BusinessConstants; import com.jsh.erp.datasource.entities.Tenant; import com.jsh.erp.datasource.entities.TenantEx; @@ -12,8 +11,6 @@ import com.jsh.erp.datasource.mappers.TenantMapperEx; import com.jsh.erp.datasource.mappers.UserBusinessMapperEx; import com.jsh.erp.datasource.mappers.UserMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java similarity index 99% rename from jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java index e007e9d07..1609def82 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/unit/UnitService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/UnitService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.unit; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -12,8 +12,6 @@ import com.jsh.erp.datasource.mappers.UnitMapper; import com.jsh.erp.datasource.mappers.UnitMapperEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import com.jsh.erp.utils.PageUtils; import com.jsh.erp.utils.StringUtil; import org.slf4j.Logger; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java index a23821ee1..40ff39035 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/userBusiness/UserBusinessService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/UserBusinessService.java @@ -1,4 +1,4 @@ -package com.jsh.erp.service.userBusiness; +package com.jsh.erp.service; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; @@ -8,8 +8,6 @@ import com.jsh.erp.datasource.entities.UserBusinessExample; import com.jsh.erp.datasource.mappers.UserBusinessMapper; import com.jsh.erp.datasource.mappers.UserBusinessMapperEx; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.user.UserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; diff --git a/jshERP-boot/src/main/java/com/jsh/erp/service/user/UserService.java b/jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java similarity index 98% rename from jshERP-boot/src/main/java/com/jsh/erp/service/user/UserService.java rename to jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java index cf1acbdd1..87befcab3 100644 --- a/jshERP-boot/src/main/java/com/jsh/erp/service/user/UserService.java +++ b/jshERP-boot/src/main/java/com/jsh/erp/service/UserService.java @@ -1,12 +1,8 @@ -package com.jsh.erp.service.user; +package com.jsh.erp.service; import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.TenantMapper; import com.jsh.erp.exception.BusinessParamCheckingException; -import com.jsh.erp.service.functions.FunctionService; -import com.jsh.erp.service.platformConfig.PlatformConfigService; -import com.jsh.erp.service.redis.RedisService; -import com.jsh.erp.service.role.RoleService; import com.jsh.erp.utils.*; import org.springframework.util.StringUtils; import com.alibaba.fastjson.JSONArray; @@ -18,10 +14,6 @@ import com.jsh.erp.datasource.mappers.UserMapperEx; import com.jsh.erp.datasource.vo.TreeNodeEx; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.exception.JshException; -import com.jsh.erp.service.log.LogService; -import com.jsh.erp.service.orgaUserRel.OrgaUserRelService; -import com.jsh.erp.service.tenant.TenantService; -import com.jsh.erp.service.userBusiness.UserBusinessService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value;