新中大综合服务合同修改,建管大屏接口优化、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);
}
}
if (req.getLatitude() != null && req.getLongitude() != null) {
ys7Device.setLatitude(req.getLatitude());
ys7Device.setLongitude(req.getLongitude());
}
return toAjax(othYs7DeviceService.updateById(ys7Device));
}

View File

@ -5,6 +5,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lilemy
@ -37,4 +38,13 @@ public class Ys7DeviceUpdateReq implements Serializable {
*/
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("userId", item.getUserId());
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("lat", item.getLocLatitude());
gps.put("lng", item.getLocLongitude());

View File

@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.gps.domain.vo.GpsStatusVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -56,6 +57,16 @@ public class GpsEquipmentSonController extends BaseController {
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设备定位信息列表(大屏获取人员最后一次位置)
*/

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.Select;
import org.dromara.gps.domain.GpsEquipmentSon;
import org.dromara.gps.domain.bo.GpsEquipmentSonBo;
import org.dromara.gps.domain.vo.GpsEquipmentSonVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.gps.domain.vo.GpsStatusVo;
import java.time.LocalDateTime;
import java.util.List;
@ -28,9 +30,10 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
"AND create_time BETWEEN #{startTime} AND #{endTime}\n" +
")\n" +
"SELECT\n" +
" *\n" +
" r.*,su.nick_name as userName\n" +
"FROM\n" +
" RankedData\n" +
" RankedData r\n" +
"LEFT JOIN sys_user su ON r.user_id=su.user_id\n" +
"WHERE\n" +
" rn = 1;")
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" +
" rn = 1;")
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 com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.gps.domain.vo.GpsStatusVo;
import java.time.LocalDateTime;
import java.util.Collection;
@ -78,4 +79,6 @@ public interface IGpsEquipmentSonService extends IService<GpsEquipmentSon>{
List<GpsEquipmentSonVo> getLargerScreenList(GpsEquipmentSonBo bo);
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;
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.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.contractor.domain.SubConstructionUser;
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.SysUserVo;
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.getUserId() != null, GpsEquipmentSon::getUserId, bo.getUserId());
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;
}
@ -194,4 +197,18 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl<GpsEquipmentSonMappe
public List<GpsEquipmentSonVo> getUserListByProjectId(Long projectId, LocalDateTime startOfDay, LocalDateTime 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 com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
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 com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
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 io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
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.SysOssServiceImpl;
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.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
@ -56,7 +58,7 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
private IXzdCsContractSuspendZfkxService contractSuspendZfkxService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
@ -195,10 +197,10 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId());
for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractInformationId(add.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -231,9 +233,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, old.getId());
contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
@ -264,10 +266,10 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId());
for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractInformationId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
@ -324,9 +326,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdCsContractSuspendZfkx::getContractInformationId, ids);
contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
@ -393,9 +395,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
vo.setHttk(list1);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, vo.getId());
List<XzdCsContractSuspendZfkx> list2 = contractSuspendZfkxService.list(lambdaQueryWrapper3);
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.service.impl.SysDeptServiceImpl;
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.service.IXzdCsContractSuspendZfkxService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
@ -58,7 +60,7 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
private IXzdCsContractSuspendZfkxService contractSuspendZfkxService;
@Autowired
private SysOssServiceImpl sysOssService;
@ -109,9 +111,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
vo.setHttk(list1);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, vo.getId());
List<XzdCsContractSuspendZfkx> list2 = contractSuspendZfkxService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
//合同变更清单
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("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId());
for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractInformationId(add.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -328,9 +330,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdCsContractSuspendZfkx::getContractInformationId, old.getId());
contractSuspendZfkxService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
@ -361,10 +363,10 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId());
for (XzdCsContractSuspendZfkx clause : bo.getZftk()) {
clause.setContractInformationId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
contractSuspendZfkxService.saveBatch(bo.getZftk());
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
@ -420,9 +422,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
LambdaQueryWrapper<XzdCsContractSuspendZfkx> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdCsContractSuspendZfkx::getContractInformationId, ids);
contractSuspendZfkxService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
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 = "年度")
private Long year;
private String yearStr;
/**
* 币种

View File

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