新中大综合服务合同修改,建管大屏接口优化、gps接口优化

This commit is contained in:
2025-10-21 18:35:07 +08:00
parent a5f661b558
commit bac8488244
23 changed files with 610 additions and 39 deletions

View File

@ -271,6 +271,10 @@ public class ProjectBigScreenController extends BaseController {
throw new ServiceException("更新云端萤石摄像头名称异常", HttpStatus.ERROR); throw new ServiceException("更新云端萤石摄像头名称异常", HttpStatus.ERROR);
} }
} }
if (req.getLatitude() != null && req.getLongitude() != null) {
ys7Device.setLatitude(req.getLatitude());
ys7Device.setLongitude(req.getLongitude());
}
return toAjax(othYs7DeviceService.updateById(ys7Device)); return toAjax(othYs7DeviceService.updateById(ys7Device));
} }

View File

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* @author lilemy * @author lilemy
@ -37,4 +38,13 @@ public class Ys7DeviceUpdateReq implements Serializable {
*/ */
private String remark; private String remark;
/**
* 纬度精确到6位小数
*/
private BigDecimal latitude;
/**
* 经度精确到6位小数
*/
private BigDecimal longitude;
} }

View File

@ -505,7 +505,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
gps.put("id", item.getClientId()); gps.put("id", item.getClientId());
gps.put("userId", item.getUserId()); gps.put("userId", item.getUserId());
gps.put("label", item.getClientId()); gps.put("label", item.getClientId());
gps.put("name", item.getDeviceName()); gps.put("name", item.getUserId() != null ? item.getUserName() : item.getClientId());
gps.put("type", "gps"); gps.put("type", "gps");
gps.put("lat", item.getLocLatitude()); gps.put("lat", item.getLocLatitude());
gps.put("lng", item.getLocLongitude()); gps.put("lng", item.getLocLongitude());

View File

@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.gps.domain.vo.GpsStatusVo;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -56,6 +57,16 @@ public class GpsEquipmentSonController extends BaseController {
return R.ok(gpsEquipmentSonService.queryList(bo)); return R.ok(gpsEquipmentSonService.queryList(bo));
} }
/**
* 查询GPS设备定位日期信息列表
*/
@SaCheckPermission("gps:equipmentSon:getRlList")
@GetMapping("/getRlList")
public R<List<GpsStatusVo>> getRlList(GpsEquipmentSonBo bo) {
return R.ok(gpsEquipmentSonService.getRlList(bo));
}
/** /**
* 查询GPS设备定位信息列表(大屏获取人员最后一次位置) * 查询GPS设备定位信息列表(大屏获取人员最后一次位置)
*/ */

View File

@ -0,0 +1,12 @@
package org.dromara.gps.domain.vo;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
@Data
public class GpsStatusVo implements Serializable {
private LocalDate riqi;
private Long count;
}

View File

@ -3,8 +3,10 @@ package org.dromara.gps.mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.dromara.gps.domain.GpsEquipmentSon; import org.dromara.gps.domain.GpsEquipmentSon;
import org.dromara.gps.domain.bo.GpsEquipmentSonBo;
import org.dromara.gps.domain.vo.GpsEquipmentSonVo; import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.gps.domain.vo.GpsStatusVo;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -28,9 +30,10 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
"AND create_time BETWEEN #{startTime} AND #{endTime}\n" + "AND create_time BETWEEN #{startTime} AND #{endTime}\n" +
")\n" + ")\n" +
"SELECT\n" + "SELECT\n" +
" *\n" + " r.*,su.nick_name as userName\n" +
"FROM\n" + "FROM\n" +
" RankedData\n" + " RankedData r\n" +
"LEFT JOIN sys_user su ON r.user_id=su.user_id\n" +
"WHERE\n" + "WHERE\n" +
" rn = 1;") " rn = 1;")
List<GpsEquipmentSonVo> getClientList(@Param("projectId") Long projectId, @Param("startTime") LocalDateTime startOfDay, @Param("endTime") LocalDateTime now); List<GpsEquipmentSonVo> getClientList(@Param("projectId") Long projectId, @Param("startTime") LocalDateTime startOfDay, @Param("endTime") LocalDateTime now);
@ -77,4 +80,32 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
"WHERE\n" + "WHERE\n" +
" rn = 1;") " rn = 1;")
List<GpsEquipmentSonVo> getUserListByProjectId(@Param("projectId") Long projectId, @Param("startTime") LocalDateTime startOfDay, @Param("endTime") LocalDateTime now); List<GpsEquipmentSonVo> getUserListByProjectId(@Param("projectId") Long projectId, @Param("startTime") LocalDateTime startOfDay, @Param("endTime") LocalDateTime now);
@Select("WITH RECURSIVE date_range AS (\n" +
" -- 1. 初始化开始日期取startTime的“年月日”部分忽略时分秒\n" +
" SELECT DATE(#{bo.startTime}) AS stat_date\n" +
" UNION ALL\n" +
" -- 2. 递归生成后续日期直到不超过endTime的“年月日”\n" +
" SELECT DATE_ADD(stat_date, INTERVAL 1 DAY)\n" +
" FROM date_range\n" +
" WHERE stat_date < DATE(#{bo.endTime})\n" +
")\n" +
"\n" +
"SELECT \n" +
" dr.stat_date AS riqi, -- 统计日期格式YYYY-MM-DD\n" +
" COUNT(ges.id) AS count -- 当天符合条件的记录数\n" +
"FROM date_range dr\n" +
"LEFT JOIN (\n" +
" SELECT \n" +
" DATE(create_time) AS data_date, -- 提取创建时间的“年月日”\n" +
" id -- 仅需主键用于计数(减少数据传输)\n" +
" FROM gps_equipment_son\n" +
" WHERE \n" +
" project_id = #{bo.projectId} -- 匹配项目ID\n" +
" AND client_id =#{bo.clientId} -- 客户端ID为空\n" +
" AND create_time BETWEEN #{bo.startTime} AND #{bo.endTime} -- 时间范围\n" +
") ges ON dr.stat_date = ges.data_date -- 按日期关联\n" +
"GROUP BY dr.stat_date -- 按统计日期分组\n" +
"ORDER BY dr.stat_date; -- 按日期升序排列")
List<GpsStatusVo> getRlList(@Param("bo") GpsEquipmentSonBo bo);
} }

View File

@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.gps.domain.vo.GpsStatusVo;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
@ -78,4 +79,6 @@ public interface IGpsEquipmentSonService extends IService<GpsEquipmentSon>{
List<GpsEquipmentSonVo> getLargerScreenList(GpsEquipmentSonBo bo); List<GpsEquipmentSonVo> getLargerScreenList(GpsEquipmentSonBo bo);
List<GpsEquipmentSonVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now); List<GpsEquipmentSonVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now);
List<GpsStatusVo> getRlList(GpsEquipmentSonBo bo);
} }

View File

@ -1,6 +1,7 @@
package org.dromara.gps.service.impl; package org.dromara.gps.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.contractor.domain.SubConstructionUser; import org.dromara.contractor.domain.SubConstructionUser;
import org.dromara.contractor.service.ISubConstructionUserService; import org.dromara.contractor.service.ISubConstructionUserService;
import org.dromara.gps.domain.vo.GpsStatusVo;
import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysDictDataService; import org.dromara.system.service.ISysDictDataService;
@ -100,6 +102,7 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl<GpsEquipmentSonMappe
lqw.eq(bo.getProjectId() != null, GpsEquipmentSon::getProjectId, bo.getProjectId()); lqw.eq(bo.getProjectId() != null, GpsEquipmentSon::getProjectId, bo.getProjectId());
lqw.eq(bo.getUserId() != null, GpsEquipmentSon::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, GpsEquipmentSon::getUserId, bo.getUserId());
lqw.eq(StringUtils.isNotBlank(bo.getClientId()), GpsEquipmentSon::getClientId, bo.getClientId()); lqw.eq(StringUtils.isNotBlank(bo.getClientId()), GpsEquipmentSon::getClientId, bo.getClientId());
lqw.between(bo.getStartTime() != null && bo.getEndTime() != null, GpsEquipmentSon::getCreateTime, bo.getStartTime(), bo.getEndTime());
return lqw; return lqw;
} }
@ -194,4 +197,18 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl<GpsEquipmentSonMappe
public List<GpsEquipmentSonVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) { public List<GpsEquipmentSonVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime now) {
return baseMapper.getUserListByProjectId(projectId,startOfDay,now); return baseMapper.getUserListByProjectId(projectId,startOfDay,now);
} }
@Override
public List<GpsStatusVo> getRlList(GpsEquipmentSonBo bo) {
if (bo.getProjectId() == null) {
throw new ServiceException("项目id不能为空");
}
if (bo.getClientId() == null) {
throw new ServiceException("设备id不能为空");
}
if (bo.getStartTime() == null || bo.getEndTime() == null) {
throw new ServiceException("开始时间和结算时间不能为空!!!");
}
return baseMapper.getRlList(bo);
}
} }

View File

@ -0,0 +1,76 @@
package org.dromara.xzd.comprehensive.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
/**
* 综合服务合同-支付款项对象 xzd_cs_contract_suspend_zfkx
*
* @author Lion Li
* @date 2025-10-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cs_contract_suspend_zfkx")
public class XzdCsContractSuspendZfkx extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 采购合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 名称(*必填)
*/
private String name;
private String changeName;
/**
* 款项属性(*必填,如“预付款”“进度款”)
*/
private String paymentAttribute;
private String changePaymentAttribute;
/**
* 预付百分比如“100.00”表示100%
*/
private BigDecimal advancePercentage;
private BigDecimal changeAdvancePercentage;
/**
* 合同预付款金额
*/
private BigDecimal contractAdvanceAmount;
private BigDecimal changeContractAdvanceAmount;
/**
* 备注
*/
private String remark;
/**
* 支付计算基数(*必填)
*/
private BigDecimal paymentCalcBase;
/**
* 付款性质(*必填,如“全款”“分期”)
*/
private String paymentNature;
}

View File

@ -15,6 +15,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems; import org.dromara.xzd.domain.XzdDeductionItems;
@ -224,7 +225,7 @@ public class XzdCsContractChangeBo extends BaseEntity {
/** /**
* 支付条款 * 支付条款
*/ */
private List<XzdSettlementRules> zftk; private List<XzdCsContractSuspendZfkx> zftk;
/** /**
* 合同变更清单 * 合同变更清单

View File

@ -15,6 +15,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems; import org.dromara.xzd.domain.XzdDeductionItems;
@ -267,7 +268,7 @@ public class XzdCsContractInformationBo extends BaseEntity {
/** /**
* 支付条款 * 支付条款
*/ */
private List<XzdSettlementRules> zftk; private List<XzdCsContractSuspendZfkx> zftk;
/** /**
* 合同变更清单 * 合同变更清单

View File

@ -0,0 +1,78 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
/**
* 综合服务合同-支付款项业务对象 xzd_cs_contract_suspend_zfkx
*
* @author Lion Li
* @date 2025-10-21
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCsContractSuspendZfkx.class, reverseConvertGenerate = false)
public class XzdCsContractSuspendZfkxBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 采购合同信息ID合同编码
*/
@NotNull(message = "采购合同信息ID合同编码不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractInformationId;
/**
* 名称(*必填)
*/
private String name;
private String changeName;
/**
* 款项属性(*必填,如“预付款”“进度款”)
*/
private String paymentAttribute;
private String changePaymentAttribute;
/**
* 预付百分比如“100.00”表示100%
*/
private BigDecimal advancePercentage;
private BigDecimal changeAdvancePercentage;
/**
* 合同预付款金额
*/
private BigDecimal contractAdvanceAmount;
private BigDecimal changeContractAdvanceAmount;
/**
* 备注
*/
private String remark;
/**
* 支付计算基数(*必填)
*/
@NotNull(message = "支付计算基数(*必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal paymentCalcBase;
/**
* 付款性质(*必填,如“全款”“分期”)
*/
@NotBlank(message = "付款性质(*必填,如“全款”“分期”)不能为空", groups = { AddGroup.class, EditGroup.class })
private String paymentNature;
}

View File

@ -11,6 +11,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems; import org.dromara.xzd.domain.XzdDeductionItems;
@ -273,7 +274,7 @@ public class XzdCsContractChangeVo implements Serializable {
/** /**
* 支付条款 * 支付条款
*/ */
private List<XzdSettlementRules> zftk; private List<XzdCsContractSuspendZfkx> zftk;
/** /**
* 合同变更清单 * 合同变更清单

View File

@ -11,6 +11,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems; import org.dromara.xzd.domain.XzdDeductionItems;
@ -322,7 +323,7 @@ public class XzdCsContractInformationVo implements Serializable {
/** /**
* 支付条款 * 支付条款
*/ */
private List<XzdSettlementRules> zftk; private List<XzdCsContractSuspendZfkx> zftk;
/** /**
* 合同变更清单 * 合同变更清单

View File

@ -0,0 +1,90 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 综合服务合同-支付款项视图对象 xzd_cs_contract_suspend_zfkx
*
* @author Lion Li
* @date 2025-10-21
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCsContractSuspendZfkx.class)
public class XzdCsContractSuspendZfkxVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 采购合同信息ID合同编码
*/
@ExcelProperty(value = "采购合同信息ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "合=同编码")
private Long contractInformationId;
/**
* 名称(*必填)
*/
private String name;
private String changeName;
/**
* 款项属性(*必填,如“预付款”“进度款”)
*/
private String paymentAttribute;
private String changePaymentAttribute;
/**
* 预付百分比如“100.00”表示100%
*/
private BigDecimal advancePercentage;
private BigDecimal changeAdvancePercentage;
/**
* 合同预付款金额
*/
private BigDecimal contractAdvanceAmount;
private BigDecimal changeContractAdvanceAmount;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 支付计算基数(*必填)
*/
@ExcelProperty(value = "支付计算基数", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "*=必填")
private BigDecimal paymentCalcBase;
/**
* 付款性质(*必填,如“全款”“分期”)
*/
@ExcelProperty(value = "付款性质", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "*=必填,如“全款”“分期”")
private String paymentNature;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendZfkxVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 综合服务合同-支付款项Mapper接口
*
* @author Lion Li
* @date 2025-10-21
*/
public interface XzdCsContractSuspendZfkxMapper extends BaseMapperPlus<XzdCsContractSuspendZfkx, XzdCsContractSuspendZfkxVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendZfkxVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractSuspendZfkxBo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 综合服务合同-支付款项Service接口
*
* @author Lion Li
* @date 2025-10-21
*/
public interface IXzdCsContractSuspendZfkxService extends IService<XzdCsContractSuspendZfkx>{
/**
* 查询综合服务合同-支付款项
*
* @param id 主键
* @return 综合服务合同-支付款项
*/
XzdCsContractSuspendZfkxVo queryById(Long id);
/**
* 分页查询综合服务合同-支付款项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同-支付款项分页列表
*/
TableDataInfo<XzdCsContractSuspendZfkxVo> queryPageList(XzdCsContractSuspendZfkxBo bo, PageQuery pageQuery);
/**
* 查询符合条件的综合服务合同-支付款项列表
*
* @param bo 查询条件
* @return 综合服务合同-支付款项列表
*/
List<XzdCsContractSuspendZfkxVo> queryList(XzdCsContractSuspendZfkxBo bo);
/**
* 新增综合服务合同-支付款项
*
* @param bo 综合服务合同-支付款项
* @return 是否新增成功
*/
Boolean insertByBo(XzdCsContractSuspendZfkxBo bo);
/**
* 修改综合服务合同-支付款项
*
* @param bo 综合服务合同-支付款项
* @return 是否修改成功
*/
Boolean updateByBo(XzdCsContractSuspendZfkxBo bo);
/**
* 校验并批量删除综合服务合同-支付款项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -16,8 +16,10 @@ import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysDeptServiceImpl; import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation; import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo; import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService; import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems; import org.dromara.xzd.domain.XzdDeductionItems;
@ -56,7 +58,7 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
@Autowired @Autowired
private XzdContractClauseServiceImpl xzdContractClauseService; private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired @Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService; private IXzdCsContractSuspendZfkxService contractSuspendZfkxService;
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
@Autowired @Autowired
@ -195,10 +197,10 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
throw new ServiceException("支付条款不能为空"); throw new ServiceException("支付条款不能为空");
} }
//支付条款 //支付条款
for (XzdSettlementRules clause : bo.getZftk()) { for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId()); clause.setContractInformationId(add.getId());
} }
xzdSettlementRulesService.saveBatch(bo.getZftk()); contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单 //合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -231,9 +233,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId()); lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3); contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项 //合同条款-扣款与奖励项
@ -264,10 +266,10 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
throw new ServiceException("支付条款不能为空"); throw new ServiceException("支付条款不能为空");
} }
//支付条款 //支付条款
for (XzdSettlementRules clause : bo.getZftk()) { for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId()); clause.setContractInformationId(update.getId());
} }
xzdSettlementRulesService.saveBatch(bo.getZftk()); contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单 //合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId())); xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
@ -324,9 +326,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
xzdContractClauseService.remove(lambdaQueryWrapper2); xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids); lambdaQueryWrapper3.in(XzdCsContractSuspendZfkx::getContractInformationId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3); contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同变更清单 //合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids)); xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
@ -393,9 +395,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
vo.setHttk(list1); vo.setHttk(list1);
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId()); lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3); List<XzdCsContractSuspendZfkx> list2 = contractSuspendZfkxService.list(lambdaQueryWrapper3);
vo.setZftk(list2); vo.setZftk(list2);
//合同变更清单 //合同变更清单

View File

@ -17,7 +17,9 @@ import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl; import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService; import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractAdvanceInfo; import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause; import org.dromara.xzd.domain.XzdContractClause;
@ -58,7 +60,7 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
@Autowired @Autowired
private XzdContractClauseServiceImpl xzdContractClauseService; private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired @Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService; private IXzdCsContractSuspendZfkxService contractSuspendZfkxService;
@Autowired @Autowired
private SysOssServiceImpl sysOssService; private SysOssServiceImpl sysOssService;
@ -109,9 +111,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
vo.setHttk(list1); vo.setHttk(list1);
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId()); lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3); List<XzdCsContractSuspendZfkx> list2 = contractSuspendZfkxService.list(lambdaQueryWrapper3);
vo.setZftk(list2); vo.setZftk(list2);
//合同变更清单 //合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId())); List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId()));
@ -292,10 +294,10 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
throw new ServiceException("支付条款不能为空"); throw new ServiceException("支付条款不能为空");
} }
//支付条款 //支付条款
for (XzdSettlementRules clause : bo.getZftk()) { for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId()); clause.setContractInformationId(add.getId());
} }
xzdSettlementRulesService.saveBatch(bo.getZftk()); contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单 //合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -328,9 +330,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId()); lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3); contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项 //合同条款-扣款与奖励项
@ -361,10 +363,10 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
throw new ServiceException("支付条款不能为空"); throw new ServiceException("支付条款不能为空");
} }
//支付条款 //支付条款
for (XzdSettlementRules clause : bo.getZftk()) { for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId()); clause.setContractInformationId(update.getId());
} }
xzdSettlementRulesService.saveBatch(bo.getZftk()); contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单 //合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId())); xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -420,9 +422,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
xzdContractClauseService.remove(lambdaQueryWrapper2); xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款 //支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids); lambdaQueryWrapper3.in(XzdCsContractSuspendZfkx::getContractInformationId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3); contractSuspendZfkxService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids)); xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }

View File

@ -0,0 +1,137 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.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 lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractSuspendZfkxBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendZfkxVo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.mapper.XzdCsContractSuspendZfkxMapper;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 综合服务合同-支付款项Service业务层处理
*
* @author Lion Li
* @date 2025-10-21
*/
@RequiredArgsConstructor
@Service
public class XzdCsContractSuspendZfkxServiceImpl extends ServiceImpl<XzdCsContractSuspendZfkxMapper, XzdCsContractSuspendZfkx> implements IXzdCsContractSuspendZfkxService {
private final XzdCsContractSuspendZfkxMapper baseMapper;
/**
* 查询综合服务合同-支付款项
*
* @param id 主键
* @return 综合服务合同-支付款项
*/
@Override
public XzdCsContractSuspendZfkxVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询综合服务合同-支付款项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同-支付款项分页列表
*/
@Override
public TableDataInfo<XzdCsContractSuspendZfkxVo> queryPageList(XzdCsContractSuspendZfkxBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lqw = buildQueryWrapper(bo);
Page<XzdCsContractSuspendZfkxVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的综合服务合同-支付款项列表
*
* @param bo 查询条件
* @return 综合服务合同-支付款项列表
*/
@Override
public List<XzdCsContractSuspendZfkxVo> queryList(XzdCsContractSuspendZfkxBo bo) {
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCsContractSuspendZfkx> buildQueryWrapper(XzdCsContractSuspendZfkxBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCsContractSuspendZfkx::getId);
lqw.eq(bo.getContractInformationId() != null, XzdCsContractSuspendZfkx::getContractInformationId, bo.getContractInformationId());
lqw.like(StringUtils.isNotBlank(bo.getName()), XzdCsContractSuspendZfkx::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentAttribute()), XzdCsContractSuspendZfkx::getPaymentAttribute, bo.getPaymentAttribute());
lqw.eq(bo.getAdvancePercentage() != null, XzdCsContractSuspendZfkx::getAdvancePercentage, bo.getAdvancePercentage());
lqw.eq(bo.getContractAdvanceAmount() != null, XzdCsContractSuspendZfkx::getContractAdvanceAmount, bo.getContractAdvanceAmount());
lqw.eq(bo.getPaymentCalcBase() != null, XzdCsContractSuspendZfkx::getPaymentCalcBase, bo.getPaymentCalcBase());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentNature()), XzdCsContractSuspendZfkx::getPaymentNature, bo.getPaymentNature());
return lqw;
}
/**
* 新增综合服务合同-支付款项
*
* @param bo 综合服务合同-支付款项
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCsContractSuspendZfkxBo bo) {
XzdCsContractSuspendZfkx add = MapstructUtils.convert(bo, XzdCsContractSuspendZfkx.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改综合服务合同-支付款项
*
* @param bo 综合服务合同-支付款项
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCsContractSuspendZfkxBo bo) {
XzdCsContractSuspendZfkx update = MapstructUtils.convert(bo, XzdCsContractSuspendZfkx.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCsContractSuspendZfkx entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除综合服务合同-支付款项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -102,6 +102,7 @@ public class XzdCbysJdcbfjVo implements Serializable {
*/ */
@ExcelProperty(value = "年度") @ExcelProperty(value = "年度")
private Long year; private Long year;
private String yearStr;
/** /**
* 币种 * 币种

View File

@ -59,6 +59,7 @@ public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, X
@Override @Override
public XzdCbysJdcbfjVo queryById(Long id){ public XzdCbysJdcbfjVo queryById(Long id){
XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id); XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id);
vo.setYearStr(String.valueOf(vo.getYear()));
getName(vo); getName(vo);
getHttk(vo); getHttk(vo);
return vo; return vo;

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.comprehensive.mapper.XzdCsContractSuspendZfkxMapper">
</mapper>