()
+ .eqIfPresent(TeamBizdomainRelDO::getBusiId, reqVO.getBusiId())
+ .eqIfPresent(TeamBizdomainRelDO::getTeamId, reqVO.getTeamId())
+ .likeIfPresent(TeamBizdomainRelDO::getTeamName, reqVO.getTeamName())
+ .eqIfPresent(TeamBizdomainRelDO::getWeight, reqVO.getWeight())
+ .likeIfPresent(TeamBizdomainRelDO::getCompanyName, reqVO.getCompanyName())
+ .eqIfPresent(TeamBizdomainRelDO::getCompanyId, reqVO.getCompanyId())
+ .betweenIfPresent(TeamBizdomainRelDO::getCreateTime, reqVO.getCreateTime())
+ .eqIfPresent(TeamBizdomainRelDO::getBusiType, reqVO.getBusiType())
+ .orderByDesc(TeamBizdomainRelDO::getId));
+ }
+
+}
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/AssignTasksConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/AssignTasksConstants.java
new file mode 100644
index 0000000..1393246
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/AssignTasksConstants.java
@@ -0,0 +1,16 @@
+package com.zteits.urbanops.module.garden.enums;
+
+/**
+ * @Classname AssignTasksConstants
+ * @Description 派单静态数据
+ * @Date 2025/11/16 16:43
+ * @Created by wangqian
+ */
+public class AssignTasksConstants {
+
+ /*初始状态*/
+ public static final Integer ASSIGN_TASK_FINISH_0 = 0;
+ /* 完成*/
+ public static final Integer ASSIGN_TASK_FINISH_1 = 1;
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/CostFeeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/CostFeeConstants.java
new file mode 100644
index 0000000..7bc6aa7
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/CostFeeConstants.java
@@ -0,0 +1,22 @@
+package com.zteits.urbanops.module.garden.enums;
+
+/**
+ * @Classname CostFeeConstants
+ * @Description 人机材
+ * @Date 2025/11/19 20:42
+ * @Created by wangqian
+ */
+public class CostFeeConstants {
+
+ public static final String COSTFEE_WATER = "costFree_water";
+
+ public static final String COSTFEE_PERSONAL = "costFree_presonal";
+
+ public static final String COSTFEE_DEPARTMENT = "costFee_department";
+
+ public static final String COSTFEE_GARDENWASTE = "costFee_gardenWaste";
+
+ public static final String COSTFEE_MECHANICAL = "costFee_mechanical";
+
+ public static final String COSTFEE_RENTALMECHANICAL = "costFee_rentalmechanical";
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java
new file mode 100644
index 0000000..8496aa3
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java
@@ -0,0 +1,53 @@
+package com.zteits.urbanops.module.garden.enums;
+
+
+import com.zteits.urbanops.framework.common.exception.ErrorCode;
+
+/**
+ * ERP 错误码枚举类
+ *
+ * erp 系统,使用 1-100-000-000 段
+ */
+public interface ErrorCodeConstants {
+
+ // ========== server 派单 1-100-001-000 ==========
+ ErrorCode ASSIGN_TASKS_NOT_EXISTS = new ErrorCode(1-100-001-000, "派单任务主表(记录派单任务基本信息)不存在");
+
+ ErrorCode ASSIGN_TASKS_NOT_EXISTS_001 = new ErrorCode(1-100-001-001, "派单任务主表(记录派单任务基本信息)不存在");
+ ErrorCode ASSIGN_TASKS_NOT_EXISTS_002 = new ErrorCode(1-100-001-002, "未全部完成,不能确认");
+
+ ErrorCode ASSIGN_TASKS_INFO_NOT_EXISTS = new ErrorCode(1-100-002-000, "派发单位不能为空");
+
+ ErrorCode ASSIGN_TASKS_INFO_NOT_EXISTS_100 = new ErrorCode(1-100-002-100, "用户未登录");
+
+ ErrorCode ASSIGN_TASKS_INFO_NOT_EXISTS_001 = new ErrorCode(1-100-002-001, "派发单位不能为空");
+
+ ErrorCode ASSIGN_TASKS_INFO_NOT_EXISTS_002 = new ErrorCode(1-100-002-002, "派单已完成,不允许删除");
+
+ ErrorCode ASSIGN_TASKS_INFO_NOT_EXISTS_003 = new ErrorCode(1-100-002-003, "更新派单任务失败:任务ID不能为空");
+
+ // ========== 人机材料 1-100-003-000==========
+
+ ErrorCode COST_FEE_NOT_EXISTS = new ErrorCode(1-100-003-000, "费用已录入");
+
+ // ========== 部门费用费用 1-100-005-000==========
+ ErrorCode DEPARTMENT_COST_NOT_EXISTS_01 = new ErrorCode(1-100-003-001, "部门费用为空");
+
+ // ========== 人员费用 1-100-005-000==========
+ ErrorCode PERSONAL_COST_NOT_EXISTS = new ErrorCode(1-100-004-000, "人员费用为空");
+
+ ErrorCode PERSONAL_COST_NOT_EXISTS_001 = new ErrorCode(1-100-004-001, "参数错误");
+
+ // ========== 自有机械材料 1-100-005-000==========
+ ErrorCode MECHANICAL_COST_NOT_EXISTS = new ErrorCode(1-100-005-000, "费用已录入");
+ ErrorCode MECHANICAL_COST_NOT_EXISTS_001 = new ErrorCode(1-100-006-001, "参数错误");
+
+ // ========== 自有机械折旧 1-100-006-000==========
+ ErrorCode MECHANICAL_DEPRECIATION_NOT_EXISTS_001 = new ErrorCode(1-100-006-001, "参数错误");
+
+
+ // ========== 租赁机械 1-100-007-000==========
+ ErrorCode RENTAL_MECHANICAL_COST_NOT_EXISTS = new ErrorCode(1-100-007-000, "费用已录入");
+
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksService.java
new file mode 100644
index 0000000..35af3bf
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksService.java
@@ -0,0 +1,80 @@
+package com.zteits.urbanops.module.garden.service.assigntasks;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 派单任务主表(记录派单任务基本信息) Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface AssignTasksService {
+
+ /**
+ * 创建派单任务主表(记录派单任务基本信息)
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createAssignTasks(@Valid AssignTasksSaveReqVO createReqVO);
+
+ /**
+ * 更新派单任务主表(记录派单任务基本信息)
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateAssignTasks(@Valid AssignTasksSaveReqVO updateReqVO);
+
+ /**
+ * 删除派单任务主表(记录派单任务基本信息)
+ *
+ * @param id 编号
+ */
+ void deleteAssignTasks(Long id);
+
+ /**
+ * 批量删除派单任务主表(记录派单任务基本信息)
+ *
+ * @param ids 编号
+ */
+ void deleteAssignTasksListByIds(List ids);
+
+ /**
+ * 获得派单任务主表(记录派单任务基本信息)
+ *
+ * @param id 编号
+ * @return 派单任务主表(记录派单任务基本信息)
+ */
+ AssignTasksDO getAssignTasks(Long id);
+
+ /**
+ * 获得派单任务主表(记录派单任务基本信息)分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 派单任务主表(记录派单任务基本信息)分页
+ */
+ PageResult getAssignTasksPage(AssignTasksPageReqVO pageReqVO);
+
+ /**
+ * @Author wangqian
+ * @Description
+ * @Date 2025/11/17 23:02
+ * @Param id
+ * @Return int
+ */
+ public int confirmAssignTasksById(Long id);
+
+ /**
+ * @Author wangqian
+ * @Description 超时定时任务处理
+ * @Date 2025/11/17 23:02
+ * @Param
+ * @Return int
+ */
+ public int tasksOutTimeAuto();
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
new file mode 100644
index 0000000..8bfbcc7
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasks/AssignTasksServiceImpl.java
@@ -0,0 +1,202 @@
+package com.zteits.urbanops.module.garden.service.assigntasks;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasks.vo.AssignTasksSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.assigntasks.AssignTasksDO;
+import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO;
+import com.zteits.urbanops.module.garden.dal.mysql.assigntasks.AssignTasksMapper;
+import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper;
+import com.zteits.urbanops.module.garden.enums.AssignTasksConstants;
+import com.zteits.urbanops.module.garden.service.assigntasksinfo.AssignTasksInfoService;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+/**
+ * 派单任务主表(记录派单任务基本信息) Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+@Slf4j
+public class AssignTasksServiceImpl implements AssignTasksService {
+
+ @Resource
+ private AssignTasksMapper assignTasksMapper;
+
+ @Resource
+ private AssignTasksInfoMapper assiAssignTasksInfoMapper;
+
+ @Resource
+ private AssignTasksInfoService assignTasksInfoService;
+
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public Long createAssignTasks(AssignTasksSaveReqVO createReqVO) {
+ // 插入
+ AssignTasksDO assignTasks = BeanUtils.toBean(createReqVO, AssignTasksDO.class);
+ assignTasksMapper.insert(assignTasks);
+ //保存单位明细
+ String[] originalCompanyIds = createReqVO.getCompanyIds();
+ if (originalCompanyIds == null || originalCompanyIds.length == 0) {
+ throw exception(ASSIGN_TASKS_NOT_EXISTS_001);
+ }
+ assignTasksInfoService.saveAssignTasksInfos(createReqVO.getCompanyIds(), assignTasks.getId());
+ //保存单位明细
+
+ // 返回
+ return assignTasks.getId();
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ @Override
+ public void updateAssignTasks(AssignTasksSaveReqVO updateReqVO) {
+ // 校验存在
+ validateAssignTasksExists(updateReqVO.getId());
+ // 更新
+ AssignTasksDO updateObj = BeanUtils.toBean(updateReqVO, AssignTasksDO.class);
+ assignTasksMapper.updateById(updateObj);
+
+ // add by wq 20251116
+ String[] originalCompanyIds = updateReqVO.getCompanyIds();
+ if (originalCompanyIds == null || originalCompanyIds.length == 0) {
+ throw exception(ASSIGN_TASKS_NOT_EXISTS_001);
+ }
+
+ assignTasksInfoService.updateAssignTasksInfos(updateReqVO.getCompanyIds(), updateObj.getId());
+ }
+
+ @Override
+ public void deleteAssignTasks(Long id) {
+ // 校验存在
+ validateAssignTasksExists(id);
+ // 删除
+ assignTasksMapper.deleteById(id);
+ }
+
+ @Override
+ @Transactional
+ public void deleteAssignTasksListByIds(List ids) {
+ // 删除
+ assignTasksMapper.deleteByIds(ids);
+ //删除关联的明细
+ assiAssignTasksInfoMapper.deleteAssignTaskInfoByTaskId(ids);
+ }
+
+
+ private void validateAssignTasksExists(Long id) {
+ if (assignTasksMapper.selectById(id) == null) {
+ throw exception(ASSIGN_TASKS_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public AssignTasksDO getAssignTasks(Long id) {
+ return assignTasksMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getAssignTasksPage(AssignTasksPageReqVO pageReqVO) {
+ return assignTasksMapper.selectPage(pageReqVO);
+ }
+
+
+ @Override
+ public int confirmAssignTasksById(Long id) {
+ // 获得用户基本信息
+ AssignTasksDO assignTasks = assignTasksMapper.selectById(id);
+
+ List assignTaskInfoList = assiAssignTasksInfoMapper.selectList(AssignTasksInfoDO::getTaskId,assignTasks.getId());
+ boolean allSubTaskFinished = assignTaskInfoList.stream()
+ .allMatch(subTask -> 1 == subTask.getFinish());
+
+ //所有都完成反馈
+ if(allSubTaskFinished) {
+ assignTasks.setParentFinish(AssignTasksConstants.ASSIGN_TASK_FINISH_1);
+ assignTasks.setFinishTime(LocalDateTime.now());
+ assignTasks.setUpdateTime(LocalDateTime.now());
+ assignTasks.setUpdater(String.valueOf(getLoginUserId()));
+ assignTasksMapper.updateById(assignTasks);
+ } else {
+ throw exception(ASSIGN_TASKS_NOT_EXISTS_002);
+ }
+ return 1;
+ }
+
+ @Override
+ public int tasksOutTimeAuto() {
+ //查询未完成的派单
+ // 1. 初始化统计变量:记录更新成功的超时记录数
+ int updatedCount = 0;
+ LocalDateTime now = LocalDateTime.now(); // 提前获取当前时间(同一批处理时间一致)
+ log.info("开始处理超时派单,当前时间:{}", now);
+
+ try {
+ // 2. 查询所有“未完成的派单”(parentFinish=0)
+ List assignTasks = assignTasksMapper.selectList(AssignTasksDO::getParentFinish,0);
+
+ if (CollectionUtils.isEmpty(assignTasks)) {
+ log.info("无未完成的派单,无需处理");
+ return 0;
+ }
+
+ List timeoutTaskInfos = new ArrayList<>();
+
+ for (AssignTasksDO assignTasksDO : assignTasks) {
+ //查询所有符合条件的派单详情(taskId in 列表 + finish=0)
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(AssignTasksInfoDO::getFinish, 0);
+ queryWrapper.eq(AssignTasksInfoDO::getTaskId, assignTasksDO.getId());
+ queryWrapper.eq(AssignTasksInfoDO::getIsOverdue, 0);
+ List taskInfoList = assiAssignTasksInfoMapper.selectList(queryWrapper);
+ if (CollectionUtils.isEmpty(taskInfoList)) {
+ log.info("未找到未完成的派单详情,无需处理");
+ return 0;
+ }
+
+ // 4. 筛选“已超时”的派单详情(截止时间 < 当前时间)
+ for (AssignTasksInfoDO taskInfo : taskInfoList) {
+ // 4.1 转换:将数据库的Date
+ LocalDateTime deadline = assignTasks.get(0).getDeadline();
+ // 4.2 比较:截止时间早于当前时间 → 超时
+ if (deadline.isBefore(now)) {
+ taskInfo.setIsOverdue(1); // 标记为超时
+ timeoutTaskInfos.add(taskInfo);
+ }
+ }
+ }
+
+ if (CollectionUtils.isEmpty(timeoutTaskInfos)) {
+ log.info("无超时的派单详情,无需更新");
+ return 0;
+ }
+
+ // 5. 优化:批量更新
+ updatedCount = assiAssignTasksInfoMapper.batchUpdateIsOverdue(timeoutTaskInfos);
+ log.info("派单超时处理完成,共筛选出{}条超时记录,成功更新{}条", timeoutTaskInfos.size(), updatedCount);
+
+ } catch (Exception e) {
+ log.error("处理超时派单时发生异常", e);
+ }
+ log.info("派单任务超时处理 end"+ LocalDateTime.now());
+ return updatedCount;
+ }
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoService.java
new file mode 100644
index 0000000..f2eeeec
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoService.java
@@ -0,0 +1,74 @@
+package com.zteits.urbanops.module.garden.service.assigntasksinfo;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 派单任务-单位关联表(记录单位接收派单后的执行详情) Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface AssignTasksInfoService {
+
+ /**
+ * 创建派单任务-单位关联表(记录单位接收派单后的执行详情)
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createAssignTasksInfo(@Valid AssignTasksInfoSaveReqVO createReqVO);
+
+ /**
+ * 更新派单任务-单位关联表(记录单位接收派单后的执行详情)
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateAssignTasksInfo(@Valid AssignTasksInfoSaveReqVO updateReqVO);
+
+ /**
+ * 删除派单任务-单位关联表(记录单位接收派单后的执行详情)
+ *
+ * @param id 编号
+ */
+ void deleteAssignTasksInfo(Long id);
+
+ /**
+ * 批量删除派单任务-单位关联表(记录单位接收派单后的执行详情)
+ *
+ * @param ids 编号
+ */
+ void deleteAssignTasksInfoListByIds(List ids);
+
+ /**
+ * 获得派单任务-单位关联表(记录单位接收派单后的执行详情)
+ *
+ * @param id 编号
+ * @return 派单任务-单位关联表(记录单位接收派单后的执行详情)
+ */
+ AssignTasksInfoDO getAssignTasksInfo(Long id);
+
+ /**
+ * 获得派单任务-单位关联表(记录单位接收派单后的执行详情)分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 派单任务-单位关联表(记录单位接收派单后的执行详情)分页
+ */
+ PageResult getAssignTasksInfoPage(AssignTasksInfoPageReqVO pageReqVO);
+
+ /**
+ * @Author wangqian
+ * @Description 同步保存单位派单详情
+ * @Date 2025/11/16 17:07
+ * @Param companyIds
+ * @param taskId
+ * @Return java.lang.Long
+ */
+ public void saveAssignTasksInfos(String[] companyIds, Long taskId);
+
+ public void updateAssignTasksInfos(String[] companyIds, Long taskId);
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
new file mode 100644
index 0000000..9bf2a0c
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/assigntasksinfo/AssignTasksInfoServiceImpl.java
@@ -0,0 +1,174 @@
+package com.zteits.urbanops.module.garden.service.assigntasksinfo;
+
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.assigntasksinfo.vo.AssignTasksInfoSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.assigntasksinfo.AssignTasksInfoDO;
+import com.zteits.urbanops.module.garden.dal.mysql.assigntasksinfo.AssignTasksInfoMapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+/**
+ * 派单任务-单位关联表(记录单位接收派单后的执行详情) Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+@Slf4j
+public class AssignTasksInfoServiceImpl implements AssignTasksInfoService {
+
+ @Resource
+ private AssignTasksInfoMapper assignTasksInfoMapper;
+
+ @Override
+ public Long createAssignTasksInfo(AssignTasksInfoSaveReqVO createReqVO) {
+ // 插入
+ AssignTasksInfoDO assignTasksInfo = BeanUtils.toBean(createReqVO, AssignTasksInfoDO.class);
+ assignTasksInfoMapper.insert(assignTasksInfo);
+
+ // 返回
+ return assignTasksInfo.getId();
+ }
+
+ @Override
+ public void updateAssignTasksInfo(AssignTasksInfoSaveReqVO updateReqVO) {
+ // 校验存在
+ validateAssignTasksInfoExists(updateReqVO.getId());
+ // 更新
+ AssignTasksInfoDO updateObj = BeanUtils.toBean(updateReqVO, AssignTasksInfoDO.class);
+ assignTasksInfoMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteAssignTasksInfo(Long id) {
+ // 校验存在
+ validateAssignTasksInfoExists(id);
+ // 删除
+ assignTasksInfoMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteAssignTasksInfoListByIds(List ids) {
+ // 删除
+ assignTasksInfoMapper.deleteByIds(ids);
+ }
+
+
+ private void validateAssignTasksInfoExists(Long id) {
+ if (assignTasksInfoMapper.selectById(id) == null) {
+ throw exception(ASSIGN_TASKS_INFO_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public AssignTasksInfoDO getAssignTasksInfo(Long id) {
+ return assignTasksInfoMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getAssignTasksInfoPage(AssignTasksInfoPageReqVO pageReqVO) {
+ return assignTasksInfoMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public void saveAssignTasksInfos(String[] companyIds, Long taskId) {
+ // 获得用户基本信息
+ String userId = String.valueOf(getLoginUserId());
+ if (companyIds != null && companyIds.length > 0) {
+ for (String companyId : companyIds) {
+ AssignTasksInfoSaveReqVO assignTaskInfo = new AssignTasksInfoSaveReqVO();
+ assignTaskInfo.setCompanyId(companyId);
+ //assignTaskInfo.setCompanyName(CompanyConstant.getCompanyName(Long.parseLong(companyId)));
+ assignTaskInfo.setTaskId(taskId);
+ assignTaskInfo.setUpdater(userId);
+ AssignTasksInfoDO assignTasksInfo = BeanUtils.toBean(assignTaskInfo, AssignTasksInfoDO.class);
+
+ assignTasksInfoMapper.insert(assignTasksInfo);
+ }
+ }
+ }
+
+ @Override
+ public void updateAssignTasksInfos(String[] companyIds, Long taskId) {
+ // 1. 日志与入参校验(提前拦截无效参数)
+ log.info("开始更新派单任务的公司关联信息 | 任务ID:{},目标公司ID列表:{}",
+ taskId, Arrays.toString(companyIds));
+
+ if (taskId == null) {
+ log.error("更新派单任务失败:任务ID不能为空");
+ throw exception(ASSIGN_TASKS_INFO_NOT_EXISTS_003); // 假设 PARAM_ERROR 是通用参数错误码,需替换为实际枚举
+ }
+
+ // 2. 获取当前登录用户(校验用户有效性)
+ Long loginUserId = getLoginUserId();
+
+ // 3. 预处理目标公司ID列表(避免重复转换,处理null场景)
+ List targetCompanyIdStrs = Optional.ofNullable(companyIds)
+ .map(Arrays::asList)
+ .orElse(Collections.emptyList())
+ .stream()
+ .filter(StringUtils::isNotBlank) // 过滤空字符串(避免无效数据)
+ .distinct() // 去重:避免重复添加同一公司
+ .collect(Collectors.toList());
+
+ // 4. 查询该任务下已关联的派单记录
+ List existingAssignTaskInfos = assignTasksInfoMapper
+ .selectList(AssignTasksInfoDO::getTaskId, taskId);
+ log.info("当前任务已关联的派单记录数:{}", existingAssignTaskInfos.size());
+
+ // 4.1 提取已关联的公司ID(String类型,用于后续判断)
+ List existingCompanyIdStrs = existingAssignTaskInfos.stream()
+ .map(info -> String.valueOf(info.getCompanyId())) // 统一转为String,避免类型不匹配
+ .collect(Collectors.toList());
+
+ // 5. 处理需要删除的派单记录(不在目标列表中且未读的记录)
+ List needDeleteIds = new ArrayList<>();
+ for (AssignTasksInfoDO existingTask : existingAssignTaskInfos) {
+ String existingCompanyIdStr = String.valueOf(existingTask.getCompanyId());
+ // 目标列表不包含当前公司ID → 需要删除
+ if (!targetCompanyIdStrs.contains(existingCompanyIdStr)) {
+ // 已读状态(finish=1)不允许删除
+ if (Objects.equals(existingTask.getFinish(), 1)) {
+ log.error("删除派单失败:任务已读不允许删除 | 派单ID:{},公司ID:{}",
+ existingTask.getId(), existingCompanyIdStr);
+ throw exception(ASSIGN_TASKS_INFO_NOT_EXISTS_002); // 建议修改异常码语义为“已读任务不允许删除”
+ }
+ needDeleteIds.add(existingTask.getId());
+ }
+ }
+
+ // 5.1 批量删除(减少数据库交互)
+ if (!needDeleteIds.isEmpty()) {
+ this.deleteAssignTasksInfoListByIds(needDeleteIds);
+ log.info("批量删除派单记录成功 | 删除ID列表:{}", needDeleteIds);
+ }
+
+ // 6. 处理需要新增的派单记录(目标列表中不存在于已关联列表的公司)
+ for (String targetCompanyId : targetCompanyIdStrs) {
+ if (!existingCompanyIdStrs.contains(targetCompanyId)) {
+ // 直接构建DO对象(跳过VO转换,减少开销)
+ AssignTasksInfoSaveReqVO assignTaskInfo = new AssignTasksInfoSaveReqVO();
+ assignTaskInfo.setCompanyId(targetCompanyId);
+ //assignTaskInfo.setCompanyName(CompanyConstant.getCompanyName(Long.parseLong(companyId)));
+ assignTaskInfo.setTaskId(taskId);
+ assignTaskInfo.setCreator(String.valueOf(loginUserId));
+ AssignTasksInfoDO assignTasksInfo = BeanUtils.toBean(assignTaskInfo, AssignTasksInfoDO.class);
+
+ assignTasksInfoMapper.insert(assignTasksInfo);
+
+ }
+ }
+ }
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostService.java
new file mode 100644
index 0000000..9adf9bd
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostService.java
@@ -0,0 +1,62 @@
+package com.zteits.urbanops.module.garden.service.departmentcost;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.departmentcost.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 部门费用录入 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface DepartmentCostService {
+
+ /**
+ * 创建部门费用录入
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createDepartmentCost(@Valid DepartmentCostSaveReqVO createReqVO);
+
+ /**
+ * 更新部门费用录入
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateDepartmentCost(@Valid DepartmentCostSaveReqVO updateReqVO);
+
+ /**
+ * 删除部门费用录入
+ *
+ * @param id 编号
+ */
+ void deleteDepartmentCost(Long id);
+
+ /**
+ * 批量删除部门费用录入
+ *
+ * @param ids 编号
+ */
+ void deleteDepartmentCostListByIds(List ids);
+
+ /**
+ * 获得部门费用录入
+ *
+ * @param id 编号
+ * @return 部门费用录入
+ */
+ DepartmentCostDO getDepartmentCost(Long id);
+
+ /**
+ * 获得部门费用录入分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 部门费用录入分页
+ */
+ PageResult getDepartmentCostPage(DepartmentCostPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostServiceImpl.java
new file mode 100644
index 0000000..212ae04
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/departmentcost/DepartmentCostServiceImpl.java
@@ -0,0 +1,107 @@
+package com.zteits.urbanops.module.garden.service.departmentcost;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.departmentcost.vo.DepartmentCostPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.departmentcost.vo.DepartmentCostSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
+import com.zteits.urbanops.module.garden.dal.mysql.departmentcost.DepartmentCostMapper;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+
+import java.util.List;
+
+/**
+ * 部门费用录入 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class DepartmentCostServiceImpl implements DepartmentCostService {
+
+ @Resource
+ private DepartmentCostMapper departmentCostMapper;
+
+ @Override
+ public Long createDepartmentCost(DepartmentCostSaveReqVO createReqVO) {
+ // 插入
+ DepartmentCostDO departmentCost = BeanUtils.toBean(createReqVO, DepartmentCostDO.class);
+
+ // add bt wq 20251119 插入增加校验
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(DepartmentCostDO::getSalaryMonth, departmentCost.getSalaryMonth());
+ queryWrapper.eq(DepartmentCostDO::getExpenseName, departmentCost.getExpenseName());
+ queryWrapper.eq(DepartmentCostDO::getCompanyId, departmentCost.getCompanyId());
+ List list = departmentCostMapper.selectList(queryWrapper);
+ if (!CollectionUtils.isEmpty(list)) {
+ throw exception(COST_FEE_NOT_EXISTS);
+ }
+ // add bt wq 20251119 插入增加校验
+
+ departmentCostMapper.insert(departmentCost);
+
+ // 返回
+ return departmentCost.getId();
+ }
+
+ @Override
+ public void updateDepartmentCost(DepartmentCostSaveReqVO updateReqVO) {
+ // 校验存在
+ validateDepartmentCostExists(updateReqVO.getId());
+ // 更新
+ DepartmentCostDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentCostDO.class);
+
+ // add bt wq 20251119 插入增加校验
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(DepartmentCostDO::getSalaryMonth, updateObj.getSalaryMonth());
+ queryWrapper.eq(DepartmentCostDO::getExpenseName, updateObj.getExpenseName());
+ queryWrapper.eq(DepartmentCostDO::getCompanyId, updateObj.getCompanyId());
+ List list = departmentCostMapper.selectList(queryWrapper);
+ if (!CollectionUtils.isEmpty(list)) {
+ throw exception(COST_FEE_NOT_EXISTS);
+ }
+ // add bt wq 20251119 插入增加校验
+ departmentCostMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteDepartmentCost(Long id) {
+ // 校验存在
+ validateDepartmentCostExists(id);
+ // 删除
+ departmentCostMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteDepartmentCostListByIds(List ids) {
+ // 删除
+ departmentCostMapper.deleteByIds(ids);
+ }
+
+
+ private void validateDepartmentCostExists(Long id) {
+ if (departmentCostMapper.selectById(id) == null) {
+ throw exception(DEPARTMENT_COST_NOT_EXISTS_01);
+ }
+ }
+
+ @Override
+ public DepartmentCostDO getDepartmentCost(Long id) {
+ return departmentCostMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getDepartmentCostPage(DepartmentCostPageReqVO pageReqVO) {
+ return departmentCostMapper.selectPage(pageReqVO);
+ }
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostService.java
new file mode 100644
index 0000000..852d15c
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostService.java
@@ -0,0 +1,62 @@
+package com.zteits.urbanops.module.garden.service.mechanicalcost;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.mechanicalcost.MechanicalCostDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 自有机械费用录入 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface MechanicalCostService {
+
+ /**
+ * 创建自有机械费用录入
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createMechanicalCost(@Valid MechanicalCostSaveReqVO createReqVO);
+
+ /**
+ * 更新自有机械费用录入
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateMechanicalCost(@Valid MechanicalCostSaveReqVO updateReqVO);
+
+ /**
+ * 删除自有机械费用录入
+ *
+ * @param id 编号
+ */
+ void deleteMechanicalCost(Long id);
+
+ /**
+ * 批量删除自有机械费用录入
+ *
+ * @param ids 编号
+ */
+ void deleteMechanicalCostListByIds(List ids);
+
+ /**
+ * 获得自有机械费用录入
+ *
+ * @param id 编号
+ * @return 自有机械费用录入
+ */
+ MechanicalCostDO getMechanicalCost(Long id);
+
+ /**
+ * 获得自有机械费用录入分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 自有机械费用录入分页
+ */
+ PageResult getMechanicalCostPage(MechanicalCostPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostServiceImpl.java
new file mode 100644
index 0000000..eb6d000
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicalcost/MechanicalCostServiceImpl.java
@@ -0,0 +1,117 @@
+package com.zteits.urbanops.module.garden.service.mechanicalcost;
+
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.mechanicalcost.vo.MechanicalCostSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.mechanicalcost.MechanicalCostDO;
+import com.zteits.urbanops.module.garden.dal.mysql.mechanicalcost.MechanicalCostMapper;
+import com.zteits.urbanops.module.garden.enums.CostFeeConstants;
+import com.zteits.urbanops.module.garden.service.mechanicaldepreciation.MechanicalDepreciationService;
+import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;
+import jakarta.annotation.Resource;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.MECHANICAL_COST_NOT_EXISTS;
+
+
+/**
+ * 自有机械费用录入 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class MechanicalCostServiceImpl implements MechanicalCostService {
+
+ @Resource
+ private MechanicalCostMapper mechanicalCostMapper;
+ @Resource
+ private TeamBizdomainRelService teamBizdomainRelService;
+ @Resource
+ private MechanicalDepreciationService mechanicalDepreciationService;
+
+ @Override
+ public Long createMechanicalCost(MechanicalCostSaveReqVO createReqVO) {
+ // 插入
+ MechanicalCostDO mechanicalCost = BeanUtils.toBean(createReqVO, MechanicalCostDO.class);
+ mechanicalCostMapper.insert(mechanicalCost);
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.saveTeamBizdomainRel(createReqVO.getTeamIds(), mechanicalCost.getId(), mechanicalCost.getCompanyId(), mechanicalCost.getCompanyName(), CostFeeConstants.COSTFEE_MECHANICAL);
+ //add by wq 保存班组信息关联表
+
+ // 返回
+ return mechanicalCost.getId();
+ }
+
+ @Override
+ public void updateMechanicalCost(MechanicalCostSaveReqVO updateReqVO) {
+ // 校验存在
+ validateMechanicalCostExists(updateReqVO.getId());
+ // 更新
+ MechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, MechanicalCostDO.class);
+ mechanicalCostMapper.updateById(updateObj);
+
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.deleteTeamBizdomainRel(updateObj.getId(), CostFeeConstants.COSTFEE_MECHANICAL);
+ teamBizdomainRelService.saveTeamBizdomainRel(updateReqVO.getTeamIds(), updateObj.getId(), updateObj.getCompanyId(), updateObj.getCompanyName(), CostFeeConstants.COSTFEE_MECHANICAL);
+ //add by wq 保存班组信息关联表
+ }
+
+ @Override
+ @Transactional
+ public void deleteMechanicalCost(Long id) {
+ // 校验存在
+ validateMechanicalCostExists(id);
+ // 删除
+ mechanicalCostMapper.deleteById(id);
+
+ //add by wq 删除班组信息关联表
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_MECHANICAL);
+ // //删除折旧
+ mechanicalDepreciationService.deleteMechanicalDepreciationByMechId(id);
+ //add by wq 删除班组信息关联表
+ }
+
+ @Override
+ public void deleteMechanicalCostListByIds(List ids) {
+ // 删除
+ mechanicalCostMapper.deleteByIds(ids);
+ //add by wq 删除班组信息关联表
+ if(CollectionUtils.isNotEmpty(ids)) {
+ for (Long id : ids) {
+ //批量删除
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_MECHANICAL);
+ //删除折旧
+ mechanicalDepreciationService.deleteMechanicalDepreciationByMechId(id);
+ }
+ }
+ //add by wq 删除班组信息关联表
+
+ }
+
+
+ private void validateMechanicalCostExists(Long id) {
+ if (mechanicalCostMapper.selectById(id) == null) {
+ throw exception(MECHANICAL_COST_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public MechanicalCostDO getMechanicalCost(Long id) {
+ return mechanicalCostMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getMechanicalCostPage(MechanicalCostPageReqVO pageReqVO) {
+ return mechanicalCostMapper.selectPage(pageReqVO);
+ }
+
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationService.java
new file mode 100644
index 0000000..b1be38d
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationService.java
@@ -0,0 +1,70 @@
+package com.zteits.urbanops.module.garden.service.mechanicaldepreciation;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.mechanicaldepreciation.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.mechanicaldepreciation.MechanicalDepreciationDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 自有机械折旧子 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface MechanicalDepreciationService {
+
+ /**
+ * 创建自有机械折旧子
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createMechanicalDepreciation(@Valid MechanicalDepreciationSaveReqVO createReqVO);
+
+ /**
+ * 更新自有机械折旧子
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateMechanicalDepreciation(@Valid MechanicalDepreciationSaveReqVO updateReqVO);
+
+ /**
+ * 删除自有机械折旧子
+ *
+ * @param id 编号
+ */
+ void deleteMechanicalDepreciation(Long id);
+
+ /**
+ * 批量删除自有机械折旧子
+ *
+ * @param ids 编号
+ */
+ void deleteMechanicalDepreciationListByIds(List ids);
+
+ /**
+ * 获得自有机械折旧子
+ *
+ * @param id 编号
+ * @return 自有机械折旧子
+ */
+ MechanicalDepreciationDO getMechanicalDepreciation(Long id);
+
+ /**
+ * 获得自有机械折旧子分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 自有机械折旧子分页
+ */
+ PageResult getMechanicalDepreciationPage(MechanicalDepreciationPageReqVO pageReqVO);
+
+
+ /**
+ * 删除自有机械折旧
+ *
+ * @param mechId 编号
+ */
+ void deleteMechanicalDepreciationByMechId(Long mechId);
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationServiceImpl.java
new file mode 100644
index 0000000..e3c11db
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/mechanicaldepreciation/MechanicalDepreciationServiceImpl.java
@@ -0,0 +1,99 @@
+package com.zteits.urbanops.module.garden.service.mechanicaldepreciation;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import com.zteits.urbanops.module.garden.controller.admin.mechanicaldepreciation.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.mechanicaldepreciation.MechanicalDepreciationDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+
+import com.zteits.urbanops.module.garden.dal.mysql.mechanicaldepreciation.MechanicalDepreciationMapper;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;
+import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+/**
+ * 自有机械折旧子 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class MechanicalDepreciationServiceImpl implements MechanicalDepreciationService {
+
+ @Resource
+ private MechanicalDepreciationMapper mechanicalDepreciationMapper;
+
+ @Override
+ public Long createMechanicalDepreciation(MechanicalDepreciationSaveReqVO createReqVO) {
+ // 插入
+ MechanicalDepreciationDO mechanicalDepreciation = BeanUtils.toBean(createReqVO, MechanicalDepreciationDO.class);
+ mechanicalDepreciationMapper.insert(mechanicalDepreciation);
+
+ // 返回
+ return mechanicalDepreciation.getId();
+ }
+
+ @Override
+ public void updateMechanicalDepreciation(MechanicalDepreciationSaveReqVO updateReqVO) {
+ // 校验存在
+ validateMechanicalDepreciationExists(updateReqVO.getId());
+ // 更新
+ MechanicalDepreciationDO updateObj = BeanUtils.toBean(updateReqVO, MechanicalDepreciationDO.class);
+ mechanicalDepreciationMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteMechanicalDepreciation(Long id) {
+ // 校验存在
+ validateMechanicalDepreciationExists(id);
+ // 删除
+ mechanicalDepreciationMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteMechanicalDepreciationListByIds(List ids) {
+ // 删除
+ mechanicalDepreciationMapper.deleteByIds(ids);
+ }
+
+
+ private void validateMechanicalDepreciationExists(Long id) {
+ if (mechanicalDepreciationMapper.selectById(id) == null) {
+ throw exception(MECHANICAL_DEPRECIATION_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public MechanicalDepreciationDO getMechanicalDepreciation(Long id) {
+ return mechanicalDepreciationMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getMechanicalDepreciationPage(MechanicalDepreciationPageReqVO pageReqVO) {
+ return mechanicalDepreciationMapper.selectPage(pageReqVO);
+ }
+
+ @Override
+ public void deleteMechanicalDepreciationByMechId(Long mechId) {
+ if (mechId == null) {
+ throw exception(MECHANICAL_DEPRECIATION_NOT_EXISTS_001);
+ }
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(MechanicalDepreciationDO::getMechId, String.valueOf(mechId));
+ mechanicalDepreciationMapper.delete(queryWrapper);
+ }
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostService.java
new file mode 100644
index 0000000..8e17110
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostService.java
@@ -0,0 +1,62 @@
+package com.zteits.urbanops.module.garden.service.personalcost;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 人员费用录入 - 个人费用 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface PersonalCostService {
+
+ /**
+ * 创建人员费用录入 - 个人费用
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createPersonalCost(@Valid PersonalCostSaveReqVO createReqVO);
+
+ /**
+ * 更新人员费用录入 - 个人费用
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updatePersonalCost(@Valid PersonalCostSaveReqVO updateReqVO);
+
+ /**
+ * 删除人员费用录入 - 个人费用
+ *
+ * @param id 编号
+ */
+ void deletePersonalCost(Long id);
+
+ /**
+ * 批量删除人员费用录入 - 个人费用
+ *
+ * @param ids 编号
+ */
+ void deletePersonalCostListByIds(List ids);
+
+ /**
+ * 获得人员费用录入 - 个人费用
+ *
+ * @param id 编号
+ * @return 人员费用录入 - 个人费用
+ */
+ PersonalCostDO getPersonalCost(Long id);
+
+ /**
+ * 获得人员费用录入 - 个人费用分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 人员费用录入 - 个人费用分页
+ */
+ PageResult getPersonalCostPage(PersonalCostPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostServiceImpl.java
new file mode 100644
index 0000000..284c283
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/personalcost/PersonalCostServiceImpl.java
@@ -0,0 +1,115 @@
+package com.zteits.urbanops.module.garden.service.personalcost;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.personalcost.vo.PersonalCostSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.departmentcost.DepartmentCostDO;
+import com.zteits.urbanops.module.garden.dal.dataobject.personalcost.PersonalCostDO;
+import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;
+import com.zteits.urbanops.module.garden.dal.mysql.personalcost.PersonalCostMapper;
+import com.zteits.urbanops.module.garden.dal.mysql.teambizdomainrel.TeamBizdomainRelMapper;
+import com.zteits.urbanops.module.garden.enums.CostFeeConstants;
+import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;
+import jakarta.annotation.Resource;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PERSONAL_COST_NOT_EXISTS;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.PERSONAL_COST_NOT_EXISTS_001;
+
+/**
+ * 人员费用录入 - 个人费用 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class PersonalCostServiceImpl implements PersonalCostService {
+
+ @Resource
+ private PersonalCostMapper personalCostMapper;
+ @Resource
+ TeamBizdomainRelService teamBizdomainRelService;
+
+ @Override
+ @Transactional
+ public Long createPersonalCost(PersonalCostSaveReqVO createReqVO) {
+ // 插入
+ PersonalCostDO personalCost = BeanUtils.toBean(createReqVO, PersonalCostDO.class);
+ personalCostMapper.insert(personalCost);
+
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.saveTeamBizdomainRel(createReqVO.getTeamIds(), personalCost.getId(), personalCost.getCompanyId(), personalCost.getCompanyName(), CostFeeConstants.COSTFEE_PERSONAL);
+ //add by wq 保存班组信息关联表
+
+ // 返回
+ return personalCost.getId();
+ }
+
+ @Override
+ @Transactional
+ public void updatePersonalCost(PersonalCostSaveReqVO updateReqVO) {
+ // 校验存在
+ validatePersonalCostExists(updateReqVO.getId());
+ // 更新
+ PersonalCostDO updateObj = BeanUtils.toBean(updateReqVO, PersonalCostDO.class);
+ personalCostMapper.updateById(updateObj);
+
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.deleteTeamBizdomainRel(updateObj.getId(), CostFeeConstants.COSTFEE_PERSONAL);
+ teamBizdomainRelService.saveTeamBizdomainRel(updateReqVO.getTeamIds(), updateObj.getId(), updateObj.getCompanyId(), updateObj.getCompanyName(), CostFeeConstants.COSTFEE_PERSONAL);
+
+ //add by wq 保存班组信息关联表
+ }
+
+ @Override
+ public void deletePersonalCost(Long id) {
+ // 校验存在
+ validatePersonalCostExists(id);
+ // 删除
+ personalCostMapper.deleteById(id);
+ // add by wq 删除
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_PERSONAL);
+ // add by wq 删除
+ }
+
+ @Override
+ public void deletePersonalCostListByIds(List ids) {
+ // 删除
+ personalCostMapper.deleteByIds(ids);
+ // add by wq 删除
+ if(ids.size() > 0) {
+ for (Long id : ids) {
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_PERSONAL);
+ }
+ }
+ // add by wq 删除
+ }
+
+
+ private void validatePersonalCostExists(Long id) {
+ if (personalCostMapper.selectById(id) == null) {
+ throw exception(PERSONAL_COST_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public PersonalCostDO getPersonalCost(Long id) {
+ return personalCostMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getPersonalCostPage(PersonalCostPageReqVO pageReqVO) {
+ return personalCostMapper.selectPage(pageReqVO);
+ }
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostService.java
new file mode 100644
index 0000000..09a8dc5
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostService.java
@@ -0,0 +1,62 @@
+package com.zteits.urbanops.module.garden.service.rentalmechanicalcost;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 租赁机械费用录入 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface RentalMechanicalCostService {
+
+ /**
+ * 创建租赁机械费用录入
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createRentalMechanicalCost(@Valid RentalMechanicalCostSaveReqVO createReqVO);
+
+ /**
+ * 更新租赁机械费用录入
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateRentalMechanicalCost(@Valid RentalMechanicalCostSaveReqVO updateReqVO);
+
+ /**
+ * 删除租赁机械费用录入
+ *
+ * @param id 编号
+ */
+ void deleteRentalMechanicalCost(Long id);
+
+ /**
+ * 批量删除租赁机械费用录入
+ *
+ * @param ids 编号
+ */
+ void deleteRentalMechanicalCostListByIds(List ids);
+
+ /**
+ * 获得租赁机械费用录入
+ *
+ * @param id 编号
+ * @return 租赁机械费用录入
+ */
+ RentalMechanicalCostDO getRentalMechanicalCost(Long id);
+
+ /**
+ * 获得租赁机械费用录入分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 租赁机械费用录入分页
+ */
+ PageResult getRentalMechanicalCostPage(RentalMechanicalCostPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostServiceImpl.java
new file mode 100644
index 0000000..d007d7e
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/rentalmechanicalcost/RentalMechanicalCostServiceImpl.java
@@ -0,0 +1,108 @@
+package com.zteits.urbanops.module.garden.service.rentalmechanicalcost;
+
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostPageReqVO;
+import com.zteits.urbanops.module.garden.controller.admin.rentalmechanicalcost.vo.RentalMechanicalCostSaveReqVO;
+import com.zteits.urbanops.module.garden.dal.dataobject.rentalmechanicalcost.RentalMechanicalCostDO;
+import com.zteits.urbanops.module.garden.dal.mysql.rentalmechanicalcost.RentalMechanicalCostMapper;
+import com.zteits.urbanops.module.garden.enums.CostFeeConstants;
+import com.zteits.urbanops.module.garden.service.teambizdomainrel.TeamBizdomainRelService;
+import jakarta.annotation.Resource;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+/**
+ * 租赁机械费用录入 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class RentalMechanicalCostServiceImpl implements RentalMechanicalCostService {
+
+ @Resource
+ private RentalMechanicalCostMapper rentalMechanicalCostMapper;
+
+ @Resource
+ private TeamBizdomainRelService teamBizdomainRelService;
+
+ @Override
+ public Long createRentalMechanicalCost(RentalMechanicalCostSaveReqVO createReqVO) {
+ // 插入
+ RentalMechanicalCostDO rentalMechanicalCost = BeanUtils.toBean(createReqVO, RentalMechanicalCostDO.class);
+ rentalMechanicalCostMapper.insert(rentalMechanicalCost);
+
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.saveTeamBizdomainRel(createReqVO.getTeamIds(), rentalMechanicalCost.getId(), rentalMechanicalCost.getCompanyId(), rentalMechanicalCost.getCompanyName(), CostFeeConstants.COSTFEE_RENTALMECHANICAL);
+ //add by wq 保存班组信息关联表
+ // 返回
+ return rentalMechanicalCost.getId();
+ }
+
+ @Override
+ public void updateRentalMechanicalCost(RentalMechanicalCostSaveReqVO updateReqVO) {
+ // 校验存在
+ validateRentalMechanicalCostExists(updateReqVO.getId());
+ // 更新
+ RentalMechanicalCostDO updateObj = BeanUtils.toBean(updateReqVO, RentalMechanicalCostDO.class);
+ rentalMechanicalCostMapper.updateById(updateObj);
+
+ //add by wq 保存班组信息关联表
+ teamBizdomainRelService.deleteTeamBizdomainRel(updateObj.getId(), CostFeeConstants.COSTFEE_RENTALMECHANICAL);
+ teamBizdomainRelService.saveTeamBizdomainRel(updateReqVO.getTeamIds(), updateObj.getId(), updateObj.getCompanyId(), updateObj.getCompanyName(), CostFeeConstants.COSTFEE_RENTALMECHANICAL);
+ //add by wq 保存班组信息关联表
+ }
+
+ @Override
+ public void deleteRentalMechanicalCost(Long id) {
+ // 校验存在
+ validateRentalMechanicalCostExists(id);
+ // 删除
+ rentalMechanicalCostMapper.deleteById(id);
+
+ //add by wq 删除班组信息关联表
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_RENTALMECHANICAL);
+ //add by wq 删除班组信息关联表
+ }
+
+ @Override
+ public void deleteRentalMechanicalCostListByIds(List ids) {
+ // 删除
+ rentalMechanicalCostMapper.deleteByIds(ids);
+
+ //add by wq 删除班组信息关联表
+ if(CollectionUtils.isNotEmpty(ids)) {
+ for (Long id : ids) {
+ //批量删除
+ teamBizdomainRelService.deleteTeamBizdomainRel(id, CostFeeConstants.COSTFEE_MECHANICAL);
+ }
+ }
+ //add by wq 删除班组信息关联表
+ }
+
+
+ private void validateRentalMechanicalCostExists(Long id) {
+ if (rentalMechanicalCostMapper.selectById(id) == null) {
+ throw exception(RENTAL_MECHANICAL_COST_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public RentalMechanicalCostDO getRentalMechanicalCost(Long id) {
+ return rentalMechanicalCostMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getRentalMechanicalCostPage(RentalMechanicalCostPageReqVO pageReqVO) {
+ return rentalMechanicalCostMapper.selectPage(pageReqVO);
+ }
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelService.java
new file mode 100644
index 0000000..7ac5537
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelService.java
@@ -0,0 +1,77 @@
+package com.zteits.urbanops.module.garden.service.teambizdomainrel;
+
+import java.util.*;
+import jakarta.validation.*;
+import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+
+/**
+ * 班组关联 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface TeamBizdomainRelService {
+
+ /**
+ * 创建班组关联
+ *
+ * @param createReqVO 创建信息
+ * @return 编号
+ */
+ Long createTeamBizdomainRel(@Valid TeamBizdomainRelSaveReqVO createReqVO);
+
+ /**
+ * 更新班组关联
+ *
+ * @param updateReqVO 更新信息
+ */
+ void updateTeamBizdomainRel(@Valid TeamBizdomainRelSaveReqVO updateReqVO);
+
+ /**
+ * 删除班组关联
+ *
+ * @param id 编号
+ */
+ void deleteTeamBizdomainRel(Long id);
+
+ /**
+ * 批量删除班组关联
+ *
+ * @param ids 编号
+ */
+ void deleteTeamBizdomainRelListByIds(List ids);
+
+ /**
+ * 获得班组关联
+ *
+ * @param id 编号
+ * @return 班组关联
+ */
+ TeamBizdomainRelDO getTeamBizdomainRel(Long id);
+
+ /**
+ * 获得班组关联分页
+ *
+ * @param pageReqVO 分页查询
+ * @return 班组关联分页
+ */
+ PageResult getTeamBizdomainRelPage(TeamBizdomainRelPageReqVO pageReqVO);
+
+ /**
+ * @Author wangqian
+ * @Description 获取费用关联信息
+ * @Date 2025/11/19 20:47
+ * @Param busiId
+ * @param busiType
+ * @Return java.util.List
+ */
+ public List getTeamBizdomainRelList(Long busiId, String busiType);
+
+ public void saveTeamBizdomainRel(List teamList, Long busiId, String companyId, String companyName ,String busiType) ;
+
+ public void deleteTeamBizdomainRel(Long id, String busiType);
+
+
+}
diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelServiceImpl.java
new file mode 100644
index 0000000..ee8d7d7
--- /dev/null
+++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/teambizdomainrel/TeamBizdomainRelServiceImpl.java
@@ -0,0 +1,128 @@
+package com.zteits.urbanops.module.garden.service.teambizdomainrel;
+
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zteits.urbanops.module.garden.enums.CostFeeConstants;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import com.zteits.urbanops.module.garden.controller.admin.teambizdomainrel.vo.*;
+import com.zteits.urbanops.module.garden.dal.dataobject.teambizdomainrel.TeamBizdomainRelDO;
+import com.zteits.urbanops.framework.common.pojo.PageResult;
+import com.zteits.urbanops.framework.common.pojo.PageParam;
+import com.zteits.urbanops.framework.common.util.object.BeanUtils;
+
+import com.zteits.urbanops.module.garden.dal.mysql.teambizdomainrel.TeamBizdomainRelMapper;
+
+import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.convertList;
+import static com.zteits.urbanops.framework.common.util.collection.CollectionUtils.diffList;
+import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*;
+
+/**
+ * 班组关联 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class TeamBizdomainRelServiceImpl implements TeamBizdomainRelService {
+
+ @Resource
+ private TeamBizdomainRelMapper teamBizdomainRelMapper;
+
+ @Override
+ public Long createTeamBizdomainRel(TeamBizdomainRelSaveReqVO createReqVO) {
+ // 插入
+ TeamBizdomainRelDO teamBizdomainRel = BeanUtils.toBean(createReqVO, TeamBizdomainRelDO.class);
+ teamBizdomainRelMapper.insert(teamBizdomainRel);
+
+ // 返回
+ return teamBizdomainRel.getId();
+ }
+
+ @Override
+ public void updateTeamBizdomainRel(TeamBizdomainRelSaveReqVO updateReqVO) {
+ // 校验存在
+ validateTeamBizdomainRelExists(updateReqVO.getId());
+ // 更新
+ TeamBizdomainRelDO updateObj = BeanUtils.toBean(updateReqVO, TeamBizdomainRelDO.class);
+ teamBizdomainRelMapper.updateById(updateObj);
+ }
+
+ @Override
+ public void deleteTeamBizdomainRel(Long id) {
+ // 校验存在
+ validateTeamBizdomainRelExists(id);
+ // 删除
+ teamBizdomainRelMapper.deleteById(id);
+ }
+
+ @Override
+ public void deleteTeamBizdomainRelListByIds(List ids) {
+ // 删除
+ teamBizdomainRelMapper.deleteByIds(ids);
+ }
+
+
+ private void validateTeamBizdomainRelExists(Long id) {
+ if (teamBizdomainRelMapper.selectById(id) == null) {
+ //throw exception(TEAM_BIZDOMAIN_REL_NOT_EXISTS);
+ }
+ }
+
+ @Override
+ public TeamBizdomainRelDO getTeamBizdomainRel(Long id) {
+ return teamBizdomainRelMapper.selectById(id);
+ }
+
+ @Override
+ public PageResult getTeamBizdomainRelPage(TeamBizdomainRelPageReqVO pageReqVO) {
+ return teamBizdomainRelMapper.selectPage(pageReqVO);
+ }
+
+ public List getTeamBizdomainRelList(Long busiId, String busiType) {
+ if (busiId == null && StringUtils.isEmpty(busiType)) {
+ throw exception(MECHANICAL_COST_NOT_EXISTS_001);
+ }
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(TeamBizdomainRelDO::getBusiId, busiId);
+ queryWrapper.eq(TeamBizdomainRelDO::getBusiType, busiType);
+ return teamBizdomainRelMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public void saveTeamBizdomainRel(List teamList, Long busiId, String companyId, String companyName ,String busiType) {
+ if (CollectionUtils.isNotEmpty(teamList)) {
+ for (TeamBizdomainRelDO team : teamList) {
+ if (team != null && StringUtils.isNotEmpty(team.getTeamId())) {
+ TeamBizdomainRelDO teamBizdomainRel = new TeamBizdomainRelDO();
+ teamBizdomainRel.setBusiId(String.valueOf(busiId));
+ teamBizdomainRel.setCompanyId(companyId);
+ teamBizdomainRel.setCompanyName(companyName);
+ teamBizdomainRel.setTeamName(team.getTeamName());
+ teamBizdomainRel.setTeamId(team.getTeamId());
+ teamBizdomainRel.setBusiType(busiType);
+ teamBizdomainRelMapper.insert(teamBizdomainRel);
+ }
+ }
+ }
+ }
+
+ @Override
+ public void deleteTeamBizdomainRel(Long id, String busiType ) {
+ if (id == null && StringUtils.isEmpty(busiType)) {
+ throw exception(MECHANICAL_COST_NOT_EXISTS_001);
+ }
+ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(TeamBizdomainRelDO::getBusiId, String.valueOf(id));
+ queryWrapper.eq(TeamBizdomainRelDO::getBusiType, busiType);
+ teamBizdomainRelMapper.delete(queryWrapper);
+ }
+}
diff --git a/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml b/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml
new file mode 100644
index 0000000..fb27f19
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/assigntasksinfo/AssignTasksInfoMapper.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ update td_assign_task_info set status= 1 where task_id in
+
+ #{item.id}
+
+
+
+
+
+ update td_assign_task_info
+ set is_overdue = 1,
+ update_time = now()
+ where id in
+
+ #{item.id}
+
+ and finish = 0
+
+
+
diff --git a/urbanops-module-garden/src/main/resources/mapper/departmentcost/DepartmentCostMapper.xml b/urbanops-module-garden/src/main/resources/mapper/departmentcost/DepartmentCostMapper.xml
new file mode 100644
index 0000000..9cab3b3
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/departmentcost/DepartmentCostMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml b/urbanops-module-garden/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml
new file mode 100644
index 0000000..3116180
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/resources/mapper/mechanicaldepreciation/MechanicalDepreciationMapper.xml b/urbanops-module-garden/src/main/resources/mapper/mechanicaldepreciation/MechanicalDepreciationMapper.xml
new file mode 100644
index 0000000..dd16e2a
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/mechanicaldepreciation/MechanicalDepreciationMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml b/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml
new file mode 100644
index 0000000..34ac586
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/personalcost/PersonalCostMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/resources/mapper/rentalmechanicalcost/RentalMechanicalCostMapper.xml b/urbanops-module-garden/src/main/resources/mapper/rentalmechanicalcost/RentalMechanicalCostMapper.xml
new file mode 100644
index 0000000..8cd4b10
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/rentalmechanicalcost/RentalMechanicalCostMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-garden/src/main/resources/mapper/teambizdomainrel/TeamBizdomainRelMapper.xml b/urbanops-module-garden/src/main/resources/mapper/teambizdomainrel/TeamBizdomainRelMapper.xml
new file mode 100644
index 0000000..caf230d
--- /dev/null
+++ b/urbanops-module-garden/src/main/resources/mapper/teambizdomainrel/TeamBizdomainRelMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/urbanops-module-gloabl/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml b/urbanops-module-gloabl/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml
new file mode 100644
index 0000000..3116180
--- /dev/null
+++ b/urbanops-module-gloabl/src/main/resources/mapper/mechanicalcost/MechanicalCostMapper.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
--
libgit2 0.21.4