klzhangweiya 2 هفته پیش
والد
کامیت
44519704e3
24فایلهای تغییر یافته به همراه387 افزوده شده و 156 حذف شده
  1. 1 12
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/controller/CoopBatchReportController.java
  2. 2 2
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/ChickenCageVo.java
  3. 22 0
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/CoopBatchReportVo.java
  4. 23 0
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/report/CoopBatchReportDetailResult.java
  5. 16 9
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/listener/CageChangeImportListener.java
  6. 20 0
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/mapper/ChickenCageMapper.java
  7. 4 0
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICommonService.java
  8. 4 2
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICoopBatchReportDetailService.java
  9. 1 1
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICoopBatchReportService.java
  10. 2 2
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/ChickenCageServiceImpl.java
  11. 19 4
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CommonServiceImpl.java
  12. 97 22
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CoopBatchReportDetailServiceImpl.java
  13. 0 20
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CoopBatchReportServiceImpl.java
  14. 29 25
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/StatisticsHelperServiceImpl.java
  15. 49 0
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/resources/mapper/ChickenCageMapper.xml
  16. 11 7
      SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/resources/mapper/CoopBatchReportDetailMapper.xml
  17. 10 2
      SERVER/ChickenFarmV3/vb-modules/vb-job/src/main/java/cn/vber/job/xxl/jobhandler/StatisticXxlJob.java
  18. 1 1
      SERVER/ChickenFarmV3/vb-modules/vb-system/src/main/java/cn/vber/system/controller/system/SysUserController.java
  19. 6 6
      SERVER/ChickenFarmV3/vb-modules/vb-system/src/main/java/cn/vber/system/service/impl/SysRoleServiceImpl.java
  20. 19 11
      UI/VB.VUE/src/components/reports/ChickenCoopReport.vue
  21. 25 25
      UI/VB.VUE/src/views/base/chickenCage/index.vue
  22. 0 1
      UI/VB.VUE/src/views/breeding/batch/index.vue
  23. 4 4
      UI/VB.VUE/src/views/breeding/chicken/index.vue
  24. 22 0
      UI/VB.VUE/src/views/eggLaying/breedingEgg/index.vue

+ 1 - 12
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/controller/CoopBatchReportController.java

@@ -120,18 +120,7 @@ public class CoopBatchReportController extends BaseController {
     //@SaCheckPermission("breeding:coopBatchReport")
     @GetMapping("/queryReport")
     public R<CoopBatchReportResultVo> queryReport(QueryStaBo bo) {
-        CoopBatchReportVo coopBatchReportVo = coopBatchReportService.queryByStaParam(bo);
-        if(coopBatchReportVo == null){
-            return R.warn("未查询到数据");
-        }
-        QueryStaScopeParam param = commonService.convertQueryStaToParam(bo);
-        List<CoopBatchReportDetailResult> views =
-                coopBatchReportDetailService.queryListViewByReportId(coopBatchReportVo.getId(), param);
-
-         CoopBatchReportResultVo vo= new CoopBatchReportResultVo();
-         vo.setData(views);
-         vo.setTotalData(coopBatchReportVo);
-        return R.ok(vo);
+        return R.ok(coopBatchReportDetailService.queryReport(bo));
     }
 
     //@SaCheckPermission("breeding:coopBatchReport:add")

+ 2 - 2
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/ChickenCageVo.java

@@ -51,8 +51,8 @@ public class ChickenCageVo implements Serializable {
 
     @ExcelProperty(value = "鸡舍名称", converter = ExcelDictConvert.class)
     @ExcelDictFormat(readConverterExp = "关联鸡舍表")
-    @Translation(type = TransConstant.CHICKEN_COOP_ID_TO_NAME, mapper = "chickenCoopId", other = "")
-    private Long chickenCoopName;
+    //@Translation(type = TransConstant.CHICKEN_COOP_ID_TO_NAME, mapper = "chickenCoopId", other = "")
+    private String chickenCoopName;
 
     /**
      * 管理员(关联用户ID)

+ 22 - 0
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/CoopBatchReportVo.java

@@ -199,6 +199,28 @@ public class CoopBatchReportVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    public String getLifeRateStr(){
+        return convertFloatToStr(this.lifeRate);
+    }
+
+    public String getCullRateStr(){
+        return convertFloatToStr(this.cullRate);
+    }
+
+    public String getEggPassRateStr(){
+        return convertFloatToStr(this.eggPassRate);
+    }
+
+    public String getEggProductionRateStr(){
+        return convertFloatToStr(this.eggProductionRate);
+    }
+    private String convertFloatToStr(Float f){
+        if(f == null){
+            return "-";
+        }
+        return String.format("%.2f", f * 100) + "%";
+    }
+
 
 }
 

+ 23 - 0
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/domain/vo/report/CoopBatchReportDetailResult.java

@@ -14,4 +14,27 @@ public class CoopBatchReportDetailResult {
     private List<CoopBatchReportDetailView> data;
 
     private CoopBatchReportDetailView total;
+
+
+//    public CoopBatchReportDetailView getTotal() {
+//    	CoopBatchReportDetailView totalResult = new CoopBatchReportDetailView();
+//        List<CoopBatchReportDetailView> views = this.data;
+//        views.forEach((k)->{
+//
+//            totalResult.setLastSave0(totalResult.getLastSave0()+k.getLastSave0());
+//            totalResult.setLastSave1(totalResult.getLastSave1()+k.getLastSave1());
+//            totalResult.setSave0(totalResult.getSave0()+k.getSave0());
+//            totalResult.setSave1(totalResult.getSave1()+k.getSave1());
+//            totalResult.setCull0(totalResult.getCull0()+k.getCull0());
+//            totalResult.setCull1(totalResult.getCull1()+k.getCull1());
+//            totalResult.setIn0(totalResult.getIn0()+k.getIn0());
+//            totalResult.setIn1(totalResult.getIn1()+k.getIn1());
+//            totalResult.setOut0(totalResult.getOut0()+k.getOut0());
+//            totalResult.setOut1(totalResult.getOut1()+k.getOut1());
+//            totalResult.setChicken0(totalResult.getChicken0()+k.getChicken0());
+//            totalResult.setChicken1(totalResult.getChicken1()+k.getChicken1());
+//        });
+//        statisticsHelperService.calcCommon(totalResult);
+//        result.setTotalTmp(totalResult.convertDetailView());
+//    }
 }

+ 16 - 9
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/listener/CageChangeImportListener.java

@@ -21,6 +21,7 @@ import cn.vber.common.core.utils.SpringUtils;
 import cn.vber.common.core.utils.StreamUtils;
 import cn.vber.common.excel.core.ExcelListener;
 import cn.vber.common.excel.core.ExcelResult;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import jakarta.validation.ConstraintViolation;
 import jakarta.validation.ConstraintViolationException;
 import lombok.extern.slf4j.Slf4j;
@@ -134,7 +135,6 @@ public class CageChangeImportListener extends AnalysisEventListener<CageChangeIm
             //判断源笼是否为空,为空直接变更笼号
             if(cageChangeImportVo.getSourceCageId()==null){
                 entity.setStatus(CageChangeStatusEnum.AUDITED.getCode());
-                changeChickenCage(cageChangeImportVo);
             }else if(cageChangeImportVo.getSourceCageId().equals(cageChangeImportVo.getTargetCageId())){
                 // cageId如果没有变更,就当作废的数据
                 entity.setStatus(CageChangeStatusEnum.CANCELLED.getCode());
@@ -144,7 +144,6 @@ public class CageChangeImportListener extends AnalysisEventListener<CageChangeIm
             Boolean crossCoop = commonService.isCrossCoop(cageChangeImportVo.getSourceCageId(), cageChangeImportVo.getTargetCageId());
             //是否是跨鸡舍
             entity.setCrossCoop(crossCoop?1:0);
-
             importList.add(entity);
             if(importList.size() == batchSize || totalRows == countNum + 1 ){
                 int startRowNum =
@@ -152,7 +151,7 @@ public class CageChangeImportListener extends AnalysisEventListener<CageChangeIm
                 try {
                     //开始插入的行数
                     System.out.println("startRowNum:"+startRowNum+"---countNum:"+countNum);
-                    cageChangeMapper.insertBatch(importList);
+                    insertBatch();
                 }catch (Exception e){
                     System.out.println(StrUtil.format("第{}行开始插入数据库失败:{})",startRowNum,e.getMessage()));
                     log.error(StrUtil.format("第{}行开始插入数据库失败:{})",startRowNum,e.getMessage()));
@@ -172,13 +171,21 @@ public class CageChangeImportListener extends AnalysisEventListener<CageChangeIm
         }
     }
 
-    private void changeChickenCage(CageChangeImportVo cageChangeImportVo) {
-        Chicken chicken = this.chickenMapper.selectById(cageChangeImportVo.getChickenId());
-        if (chicken != null) {
-            chicken.setCageId(cageChangeImportVo.getTargetCageId());
-            this.chickenMapper.updateById(chicken);
-            this.commonService.clearCache(CacheNames.CHICKEN_ID_INFO);
+    private void insertBatch() {
+        cageChangeMapper.insertBatch(importList);
+        var chickenIds = importList.stream().map(CageChange::getChickenId).toList();
+        var chickens = this.chickenMapper.selectList(new LambdaQueryWrapper<Chicken>().in(Chicken::getId, chickenIds));
+        for (Chicken chicken : chickens){
+            Optional<CageChange> first = importList.stream().filter(cageChange -> cageChange.getChickenId().equals(chicken.getId())).findFirst();
+            if(first.isEmpty()){
+                continue;
+            }
+            CageChange cageChange = first.get();
+            chicken.setCageId(cageChange.getTargetCageId());
         }
+        this.chickenMapper.updateBatchById(chickens);
+        this.commonService.clearCache(CacheNames.CHICKEN_ID_INFO);
+
     }
 
     @Override

+ 20 - 0
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/mapper/ChickenCageMapper.java

@@ -2,9 +2,16 @@
 
 package cn.vber.breeding.mapper;
 
+import cn.vber.breeding.domain.ChickenCage;
+import cn.vber.breeding.domain.vo.ChickenCageVo;
+import cn.vber.common.mybatis.annotation.DataColumn;
+import cn.vber.common.mybatis.annotation.DataPermission;
 import cn.vber.common.mybatis.core.mapper.BaseMapperPlus;
 import cn.vber.breeding.domain.ChickenCage;
 import cn.vber.breeding.domain.vo.ChickenCageVo;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
@@ -22,6 +29,19 @@ public interface ChickenCageMapper extends BaseMapperPlus<ChickenCage, ChickenCa
 
     @Select("select * from f_chicken_cage where FIND_IN_SET(chicken_coop_id , #{coopIds}) and del_flag = '0'")
     List<ChickenCageVo> selectCageByCoopIds(@Param("coopIds") String coopIds);
+
+    @DataPermission({
+            @DataColumn(key = "orgName", value = "coop.create_org"),
+            @DataColumn(key = "userName", value = "coop.manager")
+    })
+    Page<ChickenCageVo> selectPageList(@Param("page") Page<ChickenCage> page, @Param(Constants.WRAPPER) Wrapper<ChickenCage> queryWrapper);
+
+
+    @DataPermission({
+            @DataColumn(key = "orgName", value = "coop.create_org"),
+            @DataColumn(key = "userName", value = "coop.manager")
+    })
+    List<ChickenCageVo> selectListVo(@Param(Constants.WRAPPER) Wrapper<ChickenCage> queryWrapper);
 }
 
           

+ 4 - 0
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICommonService.java

@@ -1,10 +1,12 @@
 package cn.vber.breeding.service;
 
+import cn.vber.breeding.domain.CoopBatchReport;
 import cn.vber.breeding.domain.bo.statistic.QueryStaBo;
 import cn.vber.breeding.domain.bo.statistic.QueryStaScopeParam;
 import cn.vber.breeding.domain.vo.BatchVo;
 import cn.vber.breeding.domain.vo.ChickenVo;
 import cn.vber.breeding.domain.vo.FamilyVo;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 
 public interface ICommonService {
 
@@ -35,4 +37,6 @@ public interface ICommonService {
     QueryStaBo convertQueryStaBoByCurrentTime(String reportCycle);
     QueryStaBo getLastCycle(String startDateStr, String cycleType);
 
+    LambdaQueryWrapper<CoopBatchReport> getQueryWrapper(QueryStaBo bo);
+
 }

+ 4 - 2
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICoopBatchReportDetailService.java

@@ -3,11 +3,13 @@
 package cn.vber.breeding.service;
 
 import cn.vber.breeding.domain.CoopBatchReportDetail;
+import cn.vber.breeding.domain.bo.statistic.QueryStaBo;
 import cn.vber.breeding.domain.bo.statistic.QueryStaScopeParam;
 import cn.vber.breeding.domain.vo.CoopBatchReportDetailVo;
 import cn.vber.breeding.domain.bo.CoopBatchReportDetailBo;
 import cn.vber.breeding.domain.vo.report.CoopBatchReportDetailResult;
 import cn.vber.breeding.domain.vo.report.CoopBatchReportDetailView;
+import cn.vber.breeding.domain.vo.report.CoopBatchReportResultVo;
 import cn.vber.common.mybatis.core.page.TableDataInfo;
 import cn.vber.common.mybatis.core.page.PageQuery;
 
@@ -21,7 +23,7 @@ import java.util.List;
  * @date 2025-08-18
  */
 public interface ICoopBatchReportDetailService {
-
+    CoopBatchReportResultVo queryReport(QueryStaBo bo);
     /**
      * 查询统计报表详情信息
      */
@@ -54,7 +56,7 @@ public interface ICoopBatchReportDetailService {
     /**
      * 查询统计报表详情信息列表
      */
-    List<CoopBatchReportDetailResult> queryListViewByReportId(String reportId, QueryStaScopeParam param);
+    //List<CoopBatchReportDetailResult> queryListViewByReportId(String reportId, QueryStaScopeParam param);
 }
 
           

+ 1 - 1
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/ICoopBatchReportService.java

@@ -50,7 +50,7 @@ public interface ICoopBatchReportService {
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
-    CoopBatchReportVo queryByStaParam(QueryStaBo bo);
+    //CoopBatchReportVo queryByStaParam(QueryStaBo bo);
 }
 
           

+ 2 - 2
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/ChickenCageServiceImpl.java

@@ -51,7 +51,7 @@ public class ChickenCageServiceImpl implements IChickenCageService, ChickenCageS
     @Override
     public TableDataInfo<ChickenCageVo> queryPageList(ChickenCageBo bo, PageQuery pageQuery) {
         LambdaQueryWrapper<ChickenCage> lqw = buildQueryWrapper(bo);
-        Page<ChickenCageVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        Page<ChickenCageVo> result = baseMapper.selectPageList(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
 
@@ -61,7 +61,7 @@ public class ChickenCageServiceImpl implements IChickenCageService, ChickenCageS
     @Override
     public List<ChickenCageVo> queryList(ChickenCageBo bo) {
         LambdaQueryWrapper<ChickenCage> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
+        return baseMapper.selectListVo(lqw);
     }
 
     private LambdaQueryWrapper<ChickenCage> buildQueryWrapper(ChickenCageBo bo) {

+ 19 - 4
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CommonServiceImpl.java

@@ -116,14 +116,14 @@ public class CommonServiceImpl implements ICommonService {
 
     @Override
     public Boolean isCrossCoop(Long sourceCageId, Long targetCageId) {
-        if((sourceCageId == null || sourceCageId == 0L )&& (targetCageId != null && targetCageId > 0L)){
+        if((sourceCageId == null || sourceCageId == 0L ) && (targetCageId != null && targetCageId > 0L)){
             return true;
         }
         ChickenCageVo sourceCage = chickenCageMapper.selectVoOne(new LambdaQueryWrapper<ChickenCage>()
                 .eq(ChickenCage::getId, sourceCageId));
         ChickenCageVo targetCage = chickenCageMapper.selectVoOne(new LambdaQueryWrapper<ChickenCage>().eq(ChickenCage::getId, targetCageId));
         if (sourceCage != null && targetCage != null) {
-            return sourceCage.getChickenCoopId().equals(targetCage.getChickenCoopId());
+            return !sourceCage.getChickenCoopId().equals(targetCage.getChickenCoopId());
         }
         return false;
     }
@@ -413,8 +413,23 @@ public class CommonServiceImpl implements ICommonService {
         return queryStaBo;
     }
 
-
-
+    @Override
+    public LambdaQueryWrapper<CoopBatchReport> getQueryWrapper(QueryStaBo input) {
+        LambdaQueryWrapper<CoopBatchReport> lqw = new LambdaQueryWrapper<>(CoopBatchReport.class);
+        lqw.eq(CoopBatchReport::getReportCycle, input.getReportCycle());
+        lqw.eq(CoopBatchReport::getReportType,input.getCoopType())
+        lqw.eq(input.getYear() != null && input.getYear() > 0,CoopBatchReport::getYear, input.getYear());
+        switch (input.getReportCycle()) {
+            case "Q" ->
+                    lqw.eq(input.getQuarter() != null && input.getQuarter() > 0, CoopBatchReport::getQuarter, input.getQuarter());
+            case "M" -> lqw.eq(input.getMonth() != null && input.getMonth() > 0, CoopBatchReport::getMonth, input.getMonth());
+            case "D" -> {
+                lqw.eq(input.getMonth() != null && input.getMonth() > 0, CoopBatchReport::getMonth, input.getMonth());
+                lqw.eq(input.getDay() != null && input.getDay() > 0, CoopBatchReport::getDay, input.getDay());
+            }
+        }
+        return lqw;
+    }
 
 
     /**

+ 97 - 22
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CoopBatchReportDetailServiceImpl.java

@@ -2,13 +2,19 @@
 
 package cn.vber.breeding.service.impl;
 
-import cn.hutool.core.bean.BeanUtil;
+import cn.vber.breeding.domain.CoopBatchReport;
 import cn.vber.breeding.domain.bo.statistic.QueryStaBo;
 import cn.vber.breeding.domain.bo.statistic.QueryStaScopeParam;
+import cn.vber.breeding.domain.vo.CoopBatchReportVo;
 import cn.vber.breeding.domain.vo.report.CoopBatchReportDetailResult;
 import cn.vber.breeding.domain.vo.report.CoopBatchReportDetailView;
+import cn.vber.breeding.domain.vo.report.CoopBatchReportResultVo;
 import cn.vber.breeding.domain.vo.statistic.StatisticTmpResultDto;
+import cn.vber.breeding.mapper.CoopBatchReportMapper;
+import cn.vber.breeding.service.ICommonService;
 import cn.vber.breeding.service.IStatisticsHelperService;
+import cn.vber.common.core.domain.R;
+import cn.vber.common.core.exception.ServiceException;
 import cn.vber.common.core.utils.ChickenCalcUtils;
 import cn.vber.common.core.utils.DateUtils;
 import cn.vber.common.core.utils.MapstructUtils;
@@ -18,9 +24,7 @@ import cn.vber.common.mybatis.core.page.PageQuery;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import cn.vber.breeding.domain.bo.CoopBatchReportDetailBo;
 import cn.vber.breeding.domain.vo.CoopBatchReportDetailVo;
@@ -42,7 +46,9 @@ import java.util.stream.Collectors;
 public class CoopBatchReportDetailServiceImpl implements ICoopBatchReportDetailService {
 
     private final CoopBatchReportDetailMapper baseMapper;
+    private final CoopBatchReportMapper coopBatchReportMapper;
     private final IStatisticsHelperService statisticsHelperService;
+    private final ICommonService commonService ;
 
     /**
      * 查询统计报表详情信息
@@ -70,12 +76,56 @@ public class CoopBatchReportDetailServiceImpl implements ICoopBatchReportDetailS
         LambdaQueryWrapper<CoopBatchReportDetail> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
     }
+    @Override
+    public CoopBatchReportResultVo queryReport(QueryStaBo bo) {
+        CoopBatchReportVo coopBatchReportVo = queryByStaParam(bo);
+        if(coopBatchReportVo == null){
+            throw new ServiceException("未查询到数据");
+        }
+        QueryStaScopeParam param = commonService.convertQueryStaToParam(bo);
+        StatisticTmpResultDto totalTmp = new StatisticTmpResultDto();
+        List<CoopBatchReportDetailResult> views =
+                queryListViewByReportId(coopBatchReportVo.getId(), param,totalTmp);
+        statisticsHelperService.calcCommon(totalTmp);
+        CoopBatchReportResultVo vo= new CoopBatchReportResultVo();
+        vo.setData(views);
+        coopBatchReportVo.setLastSave1(totalTmp.getLastSave1());
+        coopBatchReportVo.setLastSave0(totalTmp.getLastSave0());
+        coopBatchReportVo.setSave1(totalTmp.getSave1());
+        coopBatchReportVo.setSave0(totalTmp.getSave0());
+        coopBatchReportVo.setCull1(totalTmp.getCull1());
+        coopBatchReportVo.setCull0(totalTmp.getCull0());
+        coopBatchReportVo.setIn1(totalTmp.getIn1());
+        coopBatchReportVo.setIn0(totalTmp.getIn0());
+        coopBatchReportVo.setOut1(totalTmp.getOut1());
+        coopBatchReportVo.setOut0(totalTmp.getOut0());
+        coopBatchReportVo.setQualifiedEgg(totalTmp.getQualifiedEgg());
+        coopBatchReportVo.setDeformedEgg(totalTmp.getDeformedEgg());
+        coopBatchReportVo.setBreakEgg(totalTmp.getBreakEgg());
+        coopBatchReportVo.setEggProductionRate(totalTmp.getEggProductionRate());
+        coopBatchReportVo.setEggPassRate(totalTmp.getEggPassRate());
+        coopBatchReportVo.setChicken0(totalTmp.getChicken0());
+        coopBatchReportVo.setChicken1(totalTmp.getChicken1());
+        coopBatchReportVo.setLifeRate(totalTmp.getLifeRate());
+        coopBatchReportVo.setCullRate(totalTmp.getCullRate());
+
+        vo.setTotalData(coopBatchReportVo);
+        return vo;
+    }
+
+    private CoopBatchReportVo queryByStaParam(QueryStaBo bo) {
+        LambdaQueryWrapper<CoopBatchReport> lqw = commonService.getQueryWrapper(bo);
+        CoopBatchReport coopBatchReport = coopBatchReportMapper.selectOne(lqw);
+        if(coopBatchReport == null){
+            return null;
+        }
+        return MapstructUtils.convert(coopBatchReport, CoopBatchReportVo.class);
+    }
 
     /**
      * 查询统计报表详情信息列表
      */
-    @Override
-    public List<CoopBatchReportDetailResult> queryListViewByReportId(String reportId, QueryStaScopeParam param) {
+    private List<CoopBatchReportDetailResult> queryListViewByReportId(String reportId, QueryStaScopeParam param,StatisticTmpResultDto total) {
         List<CoopBatchReportDetailView> coopBatchReportDetailViews =
                 baseMapper.selectCoopBatchReportDetail(reportId, param.getCoopType());
         Date endDate = DateUtils.parseDate(param.getEndDate());
@@ -87,33 +137,58 @@ public class CoopBatchReportDetailServiceImpl implements ICoopBatchReportDetailS
        // 根据coopId分组并统计各项数据总和
         Map<Long, List<CoopBatchReportDetailView>> groupedByCoopId = listResult.stream()
                 .collect(Collectors.groupingBy(CoopBatchReportDetailView::getCoopId));
-        StatisticTmpResultDto totalResult = new StatisticTmpResultDto();
+
         groupedByCoopId.forEach((coopId, view) -> {
             CoopBatchReportDetailResult result = new CoopBatchReportDetailResult();
             result.setCoopId(coopId);
             result.setCoopName(view.get(0).getCoopName());
             result.setData(view);
-            view.forEach((k)->{
-                totalResult.setLastSave0(totalResult.getLastSave0()+k.getLastSave0());
-                totalResult.setLastSave1(totalResult.getLastSave1()+k.getLastSave1());
-                totalResult.setSave0(totalResult.getSave0()+k.getSave0());
-                totalResult.setSave1(totalResult.getSave1()+k.getSave1());
-                totalResult.setCull0(totalResult.getCull0()+k.getCull0());
-                totalResult.setCull1(totalResult.getCull1()+k.getCull1());
-                totalResult.setIn0(totalResult.getIn0()+k.getIn0());
-                totalResult.setIn1(totalResult.getIn1()+k.getIn1());
-                totalResult.setOut0(totalResult.getOut0()+k.getOut0());
-                totalResult.setOut1(totalResult.getOut1()+k.getOut1());
-                totalResult.setChicken0(totalResult.getChicken0()+k.getChicken0());
-                totalResult.setChicken1(totalResult.getChicken1()+k.getChicken1());
-            });
-            statisticsHelperService.calcCommon(totalResult);
-            result.setTotal(totalResult.convertDetailView());
+            result.setTotal(convertDetailView(view,total));
             resultList.add(result);
         });
         return resultList;
     }
 
+    private CoopBatchReportDetailView convertDetailView(List<CoopBatchReportDetailView> views,StatisticTmpResultDto total) {
+        StatisticTmpResultDto totalResult = new StatisticTmpResultDto();
+        views.forEach((k)->{
+
+            totalResult.setLastSave0(totalResult.getLastSave0()+k.getLastSave0());
+            totalResult.setLastSave1(totalResult.getLastSave1()+k.getLastSave1());
+            totalResult.setSave0(totalResult.getSave0()+k.getSave0());
+            totalResult.setSave1(totalResult.getSave1()+k.getSave1());
+            totalResult.setCull0(totalResult.getCull0()+k.getCull0());
+            totalResult.setCull1(totalResult.getCull1()+k.getCull1());
+            totalResult.setIn0(totalResult.getIn0()+k.getIn0());
+            totalResult.setIn1(totalResult.getIn1()+k.getIn1());
+            totalResult.setOut0(totalResult.getOut0()+k.getOut0());
+            totalResult.setOut1(totalResult.getOut1()+k.getOut1());
+            totalResult.setChicken0(totalResult.getChicken0()+k.getChicken0());
+            totalResult.setChicken1(totalResult.getChicken1()+k.getChicken1());
+            totalResult.setQualifiedEgg(totalResult.getQualifiedEgg()+k.getQualifiedEgg());
+            totalResult.setDeformedEgg(totalResult.getDeformedEgg()+k.getDeformedEgg());
+            totalResult.setBreakEgg(totalResult.getBreakEgg()+k.getBreakEgg());
+
+            total.setLastSave0(total.getLastSave0()+k.getLastSave0());
+            total.setLastSave1(total.getLastSave1()+k.getLastSave1());
+            total.setSave0(total.getSave0()+k.getSave0());
+            total.setSave1(total.getSave1()+k.getSave1());
+            total.setCull0(total.getCull0()+k.getCull0());
+            total.setCull1(total.getCull1()+k.getCull1());
+            total.setIn0(total.getIn0()+k.getIn0());
+            total.setIn1(total.getIn1()+k.getIn1());
+            total.setOut0(total.getOut0()+k.getOut0());
+            total.setOut1(total.getOut1()+k.getOut1());
+            total.setChicken0(total.getChicken0()+k.getChicken0());
+            total.setChicken1(total.getChicken1()+k.getChicken1());
+            total.setQualifiedEgg(total.getQualifiedEgg()+k.getQualifiedEgg());
+            total.setDeformedEgg(total.getDeformedEgg()+k.getDeformedEgg());
+            total.setBreakEgg(total.getBreakEgg()+k.getBreakEgg());
+        });
+        statisticsHelperService.calcCommon(totalResult);
+        return totalResult.convertDetailView();
+    }
+
     private LambdaQueryWrapper<CoopBatchReportDetail> buildQueryWrapper(CoopBatchReportDetailBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<CoopBatchReportDetail> lqw = Wrappers.lambdaQuery();

+ 0 - 20
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/CoopBatchReportServiceImpl.java

@@ -61,27 +61,7 @@ public class CoopBatchReportServiceImpl implements ICoopBatchReportService {
         return baseMapper.selectVoList(lqw);
     }
 
-    @Override
-    public CoopBatchReportVo queryByStaParam(QueryStaBo bo) {
-        LambdaQueryWrapper<CoopBatchReport> lqw = Wrappers.lambdaQuery();
-        lqw.eq(CoopBatchReport::getReportCycle, bo.getReportCycle());
-        lqw.eq(bo.getYear() != null && bo.getYear() > 0,CoopBatchReport::getYear, bo.getYear());
-        switch (bo.getReportCycle()) {
-            case "Q" ->
-                    lqw.eq(bo.getQuarter() != null && bo.getQuarter() > 0, CoopBatchReport::getQuarter, bo.getQuarter());
-            case "M" -> lqw.eq(bo.getMonth() != null && bo.getMonth() > 0, CoopBatchReport::getMonth, bo.getMonth());
-            case "D" -> {
-                lqw.eq(bo.getMonth() != null && bo.getMonth() > 0, CoopBatchReport::getMonth, bo.getMonth());
-                lqw.eq(bo.getDay() != null && bo.getDay() > 0, CoopBatchReport::getDay, bo.getDay());
-            }
-        }
 
-        CoopBatchReport coopBatchReport = baseMapper.selectOne(lqw);
-        if(coopBatchReport == null){
-            return null;
-        }
-        return MapstructUtils.convert(coopBatchReport, CoopBatchReportVo.class);
-    }
 
     private LambdaQueryWrapper<CoopBatchReport> buildQueryWrapper(CoopBatchReportBo bo) {
         Map<String, Object> params = bo.getParams();

+ 29 - 25
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/java/cn/vber/breeding/service/impl/StatisticsHelperServiceImpl.java

@@ -85,16 +85,25 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
 
     }
 
+    private String buildTitle(QueryStaBo input) {
+        String title = input.getYear() + "年";
+        switch (input.getReportCycle()) {
+            case "Q" -> title += "第" + input.getQuarter() + "季度";
+            case "M" -> title += input.getMonth() + "月份";
+            case "D" -> title += input.getMonth() + "月" + input.getDay() + "日";
+        }
+        title +=   "弥勒育种厂";
+        title += Objects.equals(input.getCoopType(), "coop") ? "(育成舍)" : "(产蛋舍)";
+        return title+"统计表";
+    }
    //插入统计表中
 
     private void insertReport(QueryStaBo input, Map<String, StatisticTmpResultDto> tmpResultMap){
         deleteHistory(input);
         CoopBatchReport report = new CoopBatchReport();
-        String title = Objects.equals(input.getReportCycle(), "Y") ? "年" : Objects.equals(input.getReportCycle(), "Q")
-                ? "季度" : Objects.equals(input.getReportCycle(), "M") ? "月" : "日" + "统计";
         String reportId = IdUtil.simpleUUID();
         report.setId(reportId);
-        report.setTitle(title);
+        report.setTitle(buildTitle(input));
         report.setYear(input.getYear());
         report.setReportCycle(input.getReportCycle());
         report.setMonth(input.getMonth());
@@ -120,7 +129,9 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
             detail.setLastSave1(value.getLastSave1());
             tmpAll.setLastSave1(tmpAll.getLastSave1() + value.getLastSave1());
             detail.setSave0(value.getSave0());
+            tmpAll.setSave0(tmpAll.getSave0() + value.getSave0());
             detail.setSave1(value.getSave1());
+            tmpAll.setSave0(tmpAll.getSave1() + value.getSave1());
             detail.setCull0(value.getCull0());
             tmpAll.setCull0(tmpAll.getCull0() + value.getCull0());
             detail.setCull1(value.getCull1());
@@ -174,13 +185,8 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
     }
     //删除之前统计数据
     private void deleteHistory(QueryStaBo input){
-        LambdaQueryWrapper<CoopBatchReport> law = new LambdaQueryWrapper<>(CoopBatchReport.class)
-                .eq(CoopBatchReport::getReportCycle, input.getReportCycle())
-                .eq(CoopBatchReport::getYear, input.getYear())
-                .eq(input.getMonth()!=null &&input.getMonth() > 0,CoopBatchReport::getMonth, input.getMonth())
-                .eq(input.getDay()!=null &&input.getDay() > 0,CoopBatchReport::getDay, input.getDay())
-                .eq(input.getQuarter()!=null &&input.getQuarter() > 0,CoopBatchReport::getQuarter, input.getQuarter());
-        List<CoopBatchReport> coopBatchReports = reportMapper.selectList(law);
+        LambdaQueryWrapper<CoopBatchReport> lqw =  commonService.getQueryWrapper(input);
+        List<CoopBatchReport> coopBatchReports = reportMapper.selectList(lqw);
         if(!coopBatchReports.isEmpty()){
             //reportMapper.deleteBatchIds(coopBatchReports);
             coopBatchReports.forEach(report -> {
@@ -188,7 +194,7 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
                         .eq(CoopBatchReportDetail::getReportId, report.getId()));
             });
         }
-        reportMapper.delete(law);
+        reportMapper.delete(lqw);
     }
     //统计月/季度/年 中所有天数中母鸡的总数 chicken1 ,日的不统计
     private void fillFemaleCountAll(Map<String, StatisticTmpResultDto> map,QueryStaScopeParam queryScopeParam) {
@@ -238,12 +244,7 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
      */
     private Map<String,CoopBatchReportDetail> queryLastCycleReportDetail(QueryStaScopeParam queryScopeParam){
         QueryStaBo queryLastStaBo = commonService.getLastCycle(queryScopeParam.getStartDate(), queryScopeParam.getReportCycle());
-        LambdaQueryWrapper<CoopBatchReport> law = new LambdaQueryWrapper<>(CoopBatchReport.class)
-                .eq(CoopBatchReport::getReportCycle, queryLastStaBo.getReportCycle())
-                .eq(CoopBatchReport::getYear, queryLastStaBo.getYear())
-                .eq((queryLastStaBo.getMonth()!=null && queryLastStaBo.getMonth() > 0),CoopBatchReport::getMonth, queryLastStaBo.getMonth())
-                .eq(queryLastStaBo.getDay()!=null && queryLastStaBo.getDay() > 0,CoopBatchReport::getDay, queryLastStaBo.getDay())
-                .eq(queryLastStaBo.getQuarter()!=null && queryLastStaBo.getQuarter() > 0,CoopBatchReport::getQuarter, queryLastStaBo.getQuarter());
+        LambdaQueryWrapper<CoopBatchReport> law = commonService.getQueryWrapper(queryLastStaBo);
         try {
             CoopBatchReport coopBatchReport = reportMapper.selectOne(law);
             if(coopBatchReport == null){
@@ -284,34 +285,37 @@ public class StatisticsHelperServiceImpl implements IStatisticsHelperService {
         int inCount = tmpResult.getIn0() + tmpResult.getIn1();
         int outCount = tmpResult.getOut0() + tmpResult.getOut1();
         int d2 = lastSave + inCount - outCount;
-        if(cultCount == 0 || d2 == 0){
+        if(d2==0){
             tmpResult.setCullRate(0f);
+            tmpResult.setLifeRate(0f);
         }
-        if(d2==0 || cultCount==0){
+        else if(cultCount == 0){
             tmpResult.setCullRate(0f);
-            tmpResult.setLifeRate(0f);
-        }else{
-            float  cultRate = (float) cultCount / d2;
+            tmpResult.setLifeRate(1f);
+        }
+        else{
+            float cultRate = (float) cultCount / d2;
             float lifeRate = 1 - cultRate;
             tmpResult.setCullRate(cultRate);
             tmpResult.setLifeRate(lifeRate);
         }
         int qualifiedEgg = tmpResult.getQualifiedEgg();
+
         int allEgg = tmpResult.getQualifiedEgg() + tmpResult.getDeformedEgg() + tmpResult.getBreakEgg();
         //每日母鸡总数之和
         Integer chickenAll1 = tmpResult.getChicken1();
-        if(qualifiedEgg == 0){
+        if(qualifiedEgg == 0 || allEgg==0){
             tmpResult.setEggPassRate(0f);
         }else{
             //种蛋合格率
-            tmpResult.setEggPassRate((float) (qualifiedEgg / allEgg));
+            tmpResult.setEggPassRate((float) qualifiedEgg / allEgg);
         }
 
         if(allEgg <= 0 || chickenAll1 <= 0){
             tmpResult.setEggProductionRate(0f);
         }else{
             //产蛋率
-            tmpResult.setEggProductionRate((float) (allEgg / chickenAll1));
+            tmpResult.setEggProductionRate((float) allEgg / chickenAll1);
         }
 //        tmpResult.setLifeRateStr(convertFloatToStr(tmpResult.getLifeRate()));
 //        tmpResult.setCullRateStr(convertFloatToStr(tmpResult.getCullRate()));

+ 49 - 0
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/resources/mapper/ChickenCageMapper.xml

@@ -4,6 +4,55 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.vber.breeding.mapper.ChickenCageMapper">
 
+    <resultMap id="chickenCageVo" type="cn.vber.breeding.domain.vo.ChickenCageVo">
+
+    </resultMap>
+
+    <select id="selectPageList" resultMap="chickenCageVo">
+        SELECT
+            coop.coop_name as chicken_coop_name,
+            cage.id,
+            cage.cage_num,
+            cage.chicken_coop_id,
+            cage.`status`,
+            cage.max_capacity,
+            cage.create_time,
+            cage.update_by,
+            cage.update_time,
+            cage.remark,
+            cage.create_by,
+            cage.create_org
+        FROM
+            f_chicken_cage AS cage
+                LEFT JOIN
+           (select coop_name,id from f_chicken_coop) AS coop
+            ON
+                cage.chicken_coop_id = coop.id
+            ${ew.getCustomSqlSegment}
+    </select>
+    <select id="selectListVo" resultMap="chickenCageVo">
+        SELECT
+            coop.coop_name as chicken_coop_name,
+            cage.id,
+            cage.cage_num,
+            cage.chicken_coop_id,
+            cage.`status`,
+            cage.max_capacity,
+            cage.create_time,
+            cage.update_by,
+            cage.update_time,
+            cage.remark,
+            cage.create_by,
+            cage.create_org
+        FROM
+            f_chicken_cage AS cage
+                LEFT JOIN
+                (select coop_name,id from f_chicken_coop) AS coop
+            ON
+                cage.chicken_coop_id = coop.id
+            ${ew.getCustomSqlSegment}
+    </select>
+
 </mapper>
 
 

+ 11 - 7
SERVER/ChickenFarmV3/vb-modules/vb-breeding/src/main/resources/mapper/CoopBatchReportDetailMapper.xml

@@ -60,7 +60,7 @@
             ON
                 fcc.chicken_coop_id = coop.id
         WHERE
-            fc.`status` = 1 and fc.cull_time between #{startDate} and #{endDate}
+            fc.`status` = 1 and fc.cull_time between #{startDate} and #{endDate} and coop.coop_type = #{coopType}
         GROUP BY
             fc.batch_num,
             coop.id,
@@ -86,7 +86,7 @@
             ON
                 fcc.chicken_coop_id = coop.id
         WHERE
-            fc.`status` = 0 and (fc.cage_id != NULL or fc.cage_id !='')
+            fc.`status` = 0 and (fc.cage_id != NULL or fc.cage_id !='')  and coop.coop_type = #{coopType}
         GROUP BY
             fc.batch_num,
             coop.id,
@@ -114,7 +114,7 @@
         WHERE
             fcbre.del_flag = 0 AND
             fcbre.report_cycle = 'D' AND
-            fcbre.report_date BETWEEN #{startDate} AND #{endDate}
+            fcbre.report_date BETWEEN #{startDate} AND #{endDate}  and coop.coop_type = #{coopType}
 
     </select>
 
@@ -125,7 +125,7 @@
             fc.batch_num AS batch_num,
             fc.gender AS gender,
             count(fcc.chicken_id) AS chicken_count,
-            coop.id
+            coop.id as coop_id
         FROM
             (SELECT f_cage_change.target_cage_id AS target_cage_id, f_cage_change.chicken_id AS chicken_id
              FROM f_cage_change WHERE f_cage_change.bind_time BETWEEN #{startDate} and #{endDate}
@@ -133,6 +133,7 @@
                 LEFT JOIN f_chicken AS fc ON fcc.chicken_id = fc.id
                 LEFT JOIN f_chicken_cage AS fca ON fcc.target_cage_id = fca.id
                 LEFT JOIN f_chicken_coop AS coop ON fca.chicken_coop_id = coop.id
+        where  coop.coop_type = #{coopType}
         GROUP BY
             fc.batch_num,
             coop.id,
@@ -146,14 +147,16 @@
             fc.batch_num AS batch_num,
             fc.gender AS gender,
             count(fcc.chicken_id) AS chicken_count,
-            coop.id
+            coop.id  as coop_id
         FROM
             (SELECT f_cage_change.source_cage_id AS source_cage_id, f_cage_change.chicken_id AS chicken_id
              FROM f_cage_change WHERE f_cage_change.bind_time BETWEEN #{startDate} and #{endDate}
-                                  and f_cage_change.status = 1 and  f_cage_change.cross_coop=1) as fcc
+                                  and f_cage_change.status = 1 and  f_cage_change.cross_coop=1
+                                  and (source_cage_id != NULL or source_cage_id>0)) as fcc
                 LEFT JOIN f_chicken AS fc ON fcc.chicken_id = fc.id
                 LEFT JOIN f_chicken_cage AS fca ON fcc.source_cage_id = fca.id
                 LEFT JOIN f_chicken_coop AS coop ON fca.chicken_coop_id = coop.id
+        where  coop.coop_type = #{coopType}
         GROUP BY
             fc.batch_num,
             coop.id,
@@ -166,7 +169,7 @@
             cage.chicken_coop_id as coop_id,
             fc.batch_num,
             egg.egg_type,
-            COUNT(egg.egg_count) as egg_count
+            SUM(egg.egg_count) as egg_count
         FROM
             f_breeding_egg AS egg
                 INNER JOIN
@@ -184,6 +187,7 @@
         WHERE
             egg.del_flag = '0' AND
             egg.lay_date BETWEEN #{startDate} AND #{endDate}
+            and  coop.coop_type = #{coopType}
         GROUP BY
             fc.batch_num,
             cage.chicken_coop_id,

+ 10 - 2
SERVER/ChickenFarmV3/vb-modules/vb-job/src/main/java/cn/vber/job/xxl/jobhandler/StatisticXxlJob.java

@@ -21,7 +21,11 @@ public class StatisticXxlJob {
     public void staDayJobHandler() throws Exception {
         log.info("-------开始执行日统计----------");
         QueryStaBo param = commonService.convertQueryStaBoByCurrentTime("D");
-        log.info("-------{}年-{}月-{}日----------", param.getYear(), param.getMonth(), param.getDay());
+        param.setCoopType("coop");
+        log.info("-------{}年-{}月-{}日-育成舍---------", param.getYear(), param.getMonth(), param.getDay());
+        statisticsHelperService.statisticDay(param);
+        log.info("-------{}年-{}月-{}日-产蛋舍---------", param.getYear(), param.getMonth(), param.getDay());
+        param.setCoopType("egg");
         statisticsHelperService.statisticDay(param);
         log.info("-------日统计完成--------------");
     }
@@ -30,7 +34,11 @@ public class StatisticXxlJob {
     public void staMonthJobHandler() throws Exception {
         log.info("-------开始执行月统计----------");
         QueryStaBo param = commonService.convertQueryStaBoByCurrentTime("M");
-        log.info("-------{}年-{}月----------", param.getYear(), param.getMonth());
+        param.setCoopType("coop");
+        log.info("-------{}年-{}月-育成舍---------", param.getYear(), param.getMonth());
+        statisticsHelperService.statisticMonthOrYearOrQuarter(param);
+        log.info("-------{}年-{}月--产蛋舍--------", param.getYear(), param.getMonth());
+        param.setCoopType("egg");
         statisticsHelperService.statisticMonthOrYearOrQuarter(param);
         log.info("----------月统计完成----------");
     }

+ 1 - 1
SERVER/ChickenFarmV3/vb-modules/vb-system/src/main/java/cn/vber/system/controller/system/SysUserController.java

@@ -225,7 +225,7 @@ public class SysUserController extends BaseController {
      * @param userIds 用户ID串
      * @param orgId   组织结构ID
      */
-    @SaCheckPermission("system:user:query")
+    //@SaCheckPermission("system:user:query")
     @GetMapping("/optionSelect")
     public R<List<SysUserVo>> optionSelect(@RequestParam(required = false) Long[] userIds, @RequestParam(required = false) Long orgId) {
         return R.ok(userService.selectUserByIds(ArrayUtil.isEmpty(userIds) ? null : List.of(userIds), orgId));

+ 6 - 6
SERVER/ChickenFarmV3/vb-modules/vb-system/src/main/java/cn/vber/system/service/impl/SysRoleServiceImpl.java

@@ -368,15 +368,15 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
     private int insertRoleMenu(SysRoleBo role) {
         int rows = 1;
         // 新增角色与组织机构(数据权限)管理
-        List<SysRoleOrg> list = new ArrayList<>();
-        for (Long orgId : role.getOrgIds()) {
-            SysRoleOrg rd = new SysRoleOrg();
+        List<SysRoleMenu> list = new ArrayList<>();
+        for (Long menuId : role.getMenuIds()) {
+            SysRoleMenu rd = new SysRoleMenu();
             rd.setRoleId(role.getRoleId());
-            rd.setOrgId(orgId);
+            rd.setMenuId(menuId);
             list.add(rd);
         }
         if (CollUtil.isNotEmpty(list)) {
-            rows = roleOrgMapper.insertBatch(list) ? list.size() : 0;
+            rows = roleMenuMapper.insertBatch(list) ? list.size() : 0;
         }
         return rows;
     }
@@ -389,7 +389,7 @@ public class SysRoleServiceImpl implements ISysRoleService, RoleService {
     private int insertRoleOrg(SysRoleBo role) {
         Long[] orgIds = role.getOrgIds();
         if (ArrayUtil.isEmpty(orgIds)) {
-            return 0;
+            return 1;
         }
         List<SysRoleOrg> roleOrgList = Arrays.stream(orgIds)
                 .map(orgId -> {

+ 19 - 11
UI/VB.VUE/src/components/reports/ChickenCoopReport.vue

@@ -187,18 +187,26 @@ function onGenerateReport() {
 	if (!props.generateReportFun) {
 		return
 	}
-	loading.value = true
-	props
-		.generateReportFun(formData.value)
-		.then(() => {
-			onQueryReport()
-			emits
+	message
+		.confirm("确定生成报表吗?", "提示", {
+			confirmButtonText: "确定",
+			cancelButtonText: "取消",
+			type: "warning"
 		})
-		.catch((err) => {
-			console.log(err)
-		})
-		.finally(() => {
-			loading.value = false
+		.then(() => {
+			loading.value = true
+			props
+				.generateReportFun(formData.value)
+				.then(() => {
+					onQueryReport()
+					emits
+				})
+				.catch((err) => {
+					console.log(err)
+				})
+				.finally(() => {
+					loading.value = false
+				})
 		})
 }
 

+ 25 - 25
UI/VB.VUE/src/views/base/chickenCage/index.vue

@@ -93,20 +93,20 @@ const opts = reactive({
 			props: {
 				valueIsNumber: true
 			}
-		},
-		{
-			field: "status",
-			label: "状态",
-			class: "w-100",
-			required: false,
-			component: "Dict",
-			props: {
-				placeholder: "请选择状态",
-				dictType: "chicken_cage_status",
-				valueIsNumber: 1,
-				type: "select"
-			}
 		}
+		// {
+		// 	field: "status",
+		// 	label: "状态",
+		// 	class: "w-100",
+		// 	required: false,
+		// 	component: "Dict",
+		// 	props: {
+		// 		placeholder: "请选择状态",
+		// 		dictType: "chicken_cage_status",
+		// 		valueIsNumber: 1,
+		// 		type: "select"
+		// 	}
+		// }
 	] as any,
 	permission: "breeding:chickenCage",
 	handleBtns: [],
@@ -151,17 +151,17 @@ const opts = reactive({
 			component: "slot"
 		},
 
-		{
-			field: "status",
-			label: "状态",
-			class: "w-100",
-			required: true,
-			component: "Dict",
-			props: {
-				dictType: "chicken_cage_status",
-				valueIsNumber: 1
-			}
-		},
+		// {
+		// 	field: "status",
+		// 	label: "状态",
+		// 	class: "w-100",
+		// 	required: true,
+		// 	component: "Dict",
+		// 	props: {
+		// 		dictType: "chicken_cage_status",
+		// 		valueIsNumber: 1
+		// 	}
+		// },
 		{
 			field: "maxCapacity",
 			label: "最大容量",
@@ -193,7 +193,7 @@ const opts = reactive({
 		cageNum: undefined,
 		numSuffix: undefined,
 		manager: undefined,
-		status: undefined,
+		status: 0,
 		maxCapacity: undefined,
 		remark: undefined
 	}

+ 0 - 1
UI/VB.VUE/src/views/breeding/batch/index.vue

@@ -511,7 +511,6 @@ function submitCullForm() {
 				<VbDataTable
 					ref="tableRef"
 					keyField="batchNum"
-					tableBoxHeight="480px"
 					:columns="opts.columns"
 					:handle-perm="opts.permission"
 					:handle-btns="opts.handleBtns"

+ 4 - 4
UI/VB.VUE/src/views/breeding/chicken/index.vue

@@ -556,9 +556,9 @@ function submitCullForm() {
 		.then(() => {
 			apis.breeding.chickenApi.cull(cullData).then(() => {
 				message.alertSuccess("淘汰成功", "提示")
-				cullModalRef.value?.close()
+				cullModalRef.value?.hide()
 				cullOpt.resetForm()
-				tableRef.value.clearSelection()
+				tableRef.value.clearSelecteds()
 				handleQuery()
 			})
 		})
@@ -750,7 +750,7 @@ function viewSopBindLog(row: any, sopType: string) {
 						</template>
 					</el-button>
 				</vb-tooltip>
-				<vb-tooltip content="删除" placement="top">
+				<!-- <vb-tooltip content="删除" placement="top">
 					<el-button
 						link
 						type="primary"
@@ -760,7 +760,7 @@ function viewSopBindLog(row: any, sopType: string) {
 							<VbIcon icon-name="trash-square" icon-type="duotone" class="fs-3"></VbIcon>
 						</template>
 					</el-button>
-				</vb-tooltip>
+				</vb-tooltip> -->
 				<vb-tooltip content="绑定SOP" placement="top" v-if="row.status === 0">
 					<el-dropdown
 						trigger="hover"

+ 22 - 0
UI/VB.VUE/src/views/eggLaying/breedingEgg/index.vue

@@ -2,9 +2,11 @@
 import apis from "@a"
 import dayjs from "dayjs"
 import ChickenModal from "@v/common/modal/chickenModal.vue"
+import CageModal from "@v/common/modal/cageModal.vue"
 const tableRef = ref()
 const modalRef = ref()
 const chickenModalRef = ref()
+const cageModalRef = ref()
 const isEdit = ref(false)
 const coopOptions = ref([])
 const cageOptions = ref([])
@@ -175,6 +177,10 @@ const opts = reactive({
 			placeholder: "请输入鸡笼",
 			component: "I",
 			disabled: true
+			// appendClickFunc: handleShowCageModal,
+			// appendDisabled: () => {
+			// 	return isEdit.value
+			// }
 		},
 		{
 			field: "femaleChickenWingTagNum",
@@ -304,10 +310,12 @@ function resetQuery(query?: any) {
 	//
 }
 function handleCreate() {
+	isEdit.value = false
 	tableRef.value.defaultHandleFuns.handleCreate()
 }
 /** 修改按钮操作 */
 function handleUpdate(row: any) {
+	isEdit.value = true
 	tableRef.value.defaultHandleFuns.handleUpdate("", row)
 }
 
@@ -326,6 +334,9 @@ function submitForm() {
 function handleShowChickenModal() {
 	chickenModalRef.value?.open({ status: 0, gender: 1 })
 }
+function handleShowCageModal() {
+	cageModalRef.value?.open({ status: 0 })
+}
 
 function onChickenConfirm(selectedData: any[]) {
 	if (selectedData.length > 0) {
@@ -338,6 +349,12 @@ function onChickenConfirm(selectedData: any[]) {
 		// })
 	}
 }
+function onCageConfirm(selectedData: any[]) {
+	if (selectedData.length > 0) {
+		form.value.cageId = selectedData[0].id
+		form.value.cageNum = selectedData[0].cageNum
+	}
+}
 function getFamilyInfoByChicken(chickenId: number) {
 	apis.breeding.familyApi.getFamilyInfoByFemaleChickenId(chickenId).then((res: any) => {
 		form.value.familyNum = res.data.familyNum
@@ -436,6 +453,11 @@ const handleFileSuccess = () => {
 			modal-title="请输入翅号"
 			:multiple="false"
 			@confirm="onChickenConfirm"></ChickenModal>
+		<ChickenModal
+			ref="cageModalRef"
+			modal-title="请输入鸡笼号"
+			:multiple="false"
+			@confirm="onCageConfirm"></ChickenModal>
 
 		<ImportModal
 			ref="uploadModalRef"