Ver código fonte

客户管家 产品订单管理模块bug修改

Min 1 ano atrás
pai
commit
a0dd6b9a30

+ 10 - 11
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/ProductController.java

@@ -7,6 +7,7 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.*;
 import com.management.platform.util.BeanChangeUtil;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -54,6 +55,8 @@ public class ProductController {
     private SalesOrderService salesOrderService;
     @Resource
     private SysDictService sysDictService;
+    @Resource
+    private StageService stageService;
 
 
     /**
@@ -77,6 +80,7 @@ public class ProductController {
     * @Date: 2024/5/21
     */
     @RequestMapping("/addOrUpdate")
+    @Transactional
     public HttpRespMsg addOrUpdate(Product product){
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
@@ -97,18 +101,17 @@ public class ProductController {
         AuditLogCenter auditLogCenter =new AuditLogCenter();
         auditLogCenter.setAuditorId(user.getId());
         auditLogCenter.setAuditorName(user.getName());
-        boolean isNew=true;
+        auditLogCenter.setModuleId(product.getId());
+        auditLogCenter.setModuleCode("Product");
         if(product.getId()==null){
             auditLogCenter.setAuditorContent("创建了产品");
+            auditLogCenterService.save(auditLogCenter);
         }else {
             Product oldProduct = productService.getById(product.getId());
             BeanChangeUtil<Product> beanChangeUtil = new BeanChangeUtil();
             String content = beanChangeUtil.contrastObj(oldProduct, product);
             //发生变化才生成记录
             if(!StringUtils.isEmpty(content.trim())){
-                isNew=false;
-                auditLogCenter.setModuleId(product.getId());
-                auditLogCenter.setModuleCode("Product");
                 auditLogCenter.setAuditorContent("编辑了产品");
                 auditLogCenterService.save(auditLogCenter);
             }
@@ -118,11 +121,6 @@ public class ProductController {
             msg.setError("验证失败");
             return msg;
         }
-        if(isNew){
-            auditLogCenter.setModuleId(product.getId());
-            auditLogCenter.setModuleCode("Product");
-            auditLogCenterService.save(auditLogCenter);
-        }
         return msg;
     }
 
@@ -268,7 +266,8 @@ public class ProductController {
         List<BusinessOpportunity> opportunityList = businessOpportunityService.list(new LambdaQueryWrapper<BusinessOpportunity>().in(BusinessOpportunity::getId, businessIds));
         List<Custom> customList = customService.list(new LambdaQueryWrapper<Custom>().eq(Custom::getCompanyId, companyId));
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
-        List<SysDict> businessStageList = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "BusinessStage"));
+//        List<SysDict> businessStageList = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "BusinessStage"));
+        List<Stage> businessStageList = stageService.list(new LambdaQueryWrapper<Stage>().eq(Stage::getCompanyId, companyId));
         opportunityList.forEach(c->{
             Optional<Custom> custom = customList.stream().filter(ct -> ct.getId().equals(c.getCustomerId())).findFirst();
             if(custom.isPresent()){
@@ -282,7 +281,7 @@ public class ProductController {
             if(incharger.isPresent()){
                 c.setInchargerName(incharger.get().getName());
             }
-            Optional<SysDict> businessStage = businessStageList.stream().filter(b -> b.getId().equals(c.getStageId())).findFirst();
+            Optional<Stage> businessStage = businessStageList.stream().filter(b -> b.getId().equals(c.getStageId())).findFirst();
             if(businessStage.isPresent()){
                 c.setStageValue(businessStage.get().getName());
             }

+ 36 - 7
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/SalesOrderController.java

@@ -9,6 +9,7 @@ import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.*;
 import com.management.platform.util.BeanChangeUtil;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 
@@ -50,6 +51,8 @@ public class SalesOrderController {
     private AuditLogCenterService auditLogCenterService;
     @Resource
     private SalesOrderPaymentService salesOrderPaymentService;
+    @Resource
+    private ProductService productService;
 
 
     /**
@@ -79,6 +82,7 @@ public class SalesOrderController {
      * 新增编辑订单数据
      * */
     @RequestMapping("/addOrUpdate")
+    @Transactional
     public HttpRespMsg addOrUpdate(SalesOrder order){
         HttpRespMsg msg=new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
@@ -88,16 +92,23 @@ public class SalesOrderController {
         if(order.getPrice()!=null){
             order.setUnReceivedPayment(order.getPrice());
         }
-        int count;
+        int countCode;
+        int countName;
         if(order.getId()==null){
-            count = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).eq(SalesOrder::getOrderCode, order.getOrderCode()));
+            countCode = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).eq(SalesOrder::getOrderCode, order.getOrderCode()));
+            countName = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).eq(SalesOrder::getOrderName, order.getOrderName()));
         }else {
-            count = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).ne(SalesOrder::getId,order.getId()).eq(SalesOrder::getOrderCode,order.getOrderCode()));
+            countCode = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).ne(SalesOrder::getId,order.getId()).eq(SalesOrder::getOrderCode,order.getOrderCode()));
+            countName = salesOrderService.count(new LambdaQueryWrapper<SalesOrder>().eq(SalesOrder::getCompanyId, companyId).ne(SalesOrder::getId,order.getId()).eq(SalesOrder::getOrderName,order.getOrderName()));
         }
-        if(count>0){
+        if(countCode>0){
             msg.setError("订单编号为["+order.getOrderCode()+"]的订单已存在");
             return msg;
         }
+        if(countName>0){
+            msg.setError("订单名称为["+order.getOrderCode()+"]的订单已存在");
+            return msg;
+        }
         //todo:生成操作记录
         AuditLogCenter auditLogCenter =new AuditLogCenter();
         auditLogCenter.setAuditorId(user.getId());
@@ -125,10 +136,24 @@ public class SalesOrderController {
         if(!StringUtils.isEmpty(order.getOrderProductDetailString())){
             String orderProductDetailString = order.getOrderProductDetailString();
             List<OrderProductDetail> orderProductDetails = JSONArray.parseArray(orderProductDetailString, OrderProductDetail.class);
+            List<Integer> productIds = orderProductDetails.stream().map(OrderProductDetail::getProductId).distinct().collect(Collectors.toList());
+            productIds.add(-1);
+            List<Product> productList = productService.list(new LambdaQueryWrapper<Product>().in(Product::getId, productIds));
             if(orderProductDetails.size()>0){
-                orderProductDetails.forEach(o->{
-                    o.setOrderId(order.getId());
-                });
+                for (OrderProductDetail orderProductDetail : orderProductDetails) {
+                    orderProductDetail.setOrderId(order.getId());
+                    Optional<Product> first = productList.stream().filter(p -> p.getId().equals(orderProductDetail.getProductId())).findFirst();
+                    if(first.isPresent()){
+                        if(orderProductDetail.getNum().intValue()>first.get().getInventory()){
+                            try {
+                                throw new Exception("相关产品["+first.get().getProductName()+"]库存数量不足");
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                msg.setError(e.getMessage());
+                            }
+                        }
+                    }
+                }
                 orderProductDetailService.saveOrUpdateBatch(orderProductDetails);
             }
         }
@@ -364,6 +389,10 @@ public class SalesOrderController {
         SalesOrderPayment salesOrderPayment=new SalesOrderPayment();
         salesOrderPayment.setMoney(new BigDecimal(money));
         salesOrderPayment.setOrderId(orderId);
+        if(money>salesOrder.getUnReceivedPayment().doubleValue()){
+            msg.setError("回款金额不能大于当前未回款金额");
+            return msg;
+        }
         //订单已回款金额
         BigDecimal receivedPayment = salesOrder.getReceivedPayment();
         //订单未回款金额

+ 67 - 8
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -127,7 +127,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
         }
         if(!StringUtils.isEmpty(userId)){
-            queryWrapper.eq(Product::getCreatorId,userId);
+            queryWrapper.eq(Product::getInchargerId,userId);
         }
         if(!StringUtils.isEmpty(productName)){
             queryWrapper.like(Product::getProductName,productName);
@@ -151,6 +151,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             pageIndex=-1;
             pageSize=-1;
         }
+        queryWrapper.orderByDesc(Product::getCreateTime);
         IPage<Product> productIPage = productMapper.selectPage(new Page<>(pageIndex, pageSize,true), queryWrapper);
         List<Product> records = productIPage.getRecords();
         records.forEach(r->{
@@ -515,13 +516,71 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     @Override
     public HttpRespMsg recycleList(Integer pageIndex, Integer pageSize) {
         HttpRespMsg msg=new HttpRespMsg();
-        User user = userMapper.selectById(request.getHeader("token"));
-        LambdaQueryWrapper<Product> productLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        productLambdaQueryWrapper.eq(Product::getCompanyId,user.getCompanyId());
-        productLambdaQueryWrapper.eq(Product::getIsDelete,1);
-        IPage<Product> productIPage = productMapper.selectPage(new Page<>(pageIndex, pageSize), productLambdaQueryWrapper);
-        Map<String,Object> map=new HashMap<>();
-        map.put("record",productIPage.getRecords());
+        User targetUsr = userMapper.selectById(request.getHeader("token"));
+        Integer companyId=targetUsr.getCompanyId();
+        List<Department> departments = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
+        LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Product::getCompanyId,companyId);
+        queryWrapper.eq(Product::getIsDelete,1);
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
+        List<SysDict> sysDictOfProductType = sysDictMapper.selectList(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCompanyId, companyId).eq(SysDict::getCode, "ProductType"));
+        List<SysDict> sysDictOfProductUnit = sysDictMapper.selectList(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCompanyId, companyId).eq(SysDict::getCode, "ProductUnit"));
+        boolean hasPriviledgeAll = sysFunctionService.hasPriviledge(targetUsr.getRoleId(), "查看全部产品数据");
+        boolean hasPriviledgeDept = sysFunctionService.hasPriviledge(targetUsr.getRoleId(), "查看负责部门产品数据");
+        //判断查看全部的权限
+        if(!hasPriviledgeAll){
+            //判断查看负责部门的权限
+            if(!hasPriviledgeDept){
+                //都没有就只能看自己创建的
+                queryWrapper.eq(Product::getCreatorId,targetUsr.getId());
+            }else {
+                List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getManagerId, targetUsr.getId()));
+                List<DepartmentOtherManager> otherManagerList = departmentOtherManagerMapper.selectList(new LambdaQueryWrapper<DepartmentOtherManager>().eq(DepartmentOtherManager::getOtherManagerId, targetUsr.getId()));
+                List<Integer> deptIds=new ArrayList<>();
+                deptIds.add(-1);
+                List<Integer> managerDeptIds = departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
+                List<Integer> otherManagerDeptIds = otherManagerList.stream().map(DepartmentOtherManager::getDepartmentId).distinct().collect(Collectors.toList());
+                deptIds.addAll(managerDeptIds);
+                List<Integer> finalDeptIds1 = deptIds;
+                managerDeptIds.forEach(m->{
+                    List<Integer> branchDepartment = getBranchDepartment(m, departments);
+                    finalDeptIds1.addAll(branchDepartment);
+                });
+                deptIds.addAll(otherManagerDeptIds);
+                List<Integer> finalDeptIds = deptIds;
+                otherManagerDeptIds.forEach(o->{
+                    List<Integer> branchDepartment = getBranchDepartment(o, departments);
+                    finalDeptIds.addAll(branchDepartment);
+                });
+                deptIds=deptIds.stream().distinct().collect(Collectors.toList());
+                List<Integer> finalDeptIds2 = deptIds;
+                List<String> userIds = userList.stream().filter(u -> finalDeptIds2.contains(u.getDepartmentId())).map(User::getId).collect(Collectors.toList());
+                userIds.add("-1");
+                queryWrapper.in(Product::getCreatorId,userIds);
+            }
+        }
+        IPage<Product> productIPage = productMapper.selectPage(new Page<>(pageIndex, pageSize,true), queryWrapper);
+        List<Product> records = productIPage.getRecords();
+        records.forEach(r->{
+            Optional<User> user = userList.stream().filter(u -> u.getId().equals(r.getInchargerId())).findFirst();
+            if(user.isPresent()){
+                r.setInchargerName(user.get().getName());
+            }
+            Optional<User> creator = userList.stream().filter(u -> u.getId().equals(r.getCreatorId())).findFirst();
+            if(creator.isPresent()){
+                r.setCreatorName(creator.get().getName());
+            }
+            Optional<SysDict> unit = sysDictOfProductUnit.stream().filter(u -> u.getId().equals(r.getUnit())).findFirst();
+            if(unit.isPresent()){
+                r.setUnitName(unit.get().getName());
+            }
+            Optional<SysDict> type = sysDictOfProductType.stream().filter(u -> u.getId().equals(r.getType())).findFirst();
+            if(type.isPresent()){
+                r.setTypeName(type.get().getName());
+            }
+        });
+        Map map=new HashMap();
+        map.put("record",records);
         map.put("total",productIPage.getTotal());
         msg.setData(map);
         return msg;

+ 5 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java

@@ -116,8 +116,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
         if(!viewAll){
             //判断查看负责部门的权限
             if(!viewDept){
-                //都没有就只能看自己创建的
-                orderLambdaQueryWrapper.eq(SalesOrder::getCreatorId,user.getId());
+                //都没有就只能看自己创建的或者负责的
+                orderLambdaQueryWrapper.and(wrapper->wrapper.eq(SalesOrder::getCreatorId,user.getId()).or().eq(SalesOrder::getInchargerId,user.getId()));
             }else {
                 List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getManagerId, user.getId()));
                 List<DepartmentOtherManager> otherManagerList = departmentOtherManagerMapper.selectList(new LambdaQueryWrapper<DepartmentOtherManager>().eq(DepartmentOtherManager::getOtherManagerId, user.getId()));
@@ -140,7 +140,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
                 deptIds=deptIds.stream().distinct().collect(Collectors.toList());
                 List<Integer> finalDeptIds2 = deptIds;
                 List<String> userIds = userList.stream().filter(u -> finalDeptIds2.contains(u.getDepartmentId())).map(User::getId).collect(Collectors.toList());
-                orderLambdaQueryWrapper.in(SalesOrder::getCreatorId,userIds);
+                userIds.add("-1");
+                orderLambdaQueryWrapper.and(wrapper->wrapper.in(SalesOrder::getCreatorId,userIds).or().in(SalesOrder::getInchargerId,userIds));
             }
         }
         if (!StringUtils.isEmpty(inchargerId)){
@@ -182,6 +183,7 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
             pageIndex=-1;
             pageSize=-1;
         }
+        orderLambdaQueryWrapper.orderByDesc(SalesOrder::getCreateTime);
         IPage<SalesOrder> orderIPage = salesOrderMapper.selectPage(new Page<>(pageIndex, pageSize), orderLambdaQueryWrapper);
         List<SalesOrder> records = orderIPage.getRecords();
         List<Integer> orderIds = records.stream().map(SalesOrder::getId).distinct().collect(Collectors.toList());