Compare commits
48 Commits
8cfc34dbcb
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| b997dd5f00 | |||
| 6174743858 | |||
| 82d55d7188 | |||
| aec5eacd0b | |||
| a320b85965 | |||
| b61a7c153d | |||
| fb9b01cf34 | |||
| 32f134873a | |||
| f4220be9d6 | |||
| 8252fd7216 | |||
| 57855f4307 | |||
| 6784eafe6e | |||
| 0b42c1d6a6 | |||
| 4b37a7327f | |||
| 0287f1e4ce | |||
| 5d8af1cab8 | |||
| 123896f08b | |||
| a8a198b51f | |||
| f00b98714a | |||
| 4ff87f3996 | |||
| 5f3ae0f9f1 | |||
| 786c864a27 | |||
| c61e802b85 | |||
| 9a568799f4 | |||
| 8aa38063bf | |||
| c4a11ec245 | |||
| 169b76589c | |||
| 199f51ea21 | |||
| 23572dfc07 | |||
| 570b0ce316 | |||
| f953a96c36 | |||
| 25c4eee464 | |||
| b209ef1fab | |||
| 77e9f4d9a2 | |||
| e73c808bc3 | |||
| edf0d1a5db | |||
| cc23a308c1 | |||
| bc891327c9 | |||
| 39bedfeb92 | |||
| 56fc4ff83e | |||
| 524ed30728 | |||
| 584304e744 | |||
| 56418600c5 | |||
| 40e57b18cb | |||
| ced6cb219c | |||
| 218ec5ea95 | |||
| 1c601bd68e | |||
| 7d6eba719b |
@ -321,8 +321,8 @@ ys7:
|
|||||||
app-key: xxx
|
app-key: xxx
|
||||||
app-secret: xxx
|
app-secret: xxx
|
||||||
job:
|
job:
|
||||||
capture-enabled: true # 控制是否启用萤石抓拍任务
|
capture-enabled: false # 控制是否启用萤石抓拍任务
|
||||||
device-sync-enabled: true # 控制是否同步萤石设备
|
device-sync-enabled: false # 控制是否同步萤石设备
|
||||||
# 斯巴达算法
|
# 斯巴达算法
|
||||||
sparta:
|
sparta:
|
||||||
url: http://119.3.204.120:8040
|
url: http://119.3.204.120:8040
|
||||||
|
|||||||
Binary file not shown.
BIN
xinnengyuan/ruoyi-admin/src/main/resources/template/设计更改通知单.docx
Normal file
BIN
xinnengyuan/ruoyi-admin/src/main/resources/template/设计更改通知单.docx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
xinnengyuan/ruoyi-admin/src/main/resources/template/设计验证表.docx
Normal file
BIN
xinnengyuan/ruoyi-admin/src/main/resources/template/设计验证表.docx
Normal file
Binary file not shown.
@ -1,9 +1,17 @@
|
|||||||
package org.dromara.test;
|
package org.dromara.test;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.safety.domain.dto.violationrecord.HseViolationRecordCreateDto;
|
import org.dromara.safety.domain.dto.violationrecord.HseViolationRecordCreateDto;
|
||||||
import org.dromara.safety.service.IHseViolationRecordService;
|
import org.dromara.safety.service.IHseViolationRecordService;
|
||||||
|
import org.dromara.system.domain.SysMenu;
|
||||||
|
import org.dromara.system.domain.vo.SysMenuVo;
|
||||||
|
import org.dromara.system.mapper.SysMenuMapper;
|
||||||
|
import org.dromara.system.service.ISysMenuService;
|
||||||
|
import org.hamcrest.core.Is;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -20,6 +28,9 @@ public class ViolationRecordTest {
|
|||||||
@Resource
|
@Resource
|
||||||
private IHseViolationRecordService violationRecordService;
|
private IHseViolationRecordService violationRecordService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SysMenuMapper sysMenuMapper;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void test() {
|
void test() {
|
||||||
List<HseViolationRecordCreateDto> list = new ArrayList<>();
|
List<HseViolationRecordCreateDto> list = new ArrayList<>();
|
||||||
@ -55,4 +66,26 @@ public class ViolationRecordTest {
|
|||||||
list.add(dto5);
|
list.add(dto5);
|
||||||
violationRecordService.insertByMonitor(list);
|
violationRecordService.insertByMonitor(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void contextLoads() {
|
||||||
|
SysMenuVo sysMenuVo = sysMenusByList(1972500768346673154L);
|
||||||
|
System.out.println(sysMenuVo.toString());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SysMenuVo sysMenusByList(Long id) {
|
||||||
|
SysMenuVo sysMenus = new SysMenuVo();
|
||||||
|
List<SysMenu> res = sysMenuMapper.selectList(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, id));
|
||||||
|
if (res != null && res.size() > 0 ) {
|
||||||
|
sysMenus.setChildren(MapstructUtils.convert(res, SysMenuVo.class));
|
||||||
|
res.forEach(sysMenu -> {
|
||||||
|
sysMenusByList(sysMenu.getMenuId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return sysMenus;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
package org.dromara.common.core.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class XzdCustomerSupplierVos implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类型(1、供应商,2、客户)
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商-客户id
|
||||||
|
*/
|
||||||
|
private Long cSId;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package org.dromara.common.core.service;
|
||||||
|
|
||||||
|
import org.dromara.common.core.domain.vo.XzdCustomerSupplierVos;
|
||||||
|
|
||||||
|
public interface XzdCustomerSupplierService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询供应商-客户中间
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 供应商-客户中间
|
||||||
|
*/
|
||||||
|
XzdCustomerSupplierVos queryByIdone(Long id);
|
||||||
|
}
|
||||||
@ -3,4 +3,6 @@ package org.dromara.common.core.service;
|
|||||||
public interface XzdCustomerinformationService {
|
public interface XzdCustomerinformationService {
|
||||||
|
|
||||||
String selectNmaeByIds(String id);
|
String selectNmaeByIds(String id);
|
||||||
|
|
||||||
|
String selectNmaeById(Long id);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,4 +3,7 @@ package org.dromara.common.core.service;
|
|||||||
public interface XzdSupplierInfoService {
|
public interface XzdSupplierInfoService {
|
||||||
|
|
||||||
String selectNmaeByIds(String ids);
|
String selectNmaeByIds(String ids);
|
||||||
|
|
||||||
|
String selectNmaeById(Long id);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,10 +44,10 @@ public interface TransConstant {
|
|||||||
String XZD_KHXX_ID_TO_NAME = "khxx_id_to_name";
|
String XZD_KHXX_ID_TO_NAME = "khxx_id_to_name";
|
||||||
|
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 供应商id转名称
|
// * 供应商id转名称
|
||||||
*/
|
// */
|
||||||
String XZD_GYSXX_ID_TO_NAME = "gysxx_id_to_name";
|
// String XZD_KHXX_ID_TO_NAME = "gysxx_id_to_name";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新中大项目id转名称
|
* 新中大项目id转名称
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import org.dromara.common.translation.constant.TransConstant;
|
|||||||
import org.dromara.common.translation.core.TranslationInterface;
|
import org.dromara.common.translation.core.TranslationInterface;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@TranslationType(type = TransConstant.XZD_GYSXX_ID_TO_NAME)
|
//@TranslationType(type = TransConstant.XZD_KHXX_ID_TO_NAME)
|
||||||
public class XzdSupplierInfoImpl implements TranslationInterface<String> {
|
public class XzdSupplierInfoImpl implements TranslationInterface<String> {
|
||||||
|
|
||||||
private final XzdSupplierInfoService xzdSupplierInfoService;
|
private final XzdSupplierInfoService xzdSupplierInfoService;
|
||||||
|
|||||||
@ -1,12 +1,21 @@
|
|||||||
package org.dromara.common.utils;
|
package org.dromara.common.utils;
|
||||||
|
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.core.utils.MessageUtils;
|
import org.dromara.common.core.utils.MessageUtils;
|
||||||
import org.dromara.common.sse.dto.SseMessageDto;
|
import org.dromara.common.sse.dto.SseMessageDto;
|
||||||
import org.dromara.common.sse.utils.SseMessageUtils;
|
import org.dromara.common.sse.utils.SseMessageUtils;
|
||||||
|
import org.dromara.contractor.domain.SubConstructionUser;
|
||||||
|
import org.dromara.mobileAttendanceMachine.DeviceMessageSender;
|
||||||
|
import org.dromara.mobileAttendanceMachine.KqjEntity;
|
||||||
|
import org.dromara.project.domain.BusAttendanceMachine;
|
||||||
|
import org.dromara.project.service.IBusAttendanceMachineService;
|
||||||
import org.dromara.sms4j.api.SmsBlend;
|
import org.dromara.sms4j.api.SmsBlend;
|
||||||
import org.dromara.sms4j.api.entity.SmsResponse;
|
import org.dromara.sms4j.api.entity.SmsResponse;
|
||||||
import org.dromara.sms4j.core.factory.SmsFactory;
|
import org.dromara.sms4j.core.factory.SmsFactory;
|
||||||
|
import org.dromara.system.domain.vo.SysOssVo;
|
||||||
|
import org.dromara.system.service.ISysOssService;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@ -17,6 +26,16 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class AsyncUtil {
|
public class AsyncUtil {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private DeviceMessageSender deviceMessageSender;
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private ISysOssService ossService;
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private IBusAttendanceMachineService attendanceMachineService;
|
||||||
|
|
||||||
//发送短信
|
//发送短信
|
||||||
@Async
|
@Async
|
||||||
public void sendSms(List<String> mobileList, String config) {
|
public void sendSms(List<String> mobileList, String config) {
|
||||||
@ -39,4 +58,27 @@ public class AsyncUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//下发考勤人员
|
||||||
|
@Async
|
||||||
|
public void sendPersonnel(Long teamId, SubConstructionUser constructionUser) {
|
||||||
|
SysOssVo byId = ossService.getById(Long.valueOf(constructionUser.getFacePic()));
|
||||||
|
List<BusAttendanceMachine> list = attendanceMachineService.lambdaQuery().apply("FIND_IN_SET({0}, teams)", teamId).list();
|
||||||
|
for (BusAttendanceMachine machine : list) {
|
||||||
|
deviceMessageSender.sendPersonnelInformation(machine.getSn(), constructionUser.getSysUserId().toString(), constructionUser.getUserName(), byId.getUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除考勤人员
|
||||||
|
@Async
|
||||||
|
public void deletePersonnel(SubConstructionUser constructionUser) {
|
||||||
|
List<BusAttendanceMachine> list = attendanceMachineService.lambdaQuery().apply("FIND_IN_SET({0}, teams)", constructionUser.getTeamId()).list();
|
||||||
|
for (BusAttendanceMachine machine : list) {
|
||||||
|
try {
|
||||||
|
deviceMessageSender.deleteUser(machine.getSn(), constructionUser.getSysUserId().toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("删除考勤人员异常", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,4 +101,7 @@ public class SubConstructionUserQueryReq implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|
||||||
|
|
||||||
|
private String phone;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import org.dromara.common.oss.core.OssClient;
|
|||||||
import org.dromara.common.oss.exception.OssException;
|
import org.dromara.common.oss.exception.OssException;
|
||||||
import org.dromara.common.oss.factory.OssFactory;
|
import org.dromara.common.oss.factory.OssFactory;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.common.utils.AsyncUtil;
|
||||||
import org.dromara.common.utils.IdCardEncryptorUtil;
|
import org.dromara.common.utils.IdCardEncryptorUtil;
|
||||||
import org.dromara.common.utils.baiduUtil.BaiDuFace;
|
import org.dromara.common.utils.baiduUtil.BaiDuFace;
|
||||||
import org.dromara.common.utils.baiduUtil.BaiDuOCR;
|
import org.dromara.common.utils.baiduUtil.BaiDuOCR;
|
||||||
@ -46,6 +47,7 @@ import org.dromara.contractor.mapper.SubConstructionUserMapper;
|
|||||||
import org.dromara.contractor.service.ISubConstructionUserFileService;
|
import org.dromara.contractor.service.ISubConstructionUserFileService;
|
||||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||||
import org.dromara.contractor.service.ISubContractorService;
|
import org.dromara.contractor.service.ISubContractorService;
|
||||||
|
import org.dromara.mobileAttendanceMachine.DeviceMessageSender;
|
||||||
import org.dromara.project.domain.*;
|
import org.dromara.project.domain.*;
|
||||||
import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum;
|
import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum;
|
||||||
import org.dromara.project.domain.enums.BusAttendanceCommuterEnum;
|
import org.dromara.project.domain.enums.BusAttendanceCommuterEnum;
|
||||||
@ -151,6 +153,11 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
|
|||||||
@Resource
|
@Resource
|
||||||
private ISysRoleService roleService;
|
private ISysRoleService roleService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AsyncUtil asyncUtil;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询施工人员
|
* 查询施工人员
|
||||||
*
|
*
|
||||||
@ -202,8 +209,10 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
|
|||||||
LambdaQueryWrapper<SubConstructionUser> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<SubConstructionUser> lqw = Wrappers.lambdaQuery();
|
||||||
// 从对象中取值
|
// 从对象中取值
|
||||||
String userName = req.getUserName();
|
String userName = req.getUserName();
|
||||||
|
String phone = req.getPhone();
|
||||||
|
|
||||||
// 模糊查询
|
// 模糊查询
|
||||||
|
lqw.like(StringUtils.isNotBlank(phone), SubConstructionUser::getPhone, phone);
|
||||||
lqw.like(StringUtils.isNotBlank(userName), SubConstructionUser::getUserName, userName);
|
lqw.like(StringUtils.isNotBlank(userName), SubConstructionUser::getUserName, userName);
|
||||||
lqw.isNull(SubConstructionUser::getProjectId);
|
lqw.isNull(SubConstructionUser::getProjectId);
|
||||||
lqw.isNull(SubConstructionUser::getTeamId);
|
lqw.isNull(SubConstructionUser::getTeamId);
|
||||||
@ -290,6 +299,8 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
|
|||||||
//强退
|
//强退
|
||||||
roleService.cleanOnlineUser(Collections.singletonList(constructionUser.getSysUserId()));
|
roleService.cleanOnlineUser(Collections.singletonList(constructionUser.getSysUserId()));
|
||||||
|
|
||||||
|
asyncUtil.sendPersonnel(dto.getTeamId(), constructionUser);
|
||||||
|
|
||||||
return i > 0;
|
return i > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,17 +1,40 @@
|
|||||||
package org.dromara.design.controller;
|
package org.dromara.design.controller;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
|
import com.deepoove.poi.config.Configure;
|
||||||
|
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
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.design.domain.BusDrawingreviewReceipts;
|
||||||
|
import org.dromara.design.domain.DesCollectFile;
|
||||||
|
import org.dromara.design.domain.DesDesignChange;
|
||||||
import org.dromara.design.domain.bo.DesUserBo;
|
import org.dromara.design.domain.bo.DesUserBo;
|
||||||
|
import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto;
|
||||||
|
import org.dromara.design.domain.vo.DesCollectFileWordVo;
|
||||||
import org.dromara.design.domain.vo.DesUserVo;
|
import org.dromara.design.domain.vo.DesUserVo;
|
||||||
|
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
|
||||||
|
import org.dromara.design.service.IDesDesignChangeService;
|
||||||
import org.dromara.design.service.IDesUserService;
|
import org.dromara.design.service.IDesUserService;
|
||||||
|
import org.dromara.project.domain.BusProject;
|
||||||
import org.dromara.project.domain.vo.project.BusSubProjectVo;
|
import org.dromara.project.domain.vo.project.BusSubProjectVo;
|
||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.dromara.system.service.ISysDictDataService;
|
||||||
|
import org.dromara.system.service.ISysUserService;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
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;
|
||||||
@ -44,6 +67,12 @@ public class BusDrawingreviewReceiptsController extends BaseController {
|
|||||||
|
|
||||||
private final IDesUserService desUserService;
|
private final IDesUserService desUserService;
|
||||||
|
|
||||||
|
private final IDesDesignChangeService desDesignChangeService;
|
||||||
|
|
||||||
|
private final ISysDictDataService dictDataService;
|
||||||
|
|
||||||
|
private final ISysUserService userService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询设计-图纸评审验证列表
|
* 查询设计-图纸评审验证列表
|
||||||
*/
|
*/
|
||||||
@ -132,4 +161,85 @@ public class BusDrawingreviewReceiptsController extends BaseController {
|
|||||||
return R.ok(desUserService.queryList(bo));
|
return R.ok(desUserService.queryList(bo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final String TEMPLATE_PATH = "template/设计验证表.docx";
|
||||||
|
@PostMapping("/downloadWord")
|
||||||
|
public void generateDesignLeaderDoc(Long id, HttpServletResponse response) {
|
||||||
|
OutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
// 1. 调用Service生成目标模板的Word字节流
|
||||||
|
byte[] docBytes = generateDocBytes(id);
|
||||||
|
|
||||||
|
// 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型)
|
||||||
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型
|
||||||
|
// 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名)
|
||||||
|
String downloadFileName = URLEncoder.encode(
|
||||||
|
"设计验证表.docx",
|
||||||
|
"UTF-8"
|
||||||
|
);
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
|
||||||
|
response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验)
|
||||||
|
|
||||||
|
// 3. 将Word字节流写入响应
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
outputStream.write(docBytes);
|
||||||
|
outputStream.flush();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// 异常处理:返回500错误状态码
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
} finally {
|
||||||
|
// 关闭流,避免资源泄漏
|
||||||
|
if (outputStream != null) {
|
||||||
|
try {
|
||||||
|
outputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] generateDocBytes(Long id) throws Exception {
|
||||||
|
// -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) --------------------------
|
||||||
|
// 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等)
|
||||||
|
DesDesignChangeVo desDesignChangeVo = desDesignChangeService.queryById(id);
|
||||||
|
BusDrawingreviewReceipts receipts = busDrawingreviewReceiptsService.lambdaQuery()
|
||||||
|
.eq(BusDrawingreviewReceipts::getDrawingreviewId, id)
|
||||||
|
.last("limit 1")
|
||||||
|
.one();
|
||||||
|
DesDesignExtendDetailDto extendDetail = desDesignChangeVo.getExtendDetail();
|
||||||
|
String s = dictDataService.selectDictLabel("des_user_major", receipts.getProfessional());
|
||||||
|
String designerName = null;
|
||||||
|
if(StrUtil.isNotBlank(receipts.getDesigner())){
|
||||||
|
Long userId = Long.parseLong(receipts.getDesigner());
|
||||||
|
designerName= userService.queryNameById(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, Object> placeholderData = new HashMap<>();
|
||||||
|
placeholderData.put("projectName", receipts.getProjectName());
|
||||||
|
placeholderData.put("subName",extendDetail.getSubName());
|
||||||
|
placeholderData.put("stage", receipts.getStage());
|
||||||
|
placeholderData.put("professionalName", s);
|
||||||
|
placeholderData.put("volume", receipts.getVolume());
|
||||||
|
placeholderData.put("designerName", designerName);
|
||||||
|
placeholderData.put("verificationOpinion", receipts.getVerificationOpinion());
|
||||||
|
placeholderData.put("executionOpinion", receipts.getExecutionOpinion());
|
||||||
|
// -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 --------------------------
|
||||||
|
// 读取resources下的“设计项目负责人任命通知单.docx”模板
|
||||||
|
ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH);
|
||||||
|
try (InputStream templateIs = templateResource.getInputStream();
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||||
|
|
||||||
|
XWPFTemplate template = XWPFTemplate.compile(templateIs).render(placeholderData);
|
||||||
|
|
||||||
|
// -------------------------- 步骤3:将生成的文档写入字节流 --------------------------
|
||||||
|
template.write(outputStream);
|
||||||
|
template.close(); // 关闭模板资源
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,31 @@
|
|||||||
package org.dromara.design.controller;
|
package org.dromara.design.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
|
import com.deepoove.poi.config.Configure;
|
||||||
|
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
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.design.domain.DesCollectFile;
|
||||||
import org.dromara.design.domain.bo.DesCollectFileBo;
|
import org.dromara.design.domain.bo.DesCollectFileBo;
|
||||||
import org.dromara.design.domain.dto.ExportDto;
|
import org.dromara.design.domain.dto.ExportDto;
|
||||||
|
import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto;
|
||||||
import org.dromara.design.domain.vo.DesCollectFileVo;
|
import org.dromara.design.domain.vo.DesCollectFileVo;
|
||||||
|
import org.dromara.design.domain.vo.DesCollectFileWordVo;
|
||||||
|
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
|
||||||
import org.dromara.design.service.IDesCollectFileService;
|
import org.dromara.design.service.IDesCollectFileService;
|
||||||
|
import org.dromara.project.domain.BusProject;
|
||||||
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
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;
|
||||||
@ -39,6 +55,8 @@ public class DesCollectFileController extends BaseController {
|
|||||||
|
|
||||||
private final IDesCollectFileService desCollectFileService;
|
private final IDesCollectFileService desCollectFileService;
|
||||||
|
|
||||||
|
private final IBusProjectService projectService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询收资文件列表
|
* 查询收资文件列表
|
||||||
*/
|
*/
|
||||||
@ -106,7 +124,6 @@ public class DesCollectFileController extends BaseController {
|
|||||||
return toAjax(desCollectFileService.deleteWithValidByIds(List.of(ids), true));
|
return toAjax(desCollectFileService.deleteWithValidByIds(List.of(ids), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传资料文件
|
* 上传资料文件
|
||||||
*/
|
*/
|
||||||
@ -119,10 +136,92 @@ public class DesCollectFileController extends BaseController {
|
|||||||
return toAjax(desCollectFileService.addFile(file, catalogueId, projectId));
|
return toAjax(desCollectFileService.addFile(file, catalogueId, projectId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/exportZip")
|
@PostMapping("/exportZip")
|
||||||
public void exportZip(ExportDto dto, HttpServletResponse response) throws Exception {
|
public void exportZip(ExportDto dto, HttpServletResponse response) throws Exception {
|
||||||
desCollectFileService.exportAsZip(dto, response);
|
desCollectFileService.exportAsZip(dto, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String TEMPLATE_PATH = "template/设计输入资料清单及评审表.docx";
|
||||||
|
@PostMapping("/downloadWord")
|
||||||
|
public void generateDesignLeaderDoc(Long projectId, HttpServletResponse response) {
|
||||||
|
OutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
// 1. 调用Service生成目标模板的Word字节流
|
||||||
|
byte[] docBytes = generateDocBytes(projectId);
|
||||||
|
|
||||||
|
// 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型)
|
||||||
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型
|
||||||
|
// 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名)
|
||||||
|
String downloadFileName = URLEncoder.encode(
|
||||||
|
"设计输入资料清单及评审表.docx",
|
||||||
|
"UTF-8"
|
||||||
|
);
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
|
||||||
|
response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验)
|
||||||
|
|
||||||
|
// 3. 将Word字节流写入响应
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
outputStream.write(docBytes);
|
||||||
|
outputStream.flush();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// 异常处理:返回500错误状态码
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
} finally {
|
||||||
|
// 关闭流,避免资源泄漏
|
||||||
|
if (outputStream != null) {
|
||||||
|
try {
|
||||||
|
outputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] generateDocBytes(Long projectId) throws Exception {
|
||||||
|
// -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) --------------------------
|
||||||
|
// 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等)
|
||||||
|
List<DesCollectFile> list = desCollectFileService.lambdaQuery()
|
||||||
|
.eq(DesCollectFile::getProjectId, projectId).list();
|
||||||
|
|
||||||
|
List<DesCollectFileWordVo> files = new ArrayList<>();
|
||||||
|
int i = 1;
|
||||||
|
for (DesCollectFile desCollectFile : list) {
|
||||||
|
DesCollectFileWordVo desCollectFileWordVo = new DesCollectFileWordVo();
|
||||||
|
desCollectFileWordVo.setNum(i);
|
||||||
|
i++;
|
||||||
|
desCollectFileWordVo.setFileName(desCollectFile.getFileName());
|
||||||
|
files.add(desCollectFileWordVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
BusProject project = projectService.getById(projectId);
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, Object> placeholderData = new HashMap<>();
|
||||||
|
placeholderData.put("projectName", project.getProjectName());
|
||||||
|
placeholderData.put("files",files);
|
||||||
|
// -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 --------------------------
|
||||||
|
// 读取resources下的“设计项目负责人任命通知单.docx”模板
|
||||||
|
ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH);
|
||||||
|
try (InputStream templateIs = templateResource.getInputStream();
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||||
|
|
||||||
|
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
|
||||||
|
|
||||||
|
Configure config = Configure.builder()
|
||||||
|
.bind("files", policy).build();
|
||||||
|
|
||||||
|
XWPFTemplate template = XWPFTemplate.compile(templateIs, config).render(placeholderData);
|
||||||
|
|
||||||
|
// -------------------------- 步骤3:将生成的文档写入字节流 --------------------------
|
||||||
|
template.write(outputStream);
|
||||||
|
template.close(); // 关闭模板资源
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,10 +2,13 @@ package org.dromara.design.controller;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
import org.apache.poi.xwpf.usermodel.*;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
@ -13,18 +16,37 @@ import org.dromara.common.log.annotation.Log;
|
|||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
import org.dromara.common.web.core.BaseController;
|
import org.dromara.common.web.core.BaseController;
|
||||||
import org.dromara.design.domain.DesConstructionSchedulePlan;
|
import org.dromara.design.domain.DesConstructionSchedulePlan;
|
||||||
|
import org.dromara.design.domain.DesUser;
|
||||||
import org.dromara.design.domain.dto.constructionscheduleplan.*;
|
import org.dromara.design.domain.dto.constructionscheduleplan.*;
|
||||||
import org.dromara.design.domain.vo.DesConstructionSchedulePlanVo;
|
import org.dromara.design.domain.vo.DesConstructionSchedulePlanVo;
|
||||||
|
import org.dromara.design.exportUtil.plan.AttachmentPersonnel;
|
||||||
import org.dromara.design.service.IDesConstructionSchedulePlanService;
|
import org.dromara.design.service.IDesConstructionSchedulePlanService;
|
||||||
|
|
||||||
|
|
||||||
|
import org.dromara.design.service.IDesUserService;
|
||||||
|
import org.dromara.system.domain.vo.SysDictDataVo;
|
||||||
|
import org.dromara.system.service.ISysDictDataService;
|
||||||
|
import org.dromara.system.service.ISysDictTypeService;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.*;
|
||||||
import java.util.List;
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||||
/**
|
/**
|
||||||
* 设计计划
|
* 设计计划
|
||||||
*
|
*
|
||||||
@ -38,7 +60,10 @@ public class DesConstructionSchedulePlanController extends BaseController {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IDesConstructionSchedulePlanService desConstructionSchedulePlanService;
|
private IDesConstructionSchedulePlanService desConstructionSchedulePlanService;
|
||||||
|
@Resource
|
||||||
|
private IDesUserService desUserService;
|
||||||
|
@Resource
|
||||||
|
private ISysDictTypeService dictTypeService;
|
||||||
/**
|
/**
|
||||||
* 查询设计计划列表
|
* 查询设计计划列表
|
||||||
*/
|
*/
|
||||||
@ -150,4 +175,168 @@ public class DesConstructionSchedulePlanController extends BaseController {
|
|||||||
desConstructionSchedulePlanService.exportSchedule(response,projectId);
|
desConstructionSchedulePlanService.exportSchedule(response,projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String TEMPLATE_RESOURCE_PATH = "template/CCCET-JL-CX-25设计计划表.docx";
|
||||||
|
// -------------------------- 2. 核心接口:修复单元格清空逻辑与数据填充 --------------------------
|
||||||
|
@PostMapping("/downloadWord")
|
||||||
|
public void fillCccetTemplate(Long projectId, HttpServletResponse response) {
|
||||||
|
// 1. 基础参数校验(避免空数据)
|
||||||
|
|
||||||
|
// 2. 读取resource中的模板+填充数据
|
||||||
|
try (
|
||||||
|
// 关键:通过ClassPathResource读取resource/template下的模板
|
||||||
|
InputStream templateIs = new ClassPathResource(TEMPLATE_RESOURCE_PATH).getInputStream();
|
||||||
|
XWPFDocument doc = new XWPFDocument(templateIs); // 加载模板
|
||||||
|
OutputStream out = response.getOutputStream() // 响应流
|
||||||
|
) {
|
||||||
|
// --------------------------
|
||||||
|
// 步骤1:填充第1页-主信息表(索引0,固定6列)
|
||||||
|
// --------------------------
|
||||||
|
// XWPFTable mainTable = doc.getTables().get(0);
|
||||||
|
// // 工程名称(第1行第0列)
|
||||||
|
// if (mainTable.getRows().size() > 1 && mainTable.getRow(1).getCell(0) != null) {
|
||||||
|
// mainTable.getRow(1).getCell(0).setText(request.getProjectName() == null ? "" : request.getProjectName());
|
||||||
|
// }
|
||||||
|
// // 工程号(第1行第1列)
|
||||||
|
// if (mainTable.getRows().size() > 1 && mainTable.getRow(1).getCell(1) != null) {
|
||||||
|
// mainTable.getRow(1).getCell(1).setText(request.getProjectNo());
|
||||||
|
// }
|
||||||
|
// // 编制日期(第2行第3列)
|
||||||
|
// if (mainTable.getRows().size() > 2 && mainTable.getRow(2).getCell(3) != null) {
|
||||||
|
// mainTable.getRow(2).getCell(3).setText(request.getCompileDate() == null ? "" : request.getCompileDate());
|
||||||
|
// }
|
||||||
|
// // 编制人(第3行第0列)
|
||||||
|
// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(0) != null) {
|
||||||
|
// mainTable.getRow(3).getCell(0).setText(request.getCompiler() == null ? "" : request.getCompiler());
|
||||||
|
// }
|
||||||
|
// // 批准人(第3行第2列)
|
||||||
|
// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(2) != null) {
|
||||||
|
// mainTable.getRow(3).getCell(2).setText(request.getApprover() == null ? "" : request.getApprover());
|
||||||
|
// }
|
||||||
|
// // 设计阶段(第3行第4列)
|
||||||
|
// if (mainTable.getRows().size() > 3 && mainTable.getRow(3).getCell(4) != null) {
|
||||||
|
// mainTable.getRow(3).getCell(4).setText(request.getDesignStage() == null ? "" : request.getDesignStage());
|
||||||
|
// }
|
||||||
|
// // 设计规模(第4行第0列)
|
||||||
|
// if (mainTable.getRows().size() > 4 && mainTable.getRow(4).getCell(0) != null) {
|
||||||
|
// mainTable.getRow(4).getCell(0).setText(request.getDesignScale() == null ? "" : request.getDesignScale());
|
||||||
|
// }
|
||||||
|
|
||||||
|
// --------------------------
|
||||||
|
// 步骤2:填充第3页-附件1人员配置表(索引2,固定11列)
|
||||||
|
// --------------------------
|
||||||
|
XWPFTable staffTable = doc.getTables().get(2);
|
||||||
|
// 删除模板中附件1的空数据行(保留第0行表头)
|
||||||
|
while (staffTable.getRows().size() > 2) {
|
||||||
|
staffTable.removeRow(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<AttachmentPersonnel> list = getPersonnelDataByProjectId(projectId);
|
||||||
|
for (AttachmentPersonnel staff : list) {
|
||||||
|
XWPFTableRow newRow = staffTable.createRow();
|
||||||
|
// 补全11列(避免POI默认列数不足导致null)
|
||||||
|
while (newRow.getTableCells().size() < 11) {
|
||||||
|
newRow.createCell();
|
||||||
|
}
|
||||||
|
// 按附件1列顺序填充
|
||||||
|
newRow.getCell(0).setText(staff.getProfessional() == null ? "" : staff.getProfessional());
|
||||||
|
newRow.getCell(1).setText(staff.getLeaderName() == null ? "" : staff.getLeaderName());
|
||||||
|
newRow.getCell(2).setText(staff.getLeaderTitle() == null ? "" : staff.getLeaderTitle());
|
||||||
|
newRow.getCell(3).setText(staff.getDesignerName() == null ? "" : staff.getDesignerName());
|
||||||
|
newRow.getCell(4).setText(staff.getDesignerTitle() == null ? "" : staff.getDesignerTitle());
|
||||||
|
newRow.getCell(5).setText(staff.getReviewerName() == null ? "" : staff.getReviewerName());
|
||||||
|
newRow.getCell(6).setText(staff.getReviewerTitle() == null ? "" : staff.getReviewerTitle());
|
||||||
|
newRow.getCell(7).setText(staff.getCheckerName() == null ? "" : staff.getCheckerName());
|
||||||
|
newRow.getCell(8).setText(staff.getCheckerTitle() == null ? "" : staff.getCheckerTitle());
|
||||||
|
newRow.getCell(9).setText(staff.getApproverName() == null ? "" : staff.getApproverName());
|
||||||
|
newRow.getCell(10).setText(staff.getApproverTitle() == null ? "" : staff.getApproverTitle());
|
||||||
|
}
|
||||||
|
|
||||||
|
// --------------------------
|
||||||
|
// 步骤3:设置响应头(触发前端下载)
|
||||||
|
// --------------------------
|
||||||
|
response.setContentType("application/octet-stream");
|
||||||
|
// 文件名:填充后_工程号_CCCET-JL-CX-25设计计划表.docx
|
||||||
|
String fileName = "CCCET-JL-CX-25设计计划表.docx";
|
||||||
|
response.setHeader("Content-Disposition",
|
||||||
|
"attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
|
||||||
|
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); // 允许前端获取文件名
|
||||||
|
|
||||||
|
// --------------------------
|
||||||
|
// 步骤4:写出文件到前端
|
||||||
|
// --------------------------
|
||||||
|
doc.write(out);
|
||||||
|
out.flush();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 异常封装(前端可捕获具体错误)
|
||||||
|
throw new RuntimeException("CCCET-JL-CX-25模板填充失败:" + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据projectId获取数据(仅针对CCCET-JL-CX-25设计计划表.docx附件1)
|
||||||
|
*/
|
||||||
|
private List<AttachmentPersonnel> getPersonnelDataByProjectId(Long projectId) {
|
||||||
|
// 模拟数据库查询(实际项目替换为真实Service调用)
|
||||||
|
List<DesUser> userList = desUserService.list(Wrappers.<DesUser>lambdaQuery()
|
||||||
|
.eq(DesUser::getProjectId, projectId)
|
||||||
|
);
|
||||||
|
if (userList.isEmpty()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 专业字典映射(编码→名称)
|
||||||
|
List<SysDictDataVo> majorDict = dictTypeService.selectDictDataByType("des_user_major");
|
||||||
|
Map<String, String> majorMap = majorDict.stream()
|
||||||
|
.collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||||
|
|
||||||
|
// 按角色分组(1-专业负责人,2-设计人,3-校审人,4-审定人,5-审核人)
|
||||||
|
DesUser leader = userList.stream().filter(u -> "1".equals(u.getUserType())).findFirst().orElse(null);
|
||||||
|
Map<String, List<DesUser>> designerMap = userList.stream()
|
||||||
|
.filter(u -> "2".equals(u.getUserType()))
|
||||||
|
.collect(Collectors.groupingBy(DesUser::getUserMajor));
|
||||||
|
Map<String, List<DesUser>> reviewerMap = userList.stream()
|
||||||
|
.filter(u -> "3".equals(u.getUserType()))
|
||||||
|
.collect(Collectors.groupingBy(DesUser::getUserMajor));
|
||||||
|
Map<String, List<DesUser>> checkerMap = userList.stream()
|
||||||
|
.filter(u -> "5".equals(u.getUserType()))
|
||||||
|
.collect(Collectors.groupingBy(DesUser::getUserMajor));
|
||||||
|
Map<String, List<DesUser>> approverMap = userList.stream()
|
||||||
|
.filter(u -> "4".equals(u.getUserType()))
|
||||||
|
.collect(Collectors.groupingBy(DesUser::getUserMajor));
|
||||||
|
|
||||||
|
// 构建附件1数据(一个专业一行,避免重复)
|
||||||
|
List<AttachmentPersonnel> dataList = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, List<DesUser>> entry : designerMap.entrySet()) {
|
||||||
|
String majorCode = entry.getKey();
|
||||||
|
String majorName = majorMap.getOrDefault(majorCode, majorCode);
|
||||||
|
List<DesUser> designers = entry.getValue();
|
||||||
|
|
||||||
|
// 获取对应专业的其他角色
|
||||||
|
DesUser reviewer = reviewerMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null);
|
||||||
|
DesUser checker = checkerMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null);
|
||||||
|
DesUser approver = approverMap.getOrDefault(majorCode, Collections.emptyList()).stream().findFirst().orElse(null);
|
||||||
|
// 封装数据(多个设计人用顿号分隔)
|
||||||
|
AttachmentPersonnel data = new AttachmentPersonnel();
|
||||||
|
data.setProfessional(majorName);
|
||||||
|
data.setLeaderName(leader != null ? leader.getUserName() : "");
|
||||||
|
//data.setLeadeTitle(leader != null ? leader.getUserTitle() : "");
|
||||||
|
data.setDesignerName(designers.stream().map(DesUser::getUserName).collect(Collectors.joining("、")));
|
||||||
|
//data.setDesignerTitle(designers.stream().map(DesUser::getUserTitle).collect(Collectors.joining("、")));
|
||||||
|
data.setReviewerName(reviewer != null ? reviewer.getUserName() : "");
|
||||||
|
//data.setReviewerTitle(reviewer != null ? reviewer.getUserTitle() : "");
|
||||||
|
data.setCheckerName(checker != null ? checker.getUserName() : "");
|
||||||
|
//data.setCheckerTitle(checker != null ? checker.getUserTitle() : "");
|
||||||
|
data.setApproverName(approver != null ? approver.getUserName() : "");
|
||||||
|
//data.setApproverTitle(approver != null ? approver.getUserTitle() : "");
|
||||||
|
|
||||||
|
dataList.add(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dataList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package org.dromara.design.controller;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
@ -16,24 +17,36 @@ import org.dromara.common.log.enums.BusinessType;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.web.core.BaseController;
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.design.domain.DesUser;
|
||||||
import org.dromara.design.domain.DesVolumeCatalog;
|
import org.dromara.design.domain.DesVolumeCatalog;
|
||||||
import org.dromara.design.domain.DesVolumeFile;
|
import org.dromara.design.domain.DesVolumeFile;
|
||||||
import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq;
|
import org.dromara.design.domain.dto.designchange.DesDesignChangeCreateReq;
|
||||||
import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq;
|
import org.dromara.design.domain.dto.designchange.DesDesignChangeQueryReq;
|
||||||
import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq;
|
import org.dromara.design.domain.dto.designchange.DesDesignChangeUpdateReq;
|
||||||
|
import org.dromara.design.domain.dto.designchange.DesDesignExtendDetailDto;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
||||||
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
|
import org.dromara.design.domain.vo.designchange.DesDesignChangeVo;
|
||||||
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
||||||
import org.dromara.design.service.IDesDesignChangeService;
|
import org.dromara.design.service.IDesDesignChangeService;
|
||||||
import org.dromara.design.service.IDesVolumeCatalogService;
|
import org.dromara.design.service.IDesVolumeCatalogService;
|
||||||
import org.dromara.design.service.IDesVolumeFileService;
|
import org.dromara.design.service.IDesVolumeFileService;
|
||||||
|
import org.dromara.project.domain.BusProject;
|
||||||
import org.dromara.system.domain.vo.SysOssVo;
|
import org.dromara.system.domain.vo.SysOssVo;
|
||||||
|
import org.dromara.system.service.ISysDictDataService;
|
||||||
import org.dromara.system.service.ISysOssService;
|
import org.dromara.system.service.ISysOssService;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,6 +69,9 @@ public class DesDesignChangeController extends BaseController {
|
|||||||
@Resource
|
@Resource
|
||||||
private IDesVolumeFileService desVolumeFileService;
|
private IDesVolumeFileService desVolumeFileService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ISysDictDataService dictDataService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询设计变更管理列表
|
* 查询设计变更管理列表
|
||||||
*/
|
*/
|
||||||
@ -146,4 +162,92 @@ public class DesDesignChangeController extends BaseController {
|
|||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String TEMPLATE_PATH = "template/设计更改通知单.docx";
|
||||||
|
|
||||||
|
@PostMapping("/downloadWord")
|
||||||
|
public void generateDesignLeaderDoc(Long id, HttpServletResponse response) {
|
||||||
|
OutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
// 1. 调用Service生成目标模板的Word字节流
|
||||||
|
byte[] docBytes = generateDocBytes(id);
|
||||||
|
|
||||||
|
// 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型)
|
||||||
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型
|
||||||
|
// 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名)
|
||||||
|
String downloadFileName = URLEncoder.encode(
|
||||||
|
"设计更改通知单.docx",
|
||||||
|
"UTF-8"
|
||||||
|
);
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
|
||||||
|
response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验)
|
||||||
|
|
||||||
|
// 3. 将Word字节流写入响应
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
outputStream.write(docBytes);
|
||||||
|
outputStream.flush();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// 异常处理:返回500错误状态码
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
} finally {
|
||||||
|
// 关闭流,避免资源泄漏
|
||||||
|
if (outputStream != null) {
|
||||||
|
try {
|
||||||
|
outputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] generateDocBytes(Long id) throws Exception {
|
||||||
|
// -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) --------------------------
|
||||||
|
// 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等)
|
||||||
|
DesDesignChangeVo vo = desDesignChangeService.queryById(id);
|
||||||
|
DesDesignExtendDetailDto extendDetail = vo.getExtendDetail()==null?new DesDesignExtendDetailDto():vo.getExtendDetail();
|
||||||
|
|
||||||
|
Map<String, Object> placeholderData = new HashMap<>();
|
||||||
|
placeholderData.put("projectName", vo.getProjectName());
|
||||||
|
placeholderData.put("designPhase",extendDetail.getDesignPhase());
|
||||||
|
placeholderData.put("subName",extendDetail.getSubName());
|
||||||
|
String s = dictDataService.selectDictLabel("des_user_major", vo.getSpecialty());
|
||||||
|
placeholderData.put("specialty",s);
|
||||||
|
placeholderData.put("volumeNo",vo.getVolumeNo());
|
||||||
|
|
||||||
|
String changeReason = vo.getChangeReason();
|
||||||
|
List<String> reasons = Arrays.asList("设计漏项", "设计改进", "设计差错", "接口差错",
|
||||||
|
"业主要求", "施工承包商要求", "外部资料与最终情况不符", "材料代用或其他");
|
||||||
|
|
||||||
|
String reason = reasons.stream()
|
||||||
|
.map(item -> changeReason.contains(String.valueOf(reasons.indexOf(item) + 1)) ? " ☑" + item : " □" + item)
|
||||||
|
.collect(Collectors.joining());
|
||||||
|
|
||||||
|
placeholderData.put("changeReason", reason);
|
||||||
|
placeholderData.put("designDisposal1", "1".equals(extendDetail.getDesignDisposal())?"☑" : "□");
|
||||||
|
placeholderData.put("designDisposal2", "2".equals(extendDetail.getDesignDisposal())?"☑" : "□");
|
||||||
|
placeholderData.put("designDisposal3", "3".equals(extendDetail.getDesignDisposal())?"☑" : "□");
|
||||||
|
placeholderData.put("changeContent",vo.getChangeContent());
|
||||||
|
placeholderData.put("changeCategory1", "1".equals(extendDetail.getChangeCategory())?"☑" : "□");
|
||||||
|
placeholderData.put("changeCategory2", "2".equals(extendDetail.getChangeCategory())?"☑" : "□");
|
||||||
|
placeholderData.put("involvingProfessions", extendDetail.getInvolvingProfessions());
|
||||||
|
// -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 --------------------------
|
||||||
|
// 读取resources下的“设计项目负责人任命通知单.docx”模板
|
||||||
|
ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH);
|
||||||
|
try (InputStream templateIs = templateResource.getInputStream();
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||||
|
|
||||||
|
// 1. 加载模板 2. 注入替换数据 3. 渲染生成新文档
|
||||||
|
XWPFTemplate template = XWPFTemplate.compile(templateIs)
|
||||||
|
.render(placeholderData); // 自动匹配{{变量名}}占位符
|
||||||
|
|
||||||
|
// -------------------------- 步骤3:将生成的文档写入字节流 --------------------------
|
||||||
|
template.write(outputStream);
|
||||||
|
template.close(); // 关闭模板资源
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +1,18 @@
|
|||||||
package org.dromara.design.controller;
|
package org.dromara.design.controller;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.URLEncoder;
|
||||||
import java.rmi.ServerException;
|
import java.rmi.ServerException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
@ -22,8 +24,15 @@ import org.apache.poi.ss.usermodel.Row;
|
|||||||
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
//import org.dromara.design.domain.DesUserExcelData;
|
//import org.dromara.design.domain.DesUserExcelData;
|
||||||
|
import org.dromara.design.domain.DesUser;
|
||||||
import org.dromara.design.domain.DesUserExcelData;
|
import org.dromara.design.domain.DesUserExcelData;
|
||||||
import org.dromara.design.domain.dto.desUser.DesUserBatchDto;
|
import org.dromara.design.domain.dto.desUser.DesUserBatchDto;
|
||||||
|
import org.dromara.project.domain.BusProject;
|
||||||
|
import org.dromara.project.service.IBusProjectService;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
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;
|
||||||
@ -54,6 +63,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
public class DesUserController extends BaseController {
|
public class DesUserController extends BaseController {
|
||||||
|
|
||||||
private final IDesUserService desUserService;
|
private final IDesUserService desUserService;
|
||||||
|
private final IBusProjectService projectService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询设计人员列表
|
* 查询设计人员列表
|
||||||
@ -142,5 +152,75 @@ public class DesUserController extends BaseController {
|
|||||||
return toAjax(desUserService.batchAddOrUpdate(dto));
|
return toAjax(desUserService.batchAddOrUpdate(dto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final String TEMPLATE_PATH = "template/设计项目负责人任命通知单.docx";
|
||||||
|
|
||||||
|
@PostMapping("/downloadWord")
|
||||||
|
public void generateDesignLeaderDoc( Long projectId,
|
||||||
|
HttpServletResponse response
|
||||||
|
) {
|
||||||
|
OutputStream outputStream = null;
|
||||||
|
try {
|
||||||
|
// 1. 调用Service生成目标模板的Word字节流
|
||||||
|
byte[] docBytes = generateDocBytes(projectId);
|
||||||
|
|
||||||
|
// 2. 配置响应头:确保前端正确下载(避免中文乱码、指定文件类型)
|
||||||
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // 二进制流类型
|
||||||
|
// 下载文件名:格式为“[项目名]-设计负责人任命通知单.docx”(此处用projectId拼接,真实场景可从数据中获取项目名)
|
||||||
|
String downloadFileName = URLEncoder.encode(
|
||||||
|
"设计负责人任命通知单.docx",
|
||||||
|
"UTF-8"
|
||||||
|
);
|
||||||
|
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFileName);
|
||||||
|
response.setContentLength(docBytes.length); // 设置响应体长度(优化下载体验)
|
||||||
|
|
||||||
|
// 3. 将Word字节流写入响应
|
||||||
|
outputStream = response.getOutputStream();
|
||||||
|
outputStream.write(docBytes);
|
||||||
|
outputStream.flush();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// 异常处理:返回500错误状态码
|
||||||
|
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
|
||||||
|
} finally {
|
||||||
|
// 关闭流,避免资源泄漏
|
||||||
|
if (outputStream != null) {
|
||||||
|
try {
|
||||||
|
outputStream.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] generateDocBytes(Long projectId) throws Exception {
|
||||||
|
// -------------------------- 步骤1:按projectId查询项目数据(模拟真实业务) --------------------------
|
||||||
|
// 实际场景替换为数据库查询(如调用DAO获取项目名称、负责人等)
|
||||||
|
BusProject byId = projectService.getById(projectId);
|
||||||
|
DesUser desUser = desUserService.lambdaQuery().eq(DesUser::getProjectId, projectId)
|
||||||
|
.eq(DesUser::getUserType, "1")
|
||||||
|
.last("limit 1").one();
|
||||||
|
|
||||||
|
|
||||||
|
Map<String, Object> placeholderData = new HashMap<>();
|
||||||
|
placeholderData.put("projectName", byId==null?"" :byId.getProjectName());
|
||||||
|
placeholderData.put("leaderName",desUser==null?"": desUser.getUserName());
|
||||||
|
|
||||||
|
// -------------------------- 步骤2:用poi-tl加载目标模板并替换占位符 --------------------------
|
||||||
|
// 读取resources下的“设计项目负责人任命通知单.docx”模板
|
||||||
|
ClassPathResource templateResource = new ClassPathResource(TEMPLATE_PATH);
|
||||||
|
try (InputStream templateIs = templateResource.getInputStream();
|
||||||
|
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
|
||||||
|
|
||||||
|
// 1. 加载模板 2. 注入替换数据 3. 渲染生成新文档
|
||||||
|
XWPFTemplate template = XWPFTemplate.compile(templateIs)
|
||||||
|
.render(placeholderData); // 自动匹配{{变量名}}占位符
|
||||||
|
|
||||||
|
// -------------------------- 步骤3:将生成的文档写入字节流 --------------------------
|
||||||
|
template.write(outputStream);
|
||||||
|
template.close(); // 关闭模板资源
|
||||||
|
return outputStream.toByteArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.design.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class DesCollectFileWordVo {
|
||||||
|
|
||||||
|
private Integer num;
|
||||||
|
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
private String opinion;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
package org.dromara.design.exportUtil.plan;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class AttachmentPersonnel {
|
||||||
|
String professional; // 专业及人员分工
|
||||||
|
String leaderName; // 专业负责人姓名
|
||||||
|
String leaderTitle; // 专业负责人职称
|
||||||
|
String designerName; // 设计人姓名
|
||||||
|
String designerTitle; // 设计人职称
|
||||||
|
String reviewerName; // 校审人姓名
|
||||||
|
String reviewerTitle; // 校审人职称
|
||||||
|
String checkerName; // 审核人姓名
|
||||||
|
String checkerTitle; // 审核人职称
|
||||||
|
String approverName; // 审定人姓名
|
||||||
|
String approverTitle; // 审定人职称
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ public class GpsEquipmentSonController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询GPS设备定位日期信息列表
|
* 查询GPS设备定位日期信息列表
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("gps:equipmentSon:getRlList")
|
// @SaCheckPermission("gps:equipmentSon:getRlList")
|
||||||
@GetMapping("/getRlList")
|
@GetMapping("/getRlList")
|
||||||
public R<List<GpsStatusVo>> getRlList(GpsEquipmentSonBo bo) {
|
public R<List<GpsStatusVo>> getRlList(GpsEquipmentSonBo bo) {
|
||||||
return R.ok(gpsEquipmentSonService.getRlList(bo));
|
return R.ok(gpsEquipmentSonService.getRlList(bo));
|
||||||
|
|||||||
@ -81,31 +81,15 @@ public interface GpsEquipmentSonMapper extends BaseMapperPlus<GpsEquipmentSon, G
|
|||||||
" 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" +
|
@Select("SELECT\n" +
|
||||||
" -- 1. 初始化开始日期(取startTime的“年月日”部分,忽略时分秒)\n" +
|
" DATE(create_time) AS riqi,\n" +
|
||||||
" SELECT DATE(#{bo.startTime}) AS stat_date\n" +
|
" COUNT(id) AS count \n" +
|
||||||
" UNION ALL\n" +
|
"FROM\n" +
|
||||||
" -- 2. 递归生成后续日期,直到不超过endTime的“年月日”\n" +
|
" gps_equipment_son\n" +
|
||||||
" SELECT DATE_ADD(stat_date, INTERVAL 1 DAY)\n" +
|
"WHERE\n" +
|
||||||
" FROM date_range\n" +
|
" project_id = #{bo.projectId}\n" +
|
||||||
" WHERE stat_date < DATE(#{bo.endTime})\n" +
|
" AND client_id = #{bo.clientId}\n" +
|
||||||
")\n" +
|
" AND create_time BETWEEN #{bo.startTime} AND #{bo.endTime}\n" +
|
||||||
"\n" +
|
" GROUP BY DATE(create_time)")
|
||||||
"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);
|
List<GpsStatusVo> getRlList(@Param("bo") GpsEquipmentSonBo bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,45 +0,0 @@
|
|||||||
package org.dromara.job.once;
|
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.dromara.manager.ys7manager.Ys7Manager;
|
|
||||||
import org.dromara.manager.ys7manager.vo.Ys7QueryDeviceResponseVo;
|
|
||||||
import org.dromara.other.service.IOthYs7DeviceService;
|
|
||||||
import org.springframework.boot.CommandLineRunner;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 同步摄像头设备数据
|
|
||||||
*
|
|
||||||
* @author lilemy
|
|
||||||
* @date 2025/6/13 11:08
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
@Component
|
|
||||||
public class FullSyncYs7DeviceData implements CommandLineRunner {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private Ys7Manager ys7Manager;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IOthYs7DeviceService ys7DeviceService;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run(String... args) throws Exception {
|
|
||||||
log.info("开始同步摄像头设备数据");
|
|
||||||
try {
|
|
||||||
List<Ys7QueryDeviceResponseVo> ys7QueryDeviceList = ys7Manager.queryAllDeviceList();
|
|
||||||
Boolean result = ys7DeviceService.saveOrUpdateByDeviceList(ys7QueryDeviceList);
|
|
||||||
if (result) {
|
|
||||||
log.info("摄像头设备数据同步成功");
|
|
||||||
} else {
|
|
||||||
log.info("没有需要同步的设备");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.info("摄像头设备数据同步失败", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -668,11 +668,13 @@ public class MatMaterialsServiceImpl extends ServiceImpl<MatMaterialsMapper, Mat
|
|||||||
BeanUtils.copyProperties(material, vo);
|
BeanUtils.copyProperties(material, vo);
|
||||||
Long id = material.getId();
|
Long id = material.getId();
|
||||||
MatMaterialsInventory put = putMap.get(id);
|
MatMaterialsInventory put = putMap.get(id);
|
||||||
vo.setSupplier(put.getRecipient());
|
if (put != null) {
|
||||||
vo.setInventoryId(put.getId());
|
vo.setSupplier(put.getRecipient());
|
||||||
vo.setNumber(put.getNumber());
|
vo.setInventoryId(put.getId());
|
||||||
vo.setOperator(put.getOperator());
|
vo.setNumber(put.getNumber());
|
||||||
vo.setEnterTime(put.getCreateTime());
|
vo.setOperator(put.getOperator());
|
||||||
|
vo.setEnterTime(put.getCreateTime());
|
||||||
|
}
|
||||||
if (CollUtil.isNotEmpty(outList)) {
|
if (CollUtil.isNotEmpty(outList)) {
|
||||||
List<MatMaterialsInventory> outs = outList.stream()
|
List<MatMaterialsInventory> outs = outList.stream()
|
||||||
.filter(inventory -> inventory.getMaterialsId().equals(id))
|
.filter(inventory -> inventory.getMaterialsId().equals(id))
|
||||||
|
|||||||
@ -162,6 +162,12 @@ public class PgsProgressPlanServiceImpl extends ServiceImpl<PgsProgressPlanMappe
|
|||||||
Long id = progressPlan.getId();
|
Long id = progressPlan.getId();
|
||||||
List<PgsProgressPlanDetailCreateDto> detailList = req.getDetailList();
|
List<PgsProgressPlanDetailCreateDto> detailList = req.getDetailList();
|
||||||
if (CollUtil.isNotEmpty(detailList)) {
|
if (CollUtil.isNotEmpty(detailList)) {
|
||||||
|
// 判断详情数量是否合法
|
||||||
|
boolean isAnyEmpty = detailList.stream()
|
||||||
|
.allMatch(detail -> detail.getPlanNumber().compareTo(BigDecimal.ZERO) <= 0);
|
||||||
|
if (isAnyEmpty) {
|
||||||
|
throw new ServiceException("新增进度计划详情失败,请进行均分", HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
List<PgsProgressPlanDetail> newDetailList = detailList.stream().map(detail -> {
|
List<PgsProgressPlanDetail> newDetailList = detailList.stream().map(detail -> {
|
||||||
PgsProgressPlanDetail progressPlanDetail = new PgsProgressPlanDetail();
|
PgsProgressPlanDetail progressPlanDetail = new PgsProgressPlanDetail();
|
||||||
BeanUtils.copyProperties(detail, progressPlanDetail);
|
BeanUtils.copyProperties(detail, progressPlanDetail);
|
||||||
|
|||||||
@ -91,4 +91,17 @@ public class BusAttendanceMachineController extends BaseController {
|
|||||||
@PathVariable Long[] ids) {
|
@PathVariable Long[] ids) {
|
||||||
return toAjax(busAttendanceMachineService.deleteWithValidByIds(List.of(ids), true));
|
return toAjax(busAttendanceMachineService.deleteWithValidByIds(List.of(ids), true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量重新下发
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("project:attendanceMachine:reissue")
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping("/reissue/{ids}")
|
||||||
|
public R<Void> reissue(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids){
|
||||||
|
busAttendanceMachineService.reissue(List.of(ids));
|
||||||
|
return R.ok("已开始执行,请稍后刷新");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,8 +128,8 @@ public class BusAttendanceAppController extends BaseController {
|
|||||||
* 获取用户打卡异常记录
|
* 获取用户打卡异常记录
|
||||||
*/
|
*/
|
||||||
@GetMapping("/getAbnormalAttendance/{projectId}")
|
@GetMapping("/getAbnormalAttendance/{projectId}")
|
||||||
public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery){
|
public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId,String handle, PageQuery pageQuery){
|
||||||
return attendanceService.getAbnormalAttendance(projectId,pageQuery);
|
return attendanceService.getAbnormalAttendance(projectId,handle,pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,12 +1,15 @@
|
|||||||
package org.dromara.project.service;
|
package org.dromara.project.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.project.domain.BusAttendanceMachine;
|
import org.dromara.project.domain.BusAttendanceMachine;
|
||||||
import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineQueryReq;
|
import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineQueryReq;
|
||||||
import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineUpdateReq;
|
import org.dromara.project.domain.dto.attendancemachine.BusAttendanceMachineUpdateReq;
|
||||||
import org.dromara.project.domain.vo.BusAttendanceMachineVo;
|
import org.dromara.project.domain.vo.BusAttendanceMachineVo;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -75,4 +78,7 @@ public interface IBusAttendanceMachineService extends IService<BusAttendanceMach
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
|
||||||
|
void reissue(Collection<Long> ids);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,7 +131,7 @@ public interface IBusAttendanceService extends IService<BusAttendance>{
|
|||||||
/**
|
/**
|
||||||
* 获取用户打卡异常记录
|
* 获取用户打卡异常记录
|
||||||
*/
|
*/
|
||||||
TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery);
|
TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId,String handle, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计指定日期的打卡人员
|
* 统计指定日期的打卡人员
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package org.dromara.project.service.impl;
|
package org.dromara.project.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@ -28,13 +29,14 @@ import org.dromara.project.service.IBusAttendanceMachineService;
|
|||||||
import org.dromara.project.service.IBusProjectService;
|
import org.dromara.project.service.IBusProjectService;
|
||||||
import org.dromara.project.service.IBusProjectTeamMemberService;
|
import org.dromara.project.service.IBusProjectTeamMemberService;
|
||||||
import org.dromara.project.service.IBusProjectTeamService;
|
import org.dromara.project.service.IBusProjectTeamService;
|
||||||
|
import org.dromara.system.domain.vo.SysOssVo;
|
||||||
|
import org.dromara.system.service.ISysOssService;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,8 +63,14 @@ public class BusAttendanceMachineServiceImpl extends ServiceImpl<BusAttendanceMa
|
|||||||
private DeviceMessageSender deviceMessageSender;
|
private DeviceMessageSender deviceMessageSender;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@Lazy
|
||||||
private ISubConstructionUserService constructionUserService;
|
private ISubConstructionUserService constructionUserService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
@Lazy
|
||||||
|
private ISysOssService ossService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询考勤机
|
* 查询考勤机
|
||||||
*
|
*
|
||||||
@ -300,4 +308,57 @@ public class BusAttendanceMachineServiceImpl extends ServiceImpl<BusAttendanceMa
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Async
|
||||||
|
@Override
|
||||||
|
public void reissue(Collection<Long> ids) {
|
||||||
|
List<BusAttendanceMachine> busAttendanceMachines = baseMapper.selectByIds(ids);
|
||||||
|
|
||||||
|
for (BusAttendanceMachine machine : busAttendanceMachines) {
|
||||||
|
String sn = machine.getSn();
|
||||||
|
try {
|
||||||
|
deviceMessageSender.deleteAllUsers(sn);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("删除考勤人员异常", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
String teams = machine.getTeams();
|
||||||
|
if (StrUtil.isBlank(teams)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Long> oldTeamIds = Arrays.stream(teams.split(","))
|
||||||
|
.map(Long::parseLong)
|
||||||
|
.distinct()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
List<Long> userIds = projectTeamMemberService.lambdaQuery()
|
||||||
|
.select(BusProjectTeamMember::getMemberId)
|
||||||
|
.in(BusProjectTeamMember::getTeamId, oldTeamIds)
|
||||||
|
.list()
|
||||||
|
.stream().map(BusProjectTeamMember::getMemberId)
|
||||||
|
.toList();
|
||||||
|
if (CollUtil.isEmpty(userIds)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SubConstructionUser> users = constructionUserService.lambdaQuery()
|
||||||
|
.in(SubConstructionUser::getSysUserId, userIds)
|
||||||
|
.list();
|
||||||
|
|
||||||
|
Map<Long, String> faceMap = new HashMap<>();
|
||||||
|
List<String> list = users.stream().map(SubConstructionUser::getFacePic).filter(StrUtil::isNotBlank).toList();
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
//转成Long的集合
|
||||||
|
List<Long> list1 = list.stream().map(Long::parseLong).toList();
|
||||||
|
List<SysOssVo> sysOssVos = ossService.listByIds(list1);
|
||||||
|
faceMap = sysOssVos.stream().collect(Collectors.toMap(SysOssVo::getOssId, SysOssVo::getUrl));
|
||||||
|
}
|
||||||
|
|
||||||
|
for (SubConstructionUser user : users) {
|
||||||
|
String facePic = StrUtil.isBlank(user.getFacePic()) ? "" : faceMap.get(Long.valueOf(user.getFacePic()));
|
||||||
|
deviceMessageSender.sendPersonnelInformation(sn, user.getSysUserId().toString()
|
||||||
|
, user.getUserName(), facePic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -333,10 +333,11 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
|||||||
}
|
}
|
||||||
|
|
||||||
//打卡范围
|
//打卡范围
|
||||||
if (!checkInRange(req)) {
|
if (!"1".equals(req.getSource())){
|
||||||
throw new ServiceException("打卡位置不在范围内", HttpStatus.ERROR);
|
if (!checkInRange(req)) {
|
||||||
|
throw new ServiceException("打卡位置不在范围内", HttpStatus.ERROR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//用户信息校验
|
//用户信息校验
|
||||||
SubConstructionUser constructionUser = constructionUserService.getBySysUserId(userId);
|
SubConstructionUser constructionUser = constructionUserService.getBySysUserId(userId);
|
||||||
if ("1".equals(constructionUser.getStatus())) {
|
if ("1".equals(constructionUser.getStatus())) {
|
||||||
@ -792,7 +793,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId, PageQuery pageQuery) {
|
public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId,String handle, PageQuery pageQuery) {
|
||||||
|
|
||||||
List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(),
|
List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(),
|
||||||
BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(),
|
BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(),
|
||||||
@ -809,6 +810,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
|||||||
|
|
||||||
IPage<BusAttendanceVo> busAttendanceVoIPage = baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(BusAttendance.class)
|
IPage<BusAttendanceVo> busAttendanceVoIPage = baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(BusAttendance.class)
|
||||||
.eq(BusAttendance::getUserId, userId)
|
.eq(BusAttendance::getUserId, userId)
|
||||||
|
.eq(StrUtil.isNotBlank(handle), BusAttendance::getHandle, handle)
|
||||||
.eq(b, BusAttendance::getProjectId, projectId)
|
.eq(b, BusAttendance::getProjectId, projectId)
|
||||||
.in(BusAttendance::getClockStatus, abnormalList)
|
.in(BusAttendance::getClockStatus, abnormalList)
|
||||||
.ge(BusAttendance::getClockDate, LocalDate.now().minusDays(29))
|
.ge(BusAttendance::getClockDate, LocalDate.now().minusDays(29))
|
||||||
|
|||||||
@ -603,7 +603,7 @@ public class BusLeaveServiceImpl extends ServiceImpl<BusLeaveMapper, BusLeave>
|
|||||||
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
||||||
);
|
);
|
||||||
for (BusAttendance attendance : list) {
|
for (BusAttendance attendance : list) {
|
||||||
attendance.setClockStatus(BusAttendanceClockStatusEnum.LATE.getValue());
|
attendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVE.getValue());
|
||||||
}
|
}
|
||||||
if(!list.isEmpty()){
|
if(!list.isEmpty()){
|
||||||
attendanceService.updateBatchById(list);
|
attendanceService.updateBatchById(list);
|
||||||
@ -619,7 +619,7 @@ public class BusLeaveServiceImpl extends ServiceImpl<BusLeaveMapper, BusLeave>
|
|||||||
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
||||||
);
|
);
|
||||||
for (BusAttendance attendance : list) {
|
for (BusAttendance attendance : list) {
|
||||||
attendance.setClockStatus(BusAttendanceClockStatusEnum.LATE.getValue());
|
attendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVE.getValue());
|
||||||
}
|
}
|
||||||
if(!list.isEmpty()){
|
if(!list.isEmpty()){
|
||||||
attendanceService.updateBatchById(list);
|
attendanceService.updateBatchById(list);
|
||||||
@ -635,7 +635,7 @@ public class BusLeaveServiceImpl extends ServiceImpl<BusLeaveMapper, BusLeave>
|
|||||||
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
.eq(BusAttendance::getUserId, busLeave.getUserId())
|
||||||
);
|
);
|
||||||
for (BusAttendance attendance : list) {
|
for (BusAttendance attendance : list) {
|
||||||
attendance.setClockStatus(BusAttendanceClockStatusEnum.LATE.getValue());
|
attendance.setClockStatus(BusAttendanceClockStatusEnum.LEAVE.getValue());
|
||||||
}
|
}
|
||||||
if(!list.isEmpty()){
|
if(!list.isEmpty()){
|
||||||
attendanceService.updateBatchById(list);
|
attendanceService.updateBatchById(list);
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import org.dromara.common.enums.AppUserTypeEnum;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.common.utils.AsyncUtil;
|
||||||
import org.dromara.common.utils.IdCardEncryptorUtil;
|
import org.dromara.common.utils.IdCardEncryptorUtil;
|
||||||
import org.dromara.contractor.domain.SubConstructionUser;
|
import org.dromara.contractor.domain.SubConstructionUser;
|
||||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||||
@ -90,6 +91,8 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
|||||||
@Resource
|
@Resource
|
||||||
private ISysOssService ossService;
|
private ISysOssService ossService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AsyncUtil asyncUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询项目班组下的成员
|
* 查询项目班组下的成员
|
||||||
@ -219,6 +222,8 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
|||||||
userService.updateFb(constructionUser.getSysUserId(),req.getContractorId(),false);
|
userService.updateFb(constructionUser.getSysUserId(),req.getContractorId(),false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
asyncUtil.sendPersonnel(req.getTeamId(), constructionUser);
|
||||||
|
|
||||||
return projectTeamMember.getId();
|
return projectTeamMember.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,6 +361,8 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
|||||||
.set(SubConstructionUser::getTeamId, null)
|
.set(SubConstructionUser::getTeamId, null)
|
||||||
.set(SubConstructionUser::getLeaveDate, new Date());
|
.set(SubConstructionUser::getLeaveDate, new Date());
|
||||||
constructionUserService.update(constructionUserLuw);
|
constructionUserService.update(constructionUserLuw);
|
||||||
|
|
||||||
|
asyncUtil.deletePersonnel(constructionUser);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.vehicle.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.domain.R;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
import org.dromara.common.log.annotation.Log;
|
||||||
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.common.web.core.BaseController;
|
||||||
|
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||||
|
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||||
|
import org.dromara.vehicle.service.IVehVehicleInfoService;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/vehicle/vehicleInfo")
|
||||||
|
public class VehVehicleInfoController extends BaseController {
|
||||||
|
|
||||||
|
private final IVehVehicleInfoService vehVehicleInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询车辆信息列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:list")
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<VehVehicleInfoVo> list(VehVehicleInfoBo bo, PageQuery pageQuery) {
|
||||||
|
return vehVehicleInfoService.queryPageList(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出车辆信息列表
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:export")
|
||||||
|
@Log(title = "车辆信息", businessType = BusinessType.EXPORT)
|
||||||
|
@PostMapping("/export")
|
||||||
|
public void export(VehVehicleInfoBo bo, HttpServletResponse response) {
|
||||||
|
List<VehVehicleInfoVo> list = vehVehicleInfoService.queryList(bo);
|
||||||
|
ExcelUtil.exportExcel(list, "车辆信息", VehVehicleInfoVo.class, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取车辆信息详细信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:query")
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public R<VehVehicleInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable Long id) {
|
||||||
|
return R.ok(vehVehicleInfoService.queryById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增车辆信息
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:add")
|
||||||
|
@Log(title = "车辆信息", businessType = BusinessType.INSERT)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PostMapping()
|
||||||
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody VehVehicleInfoBo bo) {
|
||||||
|
return toAjax(vehVehicleInfoService.insertByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改车辆信息
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:edit")
|
||||||
|
@Log(title = "车辆信息", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit()
|
||||||
|
@PutMapping()
|
||||||
|
public R<Void> edit(@Validated(EditGroup.class) @RequestBody VehVehicleInfoBo bo) {
|
||||||
|
return toAjax(vehVehicleInfoService.updateByBo(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除车辆信息
|
||||||
|
*
|
||||||
|
* @param ids 主键串
|
||||||
|
*/
|
||||||
|
@SaCheckPermission("vehicle:vehicleInfo:remove")
|
||||||
|
@Log(title = "车辆信息", businessType = BusinessType.DELETE)
|
||||||
|
@DeleteMapping("/{ids}")
|
||||||
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
return toAjax(vehVehicleInfoService.deleteWithValidByIds(List.of(ids), true));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,148 @@
|
|||||||
|
package org.dromara.vehicle.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;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息对象 veh_vehicle_info
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("veh_vehicle_info")
|
||||||
|
public class VehVehicleInfo extends BaseEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌号
|
||||||
|
*/
|
||||||
|
private String plateNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆品牌
|
||||||
|
*/
|
||||||
|
private String vehicleBrand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆类型
|
||||||
|
*/
|
||||||
|
private String vehicleType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆颜色
|
||||||
|
*/
|
||||||
|
private String vehicleColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 座位数
|
||||||
|
*/
|
||||||
|
private Integer seatCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 燃料类型
|
||||||
|
*/
|
||||||
|
private String fuelType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆状态
|
||||||
|
*/
|
||||||
|
private String vehicleStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车长(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleLength;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车宽(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleWidth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车高(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleHeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轴距(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal wheelBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮距(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal wheelTrack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆性质
|
||||||
|
*/
|
||||||
|
private String ownerType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租赁方信息
|
||||||
|
*/
|
||||||
|
private String rentalCompany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记证书编号(车管所登记凭证)
|
||||||
|
*/
|
||||||
|
private String registrationCertNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记日期
|
||||||
|
*/
|
||||||
|
private LocalDate registerDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置日期
|
||||||
|
*/
|
||||||
|
private LocalDate purchaseDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置价格
|
||||||
|
*/
|
||||||
|
private BigDecimal purchasePrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保险到期时间
|
||||||
|
*/
|
||||||
|
private LocalDate insuranceExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 年检到期时间
|
||||||
|
*/
|
||||||
|
private LocalDate inspectionExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件ID
|
||||||
|
*/
|
||||||
|
private String fileIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,158 @@
|
|||||||
|
package org.dromara.vehicle.domain.bo;
|
||||||
|
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息业务对象 veh_vehicle_info
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = VehVehicleInfo.class, reverseConvertGenerate = false)
|
||||||
|
public class VehVehicleInfoBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@NotNull(message = "项目ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌号
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车牌号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String plateNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆品牌
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车辆品牌不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String vehicleBrand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆类型
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车辆类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String vehicleType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆颜色
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车辆颜色不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String vehicleColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 座位数
|
||||||
|
*/
|
||||||
|
@NotNull(message = "座位数不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private Integer seatCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 燃料类型
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "燃料类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String fuelType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆状态
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车辆状态不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String vehicleStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车长(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleLength;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车宽(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleWidth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车高(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal vehicleHeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轴距(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal wheelBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮距(米)
|
||||||
|
*/
|
||||||
|
private BigDecimal wheelTrack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆性质
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "车辆性质不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
|
private String ownerType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租赁方信息
|
||||||
|
*/
|
||||||
|
private String rentalCompany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记证书编号(车管所登记凭证)
|
||||||
|
*/
|
||||||
|
private String registrationCertNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记日期
|
||||||
|
*/
|
||||||
|
private LocalDate registerDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置日期
|
||||||
|
*/
|
||||||
|
private LocalDate purchaseDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置价格
|
||||||
|
*/
|
||||||
|
private BigDecimal purchasePrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保险到期时间
|
||||||
|
*/
|
||||||
|
private LocalDate insuranceExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 年检到期时间
|
||||||
|
*/
|
||||||
|
private LocalDate inspectionExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件ID
|
||||||
|
*/
|
||||||
|
private String fileIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,187 @@
|
|||||||
|
package org.dromara.vehicle.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||||
|
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.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息视图对象 veh_vehicle_info
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = VehVehicleInfo.class)
|
||||||
|
public class VehVehicleInfoVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "主键ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目ID")
|
||||||
|
private Long projectId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车牌号
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车牌号")
|
||||||
|
private String plateNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆品牌
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车辆品牌")
|
||||||
|
private String vehicleBrand;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆类型
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车辆类型")
|
||||||
|
private String vehicleType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆颜色
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车辆颜色")
|
||||||
|
private String vehicleColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 座位数
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "座位数")
|
||||||
|
private Integer seatCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 燃料类型
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "燃料类型", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "veh_vehicle_fuel_type")
|
||||||
|
private String fuelType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆状态
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车辆状态", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "veh_vehicle_status")
|
||||||
|
private String vehicleStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车长(米)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车长", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "米=")
|
||||||
|
private BigDecimal vehicleLength;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车宽(米)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车宽", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "米=")
|
||||||
|
private BigDecimal vehicleWidth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车高(米)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车高", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "米=")
|
||||||
|
private BigDecimal vehicleHeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轴距(米)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "轴距", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "米=")
|
||||||
|
private BigDecimal wheelBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮距(米)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "轮距", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "米=")
|
||||||
|
private BigDecimal wheelTrack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆性质
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "车辆性质", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "veh_vehicle_owner_type")
|
||||||
|
private String ownerType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 租赁方信息
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "租赁方信息")
|
||||||
|
private String rentalCompany;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记证书编号(车管所登记凭证)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "登记证书编号", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(readConverterExp = "车=管所登记凭证")
|
||||||
|
private String registrationCertNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 登记日期
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "登记日期")
|
||||||
|
private LocalDate registerDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置日期
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "购置日期")
|
||||||
|
private LocalDate purchaseDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 购置价格
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "购置价格")
|
||||||
|
private BigDecimal purchasePrice;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保险到期时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "保险到期时间")
|
||||||
|
private LocalDate insuranceExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 年检到期时间
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "年检到期时间")
|
||||||
|
private LocalDate inspectionExpiry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 附件ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "附件ID")
|
||||||
|
private String fileIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.vehicle.mapper;
|
||||||
|
|
||||||
|
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||||
|
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息Mapper接口
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
public interface VehVehicleInfoMapper extends BaseMapperPlus<VehVehicleInfo, VehVehicleInfoVo> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
package org.dromara.vehicle.service;
|
||||||
|
|
||||||
|
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||||
|
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||||
|
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||||
|
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 lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
public interface IVehVehicleInfoService extends IService<VehVehicleInfo>{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询车辆信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 车辆信息
|
||||||
|
*/
|
||||||
|
VehVehicleInfoVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询车辆信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 车辆信息分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<VehVehicleInfoVo> queryPageList(VehVehicleInfoBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的车辆信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 车辆信息列表
|
||||||
|
*/
|
||||||
|
List<VehVehicleInfoVo> queryList(VehVehicleInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增车辆信息
|
||||||
|
*
|
||||||
|
* @param bo 车辆信息
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(VehVehicleInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改车辆信息
|
||||||
|
*
|
||||||
|
* @param bo 车辆信息
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(VehVehicleInfoBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除车辆信息信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
}
|
||||||
@ -0,0 +1,151 @@
|
|||||||
|
package org.dromara.vehicle.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.vehicle.domain.VehVehicleInfo;
|
||||||
|
import org.dromara.vehicle.domain.bo.VehVehicleInfoBo;
|
||||||
|
import org.dromara.vehicle.domain.vo.VehVehicleInfoVo;
|
||||||
|
import org.dromara.vehicle.mapper.VehVehicleInfoMapper;
|
||||||
|
import org.dromara.vehicle.service.IVehVehicleInfoService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息Service业务层处理
|
||||||
|
*
|
||||||
|
* @author lilemy
|
||||||
|
* @date 2025-10-25
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class VehVehicleInfoServiceImpl extends ServiceImpl<VehVehicleInfoMapper, VehVehicleInfo>
|
||||||
|
implements IVehVehicleInfoService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询车辆信息
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 车辆信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public VehVehicleInfoVo queryById(Long id){
|
||||||
|
return baseMapper.selectVoById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询车辆信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 车辆信息分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<VehVehicleInfoVo> queryPageList(VehVehicleInfoBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<VehVehicleInfo> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<VehVehicleInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的车辆信息列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 车辆信息列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<VehVehicleInfoVo> queryList(VehVehicleInfoBo bo) {
|
||||||
|
LambdaQueryWrapper<VehVehicleInfo> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<VehVehicleInfo> buildQueryWrapper(VehVehicleInfoBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<VehVehicleInfo> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByDesc(VehVehicleInfo::getId);
|
||||||
|
lqw.eq(bo.getProjectId() != null, VehVehicleInfo::getProjectId, bo.getProjectId());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getPlateNumber()), VehVehicleInfo::getPlateNumber, bo.getPlateNumber());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getVehicleBrand()), VehVehicleInfo::getVehicleBrand, bo.getVehicleBrand());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getVehicleType()), VehVehicleInfo::getVehicleType, bo.getVehicleType());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getVehicleColor()), VehVehicleInfo::getVehicleColor, bo.getVehicleColor());
|
||||||
|
lqw.eq(bo.getSeatCount() != null, VehVehicleInfo::getSeatCount, bo.getSeatCount());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFuelType()), VehVehicleInfo::getFuelType, bo.getFuelType());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getVehicleStatus()), VehVehicleInfo::getVehicleStatus, bo.getVehicleStatus());
|
||||||
|
lqw.eq(bo.getVehicleLength() != null, VehVehicleInfo::getVehicleLength, bo.getVehicleLength());
|
||||||
|
lqw.eq(bo.getVehicleWidth() != null, VehVehicleInfo::getVehicleWidth, bo.getVehicleWidth());
|
||||||
|
lqw.eq(bo.getVehicleHeight() != null, VehVehicleInfo::getVehicleHeight, bo.getVehicleHeight());
|
||||||
|
lqw.eq(bo.getWheelBase() != null, VehVehicleInfo::getWheelBase, bo.getWheelBase());
|
||||||
|
lqw.eq(bo.getWheelTrack() != null, VehVehicleInfo::getWheelTrack, bo.getWheelTrack());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getOwnerType()), VehVehicleInfo::getOwnerType, bo.getOwnerType());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getRentalCompany()), VehVehicleInfo::getRentalCompany, bo.getRentalCompany());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getRegistrationCertNo()), VehVehicleInfo::getRegistrationCertNo, bo.getRegistrationCertNo());
|
||||||
|
lqw.eq(bo.getRegisterDate() != null, VehVehicleInfo::getRegisterDate, bo.getRegisterDate());
|
||||||
|
lqw.eq(bo.getPurchaseDate() != null, VehVehicleInfo::getPurchaseDate, bo.getPurchaseDate());
|
||||||
|
lqw.eq(bo.getPurchasePrice() != null, VehVehicleInfo::getPurchasePrice, bo.getPurchasePrice());
|
||||||
|
lqw.eq(bo.getInsuranceExpiry() != null, VehVehicleInfo::getInsuranceExpiry, bo.getInsuranceExpiry());
|
||||||
|
lqw.eq(bo.getInspectionExpiry() != null, VehVehicleInfo::getInspectionExpiry, bo.getInspectionExpiry());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getFileIds()), VehVehicleInfo::getFileIds, bo.getFileIds());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增车辆信息
|
||||||
|
*
|
||||||
|
* @param bo 车辆信息
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(VehVehicleInfoBo bo) {
|
||||||
|
VehVehicleInfo add = MapstructUtils.convert(bo, VehVehicleInfo.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改车辆信息
|
||||||
|
*
|
||||||
|
* @param bo 车辆信息
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(VehVehicleInfoBo bo) {
|
||||||
|
VehVehicleInfo update = MapstructUtils.convert(bo, VehVehicleInfo.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(VehVehicleInfo entity){
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除车辆信息信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if(isValid){
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -35,7 +35,7 @@ import org.dromara.xzd.biddingManagement.biaoqianlixiang.service.IXzdBidPreProje
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/biddingManagement/bidPreProject")
|
@RequestMapping("/xzd/biddingManagement/bidPreProject")
|
||||||
public class XzdBidPreProjectController extends BaseController {
|
public class XzdBidPreProjectController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBidPreProjectService xzdBidPreProjectService;
|
private final IXzdBidPreProjectService xzdBidPreProjectService;
|
||||||
@ -81,7 +81,7 @@ public class XzdBidPreProjectController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingManagement:bidPreProject:query")
|
//@SaCheckPermission("biddingManagement:bidPreProject:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<QuerListXzdBidPreVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<QuerListXzdBidPreVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdProjectRiskAssessmentController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("xzd:projectRiskAssessment:query")
|
//@SaCheckPermission("xzd:projectRiskAssessment:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdProjectRiskAssessmentVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdProjectRiskAssessmentVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -147,7 +147,7 @@ public class XzdBidPreProjectVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 联投单位
|
* 联投单位
|
||||||
*/
|
*/
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "jointInvestmentEntity")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "jointInvestmentEntity")
|
||||||
private String jointInvestmentEntityName;
|
private String jointInvestmentEntityName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -184,7 +184,7 @@ public class XzdBqlxProjectInfoVo implements Serializable {
|
|||||||
* 建设单位
|
* 建设单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "建设单位")
|
@ExcelProperty(value = "建设单位")
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "constructionUnit")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "constructionUnit")
|
||||||
private String constructionUnitName;
|
private String constructionUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -208,7 +208,7 @@ public class XzdBqlxProjectInfoVo implements Serializable {
|
|||||||
* 招标单位
|
* 招标单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "招标单位")
|
@ExcelProperty(value = "招标单位")
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "biddingUnit")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "biddingUnit")
|
||||||
private String biddingUnitName;
|
private String biddingUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/biddingDocument/biddingFileEstimate")
|
@RequestMapping("/xzd/biddingDocument/biddingFileEstimate")
|
||||||
public class XzdBiddingFileEstimateController extends BaseController {
|
public class XzdBiddingFileEstimateController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBiddingFileEstimateService xzdBiddingFileEstimateService;
|
private final IXzdBiddingFileEstimateService xzdBiddingFileEstimateService;
|
||||||
@ -61,7 +61,7 @@ public class XzdBiddingFileEstimateController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:biddingFileEstimate:query")
|
// @SaCheckPermission("biddingDocument:biddingFileEstimate:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdBiddingFileEstimateVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdBiddingFileEstimateVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -127,4 +127,7 @@ public class XzdBiddingFileEstimate extends BaseEntity {
|
|||||||
private String auditStatus;
|
private String auditStatus;
|
||||||
|
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,5 +123,7 @@ public class XzdBiddingFileEstimateBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String auditStatus;
|
private String auditStatus;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,6 +82,13 @@ public class XzdBiddingFileEstimateVo implements Serializable {
|
|||||||
@ExcelProperty(value = "招标单位")
|
@ExcelProperty(value = "招标单位")
|
||||||
private String biddingUnit;
|
private String biddingUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 招标单位
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "招标单位")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "biddingUnit")
|
||||||
|
private String biddingUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 招标方式
|
* 招标方式
|
||||||
*/
|
*/
|
||||||
@ -176,6 +183,9 @@ public class XzdBiddingFileEstimateVo implements Serializable {
|
|||||||
@TableField(fill = FieldFill.INSERT)
|
@TableField(fill = FieldFill.INSERT)
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -108,6 +108,7 @@ public class XzdBiddingFileEstimateServiceImpl extends ServiceImpl<XzdBiddingFil
|
|||||||
lqw.orderByDesc(XzdBiddingFileEstimate::getId);
|
lqw.orderByDesc(XzdBiddingFileEstimate::getId);
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdBiddingFileEstimate::getDocumentCode, bo.getDocumentCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdBiddingFileEstimate::getDocumentCode, bo.getDocumentCode());
|
||||||
lqw.eq(bo.getDocumentDate() != null, XzdBiddingFileEstimate::getDocumentDate, bo.getDocumentDate());
|
lqw.eq(bo.getDocumentDate() != null, XzdBiddingFileEstimate::getDocumentDate, bo.getDocumentDate());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdBiddingFileEstimate::getDeptId, bo.getDeptId());
|
||||||
lqw.like(bo.getProjectName() !=null, XzdBiddingFileEstimate::getProjectName, bo.getProjectName());
|
lqw.like(bo.getProjectName() !=null, XzdBiddingFileEstimate::getProjectName, bo.getProjectName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdBiddingFileEstimate::getTitle, bo.getTitle());
|
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdBiddingFileEstimate::getTitle, bo.getTitle());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectLocation()), XzdBiddingFileEstimate::getProjectLocation, bo.getProjectLocation());
|
lqw.eq(StringUtils.isNotBlank(bo.getProjectLocation()), XzdBiddingFileEstimate::getProjectLocation, bo.getProjectLocation());
|
||||||
|
|||||||
@ -34,7 +34,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/biddingDocument/biddingDocument")
|
@RequestMapping("/xzd/biddingDocument/biddingDocument")
|
||||||
public class XzdBiddingDocumentController extends BaseController {
|
public class XzdBiddingDocumentController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBiddingDocumentService xzdBiddingDocumentService;
|
private final IXzdBiddingDocumentService xzdBiddingDocumentService;
|
||||||
@ -64,7 +64,7 @@ public class XzdBiddingDocumentController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:biddingDocument:query")
|
// @SaCheckPermission("biddingDocument:biddingDocument:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdBiddingDocumentVoBylist> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdBiddingDocumentVoBylist> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdTbwjBusinessBidController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:tbwjBusinessBid:query")
|
// @SaCheckPermission("biddingDocument:tbwjBusinessBid:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdTbwjBusinessBidVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdTbwjBusinessBidVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdTbwjBusinessBidRequirementsController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:tbwjBusinessBidRequirements:query")
|
// @SaCheckPermission("biddingDocument:tbwjBusinessBidRequirements:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdTbwjBusinessBidRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdTbwjBusinessBidRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdTbwjQualificationRequirementsController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:tbwjQualificationRequirements:query")
|
// @SaCheckPermission("biddingDocument:tbwjQualificationRequirements:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdTbwjQualificationRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdTbwjQualificationRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdTbwjTechnicalBidController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:tbwjTechnicalBid:query")
|
// @SaCheckPermission("biddingDocument:tbwjTechnicalBid:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdTbwjTechnicalBidVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdTbwjTechnicalBidVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -62,7 +62,7 @@ public class XzdTbwjTechnicalBidRequirementsController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingDocument:tbwjTechnicalBidRequirements:query")
|
// @SaCheckPermission("biddingDocument:tbwjTechnicalBidRequirements:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdTbwjTechnicalBidRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdTbwjTechnicalBidRequirementsVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -74,12 +74,26 @@ public class XzdBiddingDocumentVo implements Serializable {
|
|||||||
@ExcelProperty(value = "项目类型ID")
|
@ExcelProperty(value = "项目类型ID")
|
||||||
private Long projectType;
|
private Long projectType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目类型ID
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "项目类型ID")
|
||||||
|
private String projectTypeName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 投标单位
|
* 投标单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "投标单位")
|
@ExcelProperty(value = "投标单位")
|
||||||
private String bidUnit;
|
private String bidUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 投标单位
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "投标单位")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "bidUnit")
|
||||||
|
private String bidUnitName;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单据日期
|
* 单据日期
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -25,6 +25,8 @@ import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdBidding
|
|||||||
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjBusinessBidService;
|
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjBusinessBidService;
|
||||||
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjTechnicalBidService;
|
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjTechnicalBidService;
|
||||||
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjZsyqService;
|
import org.dromara.xzd.biddingManagement.biddingDocumentList.service.IXzdTbwjZsyqService;
|
||||||
|
import org.dromara.xzd.domain.vo.XzdProjectTypeVo;
|
||||||
|
import org.dromara.xzd.service.IXzdProjectTypeService;
|
||||||
import org.dromara.xzd.utilS.AreaUtil;
|
import org.dromara.xzd.utilS.AreaUtil;
|
||||||
import org.locationtech.jts.edgegraph.HalfEdge;
|
import org.locationtech.jts.edgegraph.HalfEdge;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@ -59,6 +61,8 @@ public class XzdBiddingDocumentServiceImpl extends ServiceImpl<XzdBiddingDocumen
|
|||||||
|
|
||||||
private final IXzdTbwjZsyqService iXzdTbwjZsyqService;
|
private final IXzdTbwjZsyqService iXzdTbwjZsyqService;
|
||||||
|
|
||||||
|
private final IXzdProjectTypeService xzdProjectTypeService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询投标文件
|
* 查询投标文件
|
||||||
*
|
*
|
||||||
@ -94,9 +98,25 @@ public class XzdBiddingDocumentServiceImpl extends ServiceImpl<XzdBiddingDocumen
|
|||||||
public TableDataInfo<XzdBiddingDocumentVo> queryPageList(XzdBiddingDocumentBo bo, PageQuery pageQuery) {
|
public TableDataInfo<XzdBiddingDocumentVo> queryPageList(XzdBiddingDocumentBo bo, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<XzdBiddingDocument> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<XzdBiddingDocument> lqw = buildQueryWrapper(bo);
|
||||||
Page<XzdBiddingDocumentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
Page<XzdBiddingDocumentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
result.getRecords().forEach(this::getName);
|
||||||
|
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getName(XzdBiddingDocumentVo xzdBiddingDocumentVo) {
|
||||||
|
|
||||||
|
if (xzdBiddingDocumentVo != null){
|
||||||
|
Long projectType = xzdBiddingDocumentVo.getProjectType();
|
||||||
|
if (projectType != null){
|
||||||
|
XzdProjectTypeVo xzdProjectTypeVo = xzdProjectTypeService.queryById(projectType);
|
||||||
|
if (xzdProjectTypeVo != null){
|
||||||
|
xzdBiddingDocumentVo.setProjectTypeName(xzdProjectTypeVo.getTypeName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询符合条件的投标文件列表
|
* 查询符合条件的投标文件列表
|
||||||
*
|
*
|
||||||
|
|||||||
@ -33,7 +33,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/earnestMoney/bidDepositPayment")
|
@RequestMapping("/xzd/earnestMoney/bidDepositPayment")
|
||||||
public class XzdBidDepositPaymentController extends BaseController {
|
public class XzdBidDepositPaymentController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBidDepositPaymentService xzdBidDepositPaymentService;
|
private final IXzdBidDepositPaymentService xzdBidDepositPaymentService;
|
||||||
@ -63,7 +63,7 @@ public class XzdBidDepositPaymentController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("earnestMoney:bidDepositPayment:query")
|
//@SaCheckPermission("earnestMoney:bidDepositPayment:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdBidDepositPaymentByBqlx> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdBidDepositPaymentByBqlx> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -33,7 +33,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/biddingManagement/bidDepositRecovery")
|
@RequestMapping("/xzd/biddingManagement/bidDepositRecovery")
|
||||||
public class XzdBidDepositRecoveryController extends BaseController {
|
public class XzdBidDepositRecoveryController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBidDepositRecoveryService xzdBidDepositRecoveryService;
|
private final IXzdBidDepositRecoveryService xzdBidDepositRecoveryService;
|
||||||
@ -63,7 +63,7 @@ public class XzdBidDepositRecoveryController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("biddingManagement:bidDepositRecovery:query")
|
// @SaCheckPermission("biddingManagement:bidDepositRecovery:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdBidDepositRecoveryXqVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdBidDepositRecoveryXqVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.*;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -60,12 +61,12 @@ public class XzdBidDepositRecovery extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 工程造价
|
* 工程造价
|
||||||
*/
|
*/
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回金额
|
* 收回金额
|
||||||
*/
|
*/
|
||||||
private Long recoveryAmount;
|
private BigDecimal recoveryAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回金额大写
|
* 收回金额大写
|
||||||
@ -75,7 +76,7 @@ public class XzdBidDepositRecovery extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 资料费
|
* 资料费
|
||||||
*/
|
*/
|
||||||
private Long dataFee;
|
private BigDecimal dataFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 资料费大写
|
* 资料费大写
|
||||||
@ -85,7 +86,7 @@ public class XzdBidDepositRecovery extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 退款金额
|
* 退款金额
|
||||||
*/
|
*/
|
||||||
private Long refundAmount;
|
private BigDecimal refundAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回日期
|
* 收回日期
|
||||||
@ -97,10 +98,13 @@ public class XzdBidDepositRecovery extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String depositStatus;
|
private String depositStatus;
|
||||||
|
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保证金金额
|
* 保证金金额
|
||||||
*/
|
*/
|
||||||
private Long depositAmount;
|
private BigDecimal depositAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保证金金额大写
|
* 保证金金额大写
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -60,12 +61,12 @@ public class XzdBidDepositRecoveryBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 工程造价
|
* 工程造价
|
||||||
*/
|
*/
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回金额
|
* 收回金额
|
||||||
*/
|
*/
|
||||||
private Long recoveryAmount;
|
private BigDecimal recoveryAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回金额大写
|
* 收回金额大写
|
||||||
@ -75,7 +76,7 @@ public class XzdBidDepositRecoveryBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 资料费
|
* 资料费
|
||||||
*/
|
*/
|
||||||
private Long dataFee;
|
private BigDecimal dataFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 资料费大写
|
* 资料费大写
|
||||||
@ -85,7 +86,7 @@ public class XzdBidDepositRecoveryBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 退款金额
|
* 退款金额
|
||||||
*/
|
*/
|
||||||
private Long refundAmount;
|
private BigDecimal refundAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回日期
|
* 收回日期
|
||||||
@ -100,7 +101,7 @@ public class XzdBidDepositRecoveryBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 保证金金额
|
* 保证金金额
|
||||||
*/
|
*/
|
||||||
private Long depositAmount;
|
private BigDecimal depositAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保证金金额大写
|
* 保证金金额大写
|
||||||
@ -183,6 +184,8 @@ public class XzdBidDepositRecoveryBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Integer gatheringNumber;
|
private Integer gatheringNumber;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收款单位(供应商信息)
|
* 收款单位(供应商信息)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.vo;
|
package org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -77,7 +78,7 @@ public class XzdBidDepositRecoveryVo implements Serializable {
|
|||||||
* 工程造价
|
* 工程造价
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "工程造价")
|
@ExcelProperty(value = "工程造价")
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回金额
|
* 收回金额
|
||||||
@ -95,7 +96,7 @@ public class XzdBidDepositRecoveryVo implements Serializable {
|
|||||||
* 资料费
|
* 资料费
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "资料费")
|
@ExcelProperty(value = "资料费")
|
||||||
private Long dataFee;
|
private BigDecimal dataFee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 资料费大写
|
* 资料费大写
|
||||||
@ -107,7 +108,7 @@ public class XzdBidDepositRecoveryVo implements Serializable {
|
|||||||
* 退款金额
|
* 退款金额
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "退款金额")
|
@ExcelProperty(value = "退款金额")
|
||||||
private Long refundAmount;
|
private BigDecimal refundAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收回日期
|
* 收回日期
|
||||||
@ -125,7 +126,7 @@ public class XzdBidDepositRecoveryVo implements Serializable {
|
|||||||
* 保证金金额
|
* 保证金金额
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "保证金金额")
|
@ExcelProperty(value = "保证金金额")
|
||||||
private Long depositAmount;
|
private BigDecimal depositAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保证金金额大写
|
* 保证金金额大写
|
||||||
@ -269,5 +270,7 @@ public class XzdBidDepositRecoveryVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String xmbm;
|
private String xmbm;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,6 +131,7 @@ public class XzdBidDepositRecoveryServiceImpl extends ServiceImpl<XzdBidDepositR
|
|||||||
lqw.eq(bo.getProjectType() != null, XzdBidDepositRecovery::getProjectType, bo.getProjectType());
|
lqw.eq(bo.getProjectType() != null, XzdBidDepositRecovery::getProjectType, bo.getProjectType());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdBidDepositRecovery::getBusinessMode, bo.getBusinessMode());
|
lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdBidDepositRecovery::getBusinessMode, bo.getBusinessMode());
|
||||||
lqw.eq(bo.getProjectCost() != null, XzdBidDepositRecovery::getProjectCost, bo.getProjectCost());
|
lqw.eq(bo.getProjectCost() != null, XzdBidDepositRecovery::getProjectCost, bo.getProjectCost());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdBidDepositRecovery::getDeptId, bo.getDeptId());
|
||||||
lqw.eq(bo.getRecoveryAmount() != null, XzdBidDepositRecovery::getRecoveryAmount, bo.getRecoveryAmount());
|
lqw.eq(bo.getRecoveryAmount() != null, XzdBidDepositRecovery::getRecoveryAmount, bo.getRecoveryAmount());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getRecoveryAmountCapital()), XzdBidDepositRecovery::getRecoveryAmountCapital, bo.getRecoveryAmountCapital());
|
lqw.eq(StringUtils.isNotBlank(bo.getRecoveryAmountCapital()), XzdBidDepositRecovery::getRecoveryAmountCapital, bo.getRecoveryAmountCapital());
|
||||||
lqw.eq(bo.getDataFee() != null, XzdBidDepositRecovery::getDataFee, bo.getDataFee());
|
lqw.eq(bo.getDataFee() != null, XzdBidDepositRecovery::getDataFee, bo.getDataFee());
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/paymentapplication/biddingAgencyFeePayment")
|
@RequestMapping("/xzd/paymentapplication/biddingAgencyFeePayment")
|
||||||
public class XzdBiddingAgencyFeePaymentController extends BaseController {
|
public class XzdBiddingAgencyFeePaymentController extends BaseController {
|
||||||
|
|
||||||
private final IXzdBiddingAgencyFeePaymentService xzdBiddingAgencyFeePaymentService;
|
private final IXzdBiddingAgencyFeePaymentService xzdBiddingAgencyFeePaymentService;
|
||||||
@ -61,7 +61,7 @@ public class XzdBiddingAgencyFeePaymentController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("paymentapplication:biddingAgencyFeePayment:query")
|
// @SaCheckPermission("paymentapplication:biddingAgencyFeePayment:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdBiddingAgencyFeePaymentVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdBiddingAgencyFeePaymentVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/postAnalysis/postBidAnalysis")
|
@RequestMapping("/xzd/postAnalysis/postBidAnalysis")
|
||||||
public class XzdPostBidAnalysisController extends BaseController {
|
public class XzdPostBidAnalysisController extends BaseController {
|
||||||
|
|
||||||
private final IXzdPostBidAnalysisService xzdPostBidAnalysisService;
|
private final IXzdPostBidAnalysisService xzdPostBidAnalysisService;
|
||||||
@ -62,7 +62,7 @@ public class XzdPostBidAnalysisController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("postAnalysis:postBidAnalysis:query")
|
// @SaCheckPermission("postAnalysis:postBidAnalysis:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdPostBidAnalysisVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdPostBidAnalysisVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.*;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
@ -44,7 +45,7 @@ public class XzdPostBidAnalysis extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 工程造价(万元)
|
* 工程造价(万元)
|
||||||
*/
|
*/
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
@ -79,12 +80,12 @@ public class XzdPostBidAnalysis extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 招标控制价(万元)
|
* 招标控制价(万元)
|
||||||
*/
|
*/
|
||||||
private Long controlPrice;
|
private BigDecimal controlPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(万元)
|
* 最终报价(万元)
|
||||||
*/
|
*/
|
||||||
private Long finalQuote;
|
private BigDecimal finalQuote;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 投标结果
|
* 投标结果
|
||||||
@ -104,7 +105,7 @@ public class XzdPostBidAnalysis extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 最终报价(元)
|
* 最终报价(元)
|
||||||
*/
|
*/
|
||||||
private Long finalQuoteYuan;
|
private BigDecimal finalQuoteYuan;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(大写)
|
* 最终报价(大写)
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -45,7 +46,7 @@ public class XzdPostBidAnalysisBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 工程造价(万元)
|
* 工程造价(万元)
|
||||||
*/
|
*/
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
@ -80,12 +81,12 @@ public class XzdPostBidAnalysisBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 招标控制价(万元)
|
* 招标控制价(万元)
|
||||||
*/
|
*/
|
||||||
private Long controlPrice;
|
private BigDecimal controlPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(万元)
|
* 最终报价(万元)
|
||||||
*/
|
*/
|
||||||
private Long finalQuote;
|
private BigDecimal finalQuote;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 投标结果
|
* 投标结果
|
||||||
@ -106,7 +107,7 @@ public class XzdPostBidAnalysisBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 最终报价(元)
|
* 最终报价(元)
|
||||||
*/
|
*/
|
||||||
private Long finalQuoteYuan;
|
private BigDecimal finalQuoteYuan;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(大写)
|
* 最终报价(大写)
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
package org.dromara.xzd.biddingManagement.postAnalysis.domain.vo;
|
package org.dromara.xzd.biddingManagement.postAnalysis.domain.vo;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
@ -9,6 +13,8 @@ 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.common.translation.annotation.Translation;
|
||||||
|
import org.dromara.common.translation.constant.TransConstant;
|
||||||
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdBhfxDwpm;
|
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdBhfxDwpm;
|
||||||
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdPostBidAnalysis;
|
import org.dromara.xzd.biddingManagement.postAnalysis.domain.XzdPostBidAnalysis;
|
||||||
|
|
||||||
@ -54,7 +60,7 @@ public class XzdPostBidAnalysisVo implements Serializable {
|
|||||||
* 工程造价(万元)
|
* 工程造价(万元)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "工程造价(万元)")
|
@ExcelProperty(value = "工程造价(万元)")
|
||||||
private Long projectCost;
|
private BigDecimal projectCost;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
@ -96,13 +102,13 @@ public class XzdPostBidAnalysisVo implements Serializable {
|
|||||||
* 招标控制价(万元)
|
* 招标控制价(万元)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "招标控制价(万元)")
|
@ExcelProperty(value = "招标控制价(万元)")
|
||||||
private Long controlPrice;
|
private BigDecimal controlPrice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(万元)
|
* 最终报价(万元)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "最终报价(万元)")
|
@ExcelProperty(value = "最终报价(万元)")
|
||||||
private Long finalQuote;
|
private BigDecimal finalQuote;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 投标结果
|
* 投标结果
|
||||||
@ -127,7 +133,7 @@ public class XzdPostBidAnalysisVo implements Serializable {
|
|||||||
* 最终报价(元)
|
* 最终报价(元)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "最终报价(元)")
|
@ExcelProperty(value = "最终报价(元)")
|
||||||
private Long finalQuoteYuan;
|
private BigDecimal finalQuoteYuan;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 最终报价(大写)
|
* 最终报价(大写)
|
||||||
@ -153,6 +159,24 @@ public class XzdPostBidAnalysisVo implements Serializable {
|
|||||||
@ExcelProperty(value = "审核状态")
|
@ExcelProperty(value = "审核状态")
|
||||||
private String auditStatus;
|
private String auditStatus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建者
|
||||||
|
*/
|
||||||
|
@TableField(fill = FieldFill.INSERT)
|
||||||
|
private Long createBy;
|
||||||
|
|
||||||
|
|
||||||
|
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
|
||||||
|
private String createByName;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
@TableField(fill = FieldFill.INSERT)
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
|
||||||
private List<XzdBhfxDwpmVo> pm;
|
private List<XzdBhfxDwpmVo> pm;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/comprehensive/csContractChange")
|
@RequestMapping("/xzd/comprehensive/csContractChange")
|
||||||
public class XzdCsContractChangeController extends BaseController {
|
public class XzdCsContractChangeController extends BaseController {
|
||||||
|
|
||||||
private final IXzdCsContractChangeService xzdCsContractChangeService;
|
private final IXzdCsContractChangeService xzdCsContractChangeService;
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/comprehensive/csContractInformation")
|
@RequestMapping("/xzd/comprehensive/csContractInformation")
|
||||||
public class XzdCsContractInformationController extends BaseController {
|
public class XzdCsContractInformationController extends BaseController {
|
||||||
|
|
||||||
private final IXzdCsContractInformationService xzdCsContractInformationService;
|
private final IXzdCsContractInformationService xzdCsContractInformationService;
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/comprehensive/csContractSuspend")
|
@RequestMapping("/xzd/comprehensive/csContractSuspend")
|
||||||
public class XzdCsContractSuspendController extends BaseController {
|
public class XzdCsContractSuspendController extends BaseController {
|
||||||
|
|
||||||
private final IXzdCsContractSuspendService xzdCsContractSuspendService;
|
private final IXzdCsContractSuspendService xzdCsContractSuspendService;
|
||||||
|
|||||||
@ -123,7 +123,7 @@ public class XzdCsContractChangeVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位")
|
@ExcelProperty(value = "乙方单位")
|
||||||
private Long partyB;
|
private Long partyB;
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "partyB")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyB")
|
||||||
private String partyBName;
|
private String partyBName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -115,7 +115,7 @@ public class XzdCsContractInformationVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位")
|
@ExcelProperty(value = "乙方单位")
|
||||||
private Long partyB;
|
private Long partyB;
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "partyB")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyB")
|
||||||
private String partyBName;
|
private String partyBName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -151,7 +151,7 @@ public class XzdCsContractInformationVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "开票单位")
|
@ExcelProperty(value = "开票单位")
|
||||||
private Long invoiceIssuer;
|
private Long invoiceIssuer;
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "invoiceIssuer")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceIssuer")
|
||||||
private String invoiceIssuerName;
|
private String invoiceIssuerName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -90,7 +90,7 @@ public class XzdCsContractSuspendVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位")
|
@ExcelProperty(value = "乙方单位")
|
||||||
private Long artyBUnit;
|
private Long artyBUnit;
|
||||||
@Translation(type = TransConstant.XZD_GYSXX_ID_TO_NAME, mapper = "artyBUnit")
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
|
||||||
private String artyBUnitName;
|
private String artyBUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -0,0 +1,21 @@
|
|||||||
|
package org.dromara.xzd.config;
|
||||||
|
|
||||||
|
import org.dromara.xzd.interceptor.RequestLogInterceptor;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class WebMvcConfig implements WebMvcConfigurer {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RequestLogInterceptor requestLogInterceptor;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
|
registry.addInterceptor(requestLogInterceptor)
|
||||||
|
.addPathPatterns("/xzd/**") // 拦截所有路径
|
||||||
|
.order(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/contractTermination/purchaseContractSuspend")
|
@RequestMapping("/xzd/contractTermination/purchaseContractSuspend")
|
||||||
public class XzdPurchaseContractSuspendController extends BaseController {
|
public class XzdPurchaseContractSuspendController extends BaseController {
|
||||||
|
|
||||||
private final IXzdPurchaseContractSuspendService xzdPurchaseContractSuspendService;
|
private final IXzdPurchaseContractSuspendService xzdPurchaseContractSuspendService;
|
||||||
@ -61,7 +61,7 @@ public class XzdPurchaseContractSuspendController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractTermination:purchaseContractSuspend:query")
|
// @SaCheckPermission("contractTermination:purchaseContractSuspend:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdPurchaseContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdPurchaseContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -60,6 +60,8 @@ public class XzdPurchaseContractSuspend extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private LocalDate terminationDate;
|
private LocalDate terminationDate;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目名称
|
* 项目名称
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -73,6 +73,7 @@ public class XzdPurchaseContractSuspendBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long partyAUnit;
|
private Long partyAUnit;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
/**
|
/**
|
||||||
* 终止原因
|
* 终止原因
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -76,6 +76,8 @@ public class XzdPurchaseContractSuspendVo implements Serializable {
|
|||||||
@ExcelProperty(value = "合同名称")
|
@ExcelProperty(value = "合同名称")
|
||||||
private String contractName;
|
private String contractName;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终止日期
|
* 终止日期
|
||||||
*/
|
*/
|
||||||
@ -98,6 +100,7 @@ public class XzdPurchaseContractSuspendVo implements Serializable {
|
|||||||
* 乙方单位名称
|
* 乙方单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位名称")
|
@ExcelProperty(value = "乙方单位名称")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
|
||||||
private String artyBUnitName;
|
private String artyBUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,6 +113,7 @@ public class XzdPurchaseContractSuspendVo implements Serializable {
|
|||||||
* 甲方单位名称
|
* 甲方单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "甲方单位名称")
|
@ExcelProperty(value = "甲方单位名称")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
|
||||||
private String partyAUnitName;
|
private String partyAUnitName;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -55,8 +55,8 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
|
|||||||
private final IXzdPurchaseContractInformationService xzdPurchaseContractInformationService;
|
private final IXzdPurchaseContractInformationService xzdPurchaseContractInformationService;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
// @Autowired
|
||||||
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
|
// private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -83,27 +83,6 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
|
|||||||
private void setValue(List<XzdPurchaseContractSuspendVo> res) {
|
private void setValue(List<XzdPurchaseContractSuspendVo> res) {
|
||||||
|
|
||||||
for (XzdPurchaseContractSuspendVo item : res) {
|
for (XzdPurchaseContractSuspendVo item : res) {
|
||||||
// //项目名称
|
|
||||||
// if (item.getProject() != null){
|
|
||||||
// String projectName = xzdProjectService.queryNameById(item.getProject());
|
|
||||||
// if (projectName != null){
|
|
||||||
// item.setProjectName(projectName);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//甲方单位(客户信息列表)
|
|
||||||
R<QuerCorrespondentDto> byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit());
|
|
||||||
if (byid!=null){
|
|
||||||
if (byid.getData().getXzdCustomerinformation() != null){
|
|
||||||
item.setPartyAUnitName(byid.getData().getXzdCustomerinformation().getUnitName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//乙方单位(供应商信息列表)
|
|
||||||
if (item.getArtyBUnit() != null){
|
|
||||||
String unitName = xzdSupplierInfoService.queryNameById(item.getArtyBUnit());
|
|
||||||
if (unitName != null){
|
|
||||||
item.setArtyBUnitName(unitName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 采购合同信息编码
|
// 采购合同信息编码
|
||||||
if (item.getContractInformationId() != null){
|
if (item.getContractInformationId() != null){
|
||||||
XzdPurchaseContractInformationVo queryById = xzdPurchaseContractInformationService.queryById(item.getContractInformationId());
|
XzdPurchaseContractInformationVo queryById = xzdPurchaseContractInformationService.queryById(item.getContractInformationId());
|
||||||
@ -150,6 +129,7 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
|
|||||||
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdPurchaseContractSuspend::getReceiptsCode, bo.getReceiptsCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdPurchaseContractSuspend::getReceiptsCode, bo.getReceiptsCode());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdPurchaseContractSuspend::getTitle, bo.getTitle());
|
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdPurchaseContractSuspend::getTitle, bo.getTitle());
|
||||||
lqw.eq(bo.getDocumentDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getDocumentDate());
|
lqw.eq(bo.getDocumentDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getDocumentDate());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdPurchaseContractSuspend::getDeptId, bo.getDeptId());
|
||||||
lqw.ge(bo.getStartDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getStartDate());
|
lqw.ge(bo.getStartDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getStartDate());
|
||||||
lqw.le(bo.getEndDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getEndDate());
|
lqw.le(bo.getEndDate() != null, XzdPurchaseContractSuspend::getDocumentDate, bo.getEndDate());
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/hetongbiangeng/purchaseContractAlteration")
|
@RequestMapping("/xzd/hetongbiangeng/purchaseContractAlteration")
|
||||||
public class XzdPurchaseContractAlterationController extends BaseController {
|
public class XzdPurchaseContractAlterationController extends BaseController {
|
||||||
|
|
||||||
private final IXzdPurchaseContractAlterationService xzdPurchaseContractAlterationService;
|
private final IXzdPurchaseContractAlterationService xzdPurchaseContractAlterationService;
|
||||||
@ -61,7 +61,7 @@ public class XzdPurchaseContractAlterationController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("hetongbiangeng:purchaseContractAlteration:query")
|
// @SaCheckPermission("hetongbiangeng:purchaseContractAlteration:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdPurchaseContractAlterationVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdPurchaseContractAlterationVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -106,6 +106,8 @@ public class XzdPurchaseContractAlteration extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String warning;
|
private String warning;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 累计变更金额
|
* 累计变更金额
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -66,6 +66,8 @@ public class XzdPurchaseContractAlterationBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String contractType;
|
private String contractType;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 变更类型
|
* 变更类型
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -96,6 +96,8 @@ public class XzdPurchaseContractAlterationVo implements Serializable {
|
|||||||
@ExcelProperty(value = "变更类型")
|
@ExcelProperty(value = "变更类型")
|
||||||
private String alterationType;
|
private String alterationType;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目名称
|
* 项目名称
|
||||||
*/
|
*/
|
||||||
@ -130,6 +132,7 @@ public class XzdPurchaseContractAlterationVo implements Serializable {
|
|||||||
* 甲方单位
|
* 甲方单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "甲方单位")
|
@ExcelProperty(value = "甲方单位")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
|
||||||
private String partyAUnitName;
|
private String partyAUnitName;
|
||||||
|
|
||||||
|
|
||||||
@ -149,6 +152,7 @@ public class XzdPurchaseContractAlterationVo implements Serializable {
|
|||||||
* 乙方单位
|
* 乙方单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位")
|
@ExcelProperty(value = "乙方单位")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
|
||||||
private String artyBUnitName;
|
private String artyBUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -97,20 +97,7 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
|
|||||||
|
|
||||||
for (XzdPurchaseContractAlterationVo item : infos) {
|
for (XzdPurchaseContractAlterationVo item : infos) {
|
||||||
|
|
||||||
//甲方单位(客户信息列表)
|
|
||||||
R<QuerCorrespondentDto> byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit());
|
|
||||||
if (byid!=null){
|
|
||||||
if (byid.getData().getXzdCustomerinformation() != null){
|
|
||||||
item.setPartyAUnitName(byid.getData().getXzdCustomerinformation().getUnitName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//乙方单位(供应商信息列表)
|
|
||||||
if (item.getArtyBUnit() != null){
|
|
||||||
String unitName = xzdSupplierInfoService.queryNameById(item.getArtyBUnit());
|
|
||||||
if (unitName != null){
|
|
||||||
item.setArtyBUnitName(unitName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 合同编码
|
// 合同编码
|
||||||
if (item.getContractInformationId() != null){
|
if (item.getContractInformationId() != null){
|
||||||
XzdPurchaseContractInformationVo vo = iXzdPurchaseContractInformationService.queryById(item.getContractInformationId());
|
XzdPurchaseContractInformationVo vo = iXzdPurchaseContractInformationService.queryById(item.getContractInformationId());
|
||||||
@ -194,6 +181,7 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
|
|||||||
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdPurchaseContractAlteration::getReceiptsCode, bo.getReceiptsCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdPurchaseContractAlteration::getReceiptsCode, bo.getReceiptsCode());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdPurchaseContractAlteration::getTitle, bo.getTitle());
|
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdPurchaseContractAlteration::getTitle, bo.getTitle());
|
||||||
lqw.eq(bo.getDocumentDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getDocumentDate());
|
lqw.eq(bo.getDocumentDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getDocumentDate());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdPurchaseContractAlteration::getDeptId, bo.getDeptId());
|
||||||
lqw.ge(bo.getStartDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getStartDate());
|
lqw.ge(bo.getStartDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getStartDate());
|
||||||
lqw.le(bo.getEndDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getEndDate());
|
lqw.le(bo.getEndDate() != null, XzdPurchaseContractAlteration::getDocumentDate, bo.getEndDate());
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/fenbaohetongbiangg/subcontractChange")
|
@RequestMapping("/xzd/fenbaohetongbiangg/subcontractChange")
|
||||||
public class XzdSubcontractChangeController extends BaseController {
|
public class XzdSubcontractChangeController extends BaseController {
|
||||||
|
|
||||||
private final IXzdSubcontractChangeService xzdSubcontractChangeService;
|
private final IXzdSubcontractChangeService xzdSubcontractChangeService;
|
||||||
@ -61,7 +61,7 @@ public class XzdSubcontractChangeController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("fenbaohetongbiangg:subcontractChange:query")
|
// @SaCheckPermission("fenbaohetongbiangg:subcontractChange:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdSubcontractChangeVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdSubcontractChangeVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -84,6 +84,8 @@ public class XzdSubcontractChange extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String organizationName;
|
private String organizationName;
|
||||||
|
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
/**
|
/**
|
||||||
* 甲方单位
|
* 甲方单位
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -82,6 +82,8 @@ public class XzdSubcontractChangeBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String businessModel;
|
private String businessModel;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织
|
* 组织
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -125,6 +125,9 @@ public class XzdSubcontractChangeVo implements Serializable {
|
|||||||
@ExcelProperty(value = "甲方单位")
|
@ExcelProperty(value = "甲方单位")
|
||||||
private String partyAUnitName;
|
private String partyAUnitName;
|
||||||
|
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 乙方单位
|
* 乙方单位
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -169,7 +169,9 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
|
|||||||
lqw.orderByDesc(XzdSubcontractChange::getId);
|
lqw.orderByDesc(XzdSubcontractChange::getId);
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdSubcontractChange::getDocumentCode, bo.getDocumentCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdSubcontractChange::getDocumentCode, bo.getDocumentCode());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSubcontractChange::getTitle, bo.getTitle());
|
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSubcontractChange::getTitle, bo.getTitle());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getProjectName()), XzdSubcontractChange::getProjectName, bo.getProjectName());
|
||||||
lqw.eq(bo.getDocumentDate() != null, XzdSubcontractChange::getDocumentDate, bo.getDocumentDate());
|
lqw.eq(bo.getDocumentDate() != null, XzdSubcontractChange::getDocumentDate, bo.getDocumentDate());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdSubcontractChange::getDeptId, bo.getDeptId());
|
||||||
lqw.ge(bo.getStartTime() != null, XzdSubcontractChange::getDocumentDate, bo.getStartTime());
|
lqw.ge(bo.getStartTime() != null, XzdSubcontractChange::getDocumentDate, bo.getStartTime());
|
||||||
lqw.le(bo.getEndTime() != null, XzdSubcontractChange::getDocumentDate, bo.getEndTime());
|
lqw.le(bo.getEndTime() != null, XzdSubcontractChange::getDocumentDate, bo.getEndTime());
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/fenbaohetongxinxi/subcontract")
|
@RequestMapping("/xzd/fenbaohetongxinxi/subcontract")
|
||||||
public class XzdSubcontractController extends BaseController {
|
public class XzdSubcontractController extends BaseController {
|
||||||
|
|
||||||
private final IXzdSubcontractService xzdSubcontractService;
|
private final IXzdSubcontractService xzdSubcontractService;
|
||||||
|
|||||||
@ -53,6 +53,8 @@ public class XzdSubcontract extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long project;
|
private Long project;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 经营模式
|
* 经营模式
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -68,6 +68,8 @@ public class XzdSubcontractBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String businessModel;
|
private String businessModel;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 原合同造价
|
* 原合同造价
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -80,10 +80,13 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
@ExcelProperty(value = "项目")
|
@ExcelProperty(value = "项目")
|
||||||
private Long project;
|
private Long project;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目名称
|
* 项目名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "项目名称")
|
@ExcelProperty(value = "项目名称")
|
||||||
|
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project")
|
||||||
private String projectName;
|
private String projectName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -127,6 +130,7 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
* 甲方单位名称
|
* 甲方单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "甲方单位名称")
|
@ExcelProperty(value = "甲方单位名称")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
|
||||||
private String partyAUnitName;
|
private String partyAUnitName;
|
||||||
|
|
||||||
|
|
||||||
@ -140,6 +144,7 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
* 乙方单位名称
|
* 乙方单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "乙方单位名称")
|
@ExcelProperty(value = "乙方单位名称")
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyBUnit")
|
||||||
private String partyBUnitName;
|
private String partyBUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -159,6 +164,7 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
* 管理组织名称
|
* 管理组织名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "管理组织名称")
|
@ExcelProperty(value = "管理组织名称")
|
||||||
|
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "managementOrganization")
|
||||||
private String managementOrganizationName;
|
private String managementOrganizationName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -184,6 +190,7 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
* 开票单位名称
|
* 开票单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "开票单位名称", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "开票单位名称", converter = ExcelDictConvert.class)
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoicingUnit")
|
||||||
private String invoicingUnitName;
|
private String invoicingUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -196,6 +203,7 @@ public class XzdSubcontractVo implements Serializable {
|
|||||||
* 收票单位名称
|
* 收票单位名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "收票单位名称", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "收票单位名称", converter = ExcelDictConvert.class)
|
||||||
|
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "ticketReceivingUnit")
|
||||||
private String ticketReceivingUnitName;
|
private String ticketReceivingUnitName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -118,44 +118,6 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
|
|||||||
|
|
||||||
private void setValue(List<XzdSubcontractVo> infos) {
|
private void setValue(List<XzdSubcontractVo> infos) {
|
||||||
for (XzdSubcontractVo item : infos) {
|
for (XzdSubcontractVo item : infos) {
|
||||||
//项目名称
|
|
||||||
if (item.getProject() != null){
|
|
||||||
String projectName = xzdProjectService.queryNameById(item.getProject());
|
|
||||||
if (projectName != null){
|
|
||||||
item.setProjectName(projectName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//甲方单位(客户信息列表)
|
|
||||||
R<QuerCorrespondentDto> byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit());
|
|
||||||
if (byid!=null){
|
|
||||||
if (byid.getData().getXzdCustomerinformation() != null){
|
|
||||||
item.setPartyAUnitName(byid.getData().getXzdCustomerinformation().getUnitName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//乙方单位(供应商信息列表)
|
|
||||||
if (item.getPartyBUnit() != null){
|
|
||||||
String unitName = xzdSupplierInfoService.queryNameById(item.getPartyBUnit());
|
|
||||||
if (unitName != null){
|
|
||||||
item.setPartyBUnitName(unitName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//管理组织(供应商)
|
|
||||||
String unitName = xzdSupplierInfoService.queryNameById(item.getPartyBUnit());
|
|
||||||
if (unitName != null){
|
|
||||||
item.setManagementOrganizationName(unitName);
|
|
||||||
}
|
|
||||||
//开票单位名称
|
|
||||||
R<QuerCorrespondentDto> byidtemp = iXzdCorrespondentList.getCustomerByid((item.getInvoicingUnit()));
|
|
||||||
if (byidtemp!=null){
|
|
||||||
if (byidtemp.getData().getXzdCustomerinformation() != null){
|
|
||||||
item.setInvoicingUnitName(byidtemp.getData().getXzdCustomerinformation().getUnitName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//收票单位名称(供应商名称)
|
|
||||||
String unitName2 = xzdSupplierInfoService.queryNameById(item.getTicketReceivingUnit());
|
|
||||||
if (unitName2 != null){
|
|
||||||
item.setTicketReceivingUnitName(unitName2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// //合同文本-预收款项
|
// //合同文本-预收款项
|
||||||
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
@ -215,6 +177,7 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
|
|||||||
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSubcontract::getContractCode, bo.getContractCode());
|
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSubcontract::getContractCode, bo.getContractCode());
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSubcontract::getContractName, bo.getContractName());
|
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSubcontract::getContractName, bo.getContractName());
|
||||||
lqw.eq(bo.getDocumentDate() != null, XzdSubcontract::getDocumentDate, bo.getDocumentDate());
|
lqw.eq(bo.getDocumentDate() != null, XzdSubcontract::getDocumentDate, bo.getDocumentDate());
|
||||||
|
lqw.eq(bo.getDeptId() != null, XzdSubcontract::getDeptId, bo.getDeptId());
|
||||||
lqw.ge(bo.getStartDate() != null, XzdSubcontract::getDocumentDate, bo.getStartDate());
|
lqw.ge(bo.getStartDate() != null, XzdSubcontract::getDocumentDate, bo.getStartDate());
|
||||||
lqw.le(bo.getEndDate() != null, XzdSubcontract::getDocumentDate, bo.getEndDate());
|
lqw.le(bo.getEndDate() != null, XzdSubcontract::getDocumentDate, bo.getEndDate());
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|||||||
@Validated
|
@Validated
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/fenbaohetongzhongzhi/subcontractTermination")
|
@RequestMapping("/xzd/fenbaohetongzhongzhi/subcontractTermination")
|
||||||
public class XzdSubcontractTerminationController extends BaseController {
|
public class XzdSubcontractTerminationController extends BaseController {
|
||||||
|
|
||||||
private final IXzdSubcontractTerminationService xzdSubcontractTerminationService;
|
private final IXzdSubcontractTerminationService xzdSubcontractTerminationService;
|
||||||
@ -61,7 +61,7 @@ public class XzdSubcontractTerminationController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param id 主键
|
* @param id 主键
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:query")
|
// @SaCheckPermission("fenbaohetongzhongzhi:subcontractTermination:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<XzdSubcontractTerminationVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<XzdSubcontractTerminationVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable Long id) {
|
@PathVariable Long id) {
|
||||||
|
|||||||
@ -54,6 +54,7 @@ public class XzdSubcontractTermination extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private String contractName;
|
private String contractName;
|
||||||
|
|
||||||
|
private Long deptId;
|
||||||
/**
|
/**
|
||||||
* 终止日期
|
* 终止日期
|
||||||
*/
|
*/
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user