Compare commits

...

3 Commits

Author SHA1 Message Date
lg
6a200b391e 1111 2025-10-10 20:12:13 +08:00
lg
6e0e867e57 Merge branch 'dev' of http://192.168.110.2:3000/lcj/xinnengyuan into dev 2025-10-10 20:11:33 +08:00
lg
69e8e4169b 1111 2025-10-10 20:07:47 +08:00
116 changed files with 3748 additions and 6220 deletions

View File

@ -300,7 +300,7 @@ dxf2GeoJson:
file-name: main.exe file-name: main.exe
ys7: ys7:
app-key: 3acf9f1a43dc4209841e0893003db0a2 app-key: 3acf9f1a43dc4209841e0893003db0a2
app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36
# 斯巴达算法 # 斯巴达算法
sparta: sparta:
url: http://119.3.204.120:8040 url: http://119.3.204.120:8040

View File

@ -18,7 +18,6 @@ import org.dromara.contractor.service.ISubConstructionUserService;
import org.dromara.contractor.service.ISubUserSalaryDetailService; import org.dromara.contractor.service.ISubUserSalaryDetailService;
import org.dromara.design.service.IDesTechnicalStandardService; import org.dromara.design.service.IDesTechnicalStandardService;
import org.dromara.facility.domain.FacMatrix; import org.dromara.facility.domain.FacMatrix;
import org.dromara.facility.domain.FacPhotovoltaicPanel;
import org.dromara.facility.service.IFacMatrixService; import org.dromara.facility.service.IFacMatrixService;
import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService;
import org.dromara.facility.service.IFacPhotovoltaicPanelService; import org.dromara.facility.service.IFacPhotovoltaicPanelService;
@ -102,52 +101,6 @@ public class DemoTest {
@Resource @Resource
private IOutConstructionValueService constructionValueService; private IOutConstructionValueService constructionValueService;
@Test
void syncTest() {
List<BusProject> projects = projectService.lambdaQuery()
.eq(BusProject::getPId, 1968506669544656898L)
.list();
Set<Long> projectIds = projects.stream().map(BusProject::getId).collect(Collectors.toSet());
List<FacPhotovoltaicPanel> zujian = photovoltaicPanelService.lambdaQuery()
.eq(FacPhotovoltaicPanel::getProgressCategoryName, "组件安装")
.in(FacPhotovoltaicPanel::getProjectId, projectIds)
.list();
Map<Long, List<FacPhotovoltaicPanel>> zujianMap = zujian.stream()
.collect(Collectors.groupingBy(FacPhotovoltaicPanel::getMatrixId));
List<PgsProgressCategory> zhijia = progressCategoryService.lambdaQuery()
.eq(PgsProgressCategory::getName, "支架安装")
.in(PgsProgressCategory::getProjectId, projectIds)
.list();
Map<Long, List<PgsProgressCategory>> zhijiaMap = zhijia.stream()
.collect(Collectors.groupingBy(PgsProgressCategory::getMatrixId));
List<FacPhotovoltaicPanel> newP = new ArrayList<>();
for (Map.Entry<Long, List<FacPhotovoltaicPanel>> entry : zujianMap.entrySet()) {
Long key = entry.getKey();
List<FacPhotovoltaicPanel> panels = entry.getValue();
List<PgsProgressCategory> list = zhijiaMap.getOrDefault(key, new ArrayList<>());
if (CollUtil.isEmpty(list)) {
continue;
}
PgsProgressCategory zhi = list.getFirst();
List<FacPhotovoltaicPanel> panelList = panels.stream().map(panel -> {
FacPhotovoltaicPanel p = new FacPhotovoltaicPanel();
p.setProjectId(panel.getProjectId());
p.setMatrixId(panel.getMatrixId());
p.setName(panel.getName());
p.setPositions(panel.getPositions());
p.setProgressCategoryId(zhi.getId());
p.setProgressCategoryName(zhi.getName());
p.setRemark(panel.getRemark());
p.setCreateDept(panel.getCreateDept());
p.setCreateBy(panel.getCreateBy());
p.setUpdateBy(panel.getUpdateBy());
return p;
}).toList();
newP.addAll(panelList);
}
photovoltaicPanelService.saveBatch(newP);
}
@Test @Test
void testConstructionValue() { void testConstructionValue() {

View File

@ -1,160 +0,0 @@
package org.dromara.cailiaoshebei.controller.app;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo;
import org.dromara.cailiaoshebei.domain.dto.BusMrpDto;
import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto;
import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo;
import org.dromara.cailiaoshebei.domain.vo.BusMrpVo;
import org.dromara.cailiaoshebei.service.IBusMrpBaseService;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
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.design.domain.BusBillofquantities;
import org.dromara.design.domain.BusBillofquantitiesVersions;
import org.dromara.design.domain.bo.CoryObtainTheListReq;
import org.dromara.design.domain.bo.ObtainAllVersionNumbersReq;
import org.dromara.design.domain.vo.BusBillofquantitiesVo;
import org.dromara.design.domain.vo.ObtainTheListRes;
import org.dromara.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* app物资-批次需求计划基础信息
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/app/cailiaoshebei/mrpBase")
public class BusMrpBaseAppController extends BaseController {
private final IBusMrpBaseService busMrpBaseService;
private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService;
private final IBusBillofquantitiesService busBillofquantitiesService;
/**
* 查询物资-批次需求计划基础信息列表
*/
@GetMapping("/list")
public TableDataInfo<BusMrpBaseVo> list(BusMrpBaseBo bo, PageQuery pageQuery) {
return busMrpBaseService.queryPageList(bo, pageQuery);
}
/**
* 获取物资-批次需求计划基础信息详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<BusMrpVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busMrpBaseService.queryById(id));
}
/**
* 删除物资-批次需求计划基础信息
*
* @param ids 主键串
*/
@Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busMrpBaseService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 批量新增或修改
*/
@RepeatSubmit()
@PostMapping("/batch")
public R<Void> batchAddOrUpdate(@RequestBody BusMrpDto dto) {
return toAjax(busMrpBaseService.batchAddOrUpdate(dto));
}
/**
* 获取剩余量
*/
@GetMapping("/remaining")
public R<Map<String,Object>> remaining(Long projectId, String suppliespriceName,String specification,Long mrpBaseId) {
return R.ok(busMrpBaseService.remaining(projectId,suppliespriceName,specification,mrpBaseId));
}
/**
* 获取所有大类
*/
@GetMapping("/obtainAllClassification")
public R<List<BusBillofquantitiesVo>> obtainAllClassification(ObtainAllVersionNumbersReq bo) {
return R.ok(busBillofquantitiesVersionsService.obtainAllClassification(bo));
}
/**
* 获取工程量清单列表
*/
@GetMapping("/coryEngineeringList")
public R<List<BusBillofquantities>> obtainTheList(CoryObtainTheListReq req) {
List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper()
.selectList(new LambdaQueryWrapper<BusBillofquantities>()
.eq(BusBillofquantities::getProjectId, req.getProjectId())
.eq(BusBillofquantities::getName, req.getSid()));
List<String> sids = new ArrayList<>();
busBillofquantities.forEach(busBillofquantities1 -> {
sids.add(busBillofquantities1.getSid());
});
return R.ok(busBillofquantitiesService
.getBaseMapper()
.selectList(new LambdaQueryWrapper<BusBillofquantities>()
.eq(BusBillofquantities::getProjectId, req.getProjectId())
.in(BusBillofquantities::getPid, sids)));
}
private List<ObtainTheListRes> buildTree(String parentId, Map<String, List<ObtainTheListRes>> parentMap) {
// 获取当前父节点的所有直接子节点
List<ObtainTheListRes> children = parentMap.getOrDefault(parentId, Collections.emptyList());
if (children.isEmpty()) {
return Collections.emptyList();
}
// 为每个子节点递归设置其下一级子节点
for (ObtainTheListRes child : children) {
// 递归查询当前子节点的子节点,设置为它的子树
List<ObtainTheListRes> subChildren = buildTree(child.getSid(), parentMap);
// 注意需要在Vo中添加子节点列表字段用于存储子树
child.setChildren(subChildren);
}
return children;
}
}

View File

@ -1,214 +0,0 @@
package org.dromara.cailiaoshebei.controller.app;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation;
import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo;
import org.dromara.cailiaoshebei.domain.bo.BusPurchaseDocBo;
import org.dromara.cailiaoshebei.domain.bo.FeedbackDto;
import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo;
import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo;
import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService;
import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService;
import org.dromara.cailiaoshebei.service.IBusPurchaseDocService;
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.design.service.IBusBillofquantitiesService;
import org.dromara.design.service.IBusBillofquantitiesVersionsService;
import org.dromara.tender.domain.bo.TenderSupplierInputBo;
import org.dromara.tender.domain.vo.TenderSupplierInputVo;
import org.dromara.tender.service.ITenderSupplierInputService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* app物资-采购联系单
*
* @author Lion Li
* @date 2025-08-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/app/cailiaoshebei/purchaseDoc")
public class BusPurchaseDocAppController extends BaseController {
private final IBusPurchaseDocService busPurchaseDocService;
private final IBusMaterialbatchdemandplanService materialbatchdemandplanService;
private final IBusPlanDocAssociationService planDocAssociationService;
private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService;
private final IBusBillofquantitiesService busBillofquantitiesService;
private final ITenderSupplierInputService tenderSupplierInputService;
/**
* 查询物资-采购联系单列表
*/
@GetMapping("/list")
public TableDataInfo<BusPurchaseDocVo> list(BusPurchaseDocBo bo, PageQuery pageQuery) {
return busPurchaseDocService.queryPageList(bo, pageQuery);
}
/**
* 查询供应商入库列表
*/
@GetMapping("/supList")
public TableDataInfo<TenderSupplierInputVo> list(TenderSupplierInputBo bo, PageQuery pageQuery) {
return tenderSupplierInputService.queryPageList(bo, pageQuery);
}
/**
* 查询物资-批次需求计划列表
*/
@GetMapping("/planList")
public TableDataInfo<BusMaterialbatchdemandplanVo> list(BusMaterialbatchdemandplanBo bo, PageQuery pageQuery) {
return materialbatchdemandplanService.queryPageList(bo, pageQuery);
}
/**
* 获取物资-采购联系单详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<BusPurchaseDocVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busPurchaseDocService.queryById(id));
}
/**
* 获取物资-采购联系单详细PDF
*
* @param id 主键
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:pdf")
@GetMapping("/pdf/{id}")
public R<String> getPic(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok("操作成功", busPurchaseDocService.queryPicBase64ById(id));
}
/**
* 新增物资-采购联系单
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:add")
@Log(title = "物资-采购联系单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BusPurchaseDocBo bo) {
return toAjax(busPurchaseDocService.insertByBo(bo));
}
/**
* 修改物资-采购联系单
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:edit")
@Log(title = "物资-采购联系单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusPurchaseDocBo bo) {
return toAjax(busPurchaseDocService.updateByBo(bo));
}
/**
* 删除物资-采购联系单
*
* @param ids 主键串
*/
@SaCheckPermission("cailiaoshebei:purchaseDoc:remove")
@Log(title = "物资-采购联系单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busPurchaseDocService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 查询采购单关联的计划
*/
@GetMapping("/planList/{id}")
public R<List<BusMaterialbatchdemandplanVo>> list(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
List<BusPlanDocAssociation> list = planDocAssociationService.list(Wrappers.lambdaQuery(BusPlanDocAssociation.class)
.eq(BusPlanDocAssociation::getDocId, id));
if (CollectionUtil.isEmpty(list)) {
return R.ok(new ArrayList<>());
}
Map<Long, BigDecimal> collect = list.stream()
.filter(Objects::nonNull) // 过滤空对象
.collect(Collectors.toMap(
BusPlanDocAssociation::getPlanId,
BusPlanDocAssociation::getDemandQuantity,
(existing, replacement) -> existing // 保留第一个遇到的重复键
));
BusMaterialbatchdemandplanBo bo = new BusMaterialbatchdemandplanBo();
bo.setIds(new ArrayList<>(collect.keySet()));
List<BusMaterialbatchdemandplanVo> busMaterialbatchdemandplanVos = materialbatchdemandplanService.queryList(bo);
for (BusMaterialbatchdemandplanVo busMaterialbatchdemandplanVo : busMaterialbatchdemandplanVos) {
busMaterialbatchdemandplanVo.setDemandQuantity(collect.get(busMaterialbatchdemandplanVo.getId()));
}
return R.ok(busMaterialbatchdemandplanVos);
}
/**
* 修改回单
*/
@Log(title = "物资-采购联系单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/updateFeedback")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody FeedbackDto bo) {
return toAjax(busPurchaseDocService.updateFeedback(bo));
}
//
// /**
// * 获取工程量清单列表
// */
// @SaCheckPermission("cailiaoshebei:purchaseDoc:add")
// @GetMapping("/engineeringList")
// public R<List<BusBillofquantities>> obtainTheList(Long projectId) {
// BusBillofquantitiesVersions one = busBillofquantitiesVersionsService.getOne(Wrappers.<BusBillofquantitiesVersions>lambdaQuery()
// .eq(BusBillofquantitiesVersions::getWorkOrderType, "3") //物资工程量清单
// .eq(BusBillofquantitiesVersions::getProjectId, projectId)
// .eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus())
// .last("limit 1")
// );
// if (one == null) {
// throw new ServiceException("请先完成物资工程量清单");
// }
// List<BusBillofquantities> list = busBillofquantitiesService.list(Wrappers.<BusBillofquantities>lambdaQuery()
// .eq(BusBillofquantities::getVersions, one.getVersions())
// );
//
// return R.ok(list);
// }
}

View File

@ -76,8 +76,6 @@ import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST;
/** /**
* 施工人员Service业务层处理 * 施工人员Service业务层处理
* *
@ -1131,7 +1129,6 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
} }
//只查施工人员 //只查施工人员
lqw.eq(SubConstructionUser::getUserRole, "0"); lqw.eq(SubConstructionUser::getUserRole, "0");
lqw.isNotNull(SubConstructionUser::getTeamId);
// 分页查询获取数据 // 分页查询获取数据
Page<SubConstructionUser> constructionUserPage = this.page(pageQuery.build(), lqw); Page<SubConstructionUser> constructionUserPage = this.page(pageQuery.build(), lqw);
List<SubConstructionUser> constructionUserList = constructionUserPage.getRecords(); List<SubConstructionUser> constructionUserList = constructionUserPage.getRecords();
@ -1197,12 +1194,8 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU
unClockDays++; unClockDays++;
} }
} }
if((clockInStatus!=null && ATTENDANCE_LIST.contains(clockInStatus))
|| (clockOutStatus!=null && ATTENDANCE_LIST.contains(clockOutStatus))){
attendanceDays++;
}
} }
attendanceDays = dailyMap.size() - leaveDays;
} }
} }
constructionUserAttendanceTotalResp.setAttendanceDays(attendanceDays); constructionUserAttendanceTotalResp.setAttendanceDays(attendanceDays);

View File

@ -14,6 +14,7 @@ import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
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.contractor.domain.SubConstructionUser; import org.dromara.contractor.domain.SubConstructionUser;
import org.dromara.contractor.domain.SubContractor; import org.dromara.contractor.domain.SubContractor;
import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq;
@ -118,10 +119,7 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
// 数据校验 // 数据校验
validEntityBeforeSave(contractor); validEntityBeforeSave(contractor);
String name = req.getName(); String name = req.getName();
Long count = this.lambdaQuery() Long count = this.lambdaQuery().eq(SubContractor::getName, name).count();
.eq(SubContractor::getName, name)
.eq(SubContractor::getProjectId, req.getProjectId())
.count();
if (count > 0) { if (count > 0) {
throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST);
} }
@ -162,11 +160,7 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S
} }
// 判断名称是否重复 // 判断名称是否重复
if (!oldContractor.getName().equals(req.getName())) { if (!oldContractor.getName().equals(req.getName())) {
Long count = this.lambdaQuery() Long count = this.lambdaQuery().eq(SubContractor::getName, req.getName()).count();
.eq(SubContractor::getName, req.getName())
.eq(SubContractor::getProjectId, req.getProjectId())
.ne(SubContractor::getId, contractor.getId())
.count();
if (count > 0) { if (count > 0) {
throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST);
} }

View File

@ -353,9 +353,6 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo
lqw.eq(BusBillofquantitiesVersions::getWorkOrderType, "3"); lqw.eq(BusBillofquantitiesVersions::getWorkOrderType, "3");
lqw.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus()); lqw.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus());
List<BusBillofquantitiesVersionsVo> result = baseMapper.selectVoList(lqw); List<BusBillofquantitiesVersionsVo> result = baseMapper.selectVoList(lqw);
if (CollUtil.isEmpty(result)) {
return Collections.emptyList();
}
List<String> versionss = new ArrayList<>(); List<String> versionss = new ArrayList<>();
result.forEach(v -> versionss.add(v.getVersions())); result.forEach(v -> versionss.add(v.getVersions()));
List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantities>() List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantities>()

View File

@ -15,9 +15,6 @@ 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.contractor.domain.dto.contractor.SubContractorQueryReq;
import org.dromara.contractor.domain.vo.contractor.SubContractorVo;
import org.dromara.contractor.service.ISubContractorService;
import org.dromara.materials.domain.dto.materials.MatMaterialsCreateReq; import org.dromara.materials.domain.dto.materials.MatMaterialsCreateReq;
import org.dromara.materials.domain.dto.materials.MatMaterialsGisReq; import org.dromara.materials.domain.dto.materials.MatMaterialsGisReq;
import org.dromara.materials.domain.dto.materials.MatMaterialsQueryReq; import org.dromara.materials.domain.dto.materials.MatMaterialsQueryReq;
@ -43,8 +40,6 @@ public class MatMaterialsController extends BaseController {
private final IMatMaterialsService materialsService; private final IMatMaterialsService materialsService;
private final ISubContractorService contractorService;
/** /**
* 查询材料列表 * 查询材料列表
*/ */
@ -160,13 +155,4 @@ public class MatMaterialsController extends BaseController {
@PathVariable Long[] ids) { @PathVariable Long[] ids) {
return toAjax(materialsService.deleteWithValidByIds(List.of(ids), true)); return toAjax(materialsService.deleteWithValidByIds(List.of(ids), true));
} }
/**
* 查询分包单位列表
*/
@SaCheckPermission("materials:materials:contractorList")
@GetMapping("/contractorList")
public R<List<SubContractorVo>> contractorList(SubContractorQueryReq req) {
return R.ok(contractorService.queryList(req));
}
} }

View File

@ -94,13 +94,4 @@ public class MatMaterialsInventory extends BaseEntity {
*/ */
private String remark; private String remark;
/**
* 操作人id
*/
private Long operatorId;
/**
* 分包单位id
*/
private Long recipientId;
} }

View File

@ -114,22 +114,11 @@ public class BusAttendanceController extends BaseController {
return toAjax(busAttendanceService.deleteWithValidByIds(List.of(ids), true)); return toAjax(busAttendanceService.deleteWithValidByIds(List.of(ids), true));
} }
/**
* 查询项目施工人员前14天考勤状况
*/
@SaCheckPermission("project:attendance:list")
@GetMapping("/list/clockDate/twoWeek") @GetMapping("/list/clockDate/twoWeek")
public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(Long projectId) { public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(Long projectId) {
return R.ok(busAttendanceService.getClockDateForTwoWeekList(projectId)); return R.ok(busAttendanceService.getClockDateForTwoWeekList(projectId));
} }
/**
* 查询项目施工人员当天考勤状况
*/
@SaCheckPermission("project:attendance:list")
@GetMapping("/list/clockDate/today")
public R<BusAttendanceClockDateForTwoWeekVo> getTodayAttendanceData(Long projectId) {
return R.ok(busAttendanceService.getTodayAttendanceData(projectId));
}
@PostMapping("/exportList") @PostMapping("/exportList")
public void exportList(AttendanceExportDto dto, HttpServletResponse response) { public void exportList(AttendanceExportDto dto, HttpServletResponse response) {

View File

@ -1,7 +1,6 @@
package org.dromara.project.controller.app; package org.dromara.project.controller.app;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@ -129,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 R<List<BusAttendanceVo>> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId){
return attendanceService.getAbnormalAttendance(projectId,pageQuery); return R.ok(attendanceService.getAbnormalAttendance(projectId));
} }
/** /**

View File

@ -140,14 +140,4 @@ public class BusLeave extends BaseEntity {
*/ */
private String auditStatus; private String auditStatus;
/**
* 时间类型 1-天 2-小时
*/
private String timeType;
/**
* 时间段类型 1-上午 2-下午
*/
private String periodType;
} }

View File

@ -1,8 +1,8 @@
package org.dromara.project.service; package org.dromara.project.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import org.dromara.common.core.domain.R;
import org.dromara.project.domain.dto.attendance.*; import org.dromara.project.domain.dto.attendance.*;
import org.dromara.project.domain.vo.BusAttendanceVo; import org.dromara.project.domain.vo.BusAttendanceVo;
import org.dromara.project.domain.bo.BusAttendanceBo; import org.dromara.project.domain.bo.BusAttendanceBo;
@ -13,9 +13,12 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.project.domain.vo.BusMonthAttendanceVo; import org.dromara.project.domain.vo.BusMonthAttendanceVo;
import org.dromara.project.domain.vo.attendance.*; import org.dromara.project.domain.vo.attendance.*;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDate;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -129,9 +132,9 @@ public interface IBusAttendanceService extends IService<BusAttendance>{
List<BusMonthAttendanceVo> getMonthAttendance(Long projectId, String month); List<BusMonthAttendanceVo> getMonthAttendance(Long projectId, String month);
/** /**
* 获取用户打卡异常记录 * 获取用户指定月份的打卡记录
*/ */
TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery); List<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId);
/** /**
* 统计指定日期的打卡人员 * 统计指定日期的打卡人员
@ -164,11 +167,6 @@ public interface IBusAttendanceService extends IService<BusAttendance>{
*/ */
List<BusAttendanceClockDateForTwoWeekVo> getClockDateForTwoWeekList(Long projectId); List<BusAttendanceClockDateForTwoWeekVo> getClockDateForTwoWeekList(Long projectId);
/**
* 获取项目当天的考勤数据
*/
BusAttendanceClockDateForTwoWeekVo getTodayAttendanceData(Long projectId);
/** /**
* 获取导出的考勤数据 * 获取导出的考勤数据
*/ */

View File

@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONArray; import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -15,6 +14,7 @@ import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -64,8 +64,6 @@ import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST;
/** /**
* 考勤Service业务层处理 * 考勤Service业务层处理
* *
@ -324,16 +322,18 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
//打卡范围 //打卡范围
if (!checkInRange(req)) { if (!checkInRange(req)) {
throw new ServiceException("打卡位置不在范围内", HttpStatus.ERROR); throw new ServiceException("打卡位置不在范围内", HttpStatus.BAD_REQUEST);
} }
//用户信息校验 //用户信息校验
SubConstructionUser constructionUser = constructionUserService.getBySysUserId(userId); SubConstructionUser constructionUser = constructionUserService.getBySysUserId(userId);
if ("1".equals(constructionUser.getStatus())) { final String status = "1";
throw new ServiceException("当前用户已离职", HttpStatus.ERROR); if (constructionUser.getStatus().equals(status)) {
throw new ServiceException("当前用户已离职", HttpStatus.BAD_REQUEST);
} }
if ("1".equals(constructionUser.getClock())) { final String noClock = "1";
throw new ServiceException("当前用户已被禁止打卡", HttpStatus.ERROR); if (constructionUser.getClock().equals(noClock)) {
throw new ServiceException("当前用户已被禁止打卡", HttpStatus.BAD_REQUEST);
} }
// 判断用户是否已经被拉黑 // 判断用户是否已经被拉黑
constructionBlacklistService.validUserInBlacklist(constructionUser.getSysUserId(), req.getProjectId()); constructionBlacklistService.validUserInBlacklist(constructionUser.getSysUserId(), req.getProjectId());
@ -342,27 +342,27 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
try { try {
result = constructionUserService.faceComparison(file); result = constructionUserService.faceComparison(file);
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.ERROR); throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.BAD_REQUEST);
} }
if (!result) { if (!result) {
throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.ERROR); throw new ServiceException("人脸识别失败,请重新识别", HttpStatus.BAD_REQUEST);
} }
//打卡规则 //打卡规则
BusAttendanceRuleVo busAttendanceRuleVo = attendanceRuleService.queryByProjectId(req.getProjectId()); BusAttendanceRuleVo busAttendanceRuleVo = attendanceRuleService.queryByProjectId(req.getProjectId());
if (busAttendanceRuleVo == null) { if (busAttendanceRuleVo == null) {
throw new ServiceException("未设置打卡规则", HttpStatus.ERROR); throw new ServiceException("未设置打卡规则", HttpStatus.BAD_REQUEST);
} }
// 考勤时间 // 考勤时间
//确定考勤日期 //确定考勤日期
LocalDate localDate = calculateAttendanceDate(now, busAttendanceRuleVo); LocalDate localDate = calculateAttendanceDate(now, busAttendanceRuleVo);
// if (leaveService.isLeave(localDate, userId)) { if (leaveService.isLeave(localDate, userId)) {
// throw new ServiceException("当前用户正在请假中", HttpStatus.ERROR); throw new ServiceException("当前用户正在请假中", HttpStatus.BAD_REQUEST);
// } }
// 判断当前用户打卡状态 // 判断当前用户打卡状态
@ -399,12 +399,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
// 记录打卡坐标 // 记录打卡坐标
attendance.setLat(req.getLat()); attendance.setLat(req.getLat());
attendance.setLng(req.getLng()); attendance.setLng(req.getLng());
try { attendance.setClockLocation(JSTUtil.getLocationName(req.getLat(), req.getLng()));
attendance.setClockLocation(JSTUtil.getLocationName(req.getLat(), req.getLng()));
}catch (Exception e) {
log.error("获取打卡位置失败", e);
}
// 上传人脸照 // 上传人脸照
SysOssVo upload = ossService.upload(file); SysOssVo upload = ossService.upload(file);
attendance.setFacePic(upload.getOssId().toString()); attendance.setFacePic(upload.getOssId().toString());
@ -458,11 +453,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
// 记录打卡坐标 // 记录打卡坐标
attendance.setLat(req.getLat()); attendance.setLat(req.getLat());
attendance.setLng(req.getLng()); attendance.setLng(req.getLng());
try { attendance.setClockLocation(JSTUtil.getLocationName(req.getLat(), req.getLng()));
attendance.setClockLocation(JSTUtil.getLocationName(req.getLat(), req.getLng()));
}catch (Exception e) {
log.error("获取打卡位置失败", e);
}
// 上传人脸照 // 上传人脸照
SysOssVo upload = ossService.upload(file); SysOssVo upload = ossService.upload(file);
attendance.setFacePic(upload.getOssId().toString()); attendance.setFacePic(upload.getOssId().toString());
@ -598,8 +589,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
Long projectId = req.getProjectId(); Long projectId = req.getProjectId();
SysUserVo sysUserVo = userService.queryById(userId);
//判断是否要求范围内打卡 //判断是否要求范围内打卡
BusUserProjectRelevancy relevancy = userProjectRelevancyService.getOne(Wrappers.lambdaQuery(BusUserProjectRelevancy.class) BusUserProjectRelevancy relevancy = userProjectRelevancyService.getOne(Wrappers.lambdaQuery(BusUserProjectRelevancy.class)
.eq(BusUserProjectRelevancy::getUserId, userId) .eq(BusUserProjectRelevancy::getUserId, userId)
@ -609,7 +598,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
throw new ServiceException("当前用户未加入项目", HttpStatus.BAD_REQUEST); throw new ServiceException("当前用户未加入项目", HttpStatus.BAD_REQUEST);
} }
//判断是否是施工员 管理员返回项目全部打卡范围,施工人员返回班组打卡范围 //判断是否是施工员 管理员返回项目全部打卡范围,施工人员返回班组打卡范围
boolean isConstruct = "0".equals(sysUserVo.getAppUserType()); boolean isConstruct = "1".equals(relevancy.getUserType());
List<Long> rangeIds = new ArrayList<>(); List<Long> rangeIds = new ArrayList<>();
if (isConstruct) { if (isConstruct) {
BusProjectTeamMember one = projectTeamMemberService.getOne(Wrappers.lambdaQuery(BusProjectTeamMember.class) BusProjectTeamMember one = projectTeamMemberService.getOne(Wrappers.lambdaQuery(BusProjectTeamMember.class)
@ -647,7 +636,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
.toList(); .toList();
if (CollUtil.isEmpty(punchRangeList)) { if (CollUtil.isEmpty(punchRangeList)) {
throw new ServiceException(isConstruct ? "班组未配置考勤范围" : "项目未配置考勤范围", HttpStatus.ERROR); throw new ServiceException(isConstruct ? "班组未配置考勤范围" : "项目未配置考勤范围", HttpStatus.BAD_REQUEST);
} }
List<GeoPoint> matchingRange = JSTUtil.findMatchingRange(req.getLat(), req.getLng(), punchRangeList); List<GeoPoint> matchingRange = JSTUtil.findMatchingRange(req.getLat(), req.getLng(), punchRangeList);
return matchingRange != null; return matchingRange != null;
@ -718,7 +707,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
@Override @Override
public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId, PageQuery pageQuery) { public List<BusAttendanceVo> getAbnormalAttendance(Long projectId) {
List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(), List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(),
BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(), BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(),
@ -733,16 +722,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
boolean b = relevancyList.stream().allMatch(relevancy -> "1".equals(relevancy.getUserType())); boolean b = relevancyList.stream().allMatch(relevancy -> "1".equals(relevancy.getUserType()));
IPage<BusAttendanceVo> busAttendanceVoIPage = baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(BusAttendance.class) List<BusAttendanceVo> busAttendanceVos = baseMapper.selectVoList(Wrappers.lambdaQuery(BusAttendance.class)
.eq(BusAttendance::getUserId, userId) .eq(BusAttendance::getUserId, userId)
.eq(b, BusAttendance::getProjectId, projectId) .eq(b, BusAttendance::getProjectId, projectId)
.in(BusAttendance::getClockStatus, abnormalList) .in(BusAttendance::getClockStatus, abnormalList)
); );
//转换星期几 //转换星期几
for (BusAttendanceVo busAttendanceVo : busAttendanceVoIPage.getRecords()) { for (BusAttendanceVo busAttendanceVo : busAttendanceVos) {
busAttendanceVo.setWeek(busAttendanceVo.getClockDate().getDayOfWeek().getValue()); busAttendanceVo.setWeek(busAttendanceVo.getClockDate().getDayOfWeek().getValue());
} }
return TableDataInfo.build(busAttendanceVoIPage); return busAttendanceVos;
} }
/** /**
@ -879,25 +868,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
return checkTime.isBefore(clockOutDateTime); return checkTime.isBefore(clockOutDateTime);
} }
// /**
// * 判断是否请假
// */
// private Boolean isLeave(LocalDateTime checkTime,String type,Long userId){
// // 获取当天请假数据
// LocalDate localDate = checkTim e.toLocalDate();
// LocalDateTime dateStart = LocalDateTime.of(localDate, LocalTime.MIN);
// LocalDateTime dateEnd = LocalDateTime.of(localDate, LocalTime.MAX);
//
// leaveService.isLeave()
//
//
//
//
//
//
// }
@Override @Override
public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) { public AttendanceCountVo getAttendanceCount(AttendanceCountDto dto) {
@ -1186,17 +1156,15 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
List<Long> allUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery() List<Long> allUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery()
.eq(SubConstructionUser::getUserRole, "0") .eq(SubConstructionUser::getUserRole, "0")
.eq(SubConstructionUser::getProjectId,projectId) .eq(SubConstructionUser::getProjectId,projectId)
.isNotNull(SubConstructionUser::getTeamId)
).stream().map(SubConstructionUser::getSysUserId).toList(); ).stream().map(SubConstructionUser::getSysUserId).toList();
// 往前14天包含今天 // 往前14天包含今天
LocalDate startDate = now.minusDays(14); LocalDate startDate = now.minusDays(14);
LocalDate endDate = now.minusDays(1);
List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery() List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getProjectId, projectId) .eq(BusAttendance::getProjectId, projectId)
.notIn(CollectionUtil.isNotEmpty(excludeUserIds),BusAttendance::getUserId, excludeUserIds) .notIn(CollectionUtil.isNotEmpty(excludeUserIds),BusAttendance::getUserId, excludeUserIds)
.between(BusAttendance::getClockDate, startDate, endDate) .between(BusAttendance::getClockDate, startDate, now)
.orderByAsc(BusAttendance::getClockDate) .orderByAsc(BusAttendance::getClockDate)
); );
@ -1215,9 +1183,10 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
// 统计全勤、半勤、缺卡人数 // 统计全勤、半勤、缺卡人数
List<BusAttendanceClockDateForTwoWeekVo> result = new ArrayList<>(); List<BusAttendanceClockDateForTwoWeekVo> result = new ArrayList<>();
List<String> validStatusList = Arrays.asList("1", "2", "3", "5");
LocalDate currentDate = startDate; LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) { while (!currentDate.isAfter(now)) {
Map<Long, List<BusAttendance>> userAttendanceMap = dateUserMap.getOrDefault(currentDate, new HashMap<>()); Map<Long, List<BusAttendance>> userAttendanceMap = dateUserMap.getOrDefault(currentDate, new HashMap<>());
int full = 0, half = 0, absent = 0; int full = 0, half = 0, absent = 0;
@ -1227,11 +1196,13 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
long validCount = records.stream() long validCount = records.stream()
.map(BusAttendance::getClockStatus) .map(BusAttendance::getClockStatus)
.filter(ATTENDANCE_LIST::contains) .filter(validStatusList::contains)
.count(); .count();
if (validCount >= 1) { if (validCount >= 2) {
full++; full++;
} else if (validCount == 1) {
half++;
} else { } else {
absent++; absent++;
} }
@ -1242,6 +1213,14 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
vo.setAttendance(full); vo.setAttendance(full);
vo.setHalfAttendance(half); vo.setHalfAttendance(half);
vo.setAbsenteeism(absent); vo.setAbsenteeism(absent);
//如果是当天,则计算考勤率
if (currentDate.equals(now)) {
vo.setAllUserNum(allUserIds.size());
vo.setClockNum(full+half);
vo.setAttendanceRate(BigDecimalUtil.toPercentage(new BigDecimal(full+half),
new BigDecimal(allUserIds.size())));
}
result.add(vo); result.add(vo);
currentDate = currentDate.plusDays(1); currentDate = currentDate.plusDays(1);
} }
@ -1249,66 +1228,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
return result; return result;
} }
@Override
public BusAttendanceClockDateForTwoWeekVo getTodayAttendanceData(Long projectId) {
LocalDate now = LocalDate.now();
//查询所有管理员和分包人员 排除
List<Long> excludeUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery()
.ne(SubConstructionUser::getUserRole, "0")
).stream().map(SubConstructionUser::getSysUserId).toList();
List<Long> allUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery()
.eq(SubConstructionUser::getUserRole, "0")
.eq(SubConstructionUser::getProjectId,projectId)
.isNotNull(SubConstructionUser::getTeamId)
).stream().map(SubConstructionUser::getSysUserId).toList();
List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery()
.eq(BusAttendance::getProjectId, projectId)
.notIn(CollectionUtil.isNotEmpty(excludeUserIds),BusAttendance::getUserId, excludeUserIds)
.eq(BusAttendance::getClockDate, now)
.orderByAsc(BusAttendance::getClockDate)
);
Map<Long, List<BusAttendance>> collect = list.stream().collect(Collectors.groupingBy(BusAttendance::getUserId));
int full = 0, half = 0, absent = 0;
for (Map.Entry<Long, List<BusAttendance>> userEntry : collect.entrySet()) {
List<BusAttendance> records = userEntry.getValue();
long validCount = records.stream()
.map(BusAttendance::getClockStatus)
.filter(ATTENDANCE_LIST::contains)
.count();
if (validCount >= 2) {
full++;
} else if (validCount == 1) {
half++;
} else {
absent++;
}
}
BusAttendanceClockDateForTwoWeekVo vo = new BusAttendanceClockDateForTwoWeekVo();
vo.setClockDate(now);
vo.setAttendance(full);
vo.setHalfAttendance(half);
vo.setAbsenteeism(absent);
//计算考勤率
vo.setAllUserNum(allUserIds.size());
vo.setClockNum(full+half);
vo.setAttendanceRate(BigDecimalUtil.toPercentage(new BigDecimal(full+half),
new BigDecimal(allUserIds.size())));
return vo;
}
@Override @Override
public void getExportList(AttendanceExportDto dto, HttpServletResponse response) { public void getExportList(AttendanceExportDto dto, HttpServletResponse response) {
try (OutputStream outputStream = response.getOutputStream()) { try (OutputStream outputStream = response.getOutputStream()) {

View File

@ -399,10 +399,8 @@ public class BusLeaveServiceImpl extends ServiceImpl<BusLeaveMapper, BusLeave>
LambdaQueryWrapper<BusLeave> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BusLeave> wrapper = new LambdaQueryWrapper<>();
wrapper wrapper
.eq(BusLeave::getUserId, userId) .eq(BusLeave::getUserId, userId)
.lt(BusLeave::getStartTime, newEnd) // 已有记录的开始时间 < 新记录的结束时间 .le(BusLeave::getStartTime, newEnd) // 已有记录的开始时间 < 新记录的结束时间
.gt(BusLeave::getEndTime, newStart) .ge(BusLeave::getEndTime, newStart); // 已有记录的结束时间 > 新记录的开始时间
.eq(BusLeave::getAuditStatus, BusinessStatusEnum.FINISH.getStatus())
; // 已有记录的结束时间 > 新记录的开始时间
// 4. 执行冲突校验 // 4. 执行冲突校验
if (count(wrapper) > 0) { if (count(wrapper) > 0) {

View File

@ -329,7 +329,10 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
constructionUserExit.setSalaryConfirmationFile(salaryConfirmationFile); constructionUserExit.setSalaryConfirmationFile(salaryConfirmationFile);
constructionUserExit.setTeamId(constructionUser.getTeamId()); constructionUserExit.setTeamId(constructionUser.getTeamId());
String sfzNumber = constructionUser.getSfzNumber(); String sfzNumber = constructionUser.getSfzNumber();
constructionUserExit.setSfzNumber(sfzNumber); if (StringUtils.isNotBlank(sfzNumber)) {
sfzNumber = idCardEncryptorUtil.decrypt(sfzNumber);
constructionUserExit.setSfzNumber(sfzNumber);
}
constructionUserExit.setEntryDate(constructionUser.getEntryDate()); constructionUserExit.setEntryDate(constructionUser.getEntryDate());
constructionUserExit.setLeaveDate(new Date()); constructionUserExit.setLeaveDate(new Date());
constructionUserExit.setRemark(req.getRemark()); constructionUserExit.setRemark(req.getRemark());

View File

@ -149,9 +149,7 @@ public class SysUserVo implements Serializable {
*/ */
private List<Long> projectIds; private List<Long> projectIds;
/**
* app用户类型 0-施工人员 1-管理人员 2-分包人员
*/
private String appUserType; private String appUserType;
/** /**

View File

@ -50,7 +50,6 @@ import org.dromara.system.mapper.*;
import org.dromara.system.service.ISysOssService; import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserFileService; import org.dromara.system.service.ISysUserFileService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.jetbrains.annotations.NotNull;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@ -930,25 +929,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
projects = projectIds; projects = projectIds;
} }
List<SysUserRole> sysUserRoles = getSysUserRoles(userId, appUserType, projects); Long roleId = "1".equals(appUserType)?4L:5L;
userRoleMapper.insertBatch(sysUserRoles);
return baseMapper.update(null,
new LambdaUpdateWrapper<SysUser>()
.set(SysUser::getAppUserType, appUserType)
.set(contractorId!=null,SysUser::getContractorId, contractorId)
.eq(SysUser::getUserId, userId)) > 0;
}
private List<SysUserRole> getSysUserRoles(Long userId, String appUserType, List<Long> projects) {
Long roleId;
if("0".equals(appUserType)){
roleId = 2L;
}else if("1".equals(appUserType)){
roleId = 4L;
}else {
roleId = 5L;
}
ArrayList<SysUserRole> sysUserRoles = new ArrayList<>(); ArrayList<SysUserRole> sysUserRoles = new ArrayList<>();
for (Long project : projects) { for (Long project : projects) {
SysUserRole sysUserRole = new SysUserRole(); SysUserRole sysUserRole = new SysUserRole();
@ -957,7 +938,13 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
sysUserRole.setRoleId(roleId); sysUserRole.setRoleId(roleId);
sysUserRoles.add(sysUserRole); sysUserRoles.add(sysUserRole);
} }
return sysUserRoles; userRoleMapper.insertBatch(sysUserRoles);
return baseMapper.update(null,
new LambdaUpdateWrapper<SysUser>()
.set(SysUser::getAppUserType, appUserType)
.set(contractorId!=null,SysUser::getContractorId, contractorId)
.eq(SysUser::getUserId, userId)) > 0;
} }
@Override @Override

View File

@ -0,0 +1,109 @@
package org.dromara.xzd.biddingManagement.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.biddingManagement.domain.dto.BiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.dto.QuerBiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.vo.QuerListXzdBidPreVo;
import org.dromara.xzd.biddingManagement.domain.vo.QueryListXzdVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.service.IXzdBidPreProjectService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 标前立项
*
* @author Lion Li
* @date 2025-10-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/biddingManagement/bidPreProject")
public class XzdBidPreProjectController extends BaseController {
private final IXzdBidPreProjectService xzdBidPreProjectService;
/**
* 查询标前立项列表
*/
@SaCheckPermission("biddingManagement:bidPreProject:list")
@GetMapping("/list")
public QueryListXzdVo list(QuerBiddingManagementDto bo, PageQuery pageQuery) {
return xzdBidPreProjectService.queryPageList(bo, pageQuery);
}
/**
* 导出标前立项列表
*/
@SaCheckPermission("biddingManagement:bidPreProject:export")
@Log(title = "标前立项", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdBidPreProjectBo bo, HttpServletResponse response) {
List<XzdBidPreProjectVo> list = xzdBidPreProjectService.queryList(bo);
ExcelUtil.exportExcel(list, "标前立项", XzdBidPreProjectVo.class, response);
}
/**
* 获取标前立项详细信息
*
* @param id 主键
*/
@SaCheckPermission("biddingManagement:bidPreProject:query")
@GetMapping("/{id}")
public R<QuerListXzdBidPreVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdBidPreProjectService.queryById(id));
}
/**
* 新增标前立项
*/
@SaCheckPermission("biddingManagement:bidPreProject:add")
@Log(title = "标前立项", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BiddingManagementDto bo) {
return toAjax(xzdBidPreProjectService.insertByBo(bo));
}
/**
* 修改标前立项
*/
@SaCheckPermission("biddingManagement:bidPreProject:edit")
@Log(title = "标前立项", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@RequestBody BiddingManagementDto bo ) {
return toAjax(xzdBidPreProjectService.updateByBo(bo));
}
/**
* 删除标前立项
*
* @param ids 主键串
*/
@SaCheckPermission("biddingManagement:bidPreProject:remove")
@Log(title = "标前立项", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdBidPreProjectService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.xzd.biddingManagement.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.biddingManagement.domain.bo.XzdProjectRiskAssessmentBo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectRiskAssessmentVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectVo;
import org.dromara.xzd.biddingManagement.service.IXzdProjectRiskAssessmentService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 项目风险评估签审意见
*
* @author Lion Li
* @date 2025-10-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/projectRiskAssessment")
public class XzdProjectRiskAssessmentController extends BaseController {
private final IXzdProjectRiskAssessmentService xzdProjectRiskAssessmentService;
/**
* 查询项目风险评估签审意见列表
*/
@SaCheckPermission("xzd:projectRiskAssessment:list")
@GetMapping("/list")
public TableDataInfo<XzdProjectRiskAssessmentVo> list(XzdProjectVo bo, PageQuery pageQuery) {
return xzdProjectRiskAssessmentService.queryPageList(bo, pageQuery);
}
/**
* 导出项目风险评估签审意见列表
*/
@SaCheckPermission("xzd:projectRiskAssessment:export")
@Log(title = "项目风险评估签审意见", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdProjectRiskAssessmentBo bo, HttpServletResponse response) {
List<XzdProjectRiskAssessmentVo> list = xzdProjectRiskAssessmentService.queryList(bo);
ExcelUtil.exportExcel(list, "项目风险评估签审意见", XzdProjectRiskAssessmentVo.class, response);
}
/**
* 获取项目风险评估签审意见详细信息
*
* @param id 主键
*/
@SaCheckPermission("xzd:projectRiskAssessment:query")
@GetMapping("/{id}")
public R<XzdProjectRiskAssessmentVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdProjectRiskAssessmentService.queryById(id));
}
/**
* 新增项目风险评估签审意见
*/
@SaCheckPermission("xzd:projectRiskAssessment:add")
@Log(title = "项目风险评估签审意见", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdProjectRiskAssessmentBo bo) {
return toAjax(xzdProjectRiskAssessmentService.insertByBo(bo));
}
/**
* 修改项目风险评估签审意见
*/
@SaCheckPermission("xzd:projectRiskAssessment:edit")
@Log(title = "项目风险评估签审意见", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdProjectRiskAssessmentBo bo) {
return toAjax(xzdProjectRiskAssessmentService.updateByBo(bo));
}
/**
* 删除项目风险评估签审意见
*
* @param ids 主键串
*/
@SaCheckPermission("xzd:projectRiskAssessment:remove")
@Log(title = "项目风险评估签审意见", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdProjectRiskAssessmentService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,126 @@
package org.dromara.xzd.biddingManagement.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 标前立项对象 xzd_bid_pre_project
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_bid_pre_project")
public class XzdBidPreProject extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目编码
*/
private String projectNumber;
/**
* 项目名称
*/
private String projectName;
/**
* 国家
*/
private String country;
/**
* 省
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 区县
*/
private String district;
/**
* 工程地点
*/
private String projectLocation;
/**
* 资金来源
*/
private String capitalSource;
/**
* 承包方式
*/
private String contractingMethod;
/**
* 经营模式
*/
private String operationMode;
/**
* 项目类型
*/
private Long projectTypeId;
/**
* 招标方式
*/
private String biddingMethod;
/**
* 联系方法
*/
private String liaisonMethod;
/**
* 投资单位
*/
private String investmentUnit;
/**
* 工程造价(万元)
*/
private Long projectCost;
/**
* 资料费
*/
private Long informationCost;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,193 @@
package org.dromara.xzd.biddingManagement.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 标前立项对象 xzd_bqlx_project_info
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_bqlx_project_info")
public class XzdBqlxProjectInfo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 关联标前立项ID
*/
private Long bidPreProjectId;
/**
* 预计开工日期
*/
private Date expectedStartDate;
/**
* 资质要求
*/
private String qualificationRequirement;
/**
* 报名开始时间
*/
private Date bidStartDate;
/**
* 报名截止时间
*/
private Date bidEndDate;
/**
* 投标截止时间
*/
private Date submissionDeadline;
/**
* 设计情况
*/
private String designDescription;
/**
* 工程概况
*/
private String projectStatus;
/**
* 招标公告地址
*/
private String biddingAnnouncementAddress;
/**
* 质量要求
*/
private String qualityRequirement;
/**
* 工期要求(天)
*/
private Long durationDays;
/**
* 最低资质要求
*/
private String lowestQualificationRequirement;
/**
* 项目经理要求
*/
private String projectManagerRequirement;
/**
* 业绩要求
*/
private String performanceRequirement;
/**
* 开标时间
*/
private Date startDate;
/**
* 评标方式
*/
private String evaluationMethod;
/**
* 投标保证金形式
*/
private String biddingDepositForm;
/**
* 投标保证金
*/
private Long biddingDeposit;
/**
* 建设单位
*/
private String constructionUnit;
/**
* 建设单位联系人
*/
private String constructionPerson;
/**
* 建设单位联系方式
*/
private String constructionMethod;
/**
* 招标单位
*/
private String biddingUnit;
/**
* 招标单位联系人
*/
private String biddingPerson;
/**
* 招标单位联系方式
*/
private String biddingMethod;
/**
* 成本价
*/
private Long costPrice;
/**
* 招标控制价
*/
private Long biddingPriceControl;
/**
* 项目编码
*/
private String projectNumber;
/**
* 默认财务组织
*/
private String defaultFinance;
/**
* 涉及财务组织
*/
private String involveFinance;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,121 @@
package org.dromara.xzd.biddingManagement.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 项目风险评估签审意见对象 xzd_project_risk_assessment
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_project_risk_assessment")
public class XzdProjectRiskAssessment extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 单据编号
*/
private String documentNumber;
/**
* 项目名称
*/
private String projectName;
/**
* 项目业主
*/
private String projectBusinessOwner;
/**
* 联合体成员方
*/
private String jointBodyMembers;
/**
* 预计合同额(万元)
*/
private Long estimatedContractAmount;
/**
* 单价指标
*/
private String unitPriceIndex;
/**
* 工期风险
*/
private String engineeringRisk;
/**
* 技术风险
*/
private String technicalRisk;
/**
* 经济风险
*/
private String economicRisk;
/**
* 合同风险
*/
private String contractRisk;
/**
* 人员风险
*/
private String personnelRisk;
/**
* 施工风险
*/
private String constructionRisk;
/**
* 管理风险
*/
private String managementRisk;
/**
* 分包风险
*/
private String subcontractRisk;
/**
* 其他风险
*/
private String otherRisks;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,134 @@
package org.dromara.xzd.biddingManagement.domain.bo;
import org.dromara.xzd.biddingManagement.domain.XzdBidPreProject;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 标前立项业务对象 xzd_bid_pre_project
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdBidPreProject.class, reverseConvertGenerate = false)
public class XzdBidPreProjectBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目编码
*/
@NotBlank(message = "项目编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectNumber;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName;
/**
* 国家
*/
@NotBlank(message = "国家不能为空", groups = { AddGroup.class, EditGroup.class })
private String country;
/**
* 省
*/
@NotBlank(message = "省不能为空", groups = { AddGroup.class, EditGroup.class })
private String province;
/**
* 城市
*/
@NotBlank(message = "城市不能为空", groups = { AddGroup.class, EditGroup.class })
private String city;
/**
* 区县
*/
@NotBlank(message = "区县不能为空", groups = { AddGroup.class, EditGroup.class })
private String district;
/**
* 工程地点
*/
private String projectLocation;
/**
* 资金来源
*/
private String capitalSource;
/**
* 承包方式
*/
private String contractingMethod;
/**
* 经营模式
*/
private String operationMode;
/**
* 项目类型
*/
@NotNull(message = "项目类型不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectTypeId;
/**
* 招标方式
*/
private String biddingMethod;
/**
* 联系方法
*/
private String liaisonMethod;
/**
* 投资单位
*/
private String investmentUnit;
/**
* 工程造价(万元)
*/
@NotNull(message = "工程造价(万元)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectCost;
/**
* 资料费
*/
@NotNull(message = "资料费不能为空", groups = { AddGroup.class, EditGroup.class })
private Long informationCost;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,195 @@
package org.dromara.xzd.biddingManagement.domain.bo;
import org.dromara.xzd.biddingManagement.domain.XzdBqlxProjectInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 标前立项业务对象 xzd_bqlx_project_info
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdBqlxProjectInfo.class, reverseConvertGenerate = false)
public class XzdBqlxProjectInfoBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 关联标前立项ID
*/
@NotNull(message = "关联标前立项ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long bidPreProjectId;
/**
* 预计开工日期
*/
private Date expectedStartDate;
/**
* 资质要求
*/
private String qualificationRequirement;
/**
* 报名开始时间
*/
private Date bidStartDate;
/**
* 报名截止时间
*/
@NotNull(message = "报名截止时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date bidEndDate;
/**
* 投标截止时间
*/
private Date submissionDeadline;
/**
* 设计情况
*/
private String designDescription;
/**
* 工程概况
*/
private String projectStatus;
/**
* 招标公告地址
*/
private String biddingAnnouncementAddress;
/**
* 质量要求
*/
private String qualityRequirement;
/**
* 工期要求(天)
*/
private Long durationDays;
/**
* 最低资质要求
*/
private String lowestQualificationRequirement;
/**
* 项目经理要求
*/
private String projectManagerRequirement;
/**
* 业绩要求
*/
private String performanceRequirement;
/**
* 开标时间
*/
private Date startDate;
/**
* 评标方式
*/
private String evaluationMethod;
/**
* 投标保证金形式
*/
private String biddingDepositForm;
/**
* 投标保证金
*/
private Long biddingDeposit;
/**
* 建设单位
*/
private String constructionUnit;
/**
* 建设单位联系人
*/
private String constructionPerson;
/**
* 建设单位联系方式
*/
private String constructionMethod;
/**
* 招标单位
*/
private String biddingUnit;
/**
* 招标单位联系人
*/
private String biddingPerson;
/**
* 招标单位联系方式
*/
private String biddingMethod;
/**
* 成本价
*/
private Long costPrice;
/**
* 招标控制价
*/
private Long biddingPriceControl;
/**
* 项目编码
*/
@NotBlank(message = "项目编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectNumber;
/**
* 默认财务组织
*/
private String defaultFinance;
/**
* 涉及财务组织
*/
private String involveFinance;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,120 @@
package org.dromara.xzd.biddingManagement.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.biddingManagement.domain.XzdProjectRiskAssessment;
/**
* 项目风险评估签审意见业务对象 xzd_project_risk_assessment
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdProjectRiskAssessment.class, reverseConvertGenerate = false)
public class XzdProjectRiskAssessmentBo extends BaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 单据编号
*/
private String documentNumber;
/**
* 项目名称
*/
private String projectName;
/**
* 项目业主
*/
private String projectBusinessOwner;
/**
* 联合体成员方
*/
private String jointBodyMembers;
/**
* 预计合同额(万元)
*/
@NotNull(message = "预计合同额(万元)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long estimatedContractAmount;
/**
* 单价指标
*/
private String unitPriceIndex;
/**
* 工期风险
*/
private String engineeringRisk;
/**
* 技术风险
*/
private String technicalRisk;
/**
* 经济风险
*/
private String economicRisk;
/**
* 合同风险
*/
private String contractRisk;
/**
* 人员风险
*/
private String personnelRisk;
/**
* 施工风险
*/
private String constructionRisk;
/**
* 管理风险
*/
private String managementRisk;
/**
* 分包风险
*/
private String subcontractRisk;
/**
* 其他风险
*/
private String otherRisks;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,13 @@
package org.dromara.xzd.biddingManagement.domain.dto;
import lombok.Data;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBqlxProjectInfoBo;
@Data
public class BiddingManagementDto {
private XzdBidPreProjectBo xzdBidPreProjectBo;
private XzdBqlxProjectInfoBo xzdBqlxProjectInfoBo;
}

View File

@ -0,0 +1,52 @@
package org.dromara.xzd.biddingManagement.domain.dto;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@Data
public class QuerBiddingManagementDto {
// XzdBidPreProjectBo
/**
* 项目编码
*/
private String projectNumber;
/**
* 项目名称
*/
private String projectName;
/**
* 项目类型
*/
private Long projectTypeId;
private Long createBy;
private Long createDept;
// XzdBqlxProjectInfoBo
/**
* 建设单位
*/
private String constructionUnit;
/**
* 备注
*/
private String remark;
private Integer num;
}

View File

@ -0,0 +1,13 @@
package org.dromara.xzd.biddingManagement.domain.vo;
import lombok.Data;
@Data
public class QuerListXzdBidPreVo {
private XzdBidPreProjectVo xzdBidPreProjectVo;
private XzdBqlxProjectInfoVo xzdBqlxProjectInfoVo;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.biddingManagement.domain.vo;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
public class QueryListXzdVo {
private List<QuerListXzdBidPreVo> list;
private Integer total;
}

View File

@ -0,0 +1,164 @@
package org.dromara.xzd.biddingManagement.domain.vo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.biddingManagement.domain.XzdBidPreProject;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 标前立项视图对象 xzd_bid_pre_project
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdBidPreProject.class)
public class XzdBidPreProjectVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 项目编码
*/
@ExcelProperty(value = "项目编码")
private String projectNumber;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 国家
*/
@ExcelProperty(value = "国家")
private String country;
/**
* 省
*/
@ExcelProperty(value = "")
private String province;
/**
* 城市
*/
@ExcelProperty(value = "城市")
private String city;
/**
* 区县
*/
@ExcelProperty(value = "区县")
private String district;
/**
* 工程地点
*/
@ExcelProperty(value = "工程地点")
private String projectLocation;
/**
* 资金来源
*/
@ExcelProperty(value = "资金来源")
private String capitalSource;
/**
* 承包方式
*/
@ExcelProperty(value = "承包方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_contracting_method")
private String contractingMethod;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_business_model")
private String operationMode;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private Long projectTypeId;
/**
* 招标方式
*/
@ExcelProperty(value = "招标方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_bidding_method")
private String biddingMethod;
/**
* 联系方法
*/
@ExcelProperty(value = "联系方法")
private String liaisonMethod;
/**
* 投资单位
*/
@ExcelProperty(value = "投资单位")
private String investmentUnit;
/**
* 工程造价(万元)
*/
@ExcelProperty(value = "工程造价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "万=元")
private Long projectCost;
/**
* 资料费
*/
@ExcelProperty(value = "资料费")
private Long informationCost;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
private Long createBy;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
private String createByUserName;
}

View File

@ -0,0 +1,235 @@
package org.dromara.xzd.biddingManagement.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.biddingManagement.domain.XzdBqlxProjectInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 标前立项视图对象 xzd_bqlx_project_info
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdBqlxProjectInfo.class)
public class XzdBqlxProjectInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 关联标前立项ID
*/
@ExcelProperty(value = "关联标前立项ID")
private Long bidPreProjectId;
/**
* 预计开工日期
*/
@ExcelProperty(value = "预计开工日期")
private Date expectedStartDate;
/**
* 资质要求
*/
@ExcelProperty(value = "资质要求")
private String qualificationRequirement;
/**
* 报名开始时间
*/
@ExcelProperty(value = "报名开始时间")
private Date bidStartDate;
/**
* 报名截止时间
*/
@ExcelProperty(value = "报名截止时间")
private Date bidEndDate;
/**
* 投标截止时间
*/
@ExcelProperty(value = "投标截止时间")
private Date submissionDeadline;
/**
* 设计情况
*/
@ExcelProperty(value = "设计情况")
private String designDescription;
/**
* 工程概况
*/
@ExcelProperty(value = "工程概况")
private String projectStatus;
/**
* 招标公告地址
*/
@ExcelProperty(value = "招标公告地址")
private String biddingAnnouncementAddress;
/**
* 质量要求
*/
@ExcelProperty(value = "质量要求")
private String qualityRequirement;
/**
* 工期要求(天)
*/
@ExcelProperty(value = "工期要求", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "天=")
private Long durationDays;
/**
* 最低资质要求
*/
@ExcelProperty(value = "最低资质要求")
private String lowestQualificationRequirement;
/**
* 项目经理要求
*/
@ExcelProperty(value = "项目经理要求")
private String projectManagerRequirement;
/**
* 业绩要求
*/
@ExcelProperty(value = "业绩要求")
private String performanceRequirement;
/**
* 开标时间
*/
@ExcelProperty(value = "开标时间")
private Date startDate;
/**
* 评标方式
*/
@ExcelProperty(value = "评标方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_evaluation_method")
private String evaluationMethod;
/**
* 投标保证金形式
*/
@ExcelProperty(value = "投标保证金形式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_margin_type")
private String biddingDepositForm;
/**
* 投标保证金
*/
@ExcelProperty(value = "投标保证金")
private Long biddingDeposit;
/**
* 建设单位
*/
@ExcelProperty(value = "建设单位")
private String constructionUnit;
/**
* 建设单位联系人
*/
@ExcelProperty(value = "建设单位联系人")
private String constructionPerson;
/**
* 建设单位联系方式
*/
@ExcelProperty(value = "建设单位联系方式")
private String constructionMethod;
/**
* 招标单位
*/
@ExcelProperty(value = "招标单位")
private String biddingUnit;
/**
* 招标单位联系人
*/
@ExcelProperty(value = "招标单位联系人")
private String biddingPerson;
/**
* 招标单位联系方式
*/
@ExcelProperty(value = "招标单位联系方式")
private String biddingMethod;
/**
* 成本价
*/
@ExcelProperty(value = "成本价")
private Long costPrice;
/**
* 招标控制价
*/
@ExcelProperty(value = "招标控制价")
private Long biddingPriceControl;
/**
* 项目编码
*/
@ExcelProperty(value = "项目编码")
private String projectNumber;
/**
* 默认财务组织
*/
@ExcelProperty(value = "默认财务组织")
private String defaultFinance;
/**
* 涉及财务组织
*/
@ExcelProperty(value = "涉及财务组织")
private String involveFinance;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
}

View File

@ -0,0 +1,168 @@
package org.dromara.xzd.biddingManagement.domain.vo;
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 org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.biddingManagement.domain.XzdProjectRiskAssessment;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 项目风险评估签审意见视图对象 xzd_project_risk_assessment
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdProjectRiskAssessment.class)
public class XzdProjectRiskAssessmentVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 单据编号
*/
@ExcelProperty(value = "单据编号")
private String documentNumber;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 项目业主
*/
@ExcelProperty(value = "项目业主")
private String projectBusinessOwner;
/**
* 联合体成员方
*/
@ExcelProperty(value = "联合体成员方")
private String jointBodyMembers;
/**
* 预计合同额(万元)
*/
@ExcelProperty(value = "预计合同额(万元)")
private Long estimatedContractAmount;
/**
* 单价指标
*/
@ExcelProperty(value = "单价指标")
private String unitPriceIndex;
/**
* 工期风险
*/
@ExcelProperty(value = "工期风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String engineeringRisk;
/**
* 技术风险
*/
@ExcelProperty(value = "技术风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String technicalRisk;
/**
* 经济风险
*/
@ExcelProperty(value = "经济风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String economicRisk;
/**
* 合同风险
*/
@ExcelProperty(value = "合同风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String contractRisk;
/**
* 人员风险
*/
@ExcelProperty(value = "人员风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String personnelRisk;
/**
* 施工风险
*/
@ExcelProperty(value = "施工风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String constructionRisk;
/**
* 管理风险
*/
@ExcelProperty(value = "管理风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String managementRisk;
/**
* 分包风险
*/
@ExcelProperty(value = "分包风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String subcontractRisk;
/**
* 其他风险
*/
@ExcelProperty(value = "其他风险", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_risk_assessment_type")
private String otherRisks;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
private LocalDateTime createTime;
private String createBy;
/**
* 创建者姓名
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy")
private String createByName;
}

View File

@ -0,0 +1,44 @@
package org.dromara.xzd.biddingManagement.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class XzdProjectVo {
/**
* 单据编号
*/
@ExcelProperty(value = "单据编号")
private String documentNumber;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 项目业主
*/
@ExcelProperty(value = "项目业主")
private String projectBusinessOwner;
/**
* 创建者 录入人
*/
private Long createBy;
private LocalDateTime startTime;
private LocalDateTime endTime;
}

View File

@ -0,0 +1,24 @@
package org.dromara.xzd.biddingManagement.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.xzd.biddingManagement.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.domain.dto.QuerBiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.vo.QuerListXzdBidPreVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBidPreProjectVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* 标前立项Mapper接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface XzdBidPreProjectMapper extends BaseMapperPlus<XzdBidPreProject, XzdBidPreProjectVo> {
List<QuerListXzdBidPreVo> queryPageListBy(@Param("bo") QuerBiddingManagementDto bo, @Param("pageSize") Integer pageSize);
Integer queryPageListByNum(@Param("bo") QuerBiddingManagementDto bo, @Param("pageSize") Integer pageSize);
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.biddingManagement.mapper;
import org.dromara.xzd.biddingManagement.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBqlxProjectInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 标前立项Mapper接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface XzdBqlxProjectInfoMapper extends BaseMapperPlus<XzdBqlxProjectInfo, XzdBqlxProjectInfoVo> {
}

View File

@ -0,0 +1,16 @@
package org.dromara.xzd.biddingManagement.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.xzd.biddingManagement.domain.XzdProjectRiskAssessment;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectRiskAssessmentVo;
/**
* 项目风险评估签审意见Mapper接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface XzdProjectRiskAssessmentMapper extends BaseMapperPlus<XzdProjectRiskAssessment, XzdProjectRiskAssessmentVo> {
}

View File

@ -0,0 +1,74 @@
package org.dromara.xzd.biddingManagement.service;
import org.dromara.xzd.biddingManagement.domain.dto.BiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.dto.QuerBiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.vo.QuerListXzdBidPreVo;
import org.dromara.xzd.biddingManagement.domain.vo.QueryListXzdVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.domain.XzdBidPreProject;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 标前立项Service接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface IXzdBidPreProjectService extends IService<XzdBidPreProject>{
/**
* 查询标前立项
*
* @param id 主键
* @return 标前立项
*/
QuerListXzdBidPreVo queryById(Long id);
/**
* 分页查询标前立项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 标前立项分页列表
*/
QueryListXzdVo queryPageList(QuerBiddingManagementDto bo, PageQuery pageQuery);
/**
* 查询符合条件的标前立项列表
*
* @param bo 查询条件
* @return 标前立项列表
*/
List<XzdBidPreProjectVo> queryList(XzdBidPreProjectBo bo);
/**
* 新增标前立项
*
* @param bo 标前立项
* @return 是否新增成功
*/
Boolean insertByBo(BiddingManagementDto bo);
/**
* 修改标前立项
*
* @param bo 标前立项
* @return 是否修改成功
*/
Boolean updateByBo(BiddingManagementDto bo);
/**
* 校验并批量删除标前立项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

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

View File

@ -0,0 +1,73 @@
package org.dromara.xzd.biddingManagement.service;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.xzd.biddingManagement.domain.XzdProjectRiskAssessment;
import org.dromara.xzd.biddingManagement.domain.bo.XzdProjectRiskAssessmentBo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectRiskAssessmentVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectVo;
import java.util.Collection;
import java.util.List;
/**
* 项目风险评估签审意见Service接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface IXzdProjectRiskAssessmentService extends IService<XzdProjectRiskAssessment>{
/**
* 查询项目风险评估签审意见
*
* @param id 主键
* @return 项目风险评估签审意见
*/
XzdProjectRiskAssessmentVo queryById(Long id);
/**
* 分页查询项目风险评估签审意见列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 项目风险评估签审意见分页列表
*/
TableDataInfo<XzdProjectRiskAssessmentVo> queryPageList(XzdProjectVo bo, PageQuery pageQuery);
/**
* 查询符合条件的项目风险评估签审意见列表
*
* @param bo 查询条件
* @return 项目风险评估签审意见列表
*/
List<XzdProjectRiskAssessmentVo> queryList(XzdProjectRiskAssessmentBo bo);
/**
* 新增项目风险评估签审意见
*
* @param bo 项目风险评估签审意见
* @return 是否新增成功
*/
Boolean insertByBo(XzdProjectRiskAssessmentBo bo);
/**
* 修改项目风险评估签审意见
*
* @param bo 项目风险评估签审意见
* @return 是否修改成功
*/
Boolean updateByBo(XzdProjectRiskAssessmentBo bo);
/**
* 校验并批量删除项目风险评估签审意见信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,217 @@
package org.dromara.xzd.biddingManagement.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.xzd.biddingManagement.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBqlxProjectInfoBo;
import org.dromara.xzd.biddingManagement.domain.dto.BiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.dto.QuerBiddingManagementDto;
import org.dromara.xzd.biddingManagement.domain.vo.QuerListXzdBidPreVo;
import org.dromara.xzd.biddingManagement.domain.vo.QueryListXzdVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBqlxProjectInfoVo;
import org.dromara.xzd.biddingManagement.mapper.XzdBqlxProjectInfoMapper;
import org.dromara.xzd.biddingManagement.service.IXzdBqlxProjectInfoService;
import org.dromara.xzd.utilS.AreaUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBidPreProjectBo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.biddingManagement.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.mapper.XzdBidPreProjectMapper;
import org.dromara.xzd.biddingManagement.service.IXzdBidPreProjectService;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 标前立项Service业务层处理
*
* @author Lion Li
* @date 2025-10-10
*/
@RequiredArgsConstructor
@Service
public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMapper, XzdBidPreProject> implements IXzdBidPreProjectService {
private final XzdBidPreProjectMapper baseMapper;
private final IXzdBqlxProjectInfoService iXzdBqlxProjectInfoService;
private final AreaUtil areaUtil;
/**
* 查询标前立项
*
* @param id 主键
* @return 标前立项
*/
@Override
public QuerListXzdBidPreVo queryById(Long id){
QuerListXzdBidPreVo querListXzdBidPreVo = new QuerListXzdBidPreVo();
XzdBidPreProjectVo xzdBidPreProjectVo = baseMapper.selectVoById(id);
XzdBqlxProjectInfo xzdBqlxProjectInfo = iXzdBqlxProjectInfoService.getBaseMapper().selectOne(new LambdaQueryWrapper<>(XzdBqlxProjectInfo.class).eq(XzdBqlxProjectInfo::getBidPreProjectId, id));
XzdBqlxProjectInfoVo res = new XzdBqlxProjectInfoVo();
BeanUtils.copyProperties(xzdBqlxProjectInfo, res);
querListXzdBidPreVo.setXzdBqlxProjectInfoVo(res);
querListXzdBidPreVo.setXzdBidPreProjectVo(xzdBidPreProjectVo);
return querListXzdBidPreVo;
}
/**
* 分页查询标前立项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 标前立项分页列表
*/
@Override
public QueryListXzdVo queryPageList(QuerBiddingManagementDto bo, PageQuery pageQuery) {
QueryListXzdVo queryListXzdVo = new QueryListXzdVo();
if (pageQuery.getPageNum() != null && pageQuery.getPageSize() != null){
bo.setNum((pageQuery.getPageNum() - 1 ) * pageQuery.getPageSize() );
}
List<QuerListXzdBidPreVo> list = baseMapper.queryPageListBy(bo,pageQuery.getPageSize());
Integer res = baseMapper.queryPageListByNum(bo,pageQuery.getPageSize());
queryListXzdVo.setList(list);
queryListXzdVo.setTotal(res);
return queryListXzdVo;
}
/**
* 查询符合条件的标前立项列表
*
* @param bo 查询条件
* @return 标前立项列表
*/
@Override
public List<XzdBidPreProjectVo> queryList(XzdBidPreProjectBo bo) {
LambdaQueryWrapper<XzdBidPreProject> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdBidPreProject> buildQueryWrapper(XzdBidPreProjectBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdBidPreProject> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdBidPreProject::getId);
lqw.eq(StringUtils.isNotBlank(bo.getProjectNumber()), XzdBidPreProject::getProjectNumber, bo.getProjectNumber());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdBidPreProject::getProjectName, bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getCountry()), XzdBidPreProject::getCountry, bo.getCountry());
lqw.eq(StringUtils.isNotBlank(bo.getProvince()), XzdBidPreProject::getProvince, bo.getProvince());
lqw.eq(StringUtils.isNotBlank(bo.getCity()), XzdBidPreProject::getCity, bo.getCity());
lqw.eq(StringUtils.isNotBlank(bo.getDistrict()), XzdBidPreProject::getDistrict, bo.getDistrict());
lqw.eq(StringUtils.isNotBlank(bo.getProjectLocation()), XzdBidPreProject::getProjectLocation, bo.getProjectLocation());
lqw.eq(StringUtils.isNotBlank(bo.getCapitalSource()), XzdBidPreProject::getCapitalSource, bo.getCapitalSource());
lqw.eq(StringUtils.isNotBlank(bo.getContractingMethod()), XzdBidPreProject::getContractingMethod, bo.getContractingMethod());
lqw.eq(StringUtils.isNotBlank(bo.getOperationMode()), XzdBidPreProject::getOperationMode, bo.getOperationMode());
lqw.eq(bo.getProjectTypeId() != null, XzdBidPreProject::getProjectTypeId, bo.getProjectTypeId());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingMethod()), XzdBidPreProject::getBiddingMethod, bo.getBiddingMethod());
lqw.eq(StringUtils.isNotBlank(bo.getLiaisonMethod()), XzdBidPreProject::getLiaisonMethod, bo.getLiaisonMethod());
lqw.eq(StringUtils.isNotBlank(bo.getInvestmentUnit()), XzdBidPreProject::getInvestmentUnit, bo.getInvestmentUnit());
lqw.eq(bo.getProjectCost() != null, XzdBidPreProject::getProjectCost, bo.getProjectCost());
lqw.eq(bo.getInformationCost() != null, XzdBidPreProject::getInformationCost, bo.getInformationCost());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdBidPreProject::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdBidPreProject::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增标前立项
*
* @param bo 标前立项
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(BiddingManagementDto bo) {
try {
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBidPreProject>().gt(XzdBidPreProject::getCreateTime, LocalDateTime.now().minusDays(1)));
String s = areaUtil.generateDateBasedNumber();
// 标前立项
XzdBidPreProjectBo xzdBidPreProjectBo = bo.getXzdBidPreProjectBo();
XzdBidPreProject xzdBidPreProject = new XzdBidPreProject();
if (xzdBidPreProjectBo != null) {
BeanUtil.copyProperties(xzdBidPreProjectBo, xzdBidPreProject);
xzdBidPreProject.setProjectNumber(s+"-"+(l+1));
baseMapper.insert(xzdBidPreProject);
}
//标前立项-项目信息
XzdBqlxProjectInfoBo xzdBqlxProjectInfoBo = bo.getXzdBqlxProjectInfoBo();
xzdBqlxProjectInfoBo.setBidPreProjectId(xzdBidPreProject.getId());
iXzdBqlxProjectInfoService.insertByBo(xzdBqlxProjectInfoBo);
}catch (Exception e) {
log.error("新增标前立项失败", e);
return false;
}
return true;
}
/**
* 修改标前立项
*
* @param bo 标前立项
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(BiddingManagementDto bo) {
// XzdBidPreProjectBo xzdBidPreProjectBo = bo.getXzdBidPreProjectBo();
//
// baseMapper.updateById(xzdBidPreProjectBo);
//
// XzdBqlxProjectInfoBo xzdBqlxProjectInfoBo = bo.getXzdBqlxProjectInfoBo();
//
//
// validEntityBeforeSave(update);
return false;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdBidPreProject entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除标前立项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,161 @@
package org.dromara.xzd.biddingManagement.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.xzd.biddingManagement.domain.bo.XzdBqlxProjectInfoBo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdBqlxProjectInfoVo;
import org.dromara.xzd.biddingManagement.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.mapper.XzdBqlxProjectInfoMapper;
import org.dromara.xzd.biddingManagement.service.IXzdBqlxProjectInfoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 标前立项Service业务层处理
*
* @author Lion Li
* @date 2025-10-10
*/
@RequiredArgsConstructor
@Service
public class XzdBqlxProjectInfoServiceImpl extends ServiceImpl<XzdBqlxProjectInfoMapper, XzdBqlxProjectInfo> implements IXzdBqlxProjectInfoService {
private final XzdBqlxProjectInfoMapper baseMapper;
/**
* 查询标前立项
*
* @param id 主键
* @return 标前立项
*/
@Override
public XzdBqlxProjectInfoVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询标前立项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 标前立项分页列表
*/
@Override
public TableDataInfo<XzdBqlxProjectInfoVo> queryPageList(XzdBqlxProjectInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdBqlxProjectInfo> lqw = buildQueryWrapper(bo);
Page<XzdBqlxProjectInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的标前立项列表
*
* @param bo 查询条件
* @return 标前立项列表
*/
@Override
public List<XzdBqlxProjectInfoVo> queryList(XzdBqlxProjectInfoBo bo) {
LambdaQueryWrapper<XzdBqlxProjectInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdBqlxProjectInfo> buildQueryWrapper(XzdBqlxProjectInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdBqlxProjectInfo> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdBqlxProjectInfo::getId);
lqw.eq(bo.getBidPreProjectId() != null, XzdBqlxProjectInfo::getBidPreProjectId, bo.getBidPreProjectId());
lqw.eq(bo.getExpectedStartDate() != null, XzdBqlxProjectInfo::getExpectedStartDate, bo.getExpectedStartDate());
lqw.eq(StringUtils.isNotBlank(bo.getQualificationRequirement()), XzdBqlxProjectInfo::getQualificationRequirement, bo.getQualificationRequirement());
lqw.eq(bo.getBidStartDate() != null, XzdBqlxProjectInfo::getBidStartDate, bo.getBidStartDate());
lqw.eq(bo.getBidEndDate() != null, XzdBqlxProjectInfo::getBidEndDate, bo.getBidEndDate());
lqw.eq(bo.getSubmissionDeadline() != null, XzdBqlxProjectInfo::getSubmissionDeadline, bo.getSubmissionDeadline());
lqw.eq(StringUtils.isNotBlank(bo.getDesignDescription()), XzdBqlxProjectInfo::getDesignDescription, bo.getDesignDescription());
lqw.eq(StringUtils.isNotBlank(bo.getProjectStatus()), XzdBqlxProjectInfo::getProjectStatus, bo.getProjectStatus());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingAnnouncementAddress()), XzdBqlxProjectInfo::getBiddingAnnouncementAddress, bo.getBiddingAnnouncementAddress());
lqw.eq(StringUtils.isNotBlank(bo.getQualityRequirement()), XzdBqlxProjectInfo::getQualityRequirement, bo.getQualityRequirement());
lqw.eq(bo.getDurationDays() != null, XzdBqlxProjectInfo::getDurationDays, bo.getDurationDays());
lqw.eq(StringUtils.isNotBlank(bo.getLowestQualificationRequirement()), XzdBqlxProjectInfo::getLowestQualificationRequirement, bo.getLowestQualificationRequirement());
lqw.eq(StringUtils.isNotBlank(bo.getProjectManagerRequirement()), XzdBqlxProjectInfo::getProjectManagerRequirement, bo.getProjectManagerRequirement());
lqw.eq(StringUtils.isNotBlank(bo.getPerformanceRequirement()), XzdBqlxProjectInfo::getPerformanceRequirement, bo.getPerformanceRequirement());
lqw.eq(bo.getStartDate() != null, XzdBqlxProjectInfo::getStartDate, bo.getStartDate());
lqw.eq(StringUtils.isNotBlank(bo.getEvaluationMethod()), XzdBqlxProjectInfo::getEvaluationMethod, bo.getEvaluationMethod());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingDepositForm()), XzdBqlxProjectInfo::getBiddingDepositForm, bo.getBiddingDepositForm());
lqw.eq(bo.getBiddingDeposit() != null, XzdBqlxProjectInfo::getBiddingDeposit, bo.getBiddingDeposit());
lqw.eq(StringUtils.isNotBlank(bo.getConstructionUnit()), XzdBqlxProjectInfo::getConstructionUnit, bo.getConstructionUnit());
lqw.eq(StringUtils.isNotBlank(bo.getConstructionPerson()), XzdBqlxProjectInfo::getConstructionPerson, bo.getConstructionPerson());
lqw.eq(StringUtils.isNotBlank(bo.getConstructionMethod()), XzdBqlxProjectInfo::getConstructionMethod, bo.getConstructionMethod());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingUnit()), XzdBqlxProjectInfo::getBiddingUnit, bo.getBiddingUnit());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingPerson()), XzdBqlxProjectInfo::getBiddingPerson, bo.getBiddingPerson());
lqw.eq(StringUtils.isNotBlank(bo.getBiddingMethod()), XzdBqlxProjectInfo::getBiddingMethod, bo.getBiddingMethod());
lqw.eq(bo.getCostPrice() != null, XzdBqlxProjectInfo::getCostPrice, bo.getCostPrice());
lqw.eq(bo.getBiddingPriceControl() != null, XzdBqlxProjectInfo::getBiddingPriceControl, bo.getBiddingPriceControl());
lqw.eq(StringUtils.isNotBlank(bo.getProjectNumber()), XzdBqlxProjectInfo::getProjectNumber, bo.getProjectNumber());
lqw.eq(StringUtils.isNotBlank(bo.getDefaultFinance()), XzdBqlxProjectInfo::getDefaultFinance, bo.getDefaultFinance());
lqw.eq(StringUtils.isNotBlank(bo.getInvolveFinance()), XzdBqlxProjectInfo::getInvolveFinance, bo.getInvolveFinance());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdBqlxProjectInfo::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdBqlxProjectInfo::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增标前立项
*
* @param bo 标前立项
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdBqlxProjectInfoBo bo) {
XzdBqlxProjectInfo add = MapstructUtils.convert(bo, XzdBqlxProjectInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改标前立项
*
* @param bo 标前立项
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdBqlxProjectInfoBo bo) {
XzdBqlxProjectInfo update = MapstructUtils.convert(bo, XzdBqlxProjectInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdBqlxProjectInfo entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除标前立项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,176 @@
package org.dromara.xzd.biddingManagement.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.xzd.biddingManagement.domain.XzdProjectRiskAssessment;
import org.dromara.xzd.biddingManagement.domain.bo.XzdProjectRiskAssessmentBo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectRiskAssessmentVo;
import org.dromara.xzd.biddingManagement.domain.vo.XzdProjectVo;
import org.dromara.xzd.biddingManagement.mapper.XzdProjectRiskAssessmentMapper;
import org.dromara.xzd.biddingManagement.service.IXzdProjectRiskAssessmentService;
import org.dromara.xzd.utilS.AreaUtil;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 项目风险评估签审意见Service业务层处理
*
* @author Lion Li
* @date 2025-10-10
*/
@RequiredArgsConstructor
@Service
public class XzdProjectRiskAssessmentServiceImpl extends ServiceImpl<XzdProjectRiskAssessmentMapper, XzdProjectRiskAssessment> implements IXzdProjectRiskAssessmentService {
private final XzdProjectRiskAssessmentMapper baseMapper;
private final AreaUtil areaUtil;
/**
* 查询项目风险评估签审意见
*
* @param id 主键
* @return 项目风险评估签审意见
*/
@Override
public XzdProjectRiskAssessmentVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询项目风险评估签审意见列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 项目风险评估签审意见分页列表
*/
@Override
public TableDataInfo<XzdProjectRiskAssessmentVo> queryPageList(XzdProjectVo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdProjectRiskAssessment> lqw = buildQueryWrapper1(bo);
Page<XzdProjectRiskAssessmentVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的项目风险评估签审意见列表
*
* @param bo 查询条件
* @return 项目风险评估签审意见列表
*/
@Override
public List<XzdProjectRiskAssessmentVo> queryList(XzdProjectRiskAssessmentBo bo) {
LambdaQueryWrapper<XzdProjectRiskAssessment> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdProjectRiskAssessment> buildQueryWrapper(XzdProjectRiskAssessmentBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdProjectRiskAssessment> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdProjectRiskAssessment::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocumentNumber()), XzdProjectRiskAssessment::getDocumentNumber, bo.getDocumentNumber());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdProjectRiskAssessment::getProjectName, bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getProjectBusinessOwner()), XzdProjectRiskAssessment::getProjectBusinessOwner, bo.getProjectBusinessOwner());
lqw.eq(StringUtils.isNotBlank(bo.getJointBodyMembers()), XzdProjectRiskAssessment::getJointBodyMembers, bo.getJointBodyMembers());
lqw.eq(bo.getEstimatedContractAmount() != null, XzdProjectRiskAssessment::getEstimatedContractAmount, bo.getEstimatedContractAmount());
lqw.eq(StringUtils.isNotBlank(bo.getUnitPriceIndex()), XzdProjectRiskAssessment::getUnitPriceIndex, bo.getUnitPriceIndex());
lqw.eq(StringUtils.isNotBlank(bo.getEngineeringRisk()), XzdProjectRiskAssessment::getEngineeringRisk, bo.getEngineeringRisk());
lqw.eq(StringUtils.isNotBlank(bo.getTechnicalRisk()), XzdProjectRiskAssessment::getTechnicalRisk, bo.getTechnicalRisk());
lqw.eq(StringUtils.isNotBlank(bo.getEconomicRisk()), XzdProjectRiskAssessment::getEconomicRisk, bo.getEconomicRisk());
lqw.eq(StringUtils.isNotBlank(bo.getContractRisk()), XzdProjectRiskAssessment::getContractRisk, bo.getContractRisk());
lqw.eq(StringUtils.isNotBlank(bo.getPersonnelRisk()), XzdProjectRiskAssessment::getPersonnelRisk, bo.getPersonnelRisk());
lqw.eq(StringUtils.isNotBlank(bo.getConstructionRisk()), XzdProjectRiskAssessment::getConstructionRisk, bo.getConstructionRisk());
lqw.eq(StringUtils.isNotBlank(bo.getManagementRisk()), XzdProjectRiskAssessment::getManagementRisk, bo.getManagementRisk());
lqw.eq(StringUtils.isNotBlank(bo.getSubcontractRisk()), XzdProjectRiskAssessment::getSubcontractRisk, bo.getSubcontractRisk());
lqw.eq(StringUtils.isNotBlank(bo.getOtherRisks()), XzdProjectRiskAssessment::getOtherRisks, bo.getOtherRisks());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdProjectRiskAssessment::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdProjectRiskAssessment::getAuditStatus, bo.getAuditStatus());
return lqw;
}
private LambdaQueryWrapper<XzdProjectRiskAssessment> buildQueryWrapper1(XzdProjectVo bo) {
LambdaQueryWrapper<XzdProjectRiskAssessment> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdProjectRiskAssessment::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocumentNumber()), XzdProjectRiskAssessment::getDocumentNumber, bo.getDocumentNumber());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdProjectRiskAssessment::getProjectName, bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getProjectBusinessOwner()), XzdProjectRiskAssessment::getProjectBusinessOwner, bo.getProjectBusinessOwner());
lqw.eq(StringUtils.isNotBlank(bo.getCreateBy().toString()), XzdProjectRiskAssessment::getCreateBy, bo.getCreateBy());
lqw.ge(StringUtils.isNotBlank(bo.getStartTime().toString()), XzdProjectRiskAssessment::getCreateTime, bo.getStartTime());
lqw.le(StringUtils.isNotBlank(bo.getEndTime().toString()), XzdProjectRiskAssessment::getCreateTime, bo.getEndTime());
return lqw;
}
/**
* 新增项目风险评估签审意见
*
* @param bo 项目风险评估签审意见
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdProjectRiskAssessmentBo bo) {
XzdProjectRiskAssessment add = MapstructUtils.convert(bo, XzdProjectRiskAssessment.class);
validEntityBeforeSave(add);
if(add != null){
String s = areaUtil.generateDateBasedNumber();
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdProjectRiskAssessment>().gt(XzdProjectRiskAssessment::getCreateTime, LocalDateTime.now().minusDays(1)));
add.setDocumentNumber(s+"-"+(l+1));
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改项目风险评估签审意见
*
* @param bo 项目风险评估签审意见
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdProjectRiskAssessmentBo bo) {
XzdProjectRiskAssessment update = MapstructUtils.convert(bo, XzdProjectRiskAssessment.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdProjectRiskAssessment entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除项目风险评估签审意见信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -5,17 +5,14 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.xzd.domain.XzdCustomertype;
import org.dromara.xzd.domain.dto.AddCorrespondentDto; import org.dromara.xzd.domain.dto.AddCorrespondentDto;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.dto.XzdClienteleListDto; import org.dromara.xzd.domain.dto.XzdClienteleListDto;
import org.dromara.xzd.domain.vo.XzdClienteleListSumVo; import org.dromara.xzd.domain.vo.XzdClienteleListSumVo;
import org.dromara.xzd.domain.vo.XzdClienteleListVo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo; import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
import org.dromara.xzd.domain.vo.XzdPoiAreaVo; import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
import org.dromara.xzd.service.IXzdCorrespondentList; import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.IXzdCustomertypeInfoService;
import org.dromara.xzd.service.IXzdCustomertypeService; import org.dromara.xzd.service.IXzdCustomertypeService;
import org.dromara.xzd.service.IXzdPoiAreaService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -38,7 +35,6 @@ public class XzdCorrespondentList {
/** /**
* 查询区域列表 * 查询区域列表
*/ */
// @SaCheckPermission("xzd:poiArea:list")
@GetMapping("/list") @GetMapping("/list")
public R<XzdPoiAreaVo> list() { public R<XzdPoiAreaVo> list() {
return iXzdCorrespondentList.queryPageList(); return iXzdCorrespondentList.queryPageList();
@ -48,19 +44,29 @@ public class XzdCorrespondentList {
/** /**
* 客户信息添加 * 客户信息添加
*/ */
@SaCheckPermission("xzd:poiArea:add") @SaCheckPermission("xzd:customertypeInfo:add")
@PostMapping("/addCorrespondent") @PostMapping("/addCorrespondent")
public R<String> addCorrespondent(@RequestBody AddCorrespondentDto dto) { public R<String> addCorrespondent(@RequestBody AddCorrespondentDto dto) {
return iXzdCorrespondentList.addCorrespondent(dto); return iXzdCorrespondentList.addCorrespondent(dto);
} }
/**
* 客户信息修改
*/
@SaCheckPermission("xzd:customertypeInfo:edit")
@PutMapping("/addCorrespondent")
public R<String> putCorrespondent(@RequestBody AddCorrespondentDto dto) {
return iXzdCorrespondentList.putCorrespondent(dto);
}
/** /**
* 客户信息删除 * 客户信息删除
*/ */
@SaCheckPermission("xzd:poiArea:del") @SaCheckPermission("xzd:customertypeInfo:remove")
@PostMapping("/delCorrespondent") @DeleteMapping("/delCorrespondent/{dto}")
public R<String> delCorrespondent(@RequestBody List<AddCorrespondentDto> dto) { public R<String> delCorrespondent(@PathVariable Long[] dto) {
return iXzdCorrespondentList.delCorrespondent(dto); return iXzdCorrespondentList.delCorrespondent(dto);
} }
@ -69,9 +75,9 @@ public class XzdCorrespondentList {
/** /**
* 客户信息列表 * 客户信息列表
*/ */
@SaCheckPermission("xzd:poiArea:list") @SaCheckPermission("xzd:customertypeInfo:query")
@PostMapping("/queryCustomertype") @GetMapping("/queryCustomertype")
public R<XzdClienteleListSumVo> queryCustomertype(@RequestBody XzdClienteleListDto dto, PageQuery pageQuery) { public R<XzdClienteleListSumVo> queryCustomertype( XzdClienteleListDto dto, PageQuery pageQuery) {
return iXzdCorrespondentList.queryCustomertype(dto, pageQuery); return iXzdCorrespondentList.queryCustomertype(dto, pageQuery);
} }
@ -79,21 +85,19 @@ public class XzdCorrespondentList {
/** /**
* 客户类型列表 * 客户类型列表
*/ */
@SaCheckPermission("xzd:poiArea:list") @SaCheckPermission("xzd:customertypeInfo:query")
@PostMapping("/queryCustomertypeList") @PostMapping("/queryCustomertypeList")
public R<List<XzdCustomertypeVo>> queryCustomertypeList() { public R<List<XzdCustomertypeVo>> queryCustomertypeList() {
return iXzdCustomertypeService.queryCustomertypeList(); return iXzdCustomertypeService.queryCustomertypeList();
} }
/**
* 客户详情
*/
@GetMapping("/getCustomerByid/{id}")
public R<QuerCorrespondentDto> getCustomerByid(@PathVariable Long id) {
return iXzdCorrespondentList.getCustomerByid(id);
}
} }

View File

@ -1,105 +0,0 @@
package org.dromara.xzd.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo;
import org.dromara.xzd.domain.bo.XzdProjectManagerApprovalBo;
import org.dromara.xzd.service.IXzdProjectManagerApprovalService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 项目经理推荐及审批
*
* @author Lion Li
* @date 2025-10-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/approval")
public class XzdProjectManagerApprovalController extends BaseController {
private final IXzdProjectManagerApprovalService xzdProjectManagerApprovalService;
/**
* 查询项目经理推荐及审批列表
*/
@SaCheckPermission("xzd:approval:list")
@GetMapping("/list")
public TableDataInfo<XzdProjectManagerApprovalVo> list(XzdProjectManagerApprovalBo bo, PageQuery pageQuery) {
return xzdProjectManagerApprovalService.queryPageList(bo, pageQuery);
}
/**
* 导出项目经理推荐及审批列表
*/
@SaCheckPermission("xzd:approval:export")
@Log(title = "项目经理推荐及审批", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdProjectManagerApprovalBo bo, HttpServletResponse response) {
List<XzdProjectManagerApprovalVo> list = xzdProjectManagerApprovalService.queryList(bo);
ExcelUtil.exportExcel(list, "项目经理推荐及审批", XzdProjectManagerApprovalVo.class, response);
}
/**
* 获取项目经理推荐及审批详细信息
*
* @param id 主键
*/
@SaCheckPermission("xzd:approval:query")
@GetMapping("/{id}")
public R<XzdProjectManagerApprovalVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdProjectManagerApprovalService.queryById(id));
}
/**
* 新增项目经理推荐及审批
*/
@SaCheckPermission("xzd:approval:add")
@Log(title = "项目经理推荐及审批", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdProjectManagerApprovalBo bo) {
return toAjax(xzdProjectManagerApprovalService.insertByBo(bo));
}
/**
* 修改项目经理推荐及审批
*/
@SaCheckPermission("xzd:approval:edit")
@Log(title = "项目经理推荐及审批", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdProjectManagerApprovalBo bo) {
return toAjax(xzdProjectManagerApprovalService.updateByBo(bo));
}
/**
* 删除项目经理推荐及审批
*
* @param ids 主键串
*/
@SaCheckPermission("xzd:approval:remove")
@Log(title = "项目经理推荐及审批", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdProjectManagerApprovalService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,99 @@
package org.dromara.xzd.controller;
import java.util.List;
import cn.hutool.core.lang.tree.Tree;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import org.dromara.xzd.domain.bo.XzdProjectTypeBo;
import org.dromara.xzd.domain.vo.XzdProjectTypeVo;
import org.dromara.xzd.service.IXzdProjectTypeService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
/**
* 项目类型
*
* @author Lion Li
* @date 2025-10-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/system/projectType")
public class XzdProjectTypeController extends BaseController {
private final IXzdProjectTypeService xzdProjectTypeService;
/**
* 查询项目类型列表
*/
@GetMapping("/list")
public R<List<Tree<String>>> list(XzdProjectTypeBo bo) {
List<XzdProjectTypeVo> list = xzdProjectTypeService.queryList(bo);
return R.ok(xzdProjectTypeService.buildMenuTreeSelect(list));
}
/**
* 导出项目类型列表
*/
@Log(title = "项目类型", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdProjectTypeBo bo, HttpServletResponse response) {
List<XzdProjectTypeVo> list = xzdProjectTypeService.queryList(bo);
ExcelUtil.exportExcel(list, "项目类型", XzdProjectTypeVo.class, response);
}
/**
* 获取项目类型详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<XzdProjectTypeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdProjectTypeService.queryById(id));
}
/**
* 新增项目类型
*/
@Log(title = "项目类型", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdProjectTypeBo bo) {
return toAjax(xzdProjectTypeService.insertByBo(bo));
}
/**
* 修改项目类型
*/
@Log(title = "项目类型", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdProjectTypeBo bo) {
return toAjax(xzdProjectTypeService.updateByBo(bo));
}
/**
* 删除项目类型
*
* @param ids 主键串
*/
@Log(title = "项目类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdProjectTypeService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -1,116 +0,0 @@
package org.dromara.xzd.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.domain.vo.XzdCustomertypeInfoVo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
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.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.service.IXzdSupplierInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 供应商信息
*
* @author Lion Li
* @date 2025-09-30
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/supplierInfo")
public class XzdSupplierInfoController extends BaseController {
private final IXzdSupplierInfoService xzdSupplierInfoService;
/**
* 查询供应商信息列表
*/
@SaCheckPermission("xzd:supplierInfo:list")
@GetMapping("/list")
public TableDataInfo<XzdSupplierInfoVo> list(XzdSupplierInfoBo bo, PageQuery pageQuery) {
return xzdSupplierInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出供应商信息列表
*/
@SaCheckPermission("xzd:supplierInfo:export")
@Log(title = "供应商信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdSupplierInfoBo bo, HttpServletResponse response) {
List<XzdSupplierInfoVo> list = xzdSupplierInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "供应商信息", XzdSupplierInfoVo.class, response);
}
/**
* 获取供应商信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("xzd:supplierInfo:query")
@GetMapping("/{id}")
public R<XzdSupplierInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSupplierInfoService.queryById(id));
}
/**
* 新增供应商信息
*/
@SaCheckPermission("xzd:supplierInfo:add")
@Log(title = "供应商信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdSupplierInfoBo bo) {
return toAjax(xzdSupplierInfoService.insertByBo(bo));
}
/**
* 修改供应商信息
*/
@SaCheckPermission("xzd:supplierInfo:edit")
@Log(title = "供应商信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdSupplierInfoBo bo) {
return toAjax(xzdSupplierInfoService.updateByBo(bo));
}
/**
* 删除供应商信息
*
* @param ids 主键串
*/
@SaCheckPermission("xzd:supplierInfo:remove")
@Log(title = "供应商信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdSupplierInfoService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取类型列表
*/
@SaCheckPermission("xzd:supplierInfo:typeList")
@GetMapping("/typeList")
public R<List<XzdCustomertypeVo>> typeList() {
return xzdSupplierInfoService.typeList();
}
}

View File

@ -4,11 +4,8 @@ import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import org.dromara.xzd.domain.vo.XzdCustomertypeInfoVo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
import java.io.Serial; import java.io.Serial;
import java.util.List;
/** /**
* 客户|供应商类型(公共)对象 xzd_customertype * 客户|供应商类型(公共)对象 xzd_customertype

View File

@ -14,9 +14,8 @@ import java.io.Serial;
* @date 2025-09-30 * @date 2025-09-30
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_poi_area") @TableName("xzd_poi_area")
public class XzdPoiArea extends BaseEntity { public class XzdPoiArea {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -1,123 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 项目经理推荐及审批对象 xzd_project_manager_approval
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_project_manager_approval")
public class XzdProjectManagerApproval extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 单据编号
*/
private String documentNumber;
/**
* 标题
*/
private String title;
/**
* 日期
*/
private Date recordDate;
/**
* 项目名称
*/
private String projectName;
/**
* 客户名称
*/
private String customerName;
/**
* 项目规模
*/
private String projectScale;
/**
* 合同金额
*/
private Long contractAmount;
/**
* 拟任项目经理
*/
private String prospectiveManagerName;
/**
* 身份证号
*/
private String idCardNumber;
/**
* 教育程度
*/
private String educationLevel;
/**
* 工作年限
*/
private Long workExperienceYears;
/**
* 专业年限
*/
private Long professionalExperienceYears;
/**
* 合同用工形式
*/
private String contractEmploymentType;
/**
* 资格证书
*/
private String qualificationCertificates;
/**
* 是否属于历史数据补录
*/
private String isHistoricalData;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,54 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import java.io.Serial;
/**
* 项目类型对象 xzd_project_type
*
* @author Lion Li
* @date 2025-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_project_type")
public class XzdProjectType extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 父节点ID
*/
private Long parentId;
/**
* 项目类型名称
*/
private String typeName;
/**
* 排序
*/
private Long sortOrder;
/**
* 备注
*/
private String remark;
}

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.domain; package org.dromara.xzd.domain;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@ -42,6 +43,11 @@ public class XzdSettlementInfo extends BaseEntity {
*/ */
private String settlementUnit; private String settlementUnit;
/**
* 分管部门
*/
private String branchedPassage;
/** /**
* 结算方式 * 结算方式
*/ */

View File

@ -1,63 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 供应商评价对象 xzd_supplier_evaluation
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_supplier_evaluation")
public class XzdSupplierEvaluation extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 评价类型
*/
private String evaluationType;
/**
* 评价内容
*/
private String evaluationContent;
/**
* 评价结果
*/
private String evaluationResult;
/**
* 评价人
*/
private String evaluator;
/**
* 评价时间
*/
private Date evaluationTime;
}

View File

@ -1,233 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 供应商信息对象 xzd_supplier_info
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_supplier_info")
public class XzdSupplierInfo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 单位编号
*/
private String unitCode;
/**
* 单位名称
*/
private String unitName;
/**
* 单位属性(字典)
*/
private String unitProperty;
/**
* 简称
*/
private String abbreviation;
/**
* 英文简称
*/
private String englishAbbreviation;
/**
* 助记码
*/
private String mnemonicCode;
/**
* 统一社会信用代码
*/
private String unifiedSocialCreditCode;
/**
* 税务登记号
*/
private String taxRegistrationNumber;
/**
* 证件类型
*/
private String certificateType;
/**
* 证件编号
*/
private String certificateNumber;
/**
* 国家
*/
private String country;
/**
* 省
*/
private String province;
/**
* 市
*/
private String city;
/**
* 区县
*/
private String districtCounty;
/**
* 行业类型
*/
private String industryType;
/**
* 上级单位
*/
private String superiorUnit;
/**
* 集团供应商0=否1=是)
*/
private Long isGroupSupplier;
/**
* 工商变更时间
*/
private Date industrialCommercialChangeTime;
/**
* 备注
*/
private String remarks;
/**
* 内部0=否1=是)
*/
private Long isInternal;
/**
* 黑名单0=否1=是)
*/
private Long isBlacklist;
/**
* 自动生成客户0=否1=是)
*/
private Long isAutoGenerateCustomer;
/**
* 单位成立日期
*/
private Date establishmentDate;
/**
* 纳税身份类型(字典)
*/
private String taxIdentityType;
/**
* 纳税人名称
*/
private String taxpayerName;
/**
* 税务银行行号
*/
private String taxBankCode;
/**
* 税务银行名称
*/
private String taxBankName;
/**
* 税务登记账号
*/
private String taxRegistrationAccount;
/**
* 税务登记地址
*/
private String taxRegistrationAddress;
/**
* 税务登记电话
*/
private String taxRegistrationPhone;
/**
* 注册资金
*/
private Long registeredCapital;
/**
* 注册时间
*/
private Date registrationTime;
/**
* 法人代表
*/
private String legalRepresentative;
/**
* 营业范围
*/
private String businessScope;
/**
* 币种(字典)
*/
private String currency;
/**
* 行业地位(字典)
*/
private String industryPosition;
/**
* 企业性质(字典)
*/
private String enterpriseNature;
/**
* 规模(字典)
*/
private String scale;
/**
* 网址
*/
private String website;
/**
* 邮箱
*/
private String email;
}

View File

@ -1,68 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 供应商资质信息对象 xzd_supplier_qualification
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_supplier_qualification")
public class XzdSupplierQualification extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 资质名称
*/
private String name;
/**
* 资质起始日期
*/
private Date beginTime;
/**
* 资质到期日期
*/
private Date endTime;
/**
* 文件路径
*/
private String fileUrl;
/**
* 文件ID
*/
private Long fileId;
/**
* 备注
*/
private String remark;
}

View File

@ -1,133 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 供应商信息补充对象 xzd_supplier_supplement
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_supplier_supplement")
public class XzdSupplierSupplement extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 供应商状态
*/
private String supplierStatus;
/**
* 供应商等级
*/
private String supplierLevel;
/**
* 分管部门
*/
private String responsibleDepartment;
/**
* 分管业务员
*/
private String responsibleSalesman;
/**
* 归属组织
*/
private String belongingOrganization;
/**
* 创建者
*/
private String creator;
/**
* 创建日期
*/
private Date createDate;
/**
* 审核标志0未审核1已审核
*/
private Long auditFlag;
/**
* 冻结标志0未冻结1已冻结
*/
private Long freezeFlag;
/**
* 冻结开始时间
*/
private Date freezeStartTime;
/**
* 冻结结束时间
*/
private Date freezeEndTime;
/**
* 供应商主类型
*/
private String supplierMainType;
/**
* 默认财务组织
*/
private String defaultFinanceOrganization;
/**
* 投标状态
*/
private String biddingStatus;
/**
* 服务区域
*/
private String serviceArea;
/**
* 合格有效期
*/
private Date qualificationValidity;
/**
* 考核小组组长
*/
private String assessmentTeamLeader;
/**
* 考核小组成员
*/
private String assessmentTeamMembers;
/**
* 备案组织
*/
private String recordOrganization;
}

View File

@ -1,111 +0,0 @@
package org.dromara.xzd.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 供应物料对象 _xzd_supply_materials
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_supply_materials")
public class XzdSupplyMaterials extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "id")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 资源分类
*/
private String resourceCategory;
/**
* SKU编码
*/
private String skuCode;
/**
* SKU名称
*/
private String skuName;
/**
* 规格
*/
private String specification;
/**
* 计量单位
*/
private String unitOfMeasure;
/**
* 供应商方物料编码
*/
private String supplierMaterialCode;
/**
* 供应商方物料名称
*/
private String supplierMaterialName;
/**
* 供应商方物料条形码
*/
private String supplierMaterialBarcode;
/**
* 含税单价
*/
private Long taxInclusiveUnitPrice;
/**
* 配额(%)
*/
private Long quota;
/**
* 换货率(%)
*/
private Long exchangeRate;
/**
* 换货周期(天)
*/
private Long exchangeCycle;
/**
* 交货周期(天)
*/
private Long deliveryCycle;
/**
* 付款条件
*/
private String paymentTerms;
/**
* 备注
*/
private String remarks;
}

View File

@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -50,12 +53,12 @@ public class XzdCertificateInfoBo extends BaseEntity {
/** /**
* 生效日期 * 生效日期
*/ */
private Date effectiveDate; private LocalDateTime effectiveDate;
/** /**
* 截止日期 * 截止日期
*/ */
private Date expirationDate; private LocalDateTime expirationDate;
/** /**
* 停用标志0未停用1已停用 * 停用标志0未停用1已停用

View File

@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -75,12 +78,12 @@ public class XzdCustomerDetailBo extends BaseEntity {
/** /**
* 冻结开始时间 * 冻结开始时间
*/ */
private Date freezeStartTime; private LocalDateTime freezeStartTime;
/** /**
* 冻结结束时间 * 冻结结束时间
*/ */
private Date freezeEndTime; private LocalDateTime freezeEndTime;
/** /**
* 经销商类型 * 经销商类型

View File

@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -123,7 +126,7 @@ public class XzdCustomerinformationBo extends BaseEntity {
/** /**
* 工商变更时间 * 工商变更时间
*/ */
private Date industrialCommercialChangeTime; private LocalDateTime industrialCommercialChangeTime;
/** /**
* 备注 * 备注
@ -163,7 +166,7 @@ public class XzdCustomerinformationBo extends BaseEntity {
/** /**
* 单位成立日期 * 单位成立日期
*/ */
private Date establishmentDate; private LocalDateTime establishmentDate;
/** /**
* 纳税身份类型 * 纳税身份类型
@ -208,7 +211,7 @@ public class XzdCustomerinformationBo extends BaseEntity {
/** /**
* 注册时间 * 注册时间
*/ */
private Date registrationTime; private LocalDateTime registrationTime;
/** /**
* 营业范围 * 营业范围

View File

@ -8,6 +8,9 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -75,7 +78,7 @@ public class XzdProjectInfoBo extends BaseEntity {
/** /**
* 项目日期 * 项目日期
*/ */
private Date projectDate; private LocalDateTime projectDate;
/** /**
* 管理组织 * 管理组织

View File

@ -1,124 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.XzdProjectManagerApproval;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 项目经理推荐及审批业务对象 xzd_project_manager_approval
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdProjectManagerApproval.class, reverseConvertGenerate = false)
public class XzdProjectManagerApprovalBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编号
*/
// @NotBlank(message = "单据编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String documentNumber;
/**
* 标题
*/
private String title;
/**
* 日期
*/
private Date recordDate;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String projectName;
/**
* 客户名称
*/
private String customerName;
/**
* 项目规模
*/
private String projectScale;
/**
* 合同金额
*/
private Long contractAmount;
/**
* 拟任项目经理
*/
private String prospectiveManagerName;
/**
* 身份证号
*/
private String idCardNumber;
/**
* 教育程度
*/
private String educationLevel;
/**
* 工作年限
*/
private Long workExperienceYears;
/**
* 专业年限
*/
private Long professionalExperienceYears;
/**
* 合同用工形式
*/
private String contractEmploymentType;
/**
* 资格证书
*/
private String qualificationCertificates;
/**
* 是否属于历史数据补录
*/
private String isHistoricalData;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,55 @@
package org.dromara.xzd.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.domain.XzdProjectType;
import java.util.Date;
/**
* 项目类型业务对象 xzd_project_type
*
* @author Lion Li
* @date 2025-10-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdProjectType.class, reverseConvertGenerate = false)
public class XzdProjectTypeBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 父节点ID
*/
@NotNull(message = "父节点ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long parentId;
/**
* 项目类型名称
*/
@NotBlank(message = "项目类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String typeName;
/**
* 排序
*/
private Long sortOrder;
/**
* 备注
*/
private String remark;
}

View File

@ -75,6 +75,11 @@ public class XzdSettlementInfoBo extends BaseEntity {
*/ */
private String accountName; private String accountName;
/**
* 分管部门
*/
private String branchedPassage;
/** /**
* 开户行省 * 开户行省
*/ */

View File

@ -1,67 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.XzdSupplierEvaluation;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 供应商评价业务对象 xzd_supplier_evaluation
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSupplierEvaluation.class, reverseConvertGenerate = false)
public class XzdSupplierEvaluationBo extends BaseEntity {
/**
*
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 评价类型
*/
@NotBlank(message = "评价类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String evaluationType;
/**
* 评价内容
*/
@NotBlank(message = "评价内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String evaluationContent;
/**
* 评价结果
*/
@NotBlank(message = "评价结果不能为空", groups = { AddGroup.class, EditGroup.class })
private String evaluationResult;
/**
* 评价人
*/
@NotBlank(message = "评价人不能为空", groups = { AddGroup.class, EditGroup.class })
private String evaluator;
/**
* 评价时间
*/
@NotNull(message = "评价时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date evaluationTime;
}

View File

@ -1,352 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.*;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 供应商信息业务对象 xzd_supplier_info
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSupplierInfo.class, reverseConvertGenerate = false)
public class XzdSupplierInfoBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 单位编号
*/
@NotBlank(message = "单位编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitCode;
/**
* 单位名称
*/
@NotBlank(message = "单位名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitName;
/**
* 单位属性(字典)
*/
@NotBlank(message = "单位属性(字典)不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitProperty;
/**
* 简称
*/
private String abbreviation;
/**
* 英文简称
*/
private String englishAbbreviation;
/**
* 助记码
*/
private String mnemonicCode;
/**
* 统一社会信用代码
*/
@NotBlank(message = "统一社会信用代码不能为空", groups = { AddGroup.class, EditGroup.class })
private String unifiedSocialCreditCode;
/**
* 税务登记号
*/
private String taxRegistrationNumber;
/**
* 证件类型
*/
private String certificateType;
/**
* 证件编号
*/
private String certificateNumber;
/**
* 国家
*/
private String country;
/**
* 省
*/
private String province;
/**
* 市
*/
private String city;
/**
* 区县
*/
private String districtCounty;
/**
* 行业类型
*/
private String industryType;
/**
* 上级单位
*/
private String superiorUnit;
/**
* 集团供应商0=否1=是)
*/
@NotNull(message = "集团供应商0=否1=是)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isGroupSupplier;
/**
* 工商变更时间
*/
private Date industrialCommercialChangeTime;
/**
* 备注
*/
private String remarks;
/**
* 内部0=否1=是)
*/
private Long isInternal;
/**
* 黑名单0=否1=是)
*/
private Long isBlacklist;
/**
* 自动生成客户0=否1=是)
*/
private Long isAutoGenerateCustomer;
/**
* 单位成立日期
*/
private Date establishmentDate;
/**
* 纳税身份类型(字典)
*/
private String taxIdentityType;
/**
* 纳税人名称
*/
private String taxpayerName;
/**
* 税务银行行号
*/
private String taxBankCode;
/**
* 税务银行名称
*/
private String taxBankName;
/**
* 税务登记账号
*/
private String taxRegistrationAccount;
/**
* 税务登记地址
*/
private String taxRegistrationAddress;
/**
* 税务登记电话
*/
private String taxRegistrationPhone;
/**
* 注册资金
*/
private Long registeredCapital;
/**
* 注册时间
*/
private Date registrationTime;
/**
* 法人代表
*/
private String legalRepresentative;
/**
* 营业范围
*/
private String businessScope;
/**
* 币种(字典)
*/
private String currency;
/**
* 行业地位(字典)
*/
private String industryPosition;
/**
* 企业性质(字典)
*/
private String enterpriseNature;
/**
* 规模(字典)
*/
private String scale;
/**
* 网址
*/
private String website;
/**
* 邮箱
*/
private String email;
/**
* 资质信息
*/
private List<XzdSupplierQualification> qualifications;
/**
* 供应商补充信息
*/
private XzdSupplierSupplement supplement;
/**
* 地址信息
*/
private List<XzdAddressInfo> addresses;
/**
* 联系人信息
*/
private List<XzdContact> contacts;
/**
* 证照信息
*/
private List<XzdCertificateInfo> certificates;
/**
* 结算信息
*/
private XzdSettlementInfo settlement;
/**
* 业务信息
*/
private XzdBusinessInfo business;
/**
* 供应商类型
*/
private List<XzdCustomertypeInfo> customerTypes;
/**
* 供应物料
*/
private List<XzdSupplyMaterials> materials;
/**
* 供应商评价
*/
private List<XzdSupplierEvaluation> evaluations;
/**
* 项目信息
*/
private List<XzdProjectInfo> projects;
/**
* 合同信息
*/
private List<XzdContractInfo> contracts;
/**
* 分管部门
*/
private String fgbm;
/**
* 分管业务员
*/
private String fgywy;
/**
* 合格有效期开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 合格有效期结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**
* 审核状态0未审核1已审核
*/
private String shzt;
/**
* 冻结标志0未冻结1已冻结
*/
private String djzt;
/**
* 投标状态
*/
private String tbzt;
/**
* 分页大小
*/
private Integer pageSize;
/**
* 当前页数
*/
private Integer pageNum;
/**
* 排序列
*/
private String orderByColumn;
private Integer offset;
}

View File

@ -1,74 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.XzdSupplierQualification;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 供应商资质信息业务对象 xzd_supplier_qualification
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSupplierQualification.class, reverseConvertGenerate = false)
public class XzdSupplierQualificationBo extends BaseEntity {
/**
*
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 供应商ID
*/
@NotNull(message = "供应商ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long supplierId;
/**
* 资质名称
*/
@NotBlank(message = "资质名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 资质起始日期
*/
@NotNull(message = "资质起始日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date beginTime;
/**
* 资质到期日期
*/
@NotNull(message = "资质到期日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 文件路径
*/
@NotBlank(message = "文件路径不能为空", groups = { AddGroup.class, EditGroup.class })
private String fileUrl;
/**
* 文件ID
*/
@NotNull(message = "文件ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long fileId;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

View File

@ -1,150 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.XzdSupplierSupplement;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 供应商信息补充业务对象 xzd_supplier_supplement
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSupplierSupplement.class, reverseConvertGenerate = false)
public class XzdSupplierSupplementBo extends BaseEntity {
/**
*
*/
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 供应商状态
*/
@NotBlank(message = "供应商状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierStatus;
/**
* 供应商等级
*/
@NotBlank(message = "供应商等级不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierLevel;
/**
* 分管部门
*/
@NotBlank(message = "分管部门不能为空", groups = { AddGroup.class, EditGroup.class })
private String responsibleDepartment;
/**
* 分管业务员
*/
@NotBlank(message = "分管业务员不能为空", groups = { AddGroup.class, EditGroup.class })
private String responsibleSalesman;
/**
* 归属组织
*/
@NotBlank(message = "归属组织不能为空", groups = { AddGroup.class, EditGroup.class })
private String belongingOrganization;
/**
* 创建者
*/
@NotBlank(message = "创建者不能为空", groups = { AddGroup.class, EditGroup.class })
private String creator;
/**
* 创建日期
*/
@NotNull(message = "创建日期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date createDate;
/**
* 审核标志0未审核1已审核
*/
@NotNull(message = "审核标志0未审核1已审核不能为空", groups = { AddGroup.class, EditGroup.class })
private Long auditFlag;
/**
* 冻结标志0未冻结1已冻结
*/
@NotNull(message = "冻结标志0未冻结1已冻结不能为空", groups = { AddGroup.class, EditGroup.class })
private Long freezeFlag;
/**
* 冻结开始时间
*/
@NotNull(message = "冻结开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date freezeStartTime;
/**
* 冻结结束时间
*/
@NotNull(message = "冻结结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date freezeEndTime;
/**
* 供应商主类型
*/
@NotBlank(message = "供应商主类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierMainType;
/**
* 默认财务组织
*/
@NotBlank(message = "默认财务组织不能为空", groups = { AddGroup.class, EditGroup.class })
private String defaultFinanceOrganization;
/**
* 投标状态
*/
@NotBlank(message = "投标状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String biddingStatus;
/**
* 服务区域
*/
@NotBlank(message = "服务区域不能为空", groups = { AddGroup.class, EditGroup.class })
private String serviceArea;
/**
* 合格有效期
*/
@NotNull(message = "合格有效期不能为空", groups = { AddGroup.class, EditGroup.class })
private Date qualificationValidity;
/**
* 考核小组组长
*/
@NotBlank(message = "考核小组组长不能为空", groups = { AddGroup.class, EditGroup.class })
private String assessmentTeamLeader;
/**
* 考核小组成员
*/
@NotBlank(message = "考核小组成员不能为空", groups = { AddGroup.class, EditGroup.class })
private String assessmentTeamMembers;
/**
* 备案组织
*/
@NotBlank(message = "备案组织不能为空", groups = { AddGroup.class, EditGroup.class })
private String recordOrganization;
}

View File

@ -1,124 +0,0 @@
package org.dromara.xzd.domain.bo;
import org.dromara.xzd.domain.XzdSupplyMaterials;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 供应物料业务对象 _xzd_supply_materials
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSupplyMaterials.class, reverseConvertGenerate = false)
public class XzdSupplyMaterialsBo extends BaseEntity {
/**
*
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 资源分类
*/
@NotBlank(message = "资源分类不能为空", groups = { AddGroup.class, EditGroup.class })
private String resourceCategory;
/**
* SKU编码
*/
@NotBlank(message = "SKU编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String skuCode;
/**
* SKU名称
*/
@NotBlank(message = "SKU名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String skuName;
/**
* 规格
*/
@NotBlank(message = "规格不能为空", groups = { AddGroup.class, EditGroup.class })
private String specification;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitOfMeasure;
/**
* 供应商方物料编码
*/
@NotBlank(message = "供应商方物料编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierMaterialCode;
/**
* 供应商方物料名称
*/
@NotBlank(message = "供应商方物料名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierMaterialName;
/**
* 供应商方物料条形码
*/
@NotBlank(message = "供应商方物料条形码不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierMaterialBarcode;
/**
* 含税单价
*/
@NotNull(message = "含税单价不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taxInclusiveUnitPrice;
/**
* 配额(%)
*/
@NotNull(message = "配额(%)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long quota;
/**
* 换货率(%)
*/
@NotNull(message = "换货率(%)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long exchangeRate;
/**
* 换货周期(天)
*/
@NotNull(message = "换货周期(天)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long exchangeCycle;
/**
* 交货周期(天)
*/
@NotNull(message = "交货周期(天)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long deliveryCycle;
/**
* 付款条件
*/
@NotBlank(message = "付款条件不能为空", groups = { AddGroup.class, EditGroup.class })
private String paymentTerms;
/**
* 备注
*/
private String remarks;
}

View File

@ -37,10 +37,10 @@ public class AddCorrespondentDto {
private XzdBusinessInfoBo xzdBusinessInfo; private XzdBusinessInfoBo xzdBusinessInfo;
// 项目信息 // 项目信息
private XzdProjectInfoBo xzdProjectInfo; private List<XzdProjectInfoBo> xzdProjectInfo;
// 合同信息 // 合同信息
private XzdContractInfoBo xzdContractInfo; private List<XzdContractInfoBo> xzdContractInfo;
// 客户类型信息 // 客户类型信息
private List<XzdCustomertypeInfoBo> xzdCustomertypeInfo; private List<XzdCustomertypeInfoBo> xzdCustomertypeInfo;

View File

@ -0,0 +1,50 @@
package org.dromara.xzd.domain.dto;
import lombok.Data;
import org.dromara.xzd.domain.*;
import org.dromara.xzd.domain.bo.*;
import org.dromara.xzd.domain.vo.XzdCustomerDetailVo;
import org.dromara.xzd.domain.vo.XzdCustomerinformationVo;
import java.util.List;
@Data
public class QuerCorrespondentDto {
// 客户信息
private XzdCustomerinformationVo xzdCustomerinformation;
// tab客户信息
private XzdCustomerDetail xzdCustomerDetail;
// 地址信息
private List<XzdAddressInfo> xzdAddressInfo;
// 联系人信息
private List<XzdContact> xzdContact;
// 证件信息
private List<XzdCertificateInfo> xzdCertificateInfo;
// 资质信息
private List<XzdQualificationInfo> xzdQualificationInfo;
// 结算信息
private XzdSettlementInfo xzdSettlementInfo;
// 业务信息
private XzdBusinessInfo xzdBusinessInfo;
// 项目信息
private List<XzdProjectInfo> xzdProjectInfo;
// 合同信息
private List<XzdContractInfo> xzdContractInfo;
// 客户类型信息
private List<XzdCustomertypeInfo> xzdCustomertypeInfo;
}

View File

@ -16,6 +16,12 @@ public class XzdClienteleListDto {
*/ */
private String unitCode; private String unitCode;
/**
* 区域ID
*/
private Long poiAreaId;
/** /**
* 单位名称 * 单位名称

View File

@ -15,15 +15,22 @@ import java.util.Date;
public class XzdClienteleListVo { public class XzdClienteleListVo {
// 未找到字段 审核人,冻结人,工作流标志,是否加入黑名单,变更状态 // 未找到字段 审核人,冻结人,工作流标志,变更状态
// XzdCustomerinformationBo // XzdCustomerinformationBo
// 客户id
private Long customerId;
/** /**
* 单位编号 * 单位编号
*/ */
private String unitCode; private String unitCode;
/** /**
* 单位名称 * 单位名称
*/ */

View File

@ -11,7 +11,7 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -65,9 +65,5 @@ public class XzdCustomertypeVo implements Serializable {
@ExcelProperty(value = "客户类型") @ExcelProperty(value = "客户类型")
private String customerType; private String customerType;
/**
* 子节点
*/
List<XzdCustomertypeVo> children;
} }

View File

@ -1,148 +0,0 @@
package org.dromara.xzd.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdProjectManagerApproval;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 项目经理推荐及审批视图对象 xzd_project_manager_approval
*
* @author Lion Li
* @date 2025-10-10
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdProjectManagerApproval.class)
public class XzdProjectManagerApprovalVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 单据编号
*/
@ExcelProperty(value = "单据编号")
private String documentNumber;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 日期
*/
@ExcelProperty(value = "日期")
private Date recordDate;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 客户名称
*/
@ExcelProperty(value = "客户名称")
private String customerName;
/**
* 项目规模
*/
@ExcelProperty(value = "项目规模")
private String projectScale;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private Long contractAmount;
/**
* 拟任项目经理
*/
@ExcelProperty(value = "拟任项目经理")
private String prospectiveManagerName;
/**
* 身份证号
*/
@ExcelProperty(value = "身份证号")
private String idCardNumber;
/**
* 教育程度
*/
@ExcelProperty(value = "教育程度")
private String educationLevel;
/**
* 工作年限
*/
@ExcelProperty(value = "工作年限")
private Long workExperienceYears;
/**
* 专业年限
*/
@ExcelProperty(value = "专业年限")
private Long professionalExperienceYears;
/**
* 合同用工形式
*/
@ExcelProperty(value = "合同用工形式")
private String contractEmploymentType;
/**
* 资格证书
*/
@ExcelProperty(value = "资格证书")
private String qualificationCertificates;
/**
* 是否属于历史数据补录
*/
@ExcelProperty(value = "是否属于历史数据补录")
private String isHistoricalData;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
}

View File

@ -0,0 +1,67 @@
package org.dromara.xzd.domain.vo;
import java.util.ArrayList;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.xzd.domain.XzdProjectType;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 项目类型视图对象 xzd_project_type
*
* @author Lion Li
* @date 2025-10-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdProjectType.class)
public class XzdProjectTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 父节点ID
*/
@ExcelProperty(value = "父节点ID")
private Long parentId;
/**
* 项目类型名称
*/
@ExcelProperty(value = "项目类型名称")
private String typeName;
/**
* 排序
*/
@ExcelProperty(value = "排序")
private Long sortOrder;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
private List<XzdProjectTypeVo> children = new ArrayList<>();;
}

View File

@ -58,6 +58,13 @@ public class XzdSettlementInfoVo implements Serializable {
@ExcelProperty(value = "结算方式") @ExcelProperty(value = "结算方式")
private String settlementMethod; private String settlementMethod;
/**
* 分管部门
*/
@ExcelProperty(value = "分管部门")
private String branchedPassage;
/** /**
* 结算币种 * 结算币种
*/ */

View File

@ -1,75 +0,0 @@
package org.dromara.xzd.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdSupplierEvaluation;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 供应商评价视图对象 xzd_supplier_evaluation
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSupplierEvaluation.class)
public class XzdSupplierEvaluationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 评价类型
*/
@ExcelProperty(value = "评价类型")
private String evaluationType;
/**
* 评价内容
*/
@ExcelProperty(value = "评价内容")
private String evaluationContent;
/**
* 评价结果
*/
@ExcelProperty(value = "评价结果")
private String evaluationResult;
/**
* 评价人
*/
@ExcelProperty(value = "评价人")
private String evaluator;
/**
* 评价时间
*/
@ExcelProperty(value = "评价时间")
private Date evaluationTime;
}

View File

@ -1,417 +0,0 @@
package org.dromara.xzd.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.*;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 供应商信息视图对象 xzd_supplier_info
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSupplierInfo.class)
public class XzdSupplierInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 单位编号
*/
@ExcelProperty(value = "单位编号")
private String unitCode;
/**
* 单位名称
*/
@ExcelProperty(value = "单位名称")
private String unitName;
/**
* 单位属性(字典)
*/
@ExcelProperty(value = "单位属性", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String unitProperty;
/**
* 简称
*/
@ExcelProperty(value = "简称")
private String abbreviation;
/**
* 英文简称
*/
@ExcelProperty(value = "英文简称")
private String englishAbbreviation;
/**
* 助记码
*/
@ExcelProperty(value = "助记码")
private String mnemonicCode;
/**
* 统一社会信用代码
*/
@ExcelProperty(value = "统一社会信用代码")
private String unifiedSocialCreditCode;
/**
* 税务登记号
*/
@ExcelProperty(value = "税务登记号")
private String taxRegistrationNumber;
/**
* 证件类型
*/
@ExcelProperty(value = "证件类型")
private String certificateType;
/**
* 证件编号
*/
@ExcelProperty(value = "证件编号")
private String certificateNumber;
/**
* 国家
*/
@ExcelProperty(value = "国家")
private String country;
/**
* 省
*/
@ExcelProperty(value = "")
private String province;
/**
* 市
*/
@ExcelProperty(value = "")
private String city;
/**
* 区县
*/
@ExcelProperty(value = "区县")
private String districtCounty;
/**
* 行业类型
*/
@ExcelProperty(value = "行业类型")
private String industryType;
/**
* 上级单位
*/
@ExcelProperty(value = "上级单位")
private String superiorUnit;
/**
* 集团供应商0=否1=是)
*/
@ExcelProperty(value = "集团供应商", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==否1=是")
private Long isGroupSupplier;
/**
* 工商变更时间
*/
@ExcelProperty(value = "工商变更时间")
private Date industrialCommercialChangeTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remarks;
/**
* 内部0=否1=是)
*/
@ExcelProperty(value = "内部", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==否1=是")
private Long isInternal;
/**
* 黑名单0=否1=是)
*/
@ExcelProperty(value = "黑名单", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==否1=是")
private Long isBlacklist;
/**
* 自动生成客户0=否1=是)
*/
@ExcelProperty(value = "自动生成客户", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==否1=是")
private Long isAutoGenerateCustomer;
/**
* 单位成立日期
*/
@ExcelProperty(value = "单位成立日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date establishmentDate;
/**
* 纳税身份类型(字典)
*/
@ExcelProperty(value = "纳税身份类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String taxIdentityType;
/**
* 纳税人名称
*/
@ExcelProperty(value = "纳税人名称")
private String taxpayerName;
/**
* 税务银行行号
*/
@ExcelProperty(value = "税务银行行号")
private String taxBankCode;
/**
* 税务银行名称
*/
@ExcelProperty(value = "税务银行名称")
private String taxBankName;
/**
* 税务登记账号
*/
@ExcelProperty(value = "税务登记账号")
private String taxRegistrationAccount;
/**
* 税务登记地址
*/
@ExcelProperty(value = "税务登记地址")
private String taxRegistrationAddress;
/**
* 税务登记电话
*/
@ExcelProperty(value = "税务登记电话")
private String taxRegistrationPhone;
/**
* 注册资金
*/
@ExcelProperty(value = "注册资金")
private Long registeredCapital;
/**
* 注册时间
*/
@ExcelProperty(value = "注册时间")
private Date registrationTime;
/**
* 法人代表
*/
@ExcelProperty(value = "法人代表")
private String legalRepresentative;
/**
* 营业范围
*/
@ExcelProperty(value = "营业范围")
private String businessScope;
/**
* 币种(字典)
*/
@ExcelProperty(value = "币种", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String currency;
/**
* 行业地位(字典)
*/
@ExcelProperty(value = "行业地位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String industryPosition;
/**
* 企业性质(字典)
*/
@ExcelProperty(value = "企业性质", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String enterpriseNature;
/**
* 规模(字典)
*/
@ExcelProperty(value = "规模", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String scale;
/**
* 网址
*/
@ExcelProperty(value = "网址")
private String website;
/**
* 邮箱
*/
@ExcelProperty(value = "邮箱")
private String email;
/**
* 资质信息
*/
private List<XzdSupplierQualification> qualifications;
/**
* 所属组织
*/
private String sszz;
/**
* 供应商补充信息
*/
private XzdSupplierSupplement supplement;
/**
* 分管部门
*/
private String fgbm;
/**
* 分管业务员
*/
private String fgywy;
/**
* 供应商状态
*/
private String gyszt;
/**
* 供应商类型
*/
private String gyslx;
/**
* 供应商等级
*/
private String gysdj;
/**
* 审核标志0未审核1已审核
*/
private String shbz;
/**
* 冻结标志0未冻结1已冻结
*/
private String djbz;
/**
* 投标状态
*/
private String tbzt;
/**
* 地址信息
*/
private List<XzdAddressInfo> addresses;
/**
* 联系人信息
*/
private List<XzdContact> contacts;
/**
* 主联系人姓名
*/
private String zlxrxm;
/**
* 主联系人手机
*/
private String zlxrsj;
/**
* 主联系人地址
*/
private String zlxrdz;
/**
* 证照信息
*/
private List<XzdCertificateInfo> certificates;
/**
* 结算信息
*/
private XzdSettlementInfo settlement;
/**
* 开户银行
*/
private String khyh;
/**
* 开户行账号
*/
private String khhzh;
/**
* 创建者
*/
private String createByUser;
private Long createBy;
private Date createTime;
private Date updateTime;
/**
* 业务信息
*/
private XzdBusinessInfo business;
/**
* 供应商类型
*/
private List<XzdCustomertypeInfo> customerTypes;
/**
* 供应物料
*/
private List<XzdSupplyMaterials> materials;
/**
* 供应商评价
*/
private List<XzdSupplierEvaluation> evaluations;
/**
* 项目信息
*/
private List<XzdProjectInfo> projects;
/**
* 合同信息
*/
private List<XzdContractInfo> contracts;
}

View File

@ -1,82 +0,0 @@
package org.dromara.xzd.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdSupplierQualification;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 供应商资质信息视图对象 xzd_supplier_qualification
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSupplierQualification.class)
public class XzdSupplierQualificationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 供应商ID
*/
@ExcelProperty(value = "供应商ID")
private Long supplierId;
/**
* 资质名称
*/
@ExcelProperty(value = "资质名称")
private String name;
/**
* 资质起始日期
*/
@ExcelProperty(value = "资质起始日期")
private Date beginTime;
/**
* 资质到期日期
*/
@ExcelProperty(value = "资质到期日期")
private Date endTime;
/**
* 文件路径
*/
@ExcelProperty(value = "文件路径")
private String fileUrl;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private Long fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -1,161 +0,0 @@
package org.dromara.xzd.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdSupplierSupplement;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 供应商信息补充视图对象 xzd_supplier_supplement
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSupplierSupplement.class)
public class XzdSupplierSupplementVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 供应商状态
*/
@ExcelProperty(value = "供应商状态")
private String supplierStatus;
/**
* 供应商等级
*/
@ExcelProperty(value = "供应商等级")
private String supplierLevel;
/**
* 分管部门
*/
@ExcelProperty(value = "分管部门")
private String responsibleDepartment;
/**
* 分管业务员
*/
@ExcelProperty(value = "分管业务员")
private String responsibleSalesman;
/**
* 归属组织
*/
@ExcelProperty(value = "归属组织")
private String belongingOrganization;
/**
* 创建者
*/
@ExcelProperty(value = "创建者")
private String creator;
/**
* 创建日期
*/
@ExcelProperty(value = "创建日期")
private Date createDate;
/**
* 审核标志0未审核1已审核
*/
@ExcelProperty(value = "审核标志", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未审核1已审核")
private Long auditFlag;
/**
* 冻结标志0未冻结1已冻结
*/
@ExcelProperty(value = "冻结标志", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=未冻结1已冻结")
private Long freezeFlag;
/**
* 冻结开始时间
*/
@ExcelProperty(value = "冻结开始时间")
private Date freezeStartTime;
/**
* 冻结结束时间
*/
@ExcelProperty(value = "冻结结束时间")
private Date freezeEndTime;
/**
* 供应商主类型
*/
@ExcelProperty(value = "供应商主类型")
private String supplierMainType;
/**
* 默认财务组织
*/
@ExcelProperty(value = "默认财务组织")
private String defaultFinanceOrganization;
/**
* 投标状态
*/
@ExcelProperty(value = "投标状态")
private String biddingStatus;
/**
* 服务区域
*/
@ExcelProperty(value = "服务区域")
private String serviceArea;
/**
* 合格有效期
*/
@ExcelProperty(value = "合格有效期")
private Date qualificationValidity;
/**
* 考核小组组长
*/
@ExcelProperty(value = "考核小组组长")
private String assessmentTeamLeader;
/**
* 考核小组成员
*/
@ExcelProperty(value = "考核小组成员")
private String assessmentTeamMembers;
/**
* 备案组织
*/
@ExcelProperty(value = "备案组织")
private String recordOrganization;
}

View File

@ -1,133 +0,0 @@
package org.dromara.xzd.domain.vo;
import org.dromara.xzd.domain.XzdSupplyMaterials;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 供应物料视图对象 _xzd_supply_materials
*
* @author Lion Li
* @date 2025-09-30
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSupplyMaterials.class)
public class XzdSupplyMaterialsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Long id;
/**
* 供应商ID
*/
private Long supplierId;
/**
* 资源分类
*/
@ExcelProperty(value = "资源分类")
private String resourceCategory;
/**
* SKU编码
*/
@ExcelProperty(value = "SKU编码")
private String skuCode;
/**
* SKU名称
*/
@ExcelProperty(value = "SKU名称")
private String skuName;
/**
* 规格
*/
@ExcelProperty(value = "规格")
private String specification;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unitOfMeasure;
/**
* 供应商方物料编码
*/
@ExcelProperty(value = "供应商方物料编码")
private String supplierMaterialCode;
/**
* 供应商方物料名称
*/
@ExcelProperty(value = "供应商方物料名称")
private String supplierMaterialName;
/**
* 供应商方物料条形码
*/
@ExcelProperty(value = "供应商方物料条形码")
private String supplierMaterialBarcode;
/**
* 含税单价
*/
@ExcelProperty(value = "含税单价")
private Long taxInclusiveUnitPrice;
/**
* 配额(%)
*/
@ExcelProperty(value = "配额(%)")
private Long quota;
/**
* 换货率(%)
*/
@ExcelProperty(value = "换货率(%)")
private Long exchangeRate;
/**
* 换货周期(天)
*/
@ExcelProperty(value = "换货周期(天)")
private Long exchangeCycle;
/**
* 交货周期(天)
*/
@ExcelProperty(value = "交货周期(天)")
private Long deliveryCycle;
/**
* 付款条件
*/
@ExcelProperty(value = "付款条件")
private String paymentTerms;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remarks;
}

View File

@ -3,8 +3,8 @@ package org.dromara.xzd.enums;
public enum ZxdEnum { public enum ZxdEnum {
TYPE_CORRESPONDENT("类型","1"), TYPE_CORRESPONDENT("客户","1"),
TYPE_SUPPLIER("类型","2"); TYPE_SUPPLIER("供应商","2");
private final String TypeName; private final String TypeName;

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdProjectManagerApproval;
import org.dromara.xzd.domain.vo.XzdProjectManagerApprovalVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 项目经理推荐及审批Mapper接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface XzdProjectManagerApprovalMapper extends BaseMapperPlus<XzdProjectManagerApproval, XzdProjectManagerApprovalVo> {
}

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdProject;
import org.dromara.xzd.domain.vo.XzdProjectVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 项目信息Mapper接口
*
* @author Lion Li
* @date 2025-10-10
*/
public interface XzdProjectMapper extends BaseMapperPlus<XzdProject, XzdProjectVo> {
}

View File

@ -0,0 +1,16 @@
package org.dromara.xzd.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.xzd.domain.XzdProjectType;
import org.dromara.xzd.domain.vo.XzdProjectTypeVo;
/**
* 项目类型Mapper接口
*
* @author Lion Li
* @date 2025-10-09
*/
public interface XzdProjectTypeMapper extends BaseMapperPlus<XzdProjectType, XzdProjectTypeVo> {
}

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdSupplierEvaluation;
import org.dromara.xzd.domain.vo.XzdSupplierEvaluationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 供应商评价Mapper接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface XzdSupplierEvaluationMapper extends BaseMapperPlus<XzdSupplierEvaluation, XzdSupplierEvaluationVo> {
}

View File

@ -1,25 +0,0 @@
package org.dromara.xzd.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.xzd.domain.XzdSupplierInfo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* 供应商信息Mapper接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface XzdSupplierInfoMapper extends BaseMapperPlus<XzdSupplierInfo, XzdSupplierInfoVo> {
List<XzdSupplierInfoVo> search(@Param("bo")XzdSupplierInfoBo bo);
}

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdSupplierQualification;
import org.dromara.xzd.domain.vo.XzdSupplierQualificationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 供应商资质信息Mapper接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface XzdSupplierQualificationMapper extends BaseMapperPlus<XzdSupplierQualification, XzdSupplierQualificationVo> {
}

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdSupplierSupplement;
import org.dromara.xzd.domain.vo.XzdSupplierSupplementVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 供应商信息补充Mapper接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface XzdSupplierSupplementMapper extends BaseMapperPlus<XzdSupplierSupplement, XzdSupplierSupplementVo> {
}

View File

@ -1,15 +0,0 @@
package org.dromara.xzd.mapper;
import org.dromara.xzd.domain.XzdSupplyMaterials;
import org.dromara.xzd.domain.vo.XzdSupplyMaterialsVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 供应物料Mapper接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface XzdSupplyMaterialsMapper extends BaseMapperPlus<XzdSupplyMaterials, XzdSupplyMaterialsVo> {
}

View File

@ -3,6 +3,7 @@ package org.dromara.xzd.service;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.xzd.domain.dto.AddCorrespondentDto; import org.dromara.xzd.domain.dto.AddCorrespondentDto;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.dto.XzdClienteleListDto; import org.dromara.xzd.domain.dto.XzdClienteleListDto;
import org.dromara.xzd.domain.vo.XzdClienteleListSumVo; import org.dromara.xzd.domain.vo.XzdClienteleListSumVo;
import org.dromara.xzd.domain.vo.XzdClienteleListVo; import org.dromara.xzd.domain.vo.XzdClienteleListVo;
@ -16,7 +17,11 @@ public interface IXzdCorrespondentList {
R<String> addCorrespondent(AddCorrespondentDto dto); R<String> addCorrespondent(AddCorrespondentDto dto);
R<String> delCorrespondent(List<AddCorrespondentDto> dto); R<String> delCorrespondent(Long[] dto);
R<XzdClienteleListSumVo> queryCustomertype(XzdClienteleListDto dto, PageQuery pageQuery); R<XzdClienteleListSumVo> queryCustomertype(XzdClienteleListDto dto, PageQuery pageQuery);
R<String> putCorrespondent(AddCorrespondentDto dto);
R<QuerCorrespondentDto> getCustomerByid(Long id);
} }

View File

@ -73,4 +73,6 @@ public interface IXzdCustomertypeService extends IService<XzdCustomertype>{
R<List<AddCorrespondentDto>> queryCustomertype(); R<List<AddCorrespondentDto>> queryCustomertype();
R<List<XzdCustomertypeVo>> queryCustomertypeList(); R<List<XzdCustomertypeVo>> queryCustomertypeList();
R<AddCorrespondentDto> getCustomerByid(Long id);
} }

View File

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

View File

@ -0,0 +1,65 @@
package org.dromara.xzd.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.xzd.domain.XzdProjectType;
import org.dromara.xzd.domain.bo.XzdProjectTypeBo;
import org.dromara.xzd.domain.vo.XzdProjectTypeVo;
import java.util.Collection;
import java.util.List;
/**
* 项目类型Service接口
*
* @author Lion Li
* @date 2025-10-09
*/
public interface IXzdProjectTypeService extends IService<XzdProjectType>{
/**
* 查询项目类型
*
* @param id 主键
* @return 项目类型
*/
XzdProjectTypeVo queryById(Long id);
/**
* 查询符合条件的项目类型列表
*
* @param bo 查询条件
* @return 项目类型列表
*/
List<XzdProjectTypeVo> queryList(XzdProjectTypeBo bo);
/**
* 新增项目类型
*
* @param bo 项目类型
* @return 是否新增成功
*/
Boolean insertByBo(XzdProjectTypeBo bo);
/**
* 修改项目类型
*
* @param bo 项目类型
* @return 是否修改成功
*/
Boolean updateByBo(XzdProjectTypeBo bo);
/**
* 校验并批量删除项目类型信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<Tree<String>> buildMenuTreeSelect(List<XzdProjectTypeVo> list);
}

View File

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

View File

@ -1,76 +0,0 @@
package org.dromara.xzd.service;
import org.dromara.common.core.domain.R;
import org.dromara.xzd.domain.vo.XzdCustomertypeInfoVo;
import org.dromara.xzd.domain.vo.XzdCustomertypeVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.domain.bo.XzdSupplierInfoBo;
import org.dromara.xzd.domain.XzdSupplierInfo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 供应商信息Service接口
*
* @author Lion Li
* @date 2025-09-30
*/
public interface IXzdSupplierInfoService extends IService<XzdSupplierInfo>{
/**
* 查询供应商信息
*
* @param id 主键
* @return 供应商信息
*/
XzdSupplierInfoVo queryById(Long id);
/**
* 分页查询供应商信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 供应商信息分页列表
*/
TableDataInfo<XzdSupplierInfoVo> queryPageList(XzdSupplierInfoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的供应商信息列表
*
* @param bo 查询条件
* @return 供应商信息列表
*/
List<XzdSupplierInfoVo> queryList(XzdSupplierInfoBo bo);
/**
* 新增供应商信息
*
* @param bo 供应商信息
* @return 是否新增成功
*/
Boolean insertByBo(XzdSupplierInfoBo bo);
/**
* 修改供应商信息
*
* @param bo 供应商信息
* @return 是否修改成功
*/
Boolean updateByBo(XzdSupplierInfoBo bo);
/**
* 校验并批量删除供应商信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
R<List<XzdCustomertypeVo>> typeList();
}

View File

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

View File

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

View File

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

Some files were not shown because too many files have changed in this diff Show More