[add] 添加分包物料管理相关接口 [update] 修改分包包结构,修改知识库部分逻辑
This commit is contained in:
		| @ -283,6 +283,6 @@ sparta: | |||||||
|   url: http://119.3.204.120:8040 |   url: http://119.3.204.120:8040 | ||||||
|   client-id: test |   client-id: test | ||||||
|   client-secret: 115fcb08fa6742a1b086d9bb80a6ad59 |   client-secret: 115fcb08fa6742a1b086d9bb80a6ad59 | ||||||
| # 身份证加密密钥 | # 身份证加密密钥(32 位) | ||||||
| id-card: | id-card: | ||||||
|   encrypt-key: 7ae260d150a14027d2238a1cf80a48ef |   encrypt-key: 7ae260d150a14027d2238a1cf80a48ef | ||||||
|  | |||||||
| @ -267,13 +267,21 @@ justauth: | |||||||
|       redirect-uri: ${justauth.address}/social-callback?source=gitlab |       redirect-uri: ${justauth.address}/social-callback?source=gitlab | ||||||
| # 和风天气 https://dev.qweather.com/ | # 和风天气 https://dev.qweather.com/ | ||||||
| weather: | weather: | ||||||
|   key-id: xx |   key-id: T65EAABUXC | ||||||
|   project-id: xx |   project-id: 2JTHPUQ5YY | ||||||
|   private-key: xx |   private-key: MC4CAQAwBQYDK2VwBCIEIMAglX7IsxYiTeM+FXXnvCUsIggajeP4s8gAllewm6BN | ||||||
|   api-host: xx |   api-host: n35rk53njv.re.qweatherapi.com | ||||||
| # dxf转 geojson 执行文件名 | # dxf转 geojson 执行文件名 | ||||||
| dxf2GeoJson: | dxf2GeoJson: | ||||||
|   file-name: main |   file-name: main | ||||||
| ys7: | ys7: | ||||||
|   app-key: 3acf9f1a43dc4209841e0893003db0a2 |   app-key: 3acf9f1a43dc4209841e0893003db0a2 | ||||||
|   app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36 |   app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36 | ||||||
|  | # 斯巴达算法 | ||||||
|  | sparta: | ||||||
|  |   url: http://119.3.204.120:8040 | ||||||
|  |   client-id: test | ||||||
|  |   client-secret: 115fcb08fa6742a1b086d9bb80a6ad59 | ||||||
|  | # 身份证加密密钥(32 位) | ||||||
|  | id-card: | ||||||
|  |   encrypt-key: 7ae260d150a14027d2238a1cf80a48ef | ||||||
|  | |||||||
| @ -121,7 +121,9 @@ security: | |||||||
|     - /*/api-docs/** |     - /*/api-docs/** | ||||||
|     - /warm-flow-ui/token-name |     - /warm-flow-ui/token-name | ||||||
|     - /other/ys7Device/webhook |     - /other/ys7Device/webhook | ||||||
|  |     # todo 仅测试 | ||||||
|     - /facility/matrix/** |     - /facility/matrix/** | ||||||
|  |     - /changxie/callback | ||||||
|  |  | ||||||
| # 多租户配置 | # 多租户配置 | ||||||
| tenant: | tenant: | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| package org.dromara.project.constant; | package org.dromara.contractor.constant; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025/4/2 17:18 |  * @date 2025/4/2 17:18 | ||||||
|  */ |  */ | ||||||
| public interface BusConstructionUserConstant { | public interface SubConstructionUserConstant { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 施工人员文件类型字典 |      * 施工人员文件类型字典 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.controller; | package org.dromara.contractor.controller; | ||||||
| 
 | 
 | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| @ -15,13 +15,13 @@ 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.project.domain.exportvo.BusConstructionUserExportVo; | import org.dromara.contractor.domain.dto.constructionuser.*; | ||||||
| import org.dromara.project.domain.dto.constructionuser.*; | import org.dromara.contractor.domain.exportvo.BusConstructionUserExportVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserAttendanceMonthVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserAttendanceMonthVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserAttendanceTotalVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserAttendanceTotalVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserGisVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserGisVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserVo; | ||||||
| import org.dromara.project.service.IBusConstructionUserService; | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| 
 | 
 | ||||||
| @ -37,46 +37,46 @@ import java.util.List; | |||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/project/constructionUser") | @RequestMapping("/project/constructionUser") | ||||||
| public class BusConstructionUserController extends BaseController { | public class SubConstructionUserController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     private final IBusConstructionUserService busConstructionUserService; |     private final ISubConstructionUserService constructionUserService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员列表 |      * 查询施工人员列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:list") |     @SaCheckPermission("contractor:constructionUser:list") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     public TableDataInfo<BusConstructionUserVo> list(BusConstructionUserQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubConstructionUserVo> list(SubConstructionUserQueryReq req, PageQuery pageQuery) { | ||||||
|         return busConstructionUserService.queryPageList(req, pageQuery); |         return constructionUserService.queryPageList(req, pageQuery); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询每个施工人员总的考勤列表 |      * 查询每个施工人员总的考勤列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:attendance:list") |     @SaCheckPermission("contractor:attendance:list") | ||||||
|     @GetMapping("/list/attendance/total") |     @GetMapping("/list/attendance/total") | ||||||
|     public TableDataInfo<BusConstructionUserAttendanceTotalVo> listAttendanceTotal(BusConstructionUserAttendanceQueryReq req, |     public TableDataInfo<SubConstructionUserAttendanceTotalVo> listAttendanceTotal(SubConstructionUserAttendanceQueryReq req, | ||||||
|                                                                                    PageQuery pageQuery) { |                                                                                    PageQuery pageQuery) { | ||||||
|         return busConstructionUserService.queryPageAttendanceList(req, pageQuery); |         return constructionUserService.queryPageAttendanceList(req, pageQuery); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员月份考勤列表 |      * 查询施工人员月份考勤列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:list") |     @SaCheckPermission("contractor:constructionUser:list") | ||||||
|     @GetMapping("/list/attendance/month") |     @GetMapping("/list/attendance/month") | ||||||
|     public R<List<BusConstructionUserAttendanceMonthVo>> listAttendanceMonth(BusConstructionUserAttendanceMonthReq req) { |     public R<List<SubConstructionUserAttendanceMonthVo>> listAttendanceMonth(SubConstructionUserAttendanceMonthReq req) { | ||||||
|         return R.ok(busConstructionUserService.queryAttendanceMonthList(req)); |         return R.ok(constructionUserService.queryAttendanceMonthList(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 导出施工人员列表 |      * 导出施工人员列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:export") |     @SaCheckPermission("contractor:constructionUser:export") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.EXPORT) |     @Log(title = "施工人员", businessType = BusinessType.EXPORT) | ||||||
|     @PostMapping("/export") |     @PostMapping("/export") | ||||||
|     public void export(BusConstructionUserQueryReq req, HttpServletResponse response) { |     public void export(SubConstructionUserQueryReq req, HttpServletResponse response) { | ||||||
|         List<BusConstructionUserExportVo> list = busConstructionUserService.queryList(req); |         List<BusConstructionUserExportVo> list = constructionUserService.queryList(req); | ||||||
|         ExcelUtil.exportExcel(list, "施工人员", BusConstructionUserExportVo.class, response); |         ExcelUtil.exportExcel(list, "施工人员", BusConstructionUserExportVo.class, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -85,97 +85,97 @@ public class BusConstructionUserController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:query") |     @SaCheckPermission("contractor:constructionUser:query") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public R<BusConstructionUserVo> getInfo(@NotNull(message = "主键不能为空") |     public R<SubConstructionUserVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                             @PathVariable Long id) { |                                             @PathVariable Long id) { | ||||||
|         return R.ok(busConstructionUserService.queryById(id)); |         return R.ok(constructionUserService.queryById(id)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询大屏施工人员信息 |      * 查询大屏施工人员信息 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:query") |     @SaCheckPermission("contractor:constructionUser:query") | ||||||
|     @GetMapping("/gis") |     @GetMapping("/gis") | ||||||
|     public R<BusConstructionUserGisVo> getGisData(BusConstructionUserGisReq req) { |     public R<SubConstructionUserGisVo> getGisData(SubConstructionUserGisReq req) { | ||||||
|         return R.ok(busConstructionUserService.getGisData(req)); |         return R.ok(constructionUserService.getGisData(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增施工人员 |      * 新增施工人员 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:add") |     @SaCheckPermission("contractor:constructionUser:add") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.INSERT) |     @Log(title = "施工人员", businessType = BusinessType.INSERT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping() |     @PostMapping() | ||||||
|     public R<Long> add(@Validated(AddGroup.class) @RequestBody BusConstructionUserCreateReq req) { |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubConstructionUserCreateReq req) { | ||||||
|         return R.ok(busConstructionUserService.insertByBo(req)); |         return R.ok(constructionUserService.insertByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员 |      * 修改施工人员 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping() |     @PutMapping() | ||||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusConstructionUserUpdateReq req) { |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubConstructionUserUpdateReq req) { | ||||||
|         return toAjax(busConstructionUserService.updateByBo(req)); |         return toAjax(constructionUserService.updateByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员工资 |      * 修改施工人员工资 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping("/salary") |     @PutMapping("/salary") | ||||||
|     public R<Void> editSalary(@Validated(EditGroup.class) @RequestBody BusConstructionUserUpdateSalaryReq req) { |     public R<Void> editSalary(@Validated(EditGroup.class) @RequestBody SubConstructionUserUpdateSalaryReq req) { | ||||||
|         return toAjax(busConstructionUserService.updateSalary(req)); |         return toAjax(constructionUserService.updateSalary(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员打卡状态 |      * 修改施工人员打卡状态 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping("/clock") |     @PutMapping("/clock") | ||||||
|     public R<Void> editClock(@Validated(EditGroup.class) @RequestBody BusConstructionUserUpdateClockReq req) { |     public R<Void> editClock(@Validated(EditGroup.class) @RequestBody SubConstructionUserUpdateClockReq req) { | ||||||
|         return toAjax(busConstructionUserService.updateClock(req)); |         return toAjax(constructionUserService.updateClock(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 批量修改施工人员状态 |      * 批量修改施工人员状态 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping("/batch/status") |     @PutMapping("/batch/status") | ||||||
|     public R<Void> batchUpdateStatus(@Validated(EditGroup.class) @RequestBody BusConstructionUserBatchUpdateStatusReq req) { |     public R<Void> batchUpdateStatus(@Validated(EditGroup.class) @RequestBody SubConstructionUserBatchUpdateStatusReq req) { | ||||||
|         return toAjax(busConstructionUserService.batchUpdateStatus(req)); |         return toAjax(constructionUserService.batchUpdateStatus(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 根据项目id批量修改施工人员打卡状态 |      * 根据项目id批量修改施工人员打卡状态 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping("/batch/clock") |     @PutMapping("/batch/clock") | ||||||
|     public R<Void> batchUpdateClock(@Validated(EditGroup.class) @RequestBody BusConstructionUserBatchUpdateClockReq req) { |     public R<Void> batchUpdateClock(@Validated(EditGroup.class) @RequestBody SubConstructionUserBatchUpdateClockReq req) { | ||||||
|         return toAjax(busConstructionUserService.batchUpdateClockByProjectId(req)); |         return toAjax(constructionUserService.batchUpdateClockByProjectId(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 施工人员迁移 |      * 施工人员迁移 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:edit") |     @SaCheckPermission("contractor:constructionUser:edit") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.UPDATE) |     @Log(title = "施工人员", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping("/change/project") |     @PutMapping("/change/project") | ||||||
|     public R<Void> changeUserProject(@Validated(EditGroup.class) @RequestBody BusConstructionUserChangeProjectReq req) { |     public R<Void> changeUserProject(@Validated(EditGroup.class) @RequestBody SubConstructionUserChangeProjectReq req) { | ||||||
|         return toAjax(busConstructionUserService.changeUserProject(req)); |         return toAjax(constructionUserService.changeUserProject(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -183,11 +183,11 @@ public class BusConstructionUserController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param ids 主键串 |      * @param ids 主键串 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUser:remove") |     @SaCheckPermission("contractor:constructionUser:remove") | ||||||
|     @Log(title = "施工人员", businessType = BusinessType.DELETE) |     @Log(title = "施工人员", businessType = BusinessType.DELETE) | ||||||
|     @DeleteMapping("/{ids}") |     @DeleteMapping("/{ids}") | ||||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|                           @PathVariable Long[] ids) { |                           @PathVariable Long[] ids) { | ||||||
|         return toAjax(busConstructionUserService.deleteWithValidByIds(List.of(ids), true)); |         return toAjax(constructionUserService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.controller; | package org.dromara.contractor.controller; | ||||||
| 
 | 
 | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| @ -10,11 +10,11 @@ import org.dromara.common.idempotent.annotation.RepeatSubmit; | |||||||
| import org.dromara.common.log.annotation.Log; | import org.dromara.common.log.annotation.Log; | ||||||
| import org.dromara.common.log.enums.BusinessType; | import org.dromara.common.log.enums.BusinessType; | ||||||
| import org.dromara.common.web.core.BaseController; | import org.dromara.common.web.core.BaseController; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileQueryReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileQueryReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileSaveReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileSaveReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileTemplateReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileTemplateReq; | ||||||
| import org.dromara.project.domain.vo.constructionuserfile.BusConstructionUserFileVo; | import org.dromara.contractor.domain.vo.constructionuserfile.SubConstructionUserFileVo; | ||||||
| import org.dromara.project.service.IBusConstructionUserFileService; | import org.dromara.contractor.service.ISubConstructionUserFileService; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
| @ -31,50 +31,50 @@ import java.util.List; | |||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/project/constructionUserFile") | @RequestMapping("/project/constructionUserFile") | ||||||
| public class BusConstructionUserFileController extends BaseController { | public class SubConstructionUserFileController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     private final IBusConstructionUserFileService busConstructionUserFileService; |     private final ISubConstructionUserFileService constructionUserFileService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员文件存储列表 |      * 查询施工人员文件存储列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:list") |     @SaCheckPermission("contractor:constructionUserFile:list") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     public R<List<BusConstructionUserFileVo>> list(BusConstructionUserFileQueryReq req) { |     public R<List<SubConstructionUserFileVo>> list(SubConstructionUserFileQueryReq req) { | ||||||
|         return R.ok(busConstructionUserFileService.queryList(req)); |         return R.ok(constructionUserFileService.queryList(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 导出施工人员文件存储列表 |      * 导出施工人员文件存储列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:export") |     @SaCheckPermission("contractor:constructionUserFile:export") | ||||||
|     @Log(title = "施工人员文件存储", businessType = BusinessType.EXPORT) |     @Log(title = "施工人员文件存储", businessType = BusinessType.EXPORT) | ||||||
|     @PostMapping("/export") |     @PostMapping("/export") | ||||||
|     public void export(BusConstructionUserFileQueryReq req, HttpServletResponse response) { |     public void export(SubConstructionUserFileQueryReq req, HttpServletResponse response) { | ||||||
|         List<BusConstructionUserFileVo> list = busConstructionUserFileService.queryList(req); |         List<SubConstructionUserFileVo> list = constructionUserFileService.queryList(req); | ||||||
|         ExcelUtil.exportExcel(list, "施工人员文件存储", BusConstructionUserFileVo.class, response); |         ExcelUtil.exportExcel(list, "施工人员文件存储", SubConstructionUserFileVo.class, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 下载施工人员文件存储模板 |      * 下载施工人员文件存储模板 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:export") |     @SaCheckPermission("contractor:constructionUserFile:export") | ||||||
|     @Log(title = "施工人员文件存储", businessType = BusinessType.EXPORT) |     @Log(title = "施工人员文件存储", businessType = BusinessType.EXPORT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping("/exportFileTemplate") |     @PostMapping("/exportFileTemplate") | ||||||
|     public void exportFileTemplate(BusConstructionUserFileTemplateReq req, HttpServletResponse response) { |     public void exportFileTemplate(SubConstructionUserFileTemplateReq req, HttpServletResponse response) { | ||||||
|         busConstructionUserFileService.downloadFileTemplate(req, response); |         constructionUserFileService.downloadFileTemplate(req, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 上传施工人员文件压缩包,批量导入存储施工人员文件 |      * 上传施工人员文件压缩包,批量导入存储施工人员文件 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:edit") |     @SaCheckPermission("contractor:constructionUserFile:edit") | ||||||
|     @Log(title = "施工人员文件存储", businessType = BusinessType.INSERT) |     @Log(title = "施工人员文件存储", businessType = BusinessType.INSERT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping("/upload/zip") |     @PostMapping("/upload/zip") | ||||||
|     public R<Boolean> uploadFileZip(@RequestParam("file") MultipartFile file) { |     public R<Boolean> uploadFileZip(@RequestParam("file") MultipartFile file) { | ||||||
|         Boolean result = busConstructionUserFileService.batchUploadFileByZip(file); |         Boolean result = constructionUserFileService.batchUploadFileByZip(file); | ||||||
|         return R.ok(result); |         return R.ok(result); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -83,21 +83,21 @@ public class BusConstructionUserFileController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:query") |     @SaCheckPermission("contractor:constructionUserFile:query") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public R<BusConstructionUserFileVo> getInfo(@NotNull(message = "主键不能为空") |     public R<SubConstructionUserFileVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                                 @PathVariable Long id) { |                                                 @PathVariable Long id) { | ||||||
|         return R.ok(busConstructionUserFileService.queryById(id)); |         return R.ok(constructionUserFileService.queryById(id)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 保存施工人员文件存储详情信息 |      * 保存施工人员文件存储详情信息 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:constructionUserFile:edit") |     @SaCheckPermission("contractor:constructionUserFile:edit") | ||||||
|     @Log(title = "施工人员文件存储", businessType = BusinessType.INSERT) |     @Log(title = "施工人员文件存储", businessType = BusinessType.INSERT) | ||||||
|     @PostMapping("/save") |     @PostMapping("/save") | ||||||
|     public R<Boolean> save(@RequestBody BusConstructionUserFileSaveReq req) { |     public R<Boolean> save(@RequestBody SubConstructionUserFileSaveReq req) { | ||||||
|         return R.ok(busConstructionUserFileService.saveFileList(req)); |         return R.ok(constructionUserFileService.saveFileList(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.controller; | package org.dromara.contractor.controller; | ||||||
| 
 | 
 | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| @ -15,11 +15,11 @@ 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.project.domain.dto.contractor.BusContractorCreateReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorQueryReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorQueryReq; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorUpdateReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorUpdateReq; | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
| import org.dromara.project.service.IBusContractorService; | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| 
 | 
 | ||||||
| @ -35,28 +35,28 @@ import java.util.List; | |||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/project/contractor") | @RequestMapping("/project/contractor") | ||||||
| public class BusContractorController extends BaseController { | public class SubContractorController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     private final IBusContractorService busContractorService; |     private final ISubContractorService contractorService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包单位列表 |      * 查询分包单位列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:list") |     @SaCheckPermission("contractor:contractor:list") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     public TableDataInfo<BusContractorVo> list(BusContractorQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubContractorVo> list(SubContractorQueryReq req, PageQuery pageQuery) { | ||||||
|         return busContractorService.queryPageList(req, pageQuery); |         return contractorService.queryPageList(req, pageQuery); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 导出分包单位列表 |      * 导出分包单位列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:export") |     @SaCheckPermission("contractor:contractor:export") | ||||||
|     @Log(title = "分包单位", businessType = BusinessType.EXPORT) |     @Log(title = "分包单位", businessType = BusinessType.EXPORT) | ||||||
|     @PostMapping("/export") |     @PostMapping("/export") | ||||||
|     public void export(BusContractorQueryReq req, HttpServletResponse response) { |     public void export(SubContractorQueryReq req, HttpServletResponse response) { | ||||||
|         List<BusContractorVo> list = busContractorService.queryList(req); |         List<SubContractorVo> list = contractorService.queryList(req); | ||||||
|         ExcelUtil.exportExcel(list, "分包单位", BusContractorVo.class, response); |         ExcelUtil.exportExcel(list, "分包单位", SubContractorVo.class, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -64,33 +64,33 @@ public class BusContractorController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:query") |     @SaCheckPermission("contractor:contractor:query") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public R<BusContractorVo> getInfo(@NotNull(message = "主键不能为空") |     public R<SubContractorVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                       @PathVariable Long id) { |                                       @PathVariable Long id) { | ||||||
|         return R.ok(busContractorService.queryById(id)); |         return R.ok(contractorService.queryById(id)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增分包单位 |      * 新增分包单位 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:add") |     @SaCheckPermission("contractor:contractor:add") | ||||||
|     @Log(title = "分包单位", businessType = BusinessType.INSERT) |     @Log(title = "分包单位", businessType = BusinessType.INSERT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping() |     @PostMapping() | ||||||
|     public R<Long> add(@Validated(AddGroup.class) @RequestBody BusContractorCreateReq req) { |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubContractorCreateReq req) { | ||||||
|         return R.ok(busContractorService.insertByBo(req)); |         return R.ok(contractorService.insertByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包单位 |      * 修改分包单位 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:edit") |     @SaCheckPermission("contractor:contractor:edit") | ||||||
|     @Log(title = "分包单位", businessType = BusinessType.UPDATE) |     @Log(title = "分包单位", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping() |     @PutMapping() | ||||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusContractorUpdateReq req) { |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubContractorUpdateReq req) { | ||||||
|         return toAjax(busContractorService.updateByBo(req)); |         return toAjax(contractorService.updateByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -98,11 +98,11 @@ public class BusContractorController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param ids 主键串 |      * @param ids 主键串 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractor:remove") |     @SaCheckPermission("contractor:contractor:remove") | ||||||
|     @Log(title = "分包单位", businessType = BusinessType.DELETE) |     @Log(title = "分包单位", businessType = BusinessType.DELETE) | ||||||
|     @DeleteMapping("/{ids}") |     @DeleteMapping("/{ids}") | ||||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|                           @PathVariable Long[] ids) { |                           @PathVariable Long[] ids) { | ||||||
|         return toAjax(busContractorService.deleteWithValidByIds(List.of(ids), true)); |         return toAjax(contractorService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -0,0 +1,108 @@ | |||||||
|  | package org.dromara.contractor.controller; | ||||||
|  |  | ||||||
|  | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
|  | import jakarta.servlet.http.HttpServletResponse; | ||||||
|  | import jakarta.validation.constraints.NotEmpty; | ||||||
|  | import jakarta.validation.constraints.NotNull; | ||||||
|  | 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.contractor.domain.dto.contractormaterial.SubContractorMaterialCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterial.SubContractorMaterialVo; | ||||||
|  | import org.dromara.contractor.service.ISubContractorMaterialService; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Validated | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/contractor/contractorMaterial") | ||||||
|  | public class SubContractorMaterialController extends BaseController { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ISubContractorMaterialService contractorMaterialService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料列表 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:list") | ||||||
|  |     @GetMapping("/list") | ||||||
|  |     public TableDataInfo<SubContractorMaterialVo> list(SubContractorMaterialQueryReq req, PageQuery pageQuery) { | ||||||
|  |         return contractorMaterialService.queryPageList(req, pageQuery); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 导出分包方物料列表 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:export") | ||||||
|  |     @Log(title = "分包方物料", businessType = BusinessType.EXPORT) | ||||||
|  |     @PostMapping("/export") | ||||||
|  |     public void export(SubContractorMaterialQueryReq req, HttpServletResponse response) { | ||||||
|  |         List<SubContractorMaterialVo> list = contractorMaterialService.queryList(req); | ||||||
|  |         ExcelUtil.exportExcel(list, "分包方物料", SubContractorMaterialVo.class, response); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料详细信息 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:query") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public R<SubContractorMaterialVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|  |                                               @PathVariable Long id) { | ||||||
|  |         return R.ok(contractorMaterialService.queryById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:add") | ||||||
|  |     @Log(title = "分包方物料", businessType = BusinessType.INSERT) | ||||||
|  |     @RepeatSubmit() | ||||||
|  |     @PostMapping() | ||||||
|  |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubContractorMaterialCreateReq req) { | ||||||
|  |         return R.ok(contractorMaterialService.insertByBo(req)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:edit") | ||||||
|  |     @Log(title = "分包方物料", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit() | ||||||
|  |     @PutMapping() | ||||||
|  |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubContractorMaterialUpdateReq req) { | ||||||
|  |         return toAjax(contractorMaterialService.updateByBo(req)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param ids 主键串 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterial:remove") | ||||||
|  |     @Log(title = "分包方物料", businessType = BusinessType.DELETE) | ||||||
|  |     @DeleteMapping("/{ids}") | ||||||
|  |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|  |                           @PathVariable Long[] ids) { | ||||||
|  |         return toAjax(contractorMaterialService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,108 @@ | |||||||
|  | package org.dromara.contractor.controller; | ||||||
|  |  | ||||||
|  | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
|  | import jakarta.servlet.http.HttpServletResponse; | ||||||
|  | import jakarta.validation.constraints.NotEmpty; | ||||||
|  | import jakarta.validation.constraints.NotNull; | ||||||
|  | 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.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterialrecord.SubContractorMaterialRecordVo; | ||||||
|  | import org.dromara.contractor.service.ISubContractorMaterialRecordService; | ||||||
|  | import org.springframework.validation.annotation.Validated; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Validated | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/contractor/contractorMaterialRecord") | ||||||
|  | public class SubContractorMaterialRecordController extends BaseController { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ISubContractorMaterialRecordService subContractorMaterialRecordService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料记录列表 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:list") | ||||||
|  |     @GetMapping("/list") | ||||||
|  |     public TableDataInfo<SubContractorMaterialRecordVo> list(SubContractorMaterialRecordQueryReq req, PageQuery pageQuery) { | ||||||
|  |         return subContractorMaterialRecordService.queryPageList(req, pageQuery); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 导出分包方物料记录列表 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:export") | ||||||
|  |     @Log(title = "分包方物料记录", businessType = BusinessType.EXPORT) | ||||||
|  |     @PostMapping("/export") | ||||||
|  |     public void export(SubContractorMaterialRecordQueryReq req, HttpServletResponse response) { | ||||||
|  |         List<SubContractorMaterialRecordVo> list = subContractorMaterialRecordService.queryList(req); | ||||||
|  |         ExcelUtil.exportExcel(list, "分包方物料记录", SubContractorMaterialRecordVo.class, response); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录详细信息 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:query") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public R<SubContractorMaterialRecordVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|  |                                                     @PathVariable Long id) { | ||||||
|  |         return R.ok(subContractorMaterialRecordService.queryById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料记录 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:add") | ||||||
|  |     @Log(title = "分包方物料记录", businessType = BusinessType.INSERT) | ||||||
|  |     @RepeatSubmit() | ||||||
|  |     @PostMapping() | ||||||
|  |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubContractorMaterialRecordCreateReq req) { | ||||||
|  |         return R.ok(subContractorMaterialRecordService.insertByBo(req)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料记录 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:edit") | ||||||
|  |     @Log(title = "分包方物料记录", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit() | ||||||
|  |     @PutMapping() | ||||||
|  |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubContractorMaterialRecordUpdateReq req) { | ||||||
|  |         return toAjax(subContractorMaterialRecordService.updateByBo(req)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param ids 主键串 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("contractor:contractorMaterialRecord:remove") | ||||||
|  |     @Log(title = "分包方物料记录", businessType = BusinessType.DELETE) | ||||||
|  |     @DeleteMapping("/{ids}") | ||||||
|  |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|  |                           @PathVariable Long[] ids) { | ||||||
|  |         return toAjax(subContractorMaterialRecordService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.controller; | package org.dromara.contractor.controller; | ||||||
| 
 | 
 | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import jakarta.annotation.Resource; | import jakarta.annotation.Resource; | ||||||
| @ -15,11 +15,11 @@ 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.project.domain.dto.contractortool.BusContractorToolCreateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolCreateReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolQueryReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolQueryReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolUpdateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolUpdateReq; | ||||||
| import org.dromara.project.domain.vo.contractortool.BusContractorToolVo; | import org.dromara.contractor.domain.vo.contractortool.SubContractorToolVo; | ||||||
| import org.dromara.project.service.IBusContractorToolService; | import org.dromara.contractor.service.ISubContractorToolService; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| 
 | 
 | ||||||
| @ -34,29 +34,29 @@ import java.util.List; | |||||||
| @Validated | @Validated | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/project/contractorTool") | @RequestMapping("/project/contractorTool") | ||||||
| public class BusContractorToolController extends BaseController { | public class SubContractorToolController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorToolService busContractorToolService; |     private ISubContractorToolService busContractorToolService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包方工器具列表 |      * 查询分包方工器具列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:list") |     @SaCheckPermission("contractor:contractorTool:list") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     public TableDataInfo<BusContractorToolVo> list(BusContractorToolQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubContractorToolVo> list(SubContractorToolQueryReq req, PageQuery pageQuery) { | ||||||
|         return busContractorToolService.queryPageList(req, pageQuery); |         return busContractorToolService.queryPageList(req, pageQuery); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 导出分包方工器具列表 |      * 导出分包方工器具列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:export") |     @SaCheckPermission("contractor:contractorTool:export") | ||||||
|     @Log(title = "分包方工器具", businessType = BusinessType.EXPORT) |     @Log(title = "分包方工器具", businessType = BusinessType.EXPORT) | ||||||
|     @PostMapping("/export") |     @PostMapping("/export") | ||||||
|     public void export(BusContractorToolQueryReq req, HttpServletResponse response) { |     public void export(SubContractorToolQueryReq req, HttpServletResponse response) { | ||||||
|         List<BusContractorToolVo> list = busContractorToolService.queryList(req); |         List<SubContractorToolVo> list = busContractorToolService.queryList(req); | ||||||
|         ExcelUtil.exportExcel(list, "分包方工器具", BusContractorToolVo.class, response); |         ExcelUtil.exportExcel(list, "分包方工器具", SubContractorToolVo.class, response); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -64,9 +64,9 @@ public class BusContractorToolController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:query") |     @SaCheckPermission("contractor:contractorTool:query") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public R<BusContractorToolVo> getInfo(@NotNull(message = "主键不能为空") |     public R<SubContractorToolVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                           @PathVariable Long id) { |                                           @PathVariable Long id) { | ||||||
|         return R.ok(busContractorToolService.queryById(id)); |         return R.ok(busContractorToolService.queryById(id)); | ||||||
|     } |     } | ||||||
| @ -74,22 +74,22 @@ public class BusContractorToolController extends BaseController { | |||||||
|     /** |     /** | ||||||
|      * 新增分包方工器具 |      * 新增分包方工器具 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:add") |     @SaCheckPermission("contractor:contractorTool:add") | ||||||
|     @Log(title = "分包方工器具", businessType = BusinessType.INSERT) |     @Log(title = "分包方工器具", businessType = BusinessType.INSERT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping() |     @PostMapping() | ||||||
|     public R<Long> add(@Validated(AddGroup.class) @RequestBody BusContractorToolCreateReq req) { |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubContractorToolCreateReq req) { | ||||||
|         return R.ok(busContractorToolService.insertByBo(req)); |         return R.ok(busContractorToolService.insertByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包方工器具 |      * 修改分包方工器具 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:edit") |     @SaCheckPermission("contractor:contractorTool:edit") | ||||||
|     @Log(title = "分包方工器具", businessType = BusinessType.UPDATE) |     @Log(title = "分包方工器具", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping() |     @PutMapping() | ||||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusContractorToolUpdateReq req) { |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubContractorToolUpdateReq req) { | ||||||
|         return toAjax(busContractorToolService.updateByBo(req)); |         return toAjax(busContractorToolService.updateByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -98,7 +98,7 @@ public class BusContractorToolController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param ids 主键串 |      * @param ids 主键串 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:contractorTool:remove") |     @SaCheckPermission("contractor:contractorTool:remove") | ||||||
|     @Log(title = "分包方工器具", businessType = BusinessType.DELETE) |     @Log(title = "分包方工器具", businessType = BusinessType.DELETE) | ||||||
|     @DeleteMapping("/{ids}") |     @DeleteMapping("/{ids}") | ||||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.controller; | package org.dromara.contractor.controller; | ||||||
| 
 | 
 | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import jakarta.annotation.Resource; | import jakarta.annotation.Resource; | ||||||
| @ -13,11 +13,11 @@ 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.project.domain.dto.subcontract.BusSubcontractCreateReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractCreateReq; | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractQueryReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractQueryReq; | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractUpdateReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractUpdateReq; | ||||||
| import org.dromara.project.domain.vo.subcontract.BusSubcontractVo; | import org.dromara.contractor.domain.vo.subcontract.SubSubcontractVo; | ||||||
| import org.dromara.project.service.IBusSubcontractService; | import org.dromara.contractor.service.ISubSubcontractService; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| 
 | 
 | ||||||
| @ -32,17 +32,17 @@ import java.util.List; | |||||||
| @Validated | @Validated | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/project/subcontract") | @RequestMapping("/project/subcontract") | ||||||
| public class BusSubcontractController extends BaseController { | public class SubSubcontractController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusSubcontractService subcontractService; |     private ISubSubcontractService subcontractService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包合同列表 |      * 查询分包合同列表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:subcontract:list") |     @SaCheckPermission("contractor:subcontract:list") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
|     public TableDataInfo<BusSubcontractVo> list(BusSubcontractQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubSubcontractVo> list(SubSubcontractQueryReq req, PageQuery pageQuery) { | ||||||
|         return subcontractService.queryPageList(req, pageQuery); |         return subcontractService.queryPageList(req, pageQuery); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -51,9 +51,9 @@ public class BusSubcontractController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:subcontract:query") |     @SaCheckPermission("contractor:subcontract:query") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public R<BusSubcontractVo> getInfo(@NotNull(message = "主键不能为空") |     public R<SubSubcontractVo> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                        @PathVariable Long id) { |                                        @PathVariable Long id) { | ||||||
|         return R.ok(subcontractService.queryById(id)); |         return R.ok(subcontractService.queryById(id)); | ||||||
|     } |     } | ||||||
| @ -61,22 +61,22 @@ public class BusSubcontractController extends BaseController { | |||||||
|     /** |     /** | ||||||
|      * 新增分包合同 |      * 新增分包合同 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:subcontract:add") |     @SaCheckPermission("contractor:subcontract:add") | ||||||
|     @Log(title = "分包合同", businessType = BusinessType.INSERT) |     @Log(title = "分包合同", businessType = BusinessType.INSERT) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PostMapping() |     @PostMapping() | ||||||
|     public R<Long> add(@Validated(AddGroup.class) @RequestBody BusSubcontractCreateReq req) { |     public R<Long> add(@Validated(AddGroup.class) @RequestBody SubSubcontractCreateReq req) { | ||||||
|         return R.ok(subcontractService.insertByBo(req)); |         return R.ok(subcontractService.insertByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包合同 |      * 修改分包合同 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:subcontract:edit") |     @SaCheckPermission("contractor:subcontract:edit") | ||||||
|     @Log(title = "分包合同", businessType = BusinessType.UPDATE) |     @Log(title = "分包合同", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit() |     @RepeatSubmit() | ||||||
|     @PutMapping() |     @PutMapping() | ||||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusSubcontractUpdateReq req) { |     public R<Void> edit(@Validated(EditGroup.class) @RequestBody SubSubcontractUpdateReq req) { | ||||||
|         return toAjax(subcontractService.updateByBo(req)); |         return toAjax(subcontractService.updateByBo(req)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -85,7 +85,7 @@ public class BusSubcontractController extends BaseController { | |||||||
|      * |      * | ||||||
|      * @param ids 主键串 |      * @param ids 主键串 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("project:subcontract:remove") |     @SaCheckPermission("contractor:subcontract:remove") | ||||||
|     @Log(title = "分包合同", businessType = BusinessType.DELETE) |     @Log(title = "分包合同", businessType = BusinessType.DELETE) | ||||||
|     @DeleteMapping("/{ids}") |     @DeleteMapping("/{ids}") | ||||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") |     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain; | package org.dromara.contractor.domain; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableLogic; | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
| @ -11,15 +11,15 @@ import java.io.Serial; | |||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 施工人员对象 bus_construction_user |  * 施工人员对象 sub_construction_user | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @TableName("bus_construction_user") | @TableName("sub_construction_user") | ||||||
| public class BusConstructionUser extends BaseEntity { | public class SubConstructionUser extends BaseEntity { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain; | package org.dromara.contractor.domain; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
| @ -9,14 +9,14 @@ import java.io.Serializable; | |||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 施工人员文件存储对象 bus_construction_user_file |  * 施工人员文件存储对象 sub_construction_user_file | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-04-01 |  * @date 2025-04-01 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("bus_construction_user_file") | @TableName("sub_construction_user_file") | ||||||
| public class BusConstructionUserFile implements Serializable { | public class SubConstructionUserFile implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain; | package org.dromara.contractor.domain; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableLogic; | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
| @ -11,15 +11,15 @@ import java.io.Serial; | |||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包单位对象 bus_contractor |  * 分包单位对象 sub_contractor | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @TableName("bus_contractor") | @TableName("sub_contractor") | ||||||
| public class BusContractor extends BaseEntity { | public class SubContractor extends BaseEntity { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -0,0 +1,90 @@ | |||||||
|  | package org.dromara.contractor.domain; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import org.dromara.common.mybatis.core.domain.BaseEntity; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料对象 sub_contractor_material | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @EqualsAndHashCode(callSuper = true) | ||||||
|  | @TableName("sub_contractor_material") | ||||||
|  | public class SubContractorMaterial extends BaseEntity { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     @TableId(value = "id") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     private String materialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料类型 | ||||||
|  |      */ | ||||||
|  |     private String materialType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料型号 | ||||||
|  |      */ | ||||||
|  |     private String materialModel; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal materialNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料单位 | ||||||
|  |      */ | ||||||
|  |     private String materialUnit; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 文件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除时间 | ||||||
|  |      */ | ||||||
|  |     private Date deletedAt; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否删除(0正常 1删除) | ||||||
|  |      */ | ||||||
|  |     @TableLogic | ||||||
|  |     private Long isDelete; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,83 @@ | |||||||
|  | package org.dromara.contractor.domain; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import org.dromara.common.mybatis.core.domain.BaseEntity; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录对象 sub_contractor_material_record | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @EqualsAndHashCode(callSuper = true) | ||||||
|  | @TableName("sub_contractor_material_record") | ||||||
|  | public class SubContractorMaterialRecord extends BaseEntity { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     @TableId(value = "id") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料id | ||||||
|  |      */ | ||||||
|  |     private Long contractorMaterialId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型(1到货计划 2使用情况) | ||||||
|  |      */ | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录时间 | ||||||
|  |      */ | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 剩余数量(到货 使用) | ||||||
|  |      */ | ||||||
|  |     private BigDecimal remainingNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 使用位置或构件部位(使用情况) | ||||||
|  |      */ | ||||||
|  |     private String usedPosition; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 相关附件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain; | package org.dromara.contractor.domain; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableLogic; | import com.baomidou.mybatisplus.annotation.TableLogic; | ||||||
| @ -8,18 +8,19 @@ import lombok.EqualsAndHashCode; | |||||||
| import org.dromara.common.mybatis.core.domain.BaseEntity; | import org.dromara.common.mybatis.core.domain.BaseEntity; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包方工器具对象 bus_contractor_tool |  * 分包方工器具对象 sub_contractor_tool | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-26 |  * @date 2025-06-26 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||||
| @TableName("bus_contractor_tool") | @TableName("sub_contractor_tool") | ||||||
| public class BusContractorTool extends BaseEntity { | public class SubContractorTool extends BaseEntity { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -58,7 +59,7 @@ public class BusContractorTool extends BaseEntity { | |||||||
|     /** |     /** | ||||||
|      * 工具数量 |      * 工具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     private BigDecimal toolNumber; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 文件 |      * 文件 | ||||||
| @ -2,11 +2,14 @@ package org.dromara.contractor.domain; | |||||||
|  |  | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  | import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||||
|  | import org.dromara.common.json.handler.BigDecimalToIntegerSerializer; | ||||||
| import org.dromara.common.mybatis.core.domain.BaseEntity; | import org.dromara.common.mybatis.core.domain.BaseEntity; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -50,9 +53,16 @@ public class SubContractorToolRecord extends BaseEntity { | |||||||
|     private String recordType; |     private String recordType; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场工器具数量 |      * 记录工器具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     @JsonSerialize(using = BigDecimalToIntegerSerializer.class) | ||||||
|  |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 剩余数量 | ||||||
|  |      */ | ||||||
|  |     @JsonSerialize(using = BigDecimalToIntegerSerializer.class) | ||||||
|  |     private BigDecimal remainingNumber; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检测编号 |      * 检测编号 | ||||||
| @ -80,8 +90,8 @@ public class SubContractorToolRecord extends BaseEntity { | |||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场时间 |      * 记录时间 | ||||||
|      */ |      */ | ||||||
|     private Date entryTime; |     private Date recordTime; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain; | package org.dromara.contractor.domain; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
| @ -10,14 +10,14 @@ import java.math.BigDecimal; | |||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包合同对象 bus_subcontract |  * 分包合同对象 sub_subcontract | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-25 |  * @date 2025-06-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @TableName("bus_subcontract") | @TableName("sub_subcontract") | ||||||
| public class BusSubcontract implements Serializable { | public class SubSubcontract implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/7 15:04 |  * @date 2025/4/7 15:04 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserAttendanceMonthReq implements Serializable { | public class SubConstructionUserAttendanceMonthReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -1496942176392426636L; |     private static final long serialVersionUID = -1496942176392426636L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/7 10:52 |  * @date 2025/4/7 10:52 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserAttendanceQueryReq implements Serializable { | public class SubConstructionUserAttendanceQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -6634291825924626633L; |     private static final long serialVersionUID = -6634291825924626633L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -13,7 +13,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/2 9:14 |  * @date 2025/4/2 9:14 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserBatchUpdateClockReq implements Serializable { | public class SubConstructionUserBatchUpdateClockReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -5803749609177642435L; |     private static final long serialVersionUID = -5803749609177642435L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -14,7 +14,7 @@ import java.util.List; | |||||||
|  * @date 2025/4/1 17:11 |  * @date 2025/4/1 17:11 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserBatchUpdateStatusReq implements Serializable { | public class SubConstructionUserBatchUpdateStatusReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -3756685899069233313L; |     private static final long serialVersionUID = -3756685899069233313L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -13,7 +13,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/3/31 14:50 |  * @date 2025/3/31 14:50 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserChangeProjectReq implements Serializable { | public class SubConstructionUserChangeProjectReq implements Serializable { | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -2638471692809830501L; |     private static final long serialVersionUID = -2638471692809830501L; | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/3/5 14:05 |  * @date 2025/3/5 14:05 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserCreateReq implements Serializable { | public class SubConstructionUserCreateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -7603153089205421154L; |     private static final long serialVersionUID = -7603153089205421154L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/28 9:40 |  * @date 2025/4/28 9:40 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserGisReq implements Serializable { | public class SubConstructionUserGisReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 2487357135566518535L; |     private static final long serialVersionUID = 2487357135566518535L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/3/5 14:31 |  * @date 2025/3/5 14:31 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserQueryReq implements Serializable { | public class SubConstructionUserQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 3252651952758479341L; |     private static final long serialVersionUID = 3252651952758479341L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -13,7 +13,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/2 9:14 |  * @date 2025/4/2 9:14 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserUpdateClockReq implements Serializable { | public class SubConstructionUserUpdateClockReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -5803749609177642435L; |     private static final long serialVersionUID = -5803749609177642435L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/3/5 15:04 |  * @date 2025/3/5 15:04 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserUpdateReq implements Serializable { | public class SubConstructionUserUpdateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -8022860866890925958L; |     private static final long serialVersionUID = -8022860866890925958L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuser; | package org.dromara.contractor.domain.dto.constructionuser; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/2 11:35 |  * @date 2025/4/2 11:35 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserUpdateSalaryReq implements Serializable { | public class SubConstructionUserUpdateSalaryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -1300674086812422523L; |     private static final long serialVersionUID = -1300674086812422523L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuserfile; | package org.dromara.contractor.domain.dto.constructionuserfile; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/1 10:06 |  * @date 2025/4/1 10:06 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserFileQueryReq implements Serializable { | public class SubConstructionUserFileQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 552027602186820020L; |     private static final long serialVersionUID = 552027602186820020L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuserfile; | package org.dromara.contractor.domain.dto.constructionuserfile; | ||||||
| 
 | 
 | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -11,7 +11,7 @@ import lombok.NoArgsConstructor; | |||||||
| @Data | @Data | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| public class BusConstructionUserFileReq { | public class SubConstructionUserFileReq { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 文件类型 |      * 文件类型 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuserfile; | package org.dromara.contractor.domain.dto.constructionuserfile; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -11,7 +11,7 @@ import java.util.List; | |||||||
|  * @date 2025/4/1 10:01 |  * @date 2025/4/1 10:01 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserFileSaveReq implements Serializable { | public class SubConstructionUserFileSaveReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 4319620202781413796L; |     private static final long serialVersionUID = 4319620202781413796L; | ||||||
| @ -24,6 +24,6 @@ public class BusConstructionUserFileSaveReq implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 文件列表 |      * 文件列表 | ||||||
|      */ |      */ | ||||||
|     private List<BusConstructionUserFileReq> fileList; |     private List<SubConstructionUserFileReq> fileList; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.constructionuserfile; | package org.dromara.contractor.domain.dto.constructionuserfile; | ||||||
| 
 | 
 | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -12,7 +12,7 @@ import java.util.List; | |||||||
|  * @date 2025/4/9 9:25 |  * @date 2025/4/9 9:25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserFileTemplateReq implements Serializable { | public class SubConstructionUserFileTemplateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -6895109153171403950L; |     private static final long serialVersionUID = -6895109153171403950L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.contractor; | package org.dromara.contractor.domain.dto.contractor; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -11,7 +11,7 @@ import java.util.Map; | |||||||
|  * @date 2025/3/5 14:05 |  * @date 2025/3/5 14:05 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorCreateReq implements Serializable { | public class SubContractorCreateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -7603153089205421154L; |     private static final long serialVersionUID = -7603153089205421154L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.contractor; | package org.dromara.contractor.domain.dto.contractor; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/3/5 14:31 |  * @date 2025/3/5 14:31 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorQueryReq implements Serializable { | public class SubContractorQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 3252651952758479341L; |     private static final long serialVersionUID = 3252651952758479341L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.contractor; | package org.dromara.contractor.domain.dto.contractor; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -11,7 +11,7 @@ import java.util.Map; | |||||||
|  * @date 2025/3/5 15:04 |  * @date 2025/3/5 15:04 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorUpdateReq implements Serializable { | public class SubContractorUpdateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -8022860866890925958L; |     private static final long serialVersionUID = -8022860866890925958L; | ||||||
| @ -0,0 +1,58 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterial; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:18 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialCreateReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = -5984785792671407395L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     private String materialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料类型 | ||||||
|  |      */ | ||||||
|  |     private String materialType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料型号 | ||||||
|  |      */ | ||||||
|  |     private String materialModel; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料单位 | ||||||
|  |      */ | ||||||
|  |     private String materialUnit; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 文件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,43 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterial; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:20 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialQueryReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = 640474123189874263L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     private String materialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料类型 | ||||||
|  |      */ | ||||||
|  |     private String materialType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料型号 | ||||||
|  |      */ | ||||||
|  |     private String materialModel; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,63 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterial; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:20 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialUpdateReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = -4488270790673814590L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     private String materialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料类型 | ||||||
|  |      */ | ||||||
|  |     private String materialType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料型号 | ||||||
|  |      */ | ||||||
|  |     private String materialModel; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料单位 | ||||||
|  |      */ | ||||||
|  |     private String materialUnit; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 文件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,57 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterialrecord; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:35 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialRecordCreateReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = -2325294573057427849L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料id | ||||||
|  |      */ | ||||||
|  |     private Long contractorMaterialId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型(1到货计划 2使用情况) | ||||||
|  |      */ | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录时间 | ||||||
|  |      */ | ||||||
|  |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 使用位置或构件部位(使用情况) | ||||||
|  |      */ | ||||||
|  |     private String usedPosition; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 相关附件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,43 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterialrecord; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:36 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialRecordQueryReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = -5817912360176038347L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料id | ||||||
|  |      */ | ||||||
|  |     private Long contractorMaterialId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型(1到货计划 2使用情况) | ||||||
|  |      */ | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 使用位置或构件部位(使用情况) | ||||||
|  |      */ | ||||||
|  |     private String usedPosition; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,62 @@ | |||||||
|  | package org.dromara.contractor.domain.dto.contractormaterialrecord; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 14:36 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | public class SubContractorMaterialRecordUpdateReq implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = -6087029523445301396L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料id | ||||||
|  |      */ | ||||||
|  |     private Long contractorMaterialId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型(1到货计划 2使用情况) | ||||||
|  |      */ | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录时间 | ||||||
|  |      */ | ||||||
|  |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 使用位置或构件部位(使用情况) | ||||||
|  |      */ | ||||||
|  |     private String usedPosition; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 相关附件 | ||||||
|  |      */ | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,16 +1,17 @@ | |||||||
| package org.dromara.project.domain.dto.contractortool; | package org.dromara.contractor.domain.dto.contractortool; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025/6/26 15:26 |  * @date 2025/6/26 15:26 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorToolCreateReq implements Serializable { | public class SubContractorToolCreateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -148571725751082526L; |     private static final long serialVersionUID = -148571725751082526L; | ||||||
| @ -43,7 +44,7 @@ public class BusContractorToolCreateReq implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 工具数量 |      * 工具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     private BigDecimal toolNumber; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 文件 |      * 文件 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.contractortool; | package org.dromara.contractor.domain.dto.contractortool; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/6/26 15:26 |  * @date 2025/6/26 15:26 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorToolQueryReq implements Serializable { | public class SubContractorToolQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -654101391027815665L; |     private static final long serialVersionUID = -654101391027815665L; | ||||||
| @ -1,16 +1,17 @@ | |||||||
| package org.dromara.project.domain.dto.contractortool; | package org.dromara.contractor.domain.dto.contractortool; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025/6/26 15:26 |  * @date 2025/6/26 15:26 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusContractorToolUpdateReq implements Serializable { | public class SubContractorToolUpdateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 6147452720586538283L; |     private static final long serialVersionUID = 6147452720586538283L; | ||||||
| @ -48,7 +49,7 @@ public class BusContractorToolUpdateReq implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 工具数量 |      * 工具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     private BigDecimal toolNumber; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 文件 |      * 文件 | ||||||
| @ -1,9 +1,11 @@ | |||||||
| package org.dromara.contractor.domain.dto.contractortoolentry; | package org.dromara.contractor.domain.dto.contractortoolentry; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -27,9 +29,9 @@ public class SubContractorToolRecordCreateReq implements Serializable { | |||||||
|     private String recordType; |     private String recordType; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场工器具数量 |      * 记录工器具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检测编号 |      * 检测编号 | ||||||
| @ -44,6 +46,7 @@ public class SubContractorToolRecordCreateReq implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 检测时间 |      * 检测时间 | ||||||
|      */ |      */ | ||||||
|  |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|     private Date checkTime; |     private Date checkTime; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @ -57,7 +60,8 @@ public class SubContractorToolRecordCreateReq implements Serializable { | |||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场时间 |      * 记录时间 | ||||||
|      */ |      */ | ||||||
|     private Date entryTime; |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|  |     private Date recordTime; | ||||||
| } | } | ||||||
|  | |||||||
| @ -40,4 +40,9 @@ public class SubContractorToolRecordQueryReq implements Serializable { | |||||||
|      */ |      */ | ||||||
|     private String checkDept; |     private String checkDept; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型 | ||||||
|  |      */ | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,11 @@ | |||||||
| package org.dromara.contractor.domain.dto.contractortoolentry; | package org.dromara.contractor.domain.dto.contractortoolentry; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -22,9 +24,9 @@ public class SubContractorToolRecordUpdateReq implements Serializable { | |||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场工器具数量 |      * 记录工器具数量 | ||||||
|      */ |      */ | ||||||
|     private String toolNumber; |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检测编号 |      * 检测编号 | ||||||
| @ -39,6 +41,7 @@ public class SubContractorToolRecordUpdateReq implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 检测时间 |      * 检测时间 | ||||||
|      */ |      */ | ||||||
|  |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|     private Date checkTime; |     private Date checkTime; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @ -52,8 +55,9 @@ public class SubContractorToolRecordUpdateReq implements Serializable { | |||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场时间 |      * 记录时间 | ||||||
|      */ |      */ | ||||||
|     private Date entryTime; |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.subcontract; | package org.dromara.contractor.domain.dto.subcontract; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * @date 2025/6/25 16:36 |  * @date 2025/6/25 16:36 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusSubcontractCreateReq implements Serializable { | public class SubSubcontractCreateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -3386090526440868496L; |     private static final long serialVersionUID = -3386090526440868496L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.subcontract; | package org.dromara.contractor.domain.dto.subcontract; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/6/25 16:37 |  * @date 2025/6/25 16:37 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusSubcontractQueryReq implements Serializable { | public class SubSubcontractQueryReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 3731492397283570840L; |     private static final long serialVersionUID = 3731492397283570840L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.dto.subcontract; | package org.dromara.contractor.domain.dto.subcontract; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * @date 2025/6/25 16:37 |  * @date 2025/6/25 16:37 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusSubcontractUpdateReq implements Serializable { | public class SubSubcontractUpdateReq implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -5617446079713109912L; |     private static final long serialVersionUID = -5617446079713109912L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.enums; | package org.dromara.contractor.domain.enums; | ||||||
| 
 | 
 | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| 
 | 
 | ||||||
| @ -7,7 +7,7 @@ import lombok.Getter; | |||||||
|  * @date 2025/4/3 17:47 |  * @date 2025/4/3 17:47 | ||||||
|  */ |  */ | ||||||
| @Getter | @Getter | ||||||
| public enum BusConstructionUserFileStatusEnum { | public enum SubConstructionUserFileStatusEnum { | ||||||
| 
 | 
 | ||||||
|     NOUPLOAD("未上传", "1"), |     NOUPLOAD("未上传", "1"), | ||||||
|     PARTUPLOAD("部分上传", "2"), |     PARTUPLOAD("部分上传", "2"), | ||||||
| @ -17,7 +17,7 @@ public enum BusConstructionUserFileStatusEnum { | |||||||
| 
 | 
 | ||||||
|     private final String value; |     private final String value; | ||||||
| 
 | 
 | ||||||
|     BusConstructionUserFileStatusEnum(String text, String value) { |     SubConstructionUserFileStatusEnum(String text, String value) { | ||||||
|         this.text = text; |         this.text = text; | ||||||
|         this.value = value; |         this.value = value; | ||||||
|     } |     } | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | package org.dromara.contractor.domain.enums; | ||||||
|  |  | ||||||
|  | import lombok.Getter; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 10:30 | ||||||
|  |  */ | ||||||
|  | @Getter | ||||||
|  | public enum SubContractorRecordEnum { | ||||||
|  |  | ||||||
|  |     PUT("进场/入库", "1"), | ||||||
|  |     OUT("出场/出库", "2"); | ||||||
|  |  | ||||||
|  |     private final String text; | ||||||
|  |  | ||||||
|  |     private final String value; | ||||||
|  |  | ||||||
|  |     SubContractorRecordEnum(String text, String value) { | ||||||
|  |         this.text = text; | ||||||
|  |         this.value = value; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.exportvo; | package org.dromara.contractor.domain.exportvo; | ||||||
| 
 | 
 | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -6,7 +6,7 @@ import io.github.linpeilie.annotations.AutoMapper; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.common.excel.annotation.ExcelDictFormat; | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
| import org.dromara.common.excel.convert.ExcelDictConvert; | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| @ -18,7 +18,7 @@ import java.util.Date; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | ||||||
| @AutoMapper(target = BusConstructionUser.class) | @AutoMapper(target = SubConstructionUser.class) | ||||||
| public class BusConstructionUserExportVo implements Serializable { | public class BusConstructionUserExportVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuser; | package org.dromara.contractor.domain.vo.constructionuser; | ||||||
| 
 | 
 | ||||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -16,7 +16,7 @@ import java.util.List; | |||||||
| @Data | @Data | ||||||
| @AllArgsConstructor | @AllArgsConstructor | ||||||
| @NoArgsConstructor | @NoArgsConstructor | ||||||
| public class BusConstructionUserAttendanceByDay { | public class SubConstructionUserAttendanceByDay { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 上班打卡时间 |      * 上班打卡时间 | ||||||
| @ -47,11 +47,11 @@ public class BusConstructionUserAttendanceByDay { | |||||||
|      */ |      */ | ||||||
|     private Date downClockTime; |     private Date downClockTime; | ||||||
| 
 | 
 | ||||||
|     public static BusConstructionUserAttendanceByDay build(List<BusAttendance> attendanceList) { |     public static SubConstructionUserAttendanceByDay build(List<BusAttendance> attendanceList) { | ||||||
|         if (attendanceList == null) { |         if (attendanceList == null) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|         BusConstructionUserAttendanceByDay constructionUserAttendanceByDay = new BusConstructionUserAttendanceByDay(); |         SubConstructionUserAttendanceByDay constructionUserAttendanceByDay = new SubConstructionUserAttendanceByDay(); | ||||||
|         for (BusAttendance attendance : attendanceList) { |         for (BusAttendance attendance : attendanceList) { | ||||||
|             if (attendance.getCommuter().equals(BusAttendanceCommuterEnum.CLOCKIN.getValue())) { |             if (attendance.getCommuter().equals(BusAttendanceCommuterEnum.CLOCKIN.getValue())) { | ||||||
|                 constructionUserAttendanceByDay.setUpClockTime(attendance.getClockTime()); |                 constructionUserAttendanceByDay.setUpClockTime(attendance.getClockTime()); | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuser; | package org.dromara.contractor.domain.vo.constructionuser; | ||||||
| 
 | 
 | ||||||
| import com.fasterxml.jackson.annotation.JsonFormat; | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| @ -12,7 +12,7 @@ import java.util.Date; | |||||||
|  * @date 2025/4/7 15:06 |  * @date 2025/4/7 15:06 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserAttendanceMonthVo implements Serializable { | public class SubConstructionUserAttendanceMonthVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -413447291128760025L; |     private static final long serialVersionUID = -413447291128760025L; | ||||||
| @ -38,6 +38,6 @@ public class BusConstructionUserAttendanceMonthVo implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 当天打卡记录 |      * 当天打卡记录 | ||||||
|      */ |      */ | ||||||
|     private BusConstructionUserAttendanceByDay clockList; |     private SubConstructionUserAttendanceByDay clockList; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuser; | package org.dromara.contractor.domain.vo.constructionuser; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -11,7 +11,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/7 10:16 |  * @date 2025/4/7 10:16 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserAttendanceTotalVo implements Serializable { | public class SubConstructionUserAttendanceTotalVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1335094839733429171L; |     private static final long serialVersionUID = 1335094839733429171L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuser; | package org.dromara.contractor.domain.vo.constructionuser; | ||||||
| 
 | 
 | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ import java.io.Serializable; | |||||||
|  * @date 2025/4/28 9:33 |  * @date 2025/4/28 9:33 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| public class BusConstructionUserGisVo implements Serializable { | public class SubConstructionUserGisVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = -3496633845665259321L; |     private static final long serialVersionUID = -3496633845665259321L; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuser; | package org.dromara.contractor.domain.vo.constructionuser; | ||||||
| 
 | 
 | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -6,8 +6,8 @@ import io.github.linpeilie.annotations.AutoMapper; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.common.excel.annotation.ExcelDictFormat; | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
| import org.dromara.common.excel.convert.ExcelDictConvert; | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| @ -22,8 +22,8 @@ import java.util.Date; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | ||||||
| @AutoMapper(target = BusConstructionUser.class) | @AutoMapper(target = SubConstructionUser.class) | ||||||
| public class BusConstructionUserVo implements Serializable { | public class SubConstructionUserVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -67,7 +67,7 @@ public class BusConstructionUserVo implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 分包公司 |      * 分包公司 | ||||||
|      */ |      */ | ||||||
|     private BusContractorVo contractorVo; |     private SubContractorVo contractorVo; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 班组id |      * 班组id | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.constructionuserfile; | package org.dromara.contractor.domain.vo.constructionuserfile; | ||||||
| 
 | 
 | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -6,7 +6,7 @@ import io.github.linpeilie.annotations.AutoMapper; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.common.excel.annotation.ExcelDictFormat; | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
| import org.dromara.common.excel.convert.ExcelDictConvert; | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
| import org.dromara.project.domain.BusConstructionUserFile; | import org.dromara.contractor.domain.SubConstructionUserFile; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| @ -20,8 +20,8 @@ import java.io.Serializable; | |||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | ||||||
| @AutoMapper(target = BusConstructionUserFile.class) | @AutoMapper(target = SubConstructionUserFile.class) | ||||||
| public class BusConstructionUserFileVo implements Serializable { | public class SubConstructionUserFileVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -1,10 +1,10 @@ | |||||||
| package org.dromara.project.domain.vo.contractor; | package org.dromara.contractor.domain.vo.contractor; | ||||||
| 
 | 
 | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| import io.github.linpeilie.annotations.AutoMapper; | import io.github.linpeilie.annotations.AutoMapper; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| @ -13,15 +13,15 @@ import java.util.Map; | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包单位视图对象 bus_contractor |  * 分包单位视图对象 sub_contractor | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | ||||||
| @AutoMapper(target = BusContractor.class) | @AutoMapper(target = SubContractor.class) | ||||||
| public class BusContractorVo implements Serializable { | public class SubContractorVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -0,0 +1,97 @@ | |||||||
|  | package org.dromara.contractor.domain.vo.contractormaterial; | ||||||
|  |  | ||||||
|  | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
|  | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import io.github.linpeilie.annotations.AutoMapper; | ||||||
|  | import lombok.Data; | ||||||
|  | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
|  | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterial; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料视图对象 sub_contractor_material | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ExcelIgnoreUnannotated | ||||||
|  | @AutoMapper(target = SubContractorMaterial.class) | ||||||
|  | public class SubContractorMaterialVo implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "主键id") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "项目id") | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "分包方id") | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方名称 | ||||||
|  |      */ | ||||||
|  |     private String contractorName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料名称") | ||||||
|  |     private String materialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料类型 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料类型", converter = ExcelDictConvert.class) | ||||||
|  |     @ExcelDictFormat(dictType = "contractor_material_type") | ||||||
|  |     private String materialType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料型号 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料型号") | ||||||
|  |     private String materialModel; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料数量 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料数量") | ||||||
|  |     private BigDecimal materialNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料单位 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料单位") | ||||||
|  |     private String materialUnit; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 文件 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "文件") | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,109 @@ | |||||||
|  | package org.dromara.contractor.domain.vo.contractormaterialrecord; | ||||||
|  |  | ||||||
|  | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
|  | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
|  | import io.github.linpeilie.annotations.AutoMapper; | ||||||
|  | import lombok.Data; | ||||||
|  | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
|  | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterialRecord; | ||||||
|  |  | ||||||
|  | import java.io.Serial; | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Date; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录视图对象 sub_contractor_material_record | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @ExcelIgnoreUnannotated | ||||||
|  | @AutoMapper(target = SubContractorMaterialRecord.class) | ||||||
|  | public class SubContractorMaterialRecordVo implements Serializable { | ||||||
|  |  | ||||||
|  |     @Serial | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 主键id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "主键id") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 项目id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "项目id") | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "分包方id") | ||||||
|  |     private Long contractorId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分包方名称 | ||||||
|  |      */ | ||||||
|  |     private String contractorName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料id | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "物料id") | ||||||
|  |     private Long contractorMaterialId; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 物料名称 | ||||||
|  |      */ | ||||||
|  |     private String contractorMaterialName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录类型(1到货计划 2使用情况) | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "记录类型(1到货计划 2使用情况)", converter = ExcelDictConvert.class) | ||||||
|  |     @ExcelDictFormat(dictType = "contractor_material_record_type") | ||||||
|  |     private String recordType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 记录时间 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "记录时间") | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 数量 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "数量") | ||||||
|  |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 剩余数量(到货 使用) | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "剩余数量(到货 使用)") | ||||||
|  |     private BigDecimal remainingNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 使用位置或构件部位(使用情况) | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "使用位置或构件部位(使用情况)") | ||||||
|  |     private String usedPosition; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 相关附件 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "相关附件") | ||||||
|  |     private String file; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 备注 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.domain.vo.contractortool; | package org.dromara.contractor.domain.vo.contractortool; | ||||||
| 
 | 
 | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -6,23 +6,24 @@ import io.github.linpeilie.annotations.AutoMapper; | |||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.common.excel.annotation.ExcelDictFormat; | import org.dromara.common.excel.annotation.ExcelDictFormat; | ||||||
| import org.dromara.common.excel.convert.ExcelDictConvert; | import org.dromara.common.excel.convert.ExcelDictConvert; | ||||||
| import org.dromara.project.domain.BusContractorTool; | import org.dromara.contractor.domain.SubContractorTool; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包方工器具视图对象 bus_contractor_tool |  * 分包方工器具视图对象 sub_contractor_tool | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-26 |  * @date 2025-06-26 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @ExcelIgnoreUnannotated | @ExcelIgnoreUnannotated | ||||||
| @AutoMapper(target = BusContractorTool.class) | @AutoMapper(target = SubContractorTool.class) | ||||||
| public class BusContractorToolVo implements Serializable { | public class SubContractorToolVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -73,7 +74,7 @@ public class BusContractorToolVo implements Serializable { | |||||||
|      * 工具数量 |      * 工具数量 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "工具数量") |     @ExcelProperty(value = "工具数量") | ||||||
|     private String toolNumber; |     private BigDecimal toolNumber; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 备注 |      * 备注 | ||||||
| @ -2,12 +2,14 @@ package org.dromara.contractor.domain.vo.contractortoolentry; | |||||||
|  |  | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonFormat; | ||||||
| import io.github.linpeilie.annotations.AutoMapper; | import io.github.linpeilie.annotations.AutoMapper; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.contractor.domain.SubContractorToolRecord; | import org.dromara.contractor.domain.SubContractorToolRecord; | ||||||
|  |  | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -66,10 +68,16 @@ public class SubContractorToolRecordVo implements Serializable { | |||||||
|     private String recordType; |     private String recordType; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场工器具数量 |      * 记录工器具数量 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "进场工器具数量") |     @ExcelProperty(value = "记录工器具数量") | ||||||
|     private String toolNumber; |     private BigDecimal recordNumber; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 剩余数量 | ||||||
|  |      */ | ||||||
|  |     @ExcelProperty(value = "剩余数量") | ||||||
|  |     private BigDecimal remainingNumber; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 检测编号 |      * 检测编号 | ||||||
| @ -87,6 +95,7 @@ public class SubContractorToolRecordVo implements Serializable { | |||||||
|      * 检测时间 |      * 检测时间 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "检测时间") |     @ExcelProperty(value = "检测时间") | ||||||
|  |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") | ||||||
|     private Date checkTime; |     private Date checkTime; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @ -102,9 +111,10 @@ public class SubContractorToolRecordVo implements Serializable { | |||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 进场时间 |      * 记录时间 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "进场时间") |     @ExcelProperty(value = "记录时间") | ||||||
|     private Date entryTime; |     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8") | ||||||
|  |     private Date recordTime; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| package org.dromara.project.domain.vo.subcontract; | package org.dromara.contractor.domain.vo.subcontract; | ||||||
| 
 | 
 | ||||||
| import io.github.linpeilie.annotations.AutoMapper; | import io.github.linpeilie.annotations.AutoMapper; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
| import org.dromara.project.domain.BusSubcontract; | import org.dromara.contractor.domain.SubSubcontract; | ||||||
| 
 | 
 | ||||||
| import java.io.Serial; | import java.io.Serial; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| @ -11,14 +11,14 @@ import java.util.Date; | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 分包合同视图对象 bus_subcontract |  * 分包合同视图对象 sub_subcontract | ||||||
|  * |  * | ||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-25 |  * @date 2025-06-25 | ||||||
|  */ |  */ | ||||||
| @Data | @Data | ||||||
| @AutoMapper(target = BusSubcontract.class) | @AutoMapper(target = SubSubcontract.class) | ||||||
| public class BusSubcontractVo implements Serializable { | public class SubSubcontractVo implements Serializable { | ||||||
| 
 | 
 | ||||||
|     @Serial |     @Serial | ||||||
|     private static final long serialVersionUID = 1L; |     private static final long serialVersionUID = 1L; | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.contractor.domain.SubConstructionUserFile; | ||||||
|  | import org.dromara.contractor.domain.vo.constructionuserfile.SubConstructionUserFileVo; | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 施工人员文件存储Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-04-01 | ||||||
|  |  */ | ||||||
|  | public interface SubConstructionUserFileMapper extends BaseMapperPlus<SubConstructionUserFile, SubConstructionUserFileVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
|  | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserVo; | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 施工人员Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-03-07 | ||||||
|  |  */ | ||||||
|  | public interface SubConstructionUserMapper extends BaseMapperPlus<SubConstructionUser, SubConstructionUserVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包单位Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-03-07 | ||||||
|  |  */ | ||||||
|  | public interface SubContractorMapper extends BaseMapperPlus<SubContractor, SubContractorVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterial; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterial.SubContractorMaterialVo; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | public interface SubContractorMaterialMapper extends BaseMapperPlus<SubContractorMaterial, SubContractorMaterialVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterialRecord; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterialrecord.SubContractorMaterialRecordVo; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | public interface SubContractorMaterialRecordMapper extends BaseMapperPlus<SubContractorMaterialRecord, SubContractorMaterialRecordVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  | import org.dromara.contractor.domain.SubContractorTool; | ||||||
|  | import org.dromara.contractor.domain.vo.contractortool.SubContractorToolVo; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方工器具Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-26 | ||||||
|  |  */ | ||||||
|  | public interface SubContractorToolMapper extends BaseMapperPlus<SubContractorTool, SubContractorToolVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | package org.dromara.contractor.mapper; | ||||||
|  |  | ||||||
|  | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; | ||||||
|  | import org.dromara.contractor.domain.SubSubcontract; | ||||||
|  | import org.dromara.contractor.domain.vo.subcontract.SubSubcontractVo; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包合同Mapper接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-25 | ||||||
|  |  */ | ||||||
|  | public interface SubSubcontractMapper extends BaseMapperPlus<SubSubcontract, SubSubcontractVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,14 +1,14 @@ | |||||||
| package org.dromara.project.service; | package org.dromara.contractor.service; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.BusConstructionUserFile; | import org.dromara.contractor.domain.SubConstructionUserFile; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileQueryReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileQueryReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileSaveReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileSaveReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileTemplateReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileTemplateReq; | ||||||
| import org.dromara.project.domain.vo.constructionuserfile.BusConstructionUserFileVo; | import org.dromara.contractor.domain.vo.constructionuserfile.SubConstructionUserFileVo; | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
| 
 | 
 | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -19,7 +19,7 @@ import java.util.List; | |||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-04-01 |  * @date 2025-04-01 | ||||||
|  */ |  */ | ||||||
| public interface IBusConstructionUserFileService extends IService<BusConstructionUserFile> { | public interface ISubConstructionUserFileService extends IService<SubConstructionUserFile> { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员文件存储 |      * 查询施工人员文件存储 | ||||||
| @ -27,7 +27,7 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      * @return 施工人员文件存储 |      * @return 施工人员文件存储 | ||||||
|      */ |      */ | ||||||
|     BusConstructionUserFileVo queryById(Long id); |     SubConstructionUserFileVo queryById(Long id); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询符合条件的施工人员文件存储列表 |      * 查询符合条件的施工人员文件存储列表 | ||||||
| @ -35,7 +35,7 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 施工人员文件存储列表 |      * @return 施工人员文件存储列表 | ||||||
|      */ |      */ | ||||||
|     List<BusConstructionUserFileVo> queryList(BusConstructionUserFileQueryReq req); |     List<SubConstructionUserFileVo> queryList(SubConstructionUserFileQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 导出施工人员文件模版zip |      * 导出施工人员文件模版zip | ||||||
| @ -43,7 +43,7 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param req      查询条件 |      * @param req      查询条件 | ||||||
|      * @param response 响应对象 |      * @param response 响应对象 | ||||||
|      */ |      */ | ||||||
|     void downloadFileTemplate(BusConstructionUserFileTemplateReq req, HttpServletResponse response); |     void downloadFileTemplate(SubConstructionUserFileTemplateReq req, HttpServletResponse response); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 通过zip文件批量上传施工人员文件 |      * 通过zip文件批量上传施工人员文件 | ||||||
| @ -59,7 +59,7 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param req 保存参数 |      * @param req 保存参数 | ||||||
|      * @return 是否保存成功 |      * @return 是否保存成功 | ||||||
|      */ |      */ | ||||||
|     Boolean saveFileList(BusConstructionUserFileSaveReq req); |     Boolean saveFileList(SubConstructionUserFileSaveReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员文件存储查询条件封装 |      * 获取施工人员文件存储查询条件封装 | ||||||
| @ -67,7 +67,7 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusConstructionUserFile> buildQueryWrapper(BusConstructionUserFileQueryReq req); |     LambdaQueryWrapper<SubConstructionUserFile> buildQueryWrapper(SubConstructionUserFileQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员查询条件封装 |      * 获取施工人员查询条件封装 | ||||||
| @ -75,6 +75,6 @@ public interface IBusConstructionUserFileService extends IService<BusConstructio | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusConstructionUser> buildTemplateQueryWrapper(BusConstructionUserFileTemplateReq req); |     LambdaQueryWrapper<SubConstructionUser> buildTemplateQueryWrapper(SubConstructionUserFileTemplateReq req); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,17 +1,17 @@ | |||||||
| package org.dromara.project.service; | package org.dromara.contractor.service; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import org.dromara.common.mybatis.core.page.PageQuery; | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.exportvo.BusConstructionUserExportVo; | import org.dromara.contractor.domain.dto.constructionuser.*; | ||||||
| import org.dromara.project.domain.dto.constructionuser.*; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserAttendanceMonthVo; | import org.dromara.contractor.domain.exportvo.BusConstructionUserExportVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserAttendanceTotalVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserAttendanceMonthVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserGisVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserAttendanceTotalVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserVo; | import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserGisVo; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -22,7 +22,7 @@ import java.util.List; | |||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| public interface IBusConstructionUserService extends IService<BusConstructionUser> { | public interface ISubConstructionUserService extends IService<SubConstructionUser> { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员 |      * 查询施工人员 | ||||||
| @ -30,7 +30,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      * @return 施工人员 |      * @return 施工人员 | ||||||
|      */ |      */ | ||||||
|     BusConstructionUserVo queryById(Long id); |     SubConstructionUserVo queryById(Long id); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分页查询施工人员列表 |      * 分页查询施工人员列表 | ||||||
| @ -39,7 +39,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param pageQuery 分页参数 |      * @param pageQuery 分页参数 | ||||||
|      * @return 施工人员分页列表 |      * @return 施工人员分页列表 | ||||||
|      */ |      */ | ||||||
|     TableDataInfo<BusConstructionUserVo> queryPageList(BusConstructionUserQueryReq req, PageQuery pageQuery); |     TableDataInfo<SubConstructionUserVo> queryPageList(SubConstructionUserQueryReq req, PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分页查询施工人员考勤列表 |      * 分页查询施工人员考勤列表 | ||||||
| @ -48,7 +48,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param pageQuery 分页参数 |      * @param pageQuery 分页参数 | ||||||
|      * @return 施工人员考勤分页列表 |      * @return 施工人员考勤分页列表 | ||||||
|      */ |      */ | ||||||
|     TableDataInfo<BusConstructionUserAttendanceTotalVo> queryPageAttendanceList(BusConstructionUserAttendanceQueryReq req, PageQuery pageQuery); |     TableDataInfo<SubConstructionUserAttendanceTotalVo> queryPageAttendanceList(SubConstructionUserAttendanceQueryReq req, PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询施工人员月考勤列表 |      * 查询施工人员月考勤列表 | ||||||
| @ -56,7 +56,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 施工人员考勤月列表 |      * @return 施工人员考勤月列表 | ||||||
|      */ |      */ | ||||||
|     List<BusConstructionUserAttendanceMonthVo> queryAttendanceMonthList(BusConstructionUserAttendanceMonthReq req); |     List<SubConstructionUserAttendanceMonthVo> queryAttendanceMonthList(SubConstructionUserAttendanceMonthReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询符合条件的施工人员列表 |      * 查询符合条件的施工人员列表 | ||||||
| @ -64,7 +64,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 施工人员列表 |      * @return 施工人员列表 | ||||||
|      */ |      */ | ||||||
|     List<BusConstructionUserExportVo> queryList(BusConstructionUserQueryReq req); |     List<BusConstructionUserExportVo> queryList(SubConstructionUserQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员大屏数据 |      * 获取施工人员大屏数据 | ||||||
| @ -72,7 +72,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 施工人员大屏数据 |      * @return 施工人员大屏数据 | ||||||
|      */ |      */ | ||||||
|     BusConstructionUserGisVo getGisData(BusConstructionUserGisReq req); |     SubConstructionUserGisVo getGisData(SubConstructionUserGisReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增施工人员 |      * 新增施工人员 | ||||||
| @ -80,7 +80,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 施工人员 |      * @param req 施工人员 | ||||||
|      * @return 是否新增成功 |      * @return 是否新增成功 | ||||||
|      */ |      */ | ||||||
|     Long insertByBo(BusConstructionUserCreateReq req); |     Long insertByBo(SubConstructionUserCreateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员 |      * 修改施工人员 | ||||||
| @ -88,7 +88,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 施工人员 |      * @param req 施工人员 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateByBo(BusConstructionUserUpdateReq req); |     Boolean updateByBo(SubConstructionUserUpdateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员工资 |      * 修改施工人员工资 | ||||||
| @ -96,7 +96,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 修改施工人员工资对象 |      * @param req 修改施工人员工资对象 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateSalary(BusConstructionUserUpdateSalaryReq req); |     Boolean updateSalary(SubConstructionUserUpdateSalaryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员打卡状态 |      * 修改施工人员打卡状态 | ||||||
| @ -104,7 +104,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 修改施工人员打卡状态对象 |      * @param req 修改施工人员打卡状态对象 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateClock(BusConstructionUserUpdateClockReq req); |     Boolean updateClock(SubConstructionUserUpdateClockReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改施工人员项目(人员迁移) |      * 修改施工人员项目(人员迁移) | ||||||
| @ -112,7 +112,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 修改施工人员项目对象 |      * @param req 修改施工人员项目对象 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean changeUserProject(BusConstructionUserChangeProjectReq req); |     Boolean changeUserProject(SubConstructionUserChangeProjectReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 批量修改施工人员状态 |      * 批量修改施工人员状态 | ||||||
| @ -120,7 +120,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 批量修改施工人员状态对象 |      * @param req 批量修改施工人员状态对象 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean batchUpdateStatus(BusConstructionUserBatchUpdateStatusReq req); |     Boolean batchUpdateStatus(SubConstructionUserBatchUpdateStatusReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 根据项目id批量修改施工人员打卡状态 |      * 根据项目id批量修改施工人员打卡状态 | ||||||
| @ -128,7 +128,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 批量修改施工人员打卡状态对象 |      * @param req 批量修改施工人员打卡状态对象 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean batchUpdateClockByProjectId(BusConstructionUserBatchUpdateClockReq req); |     Boolean batchUpdateClockByProjectId(SubConstructionUserBatchUpdateClockReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 校验并批量删除施工人员信息 |      * 校验并批量删除施工人员信息 | ||||||
| @ -145,7 +145,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param constructionUser 施工人员对象 |      * @param constructionUser 施工人员对象 | ||||||
|      * @return 施工人员视图对象 |      * @return 施工人员视图对象 | ||||||
|      */ |      */ | ||||||
|     BusConstructionUserVo getVo(BusConstructionUser constructionUser); |     SubConstructionUserVo getVo(SubConstructionUser constructionUser); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员查询条件封装 |      * 获取施工人员查询条件封装 | ||||||
| @ -153,7 +153,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusConstructionUser> buildQueryWrapper(BusConstructionUserQueryReq req); |     LambdaQueryWrapper<SubConstructionUser> buildQueryWrapper(SubConstructionUserQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员分页对象视图 |      * 获取施工人员分页对象视图 | ||||||
| @ -161,7 +161,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param constructionUserPage 施工人员分页对象 |      * @param constructionUserPage 施工人员分页对象 | ||||||
|      * @return 施工人员分页对象视图 |      * @return 施工人员分页对象视图 | ||||||
|      */ |      */ | ||||||
|     Page<BusConstructionUserVo> getVoPage(Page<BusConstructionUser> constructionUserPage); |     Page<SubConstructionUserVo> getVoPage(Page<SubConstructionUser> constructionUserPage); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取施工人员考勤分页对象视图 |      * 获取施工人员考勤分页对象视图 | ||||||
| @ -169,7 +169,7 @@ public interface IBusConstructionUserService extends IService<BusConstructionUse | |||||||
|      * @param req 施工人员考勤分页查询条件 |      * @param req 施工人员考勤分页查询条件 | ||||||
|      * @return 施工人员考勤分页对象视图 |      * @return 施工人员考勤分页对象视图 | ||||||
|      */ |      */ | ||||||
|     Page<BusConstructionUserAttendanceTotalVo> getAttendanceTotalVoPage(BusConstructionUserAttendanceQueryReq req, |     Page<SubConstructionUserAttendanceTotalVo> getAttendanceTotalVoPage(SubConstructionUserAttendanceQueryReq req, | ||||||
|                                                                         PageQuery pageQuery); |                                                                         PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -0,0 +1,98 @@ | |||||||
|  | package org.dromara.contractor.service; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterialRecord; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterialrecord.SubContractorMaterialRecordVo; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录Service接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | public interface ISubContractorMaterialRecordService extends IService<SubContractorMaterialRecord> { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      * @return 分包方物料记录 | ||||||
|  |      */ | ||||||
|  |     SubContractorMaterialRecordVo queryById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分页查询分包方物料记录列表 | ||||||
|  |      * | ||||||
|  |      * @param req       查询条件 | ||||||
|  |      * @param pageQuery 分页参数 | ||||||
|  |      * @return 分包方物料记录分页列表 | ||||||
|  |      */ | ||||||
|  |     TableDataInfo<SubContractorMaterialRecordVo> queryPageList(SubContractorMaterialRecordQueryReq req, PageQuery pageQuery); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的分包方物料记录列表 | ||||||
|  |      * | ||||||
|  |      * @param req 查询条件 | ||||||
|  |      * @return 分包方物料记录列表 | ||||||
|  |      */ | ||||||
|  |     List<SubContractorMaterialRecordVo> queryList(SubContractorMaterialRecordQueryReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录 | ||||||
|  |      * @return 新增分包方物料记录id | ||||||
|  |      */ | ||||||
|  |     Long insertByBo(SubContractorMaterialRecordCreateReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录 | ||||||
|  |      * @return 是否修改成功 | ||||||
|  |      */ | ||||||
|  |     Boolean updateByBo(SubContractorMaterialRecordUpdateReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并批量删除分包方物料记录信息 | ||||||
|  |      * | ||||||
|  |      * @param ids     待删除的主键集合 | ||||||
|  |      * @param isValid 是否进行有效性校验 | ||||||
|  |      * @return 是否删除成功 | ||||||
|  |      */ | ||||||
|  |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录视图对象 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterialRecord 分包方物料记录对象 | ||||||
|  |      * @return 分包方物料记录视图对象 | ||||||
|  |      */ | ||||||
|  |     SubContractorMaterialRecordVo getVo(SubContractorMaterialRecord contractorMaterialRecord); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录查询条件封装 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录查询条件 | ||||||
|  |      * @return 分包方物料记录查询条件封装 | ||||||
|  |      */ | ||||||
|  |     LambdaQueryWrapper<SubContractorMaterialRecord> buildQueryWrapper(SubContractorMaterialRecordQueryReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录分页对象视图 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterialRecordPage 分包方物料记录分页对象 | ||||||
|  |      * @return 分包方物料记录分页对象视图 | ||||||
|  |      */ | ||||||
|  |     Page<SubContractorMaterialRecordVo> getVoPage(Page<SubContractorMaterialRecord> contractorMaterialRecordPage); | ||||||
|  | } | ||||||
| @ -0,0 +1,98 @@ | |||||||
|  | package org.dromara.contractor.service; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterial; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterial.SubContractorMaterialVo; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料Service接口 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | public interface ISubContractorMaterialService extends IService<SubContractorMaterial> { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      * @return 分包方物料 | ||||||
|  |      */ | ||||||
|  |     SubContractorMaterialVo queryById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分页查询分包方物料列表 | ||||||
|  |      * | ||||||
|  |      * @param req       查询条件 | ||||||
|  |      * @param pageQuery 分页参数 | ||||||
|  |      * @return 分包方物料分页列表 | ||||||
|  |      */ | ||||||
|  |     TableDataInfo<SubContractorMaterialVo> queryPageList(SubContractorMaterialQueryReq req, PageQuery pageQuery); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的分包方物料列表 | ||||||
|  |      * | ||||||
|  |      * @param req 查询条件 | ||||||
|  |      * @return 分包方物料列表 | ||||||
|  |      */ | ||||||
|  |     List<SubContractorMaterialVo> queryList(SubContractorMaterialQueryReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料 | ||||||
|  |      * @return 新增分包物料主键id | ||||||
|  |      */ | ||||||
|  |     Long insertByBo(SubContractorMaterialCreateReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料 | ||||||
|  |      * @return 是否修改成功 | ||||||
|  |      */ | ||||||
|  |     Boolean updateByBo(SubContractorMaterialUpdateReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并批量删除分包方物料信息 | ||||||
|  |      * | ||||||
|  |      * @param ids     待删除的主键集合 | ||||||
|  |      * @param isValid 是否进行有效性校验 | ||||||
|  |      * @return 是否删除成功 | ||||||
|  |      */ | ||||||
|  |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料视图对象 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterial 分包方物料对象 | ||||||
|  |      * @return 分包方物料视图对象 | ||||||
|  |      */ | ||||||
|  |     SubContractorMaterialVo getVo(SubContractorMaterial contractorMaterial); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料查询条件封装 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料查询条件 | ||||||
|  |      * @return 分包方物料查询条件封装 | ||||||
|  |      */ | ||||||
|  |     LambdaQueryWrapper<SubContractorMaterial> buildQueryWrapper(SubContractorMaterialQueryReq req); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料分页对象视图 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterialPage 分包方物料分页对象 | ||||||
|  |      * @return 分包方物料分页对象视图 | ||||||
|  |      */ | ||||||
|  |     Page<SubContractorMaterialVo> getVoPage(Page<SubContractorMaterial> contractorMaterialPage); | ||||||
|  | } | ||||||
| @ -1,15 +1,15 @@ | |||||||
| package org.dromara.project.service; | package org.dromara.contractor.service; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import org.dromara.common.mybatis.core.page.PageQuery; | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorCreateReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorQueryReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorQueryReq; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorUpdateReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorUpdateReq; | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -20,7 +20,7 @@ import java.util.List; | |||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| public interface IBusContractorService extends IService<BusContractor> { | public interface ISubContractorService extends IService<SubContractor> { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包单位 |      * 查询分包单位 | ||||||
| @ -28,7 +28,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      * @return 分包单位 |      * @return 分包单位 | ||||||
|      */ |      */ | ||||||
|     BusContractorVo queryById(Long id); |     SubContractorVo queryById(Long id); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分页查询分包单位列表 |      * 分页查询分包单位列表 | ||||||
| @ -37,7 +37,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param pageQuery 分页参数 |      * @param pageQuery 分页参数 | ||||||
|      * @return 分包单位分页列表 |      * @return 分包单位分页列表 | ||||||
|      */ |      */ | ||||||
|     TableDataInfo<BusContractorVo> queryPageList(BusContractorQueryReq req, PageQuery pageQuery); |     TableDataInfo<SubContractorVo> queryPageList(SubContractorQueryReq req, PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询符合条件的分包单位列表 |      * 查询符合条件的分包单位列表 | ||||||
| @ -45,7 +45,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 分包单位列表 |      * @return 分包单位列表 | ||||||
|      */ |      */ | ||||||
|     List<BusContractorVo> queryList(BusContractorQueryReq req); |     List<SubContractorVo> queryList(SubContractorQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增分包单位 |      * 新增分包单位 | ||||||
| @ -53,7 +53,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param req 分包单位 |      * @param req 分包单位 | ||||||
|      * @return 新增id |      * @return 新增id | ||||||
|      */ |      */ | ||||||
|     Long insertByBo(BusContractorCreateReq req); |     Long insertByBo(SubContractorCreateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包单位 |      * 修改分包单位 | ||||||
| @ -61,7 +61,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param req 分包单位 |      * @param req 分包单位 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateByBo(BusContractorUpdateReq req); |     Boolean updateByBo(SubContractorUpdateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 校验并批量删除分包单位信息 |      * 校验并批量删除分包单位信息 | ||||||
| @ -78,7 +78,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param contractor 分包公司对象 |      * @param contractor 分包公司对象 | ||||||
|      * @return 分包公司视图对象 |      * @return 分包公司视图对象 | ||||||
|      */ |      */ | ||||||
|     BusContractorVo getVo(BusContractor contractor); |     SubContractorVo getVo(SubContractor contractor); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取分包公司查询条件封装 |      * 获取分包公司查询条件封装 | ||||||
| @ -86,7 +86,7 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param req 分包公司查询条件 |      * @param req 分包公司查询条件 | ||||||
|      * @return 分包公司查询条件封装 |      * @return 分包公司查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusContractor> buildQueryWrapper(BusContractorQueryReq req); |     LambdaQueryWrapper<SubContractor> buildQueryWrapper(SubContractorQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取分包公司分页对象视图 |      * 获取分包公司分页对象视图 | ||||||
| @ -94,6 +94,6 @@ public interface IBusContractorService extends IService<BusContractor> { | |||||||
|      * @param contractorPage 分包公司分页对象 |      * @param contractorPage 分包公司分页对象 | ||||||
|      * @return 分包公司分页对象视图 |      * @return 分包公司分页对象视图 | ||||||
|      */ |      */ | ||||||
|     Page<BusContractorVo> getVoPage(Page<BusContractor> contractorPage); |     Page<SubContractorVo> getVoPage(Page<SubContractor> contractorPage); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -75,10 +75,10 @@ public interface ISubContractorToolRecordService extends IService<SubContractorT | |||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具记录视图对象 |      * 获取分包方工器具记录视图对象 | ||||||
|      * |      * | ||||||
|      * @param contractorToolEntry 分包方工器具记录对象 |      * @param subContractorToolRecord 分包方工器具记录对象 | ||||||
|      * @return 分包方工器具记录视图对象 |      * @return 分包方工器具记录视图对象 | ||||||
|      */ |      */ | ||||||
|     SubContractorToolRecordVo getVo(SubContractorToolRecord contractorToolEntry); |     SubContractorToolRecordVo getVo(SubContractorToolRecord subContractorToolRecord); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具记录查询条件封装 |      * 获取分包方工器具记录查询条件封装 | ||||||
| @ -91,8 +91,8 @@ public interface ISubContractorToolRecordService extends IService<SubContractorT | |||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具记录分页对象视图 |      * 获取分包方工器具记录分页对象视图 | ||||||
|      * |      * | ||||||
|      * @param contractorToolEntryPage 分包方工器具记录分页对象 |      * @param contractorToolRecordPage 分包方工器具记录分页对象 | ||||||
|      * @return 分包方工器具记录分页对象视图 |      * @return 分包方工器具记录分页对象视图 | ||||||
|      */ |      */ | ||||||
|     Page<SubContractorToolRecordVo> getVoPage(Page<SubContractorToolRecord> contractorToolEntryPage); |     Page<SubContractorToolRecordVo> getVoPage(Page<SubContractorToolRecord> contractorToolRecordPage); | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,15 +1,15 @@ | |||||||
| package org.dromara.project.service; | package org.dromara.contractor.service; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import org.dromara.common.mybatis.core.page.PageQuery; | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
| import org.dromara.project.domain.BusContractorTool; | import org.dromara.contractor.domain.SubContractorTool; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolCreateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolCreateReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolQueryReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolQueryReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolUpdateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolUpdateReq; | ||||||
| import org.dromara.project.domain.vo.contractortool.BusContractorToolVo; | import org.dromara.contractor.domain.vo.contractortool.SubContractorToolVo; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -20,7 +20,7 @@ import java.util.List; | |||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-26 |  * @date 2025-06-26 | ||||||
|  */ |  */ | ||||||
| public interface IBusContractorToolService extends IService<BusContractorTool> { | public interface ISubContractorToolService extends IService<SubContractorTool> { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包方工器具 |      * 查询分包方工器具 | ||||||
| @ -28,7 +28,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      * @return 分包方工器具 |      * @return 分包方工器具 | ||||||
|      */ |      */ | ||||||
|     BusContractorToolVo queryById(Long id); |     SubContractorToolVo queryById(Long id); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分页查询分包方工器具列表 |      * 分页查询分包方工器具列表 | ||||||
| @ -37,7 +37,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param pageQuery 分页参数 |      * @param pageQuery 分页参数 | ||||||
|      * @return 分包方工器具分页列表 |      * @return 分包方工器具分页列表 | ||||||
|      */ |      */ | ||||||
|     TableDataInfo<BusContractorToolVo> queryPageList(BusContractorToolQueryReq req, PageQuery pageQuery); |     TableDataInfo<SubContractorToolVo> queryPageList(SubContractorToolQueryReq req, PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询符合条件的分包方工器具列表 |      * 查询符合条件的分包方工器具列表 | ||||||
| @ -45,7 +45,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 分包方工器具列表 |      * @return 分包方工器具列表 | ||||||
|      */ |      */ | ||||||
|     List<BusContractorToolVo> queryList(BusContractorToolQueryReq req); |     List<SubContractorToolVo> queryList(SubContractorToolQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增分包方工器具 |      * 新增分包方工器具 | ||||||
| @ -53,7 +53,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param req 分包方工器具 |      * @param req 分包方工器具 | ||||||
|      * @return 新增分包工器具主键id |      * @return 新增分包工器具主键id | ||||||
|      */ |      */ | ||||||
|     Long insertByBo(BusContractorToolCreateReq req); |     Long insertByBo(SubContractorToolCreateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包方工器具 |      * 修改分包方工器具 | ||||||
| @ -61,7 +61,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param req 分包方工器具 |      * @param req 分包方工器具 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateByBo(BusContractorToolUpdateReq req); |     Boolean updateByBo(SubContractorToolUpdateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 校验并批量删除分包方工器具信息 |      * 校验并批量删除分包方工器具信息 | ||||||
| @ -78,7 +78,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param contractorTool 分包方工器具对象 |      * @param contractorTool 分包方工器具对象 | ||||||
|      * @return 分包方工器具视图对象 |      * @return 分包方工器具视图对象 | ||||||
|      */ |      */ | ||||||
|     BusContractorToolVo getVo(BusContractorTool contractorTool); |     SubContractorToolVo getVo(SubContractorTool contractorTool); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具查询条件封装 |      * 获取分包方工器具查询条件封装 | ||||||
| @ -86,7 +86,7 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param req 分包方工器具查询条件 |      * @param req 分包方工器具查询条件 | ||||||
|      * @return 分包方工器具查询条件封装 |      * @return 分包方工器具查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusContractorTool> buildQueryWrapper(BusContractorToolQueryReq req); |     LambdaQueryWrapper<SubContractorTool> buildQueryWrapper(SubContractorToolQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具分页对象视图 |      * 获取分包方工器具分页对象视图 | ||||||
| @ -94,5 +94,5 @@ public interface IBusContractorToolService extends IService<BusContractorTool> { | |||||||
|      * @param contractorPage 分包方工器具分页对象 |      * @param contractorPage 分包方工器具分页对象 | ||||||
|      * @return 分包方工器具分页对象视图 |      * @return 分包方工器具分页对象视图 | ||||||
|      */ |      */ | ||||||
|     Page<BusContractorToolVo> getVoPage(Page<BusContractorTool> contractorPage); |     Page<SubContractorToolVo> getVoPage(Page<SubContractorTool> contractorPage); | ||||||
| } | } | ||||||
| @ -1,15 +1,15 @@ | |||||||
| package org.dromara.project.service; | package org.dromara.contractor.service; | ||||||
| 
 | 
 | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import org.dromara.common.mybatis.core.page.PageQuery; | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
| import org.dromara.project.domain.BusSubcontract; | import org.dromara.contractor.domain.SubSubcontract; | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractCreateReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractCreateReq; | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractQueryReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractQueryReq; | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractUpdateReq; | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractUpdateReq; | ||||||
| import org.dromara.project.domain.vo.subcontract.BusSubcontractVo; | import org.dromara.contractor.domain.vo.subcontract.SubSubcontractVo; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -20,7 +20,7 @@ import java.util.List; | |||||||
|  * @author lcj |  * @author lcj | ||||||
|  * @date 2025-06-25 |  * @date 2025-06-25 | ||||||
|  */ |  */ | ||||||
| public interface IBusSubcontractService extends IService<BusSubcontract> { | public interface ISubSubcontractService extends IService<SubSubcontract> { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包合同 |      * 查询分包合同 | ||||||
| @ -28,7 +28,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param id 主键 |      * @param id 主键 | ||||||
|      * @return 分包合同 |      * @return 分包合同 | ||||||
|      */ |      */ | ||||||
|     BusSubcontractVo queryById(Long id); |     SubSubcontractVo queryById(Long id); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分页查询分包合同列表 |      * 分页查询分包合同列表 | ||||||
| @ -37,7 +37,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param pageQuery 分页参数 |      * @param pageQuery 分页参数 | ||||||
|      * @return 分包合同分页列表 |      * @return 分包合同分页列表 | ||||||
|      */ |      */ | ||||||
|     TableDataInfo<BusSubcontractVo> queryPageList(BusSubcontractQueryReq req, PageQuery pageQuery); |     TableDataInfo<SubSubcontractVo> queryPageList(SubSubcontractQueryReq req, PageQuery pageQuery); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询符合条件的分包合同列表 |      * 查询符合条件的分包合同列表 | ||||||
| @ -45,7 +45,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 分包合同列表 |      * @return 分包合同列表 | ||||||
|      */ |      */ | ||||||
|     List<BusSubcontractVo> queryList(BusSubcontractQueryReq req); |     List<SubSubcontractVo> queryList(SubSubcontractQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 新增分包合同 |      * 新增分包合同 | ||||||
| @ -53,7 +53,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param req 分包合同 |      * @param req 分包合同 | ||||||
|      * @return 新增主键id |      * @return 新增主键id | ||||||
|      */ |      */ | ||||||
|     Long insertByBo(BusSubcontractCreateReq req); |     Long insertByBo(SubSubcontractCreateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 修改分包合同 |      * 修改分包合同 | ||||||
| @ -61,7 +61,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param req 分包合同 |      * @param req 分包合同 | ||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     Boolean updateByBo(BusSubcontractUpdateReq req); |     Boolean updateByBo(SubSubcontractUpdateReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 校验并批量删除分包合同信息 |      * 校验并批量删除分包合同信息 | ||||||
| @ -78,7 +78,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param subcontract 分包合同 |      * @param subcontract 分包合同 | ||||||
|      * @return 分包合同视图 |      * @return 分包合同视图 | ||||||
|      */ |      */ | ||||||
|     BusSubcontractVo getVo(BusSubcontract subcontract); |     SubSubcontractVo getVo(SubSubcontract subcontract); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取用户和项目关联对象查询条件封装 |      * 获取用户和项目关联对象查询条件封装 | ||||||
| @ -86,7 +86,7 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param req 查询条件 |      * @param req 查询条件 | ||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     LambdaQueryWrapper<BusSubcontract> buildQueryWrapper(BusSubcontractQueryReq req); |     LambdaQueryWrapper<SubSubcontract> buildQueryWrapper(SubSubcontractQueryReq req); | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 获取分包合同分页视图 |      * 获取分包合同分页视图 | ||||||
| @ -94,6 +94,6 @@ public interface IBusSubcontractService extends IService<BusSubcontract> { | |||||||
|      * @param subcontractPage 分包合同分页 |      * @param subcontractPage 分包合同分页 | ||||||
|      * @return 分包合同分页视图 |      * @return 分包合同分页视图 | ||||||
|      */ |      */ | ||||||
|     Page<BusSubcontractVo> getVoPage(Page<BusSubcontract> subcontractPage); |     Page<SubSubcontractVo> getVoPage(Page<SubSubcontract> subcontractPage); | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.service.impl; | package org.dromara.contractor.service.impl; | ||||||
| 
 | 
 | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.core.io.FileUtil; | import cn.hutool.core.io.FileUtil; | ||||||
| @ -18,20 +18,20 @@ 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.core.utils.file.FileUtils; | import org.dromara.common.core.utils.file.FileUtils; | ||||||
| import org.dromara.common.satoken.utils.LoginHelper; | import org.dromara.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.constant.BusConstructionUserConstant; | import org.dromara.contractor.domain.SubConstructionUserFile; | ||||||
|  | import org.dromara.contractor.constant.SubConstructionUserConstant; | ||||||
| import org.dromara.project.domain.BusConstructionBlacklist; | import org.dromara.project.domain.BusConstructionBlacklist; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.BusConstructionUserFile; |  | ||||||
| import org.dromara.project.domain.BusProject; | import org.dromara.project.domain.BusProject; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileQueryReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileQueryReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileSaveReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileSaveReq; | ||||||
| import org.dromara.project.domain.dto.constructionuserfile.BusConstructionUserFileTemplateReq; | import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileTemplateReq; | ||||||
| import org.dromara.project.domain.vo.constructionuserfile.BusConstructionUserFileVo; | import org.dromara.contractor.domain.vo.constructionuserfile.SubConstructionUserFileVo; | ||||||
| import org.dromara.project.mapper.BusConstructionUserFileMapper; | import org.dromara.contractor.mapper.SubConstructionUserFileMapper; | ||||||
| import org.dromara.project.service.IBusConstructionBlacklistService; | import org.dromara.project.service.IBusConstructionBlacklistService; | ||||||
| import org.dromara.project.service.IBusConstructionUserFileService; | import org.dromara.contractor.service.ISubConstructionUserFileService; | ||||||
| import org.dromara.project.service.IBusConstructionUserService; | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.dromara.system.domain.vo.SysDictDataVo; | import org.dromara.system.domain.vo.SysDictDataVo; | ||||||
| import org.dromara.system.domain.vo.SysOssVo; | import org.dromara.system.domain.vo.SysOssVo; | ||||||
| @ -62,14 +62,14 @@ import java.util.zip.ZipOutputStream; | |||||||
|  */ |  */ | ||||||
| @Slf4j | @Slf4j | ||||||
| @Service | @Service | ||||||
| public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstructionUserFileMapper, BusConstructionUserFile> | public class SubConstructionUserFileServiceImpl extends ServiceImpl<SubConstructionUserFileMapper, SubConstructionUserFile> | ||||||
|     implements IBusConstructionUserFileService { |     implements ISubConstructionUserFileService { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserService constructionUserService; |     private ISubConstructionUserService constructionUserService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private ISysDictTypeService dictTypeService; |     private ISysDictTypeService dictTypeService; | ||||||
| @ -87,7 +87,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      * @return 施工人员文件存储 |      * @return 施工人员文件存储 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusConstructionUserFileVo queryById(Long id) { |     public SubConstructionUserFileVo queryById(Long id) { | ||||||
|         return baseMapper.selectVoById(id); |         return baseMapper.selectVoById(id); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -98,8 +98,8 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      * @return 施工人员文件存储列表 |      * @return 施工人员文件存储列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusConstructionUserFileVo> queryList(BusConstructionUserFileQueryReq req) { |     public List<SubConstructionUserFileVo> queryList(SubConstructionUserFileQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusConstructionUserFile> lqw = buildQueryWrapper(req); |         LambdaQueryWrapper<SubConstructionUserFile> lqw = buildQueryWrapper(req); | ||||||
|         return baseMapper.selectVoList(lqw); |         return baseMapper.selectVoList(lqw); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -110,7 +110,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      * @param response 响应对象 |      * @param response 响应对象 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public void downloadFileTemplate(BusConstructionUserFileTemplateReq req, HttpServletResponse response) { |     public void downloadFileTemplate(SubConstructionUserFileTemplateReq req, HttpServletResponse response) { | ||||||
|         // 1. 校验项目是否存在 |         // 1. 校验项目是否存在 | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
|         BusProject project = projectService.getById(projectId); |         BusProject project = projectService.getById(projectId); | ||||||
| @ -118,7 +118,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|             throw new ServiceException("项目不存在", HttpStatus.BAD_REQUEST); |             throw new ServiceException("项目不存在", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         // 2. 查询施工人员列表 |         // 2. 查询施工人员列表 | ||||||
|         List<BusConstructionUser> constructionUserList = constructionUserService.list(this.buildTemplateQueryWrapper(req)); |         List<SubConstructionUser> constructionUserList = constructionUserService.list(this.buildTemplateQueryWrapper(req)); | ||||||
|         // 3. 根目录名称 |         // 3. 根目录名称 | ||||||
|         String randomString = project.getId() + "_" + RandomUtil.randomString(8); |         String randomString = project.getId() + "_" + RandomUtil.randomString(8); | ||||||
|         String rootFolder = project.getShortName() + "_" + randomString + "/"; |         String rootFolder = project.getShortName() + "_" + randomString + "/"; | ||||||
| @ -131,13 +131,13 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|             zipOut.putNextEntry(new ZipEntry(rootFolder)); |             zipOut.putNextEntry(new ZipEntry(rootFolder)); | ||||||
|             zipOut.closeEntry(); |             zipOut.closeEntry(); | ||||||
|             // 7. 对每个人,创建其文件夹,再在其中创建子文件夹(如“三级安全教育”、“体检报告”...)及文件 |             // 7. 对每个人,创建其文件夹,再在其中创建子文件夹(如“三级安全教育”、“体检报告”...)及文件 | ||||||
|             for (BusConstructionUser constructionUser : constructionUserList) { |             for (SubConstructionUser constructionUser : constructionUserList) { | ||||||
|                 String personFolder = rootFolder + constructionUser.getUserName() + "-" + constructionUser.getId() + "/"; |                 String personFolder = rootFolder + constructionUser.getUserName() + "-" + constructionUser.getId() + "/"; | ||||||
|                 // 7.1. 写入个人文件夹条目 |                 // 7.1. 写入个人文件夹条目 | ||||||
|                 zipOut.putNextEntry(new ZipEntry(personFolder)); |                 zipOut.putNextEntry(new ZipEntry(personFolder)); | ||||||
|                 zipOut.closeEntry(); |                 zipOut.closeEntry(); | ||||||
|                 // 7.2. 在个人文件夹下写几个子文件夹 |                 // 7.2. 在个人文件夹下写几个子文件夹 | ||||||
|                 List<SysDictDataVo> dictDataList = dictTypeService.selectDictDataByType(BusConstructionUserConstant.USER_FILE_TYPE); |                 List<SysDictDataVo> dictDataList = dictTypeService.selectDictDataByType(SubConstructionUserConstant.USER_FILE_TYPE); | ||||||
|                 for (SysDictDataVo dataVo : dictDataList) { |                 for (SysDictDataVo dataVo : dictDataList) { | ||||||
|                     String subFolderPath = personFolder + dataVo.getDictValue() + "_" + dataVo.getDictLabel() + "/"; |                     String subFolderPath = personFolder + dataVo.getDictValue() + "_" + dataVo.getDictLabel() + "/"; | ||||||
|                     zipOut.putNextEntry(new ZipEntry(subFolderPath)); |                     zipOut.putNextEntry(new ZipEntry(subFolderPath)); | ||||||
| @ -183,7 +183,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|         String basePath = "unzip_path"; |         String basePath = "unzip_path"; | ||||||
|         String destDirPath = basePath + "/" + DateUtils.getDate() + "/" + projectId + "/" + randomStr; |         String destDirPath = basePath + "/" + DateUtils.getDate() + "/" + projectId + "/" + randomStr; | ||||||
|         // 构建需要修改的对象 |         // 构建需要修改的对象 | ||||||
|         List<BusConstructionUserFile> constructionUserFileList = new ArrayList<>(); |         List<SubConstructionUserFile> constructionUserFileList = new ArrayList<>(); | ||||||
|         try { |         try { | ||||||
|             // 2. 创建临时文件 |             // 2. 创建临时文件 | ||||||
|             tempZipFile = File.createTempFile(tempZipFilePath, null); |             tempZipFile = File.createTempFile(tempZipFilePath, null); | ||||||
| @ -230,7 +230,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|                                             .collect(Collectors.joining(",")); |                                             .collect(Collectors.joining(",")); | ||||||
|                                     } |                                     } | ||||||
|                                     // 8. 创建 BusConstructionUserFile 对象 |                                     // 8. 创建 BusConstructionUserFile 对象 | ||||||
|                                     BusConstructionUserFile constructionUserFile = new BusConstructionUserFile(); |                                     SubConstructionUserFile constructionUserFile = new SubConstructionUserFile(); | ||||||
|                                     constructionUserFile.setUserId(userId); |                                     constructionUserFile.setUserId(userId); | ||||||
|                                     constructionUserFile.setFileType(fileType); |                                     constructionUserFile.setFileType(fileType); | ||||||
|                                     constructionUserFile.setPath(fileIdStr); |                                     constructionUserFile.setPath(fileIdStr); | ||||||
| @ -264,16 +264,16 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|         // 9. 判断是否已经存在 |         // 9. 判断是否已经存在 | ||||||
|         List<Long> userIdList = constructionUserFileList.stream().map(BusConstructionUserFile::getUserId).toList(); |         List<Long> userIdList = constructionUserFileList.stream().map(SubConstructionUserFile::getUserId).toList(); | ||||||
|         List<BusConstructionUserFile> oldConstructionUserFileList = this.lambdaQuery() |         List<SubConstructionUserFile> oldConstructionUserFileList = this.lambdaQuery() | ||||||
|             .in(BusConstructionUserFile::getUserId, userIdList).list(); |             .in(SubConstructionUserFile::getUserId, userIdList).list(); | ||||||
|         // 10. 如果存在,则删除数据库对应记录和文件 |         // 10. 如果存在,则删除数据库对应记录和文件 | ||||||
|         if (CollUtil.isNotEmpty(oldConstructionUserFileList)) { |         if (CollUtil.isNotEmpty(oldConstructionUserFileList)) { | ||||||
|             // 待删除id |             // 待删除id | ||||||
|             List<Long> deleteIds = oldConstructionUserFileList.stream().map(BusConstructionUserFile::getId).toList(); |             List<Long> deleteIds = oldConstructionUserFileList.stream().map(SubConstructionUserFile::getId).toList(); | ||||||
|             // 待删除对象存储id |             // 待删除对象存储id | ||||||
|             List<Long> deleteOssIds = new ArrayList<>(); |             List<Long> deleteOssIds = new ArrayList<>(); | ||||||
|             for (BusConstructionUserFile constructionUserFile : oldConstructionUserFileList) { |             for (SubConstructionUserFile constructionUserFile : oldConstructionUserFileList) { | ||||||
|                 String path = constructionUserFile.getPath(); |                 String path = constructionUserFile.getPath(); | ||||||
|                 if (StrUtil.isNotBlank(path)) { |                 if (StrUtil.isNotBlank(path)) { | ||||||
|                     String[] ossIds = path.split(","); |                     String[] ossIds = path.split(","); | ||||||
| @ -307,16 +307,16 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean saveFileList(BusConstructionUserFileSaveReq req) { |     public Boolean saveFileList(SubConstructionUserFileSaveReq req) { | ||||||
|         // 1. 参数校验 |         // 1. 参数校验 | ||||||
|         // 判断参数是否为空 |         // 判断参数是否为空 | ||||||
|         Long userId = req.getUserId(); |         Long userId = req.getUserId(); | ||||||
|         List<BusConstructionUserFileReq> fileList = req.getFileList(); |         List<SubConstructionUserFileReq> fileList = req.getFileList(); | ||||||
|         if (userId == null || CollUtil.isEmpty(fileList)) { |         if (userId == null || CollUtil.isEmpty(fileList)) { | ||||||
|             throw new ServiceException("施工人员文件存储参数错误", HttpStatus.BAD_REQUEST); |             throw new ServiceException("施工人员文件存储参数错误", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         // 校验修改用户是否存在 |         // 校验修改用户是否存在 | ||||||
|         BusConstructionUser constructionUser = constructionUserService.getById(userId); |         SubConstructionUser constructionUser = constructionUserService.getById(userId); | ||||||
|         if (constructionUser == null) { |         if (constructionUser == null) { | ||||||
|             throw new ServiceException("施工人员不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("施工人员不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -325,22 +325,22 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|         Long loginUser = LoginHelper.getUserId(); |         Long loginUser = LoginHelper.getUserId(); | ||||||
|         projectService.validAuth(projectId, loginUser); |         projectService.validAuth(projectId, loginUser); | ||||||
|         // 2. 查询当前用户的所有文件记录(一次性查询,避免多次访问数据库) |         // 2. 查询当前用户的所有文件记录(一次性查询,避免多次访问数据库) | ||||||
|         LambdaQueryWrapper<BusConstructionUserFile> lqw = Wrappers.lambdaQuery(BusConstructionUserFile.class) |         LambdaQueryWrapper<SubConstructionUserFile> lqw = Wrappers.lambdaQuery(SubConstructionUserFile.class) | ||||||
|             .eq(BusConstructionUserFile::getUserId, userId); |             .eq(SubConstructionUserFile::getUserId, userId); | ||||||
|         List<BusConstructionUserFile> constructionUserFileList = this.list(lqw); |         List<SubConstructionUserFile> constructionUserFileList = this.list(lqw); | ||||||
|         // 3. 构建 Map<fileType, BusConstructionUserFile> 方便查找 |         // 3. 构建 Map<fileType, BusConstructionUserFile> 方便查找 | ||||||
|         Map<String, BusConstructionUserFile> existingFileMap = constructionUserFileList.stream() |         Map<String, SubConstructionUserFile> existingFileMap = constructionUserFileList.stream() | ||||||
|             .collect(Collectors.toMap(BusConstructionUserFile::getFileType, Function.identity())); |             .collect(Collectors.toMap(SubConstructionUserFile::getFileType, Function.identity())); | ||||||
|         // 4. 处理新增或更新的数据 |         // 4. 处理新增或更新的数据 | ||||||
|         List<BusConstructionUserFile> saveOrUpdateList = new ArrayList<>(); |         List<SubConstructionUserFile> saveOrUpdateList = new ArrayList<>(); | ||||||
|         // 处理删除的数据 |         // 处理删除的数据 | ||||||
|         List<Long> deleteList = new ArrayList<>(); |         List<Long> deleteList = new ArrayList<>(); | ||||||
|         for (BusConstructionUserFileReq fileReq : fileList) { |         for (SubConstructionUserFileReq fileReq : fileList) { | ||||||
|             String fileType = fileReq.getFileType(); |             String fileType = fileReq.getFileType(); | ||||||
|             String fileId = fileReq.getFileId(); |             String fileId = fileReq.getFileId(); | ||||||
|             if (existingFileMap.containsKey(fileType)) { |             if (existingFileMap.containsKey(fileType)) { | ||||||
|                 // 如果存在,则更新 |                 // 如果存在,则更新 | ||||||
|                 BusConstructionUserFile existingFile = existingFileMap.get(fileType); |                 SubConstructionUserFile existingFile = existingFileMap.get(fileType); | ||||||
|                 // 如果文件id相同,则不更新 |                 // 如果文件id相同,则不更新 | ||||||
|                 if (StringUtils.equals(existingFile.getPath(), fileId)) { |                 if (StringUtils.equals(existingFile.getPath(), fileId)) { | ||||||
|                     continue; |                     continue; | ||||||
| @ -355,7 +355,7 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|             } else { |             } else { | ||||||
|                 // 如果不存在,且存在文件id则更新 |                 // 如果不存在,且存在文件id则更新 | ||||||
|                 if (StringUtils.isNotBlank(fileId)) { |                 if (StringUtils.isNotBlank(fileId)) { | ||||||
|                     BusConstructionUserFile newFile = new BusConstructionUserFile(); |                     SubConstructionUserFile newFile = new SubConstructionUserFile(); | ||||||
|                     newFile.setUserId(userId); |                     newFile.setUserId(userId); | ||||||
|                     newFile.setFileType(fileType); |                     newFile.setFileType(fileType); | ||||||
|                     newFile.setPath(fileId); |                     newFile.setPath(fileId); | ||||||
| @ -387,8 +387,8 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusConstructionUserFile> buildQueryWrapper(BusConstructionUserFileQueryReq req) { |     public LambdaQueryWrapper<SubConstructionUserFile> buildQueryWrapper(SubConstructionUserFileQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusConstructionUserFile> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubConstructionUserFile> lqw = new LambdaQueryWrapper<>(); | ||||||
|         if (req == null) { |         if (req == null) { | ||||||
|             return lqw; |             return lqw; | ||||||
|         } |         } | ||||||
| @ -397,11 +397,11 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|         String fileType = req.getFileType(); |         String fileType = req.getFileType(); | ||||||
|         String remark = req.getRemark(); |         String remark = req.getRemark(); | ||||||
|         // 模糊查询 |         // 模糊查询 | ||||||
|         lqw.like(StringUtils.isNotBlank(remark), BusConstructionUserFile::getRemark, remark); |         lqw.like(StringUtils.isNotBlank(remark), SubConstructionUserFile::getRemark, remark); | ||||||
|         // 精确查询 |         // 精确查询 | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(id), BusConstructionUserFile::getId, id); |         lqw.eq(ObjectUtils.isNotEmpty(id), SubConstructionUserFile::getId, id); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(userId), BusConstructionUserFile::getUserId, userId); |         lqw.eq(ObjectUtils.isNotEmpty(userId), SubConstructionUserFile::getUserId, userId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(fileType), BusConstructionUserFile::getFileType, fileType); |         lqw.eq(StringUtils.isNotBlank(fileType), SubConstructionUserFile::getFileType, fileType); | ||||||
|         return lqw; |         return lqw; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -412,8 +412,8 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusConstructionUser> buildTemplateQueryWrapper(BusConstructionUserFileTemplateReq req) { |     public LambdaQueryWrapper<SubConstructionUser> buildTemplateQueryWrapper(SubConstructionUserFileTemplateReq req) { | ||||||
|         LambdaQueryWrapper<BusConstructionUser> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubConstructionUser> lqw = new LambdaQueryWrapper<>(); | ||||||
|         if (req == null) { |         if (req == null) { | ||||||
|             return lqw; |             return lqw; | ||||||
|         } |         } | ||||||
| @ -425,22 +425,22 @@ public class BusConstructionUserFileServiceImpl extends ServiceImpl<BusConstruct | |||||||
|         String clock = req.getClock(); |         String clock = req.getClock(); | ||||||
|         List<Long> userIdList = req.getUserIdList(); |         List<Long> userIdList = req.getUserIdList(); | ||||||
|         // 模糊查询 |         // 模糊查询 | ||||||
|         lqw.like(StringUtils.isNotBlank(userName), BusConstructionUser::getUserName, userName); |         lqw.like(StringUtils.isNotBlank(userName), SubConstructionUser::getUserName, userName); | ||||||
|         // 精确查询 |         // 精确查询 | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusConstructionUser::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubConstructionUser::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorId), BusConstructionUser::getContractorId, contractorId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubConstructionUser::getContractorId, contractorId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(teamId), BusConstructionUser::getTeamId, teamId); |         lqw.eq(ObjectUtils.isNotEmpty(teamId), SubConstructionUser::getTeamId, teamId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(typeOfWork), BusConstructionUser::getTypeOfWork, typeOfWork); |         lqw.eq(StringUtils.isNotBlank(typeOfWork), SubConstructionUser::getTypeOfWork, typeOfWork); | ||||||
|         lqw.eq(StringUtils.isNotBlank(clock), BusConstructionUser::getClock, clock); |         lqw.eq(StringUtils.isNotBlank(clock), SubConstructionUser::getClock, clock); | ||||||
|         if (CollUtil.isNotEmpty(userIdList)) { |         if (CollUtil.isNotEmpty(userIdList)) { | ||||||
|             lqw.in(BusConstructionUser::getId, userIdList); |             lqw.in(SubConstructionUser::getId, userIdList); | ||||||
|         } |         } | ||||||
|         // 根据项目id获取黑名单施工人员 |         // 根据项目id获取黑名单施工人员 | ||||||
|         List<Long> blacklistUserIdList = constructionBlacklistService.lambdaQuery() |         List<Long> blacklistUserIdList = constructionBlacklistService.lambdaQuery() | ||||||
|             .eq(BusConstructionBlacklist::getProjectId, projectId) |             .eq(BusConstructionBlacklist::getProjectId, projectId) | ||||||
|             .list().stream().map(BusConstructionBlacklist::getUserId).toList(); |             .list().stream().map(BusConstructionBlacklist::getUserId).toList(); | ||||||
|         if (CollUtil.isNotEmpty(blacklistUserIdList)) { |         if (CollUtil.isNotEmpty(blacklistUserIdList)) { | ||||||
|             lqw.notIn(BusConstructionUser::getId, blacklistUserIdList); |             lqw.notIn(SubConstructionUser::getId, blacklistUserIdList); | ||||||
|         } |         } | ||||||
|         return lqw; |         return lqw; | ||||||
|     } |     } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.service.impl; | package org.dromara.contractor.service.impl; | ||||||
| 
 | 
 | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.core.util.IdcardUtil; | import cn.hutool.core.util.IdcardUtil; | ||||||
| @ -18,22 +18,28 @@ 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.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.constant.BusConstructionUserConstant; | import org.dromara.common.utils.IdCardEncryptorUtil; | ||||||
|  | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
|  | import org.dromara.contractor.domain.SubConstructionUserFile; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.dto.constructionuser.*; | ||||||
|  | import org.dromara.contractor.domain.vo.constructionuser.*; | ||||||
|  | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
|  | import org.dromara.contractor.service.ISubConstructionUserFileService; | ||||||
|  | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
|  | import org.dromara.contractor.constant.SubConstructionUserConstant; | ||||||
| import org.dromara.project.domain.*; | import org.dromara.project.domain.*; | ||||||
| import org.dromara.project.domain.dto.constructionuser.*; |  | ||||||
| import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum; | import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum; | ||||||
| import org.dromara.project.domain.enums.BusAttendanceCommuterEnum; | import org.dromara.project.domain.enums.BusAttendanceCommuterEnum; | ||||||
| import org.dromara.project.domain.enums.BusConstructionUserAttendanceStatusEnum; | import org.dromara.project.domain.enums.BusConstructionUserAttendanceStatusEnum; | ||||||
| import org.dromara.project.domain.enums.BusConstructionUserFileStatusEnum; | import org.dromara.contractor.domain.enums.SubConstructionUserFileStatusEnum; | ||||||
| import org.dromara.project.domain.exportvo.BusConstructionUserExportVo; | import org.dromara.contractor.domain.exportvo.BusConstructionUserExportVo; | ||||||
| import org.dromara.project.domain.vo.constructionuser.*; | import org.dromara.contractor.mapper.SubConstructionUserMapper; | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; |  | ||||||
| import org.dromara.project.mapper.BusConstructionUserMapper; |  | ||||||
| import org.dromara.project.service.*; | import org.dromara.project.service.*; | ||||||
| import org.dromara.system.domain.vo.SysOssVo; | import org.dromara.system.domain.vo.SysOssVo; | ||||||
| import org.dromara.system.service.ISysDictTypeService; | import org.dromara.system.service.ISysDictTypeService; | ||||||
| import org.dromara.system.service.ISysOssService; | import org.dromara.system.service.ISysOssService; | ||||||
| import org.dromara.common.utils.IdCardEncryptorUtil; |  | ||||||
| import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||||
| import org.springframework.context.annotation.Lazy; | import org.springframework.context.annotation.Lazy; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @ -50,15 +56,15 @@ import java.util.stream.Collectors; | |||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionUserMapper, BusConstructionUser> | public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionUserMapper, SubConstructionUser> | ||||||
|     implements IBusConstructionUserService { |     implements ISubConstructionUserService { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorService contractorService; |     private ISubContractorService contractorService; | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
| @ -77,7 +83,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserFileService constructionUserFileService; |     private ISubConstructionUserFileService constructionUserFileService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private ISysDictTypeService dictTypeService; |     private ISysDictTypeService dictTypeService; | ||||||
| @ -96,8 +102,8 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员 |      * @return 施工人员 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusConstructionUserVo queryById(Long id) { |     public SubConstructionUserVo queryById(Long id) { | ||||||
|         BusConstructionUser constructionUser = this.getById(id); |         SubConstructionUser constructionUser = this.getById(id); | ||||||
|         if (constructionUser == null) { |         if (constructionUser == null) { | ||||||
|             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -112,9 +118,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员分页列表 |      * @return 施工人员分页列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public TableDataInfo<BusConstructionUserVo> queryPageList(BusConstructionUserQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubConstructionUserVo> queryPageList(SubConstructionUserQueryReq req, PageQuery pageQuery) { | ||||||
|         // 查询数据库 |         // 查询数据库 | ||||||
|         Page<BusConstructionUser> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); |         Page<SubConstructionUser> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); | ||||||
|         return TableDataInfo.build(getVoPage(result)); |         return TableDataInfo.build(getVoPage(result)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -126,7 +132,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员考勤分页列表 |      * @return 施工人员考勤分页列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public TableDataInfo<BusConstructionUserAttendanceTotalVo> queryPageAttendanceList(BusConstructionUserAttendanceQueryReq req, |     public TableDataInfo<SubConstructionUserAttendanceTotalVo> queryPageAttendanceList(SubConstructionUserAttendanceQueryReq req, | ||||||
|                                                                                        PageQuery pageQuery) { |                                                                                        PageQuery pageQuery) { | ||||||
|         return TableDataInfo.build(getAttendanceTotalVoPage(req, pageQuery)); |         return TableDataInfo.build(getAttendanceTotalVoPage(req, pageQuery)); | ||||||
|     } |     } | ||||||
| @ -138,7 +144,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员考勤月列表 |      * @return 施工人员考勤月列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusConstructionUserAttendanceMonthVo> queryAttendanceMonthList(BusConstructionUserAttendanceMonthReq req) { |     public List<SubConstructionUserAttendanceMonthVo> queryAttendanceMonthList(SubConstructionUserAttendanceMonthReq req) { | ||||||
|         Long id = req.getUserId(); |         Long id = req.getUserId(); | ||||||
|         String clockMonth = req.getClockMonth(); |         String clockMonth = req.getClockMonth(); | ||||||
|         if (this.getById(id) == null) { |         if (this.getById(id) == null) { | ||||||
| @ -170,13 +176,13 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         Map<Long, List<SysOssVo>> ossIdUrlMap = ossService.listByIds(picIds) |         Map<Long, List<SysOssVo>> ossIdUrlMap = ossService.listByIds(picIds) | ||||||
|             .stream().collect(Collectors.groupingBy(SysOssVo::getOssId)); |             .stream().collect(Collectors.groupingBy(SysOssVo::getOssId)); | ||||||
|         // 遍历每天,计算考勤状态 |         // 遍历每天,计算考勤状态 | ||||||
|         List<BusConstructionUserAttendanceMonthVo> respList = new ArrayList<>(); |         List<SubConstructionUserAttendanceMonthVo> respList = new ArrayList<>(); | ||||||
|         dateListMap.forEach((date, attendanceList) -> { |         dateListMap.forEach((date, attendanceList) -> { | ||||||
|             BusConstructionUserAttendanceMonthVo resp = new BusConstructionUserAttendanceMonthVo(); |             SubConstructionUserAttendanceMonthVo resp = new SubConstructionUserAttendanceMonthVo(); | ||||||
|             resp.setId(id); |             resp.setId(id); | ||||||
|             resp.setClockDate(date); |             resp.setClockDate(date); | ||||||
|             // 获取考勤记录 |             // 获取考勤记录 | ||||||
|             BusConstructionUserAttendanceByDay day = BusConstructionUserAttendanceByDay.build(attendanceList); |             SubConstructionUserAttendanceByDay day = SubConstructionUserAttendanceByDay.build(attendanceList); | ||||||
|             // 填充打卡图片url |             // 填充打卡图片url | ||||||
|             if (day != null) { |             if (day != null) { | ||||||
|                 if (day.getUpClockPicId() != null) { |                 if (day.getUpClockPicId() != null) { | ||||||
| @ -217,7 +223,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             respList.add(resp); |             respList.add(resp); | ||||||
|         }); |         }); | ||||||
|         // 按打卡日期正序排列 |         // 按打卡日期正序排列 | ||||||
|         respList.sort(Comparator.comparing(BusConstructionUserAttendanceMonthVo::getClockDate)); |         respList.sort(Comparator.comparing(SubConstructionUserAttendanceMonthVo::getClockDate)); | ||||||
|         return respList; |         return respList; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -228,11 +234,11 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员列表 |      * @return 施工人员列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusConstructionUserExportVo> queryList(BusConstructionUserQueryReq req) { |     public List<BusConstructionUserExportVo> queryList(SubConstructionUserQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusConstructionUser> lqw = this.buildQueryWrapper(req); |         LambdaQueryWrapper<SubConstructionUser> lqw = this.buildQueryWrapper(req); | ||||||
|         List<BusConstructionUserVo> constructionUserVoList = this.list(lqw).stream().map(this::getVo).toList(); |         List<SubConstructionUserVo> constructionUserVoList = this.list(lqw).stream().map(this::getVo).toList(); | ||||||
|         // 关联项目信息 |         // 关联项目信息 | ||||||
|         Set<Long> projectIdList = constructionUserVoList.stream().map(BusConstructionUserVo::getProjectId) |         Set<Long> projectIdList = constructionUserVoList.stream().map(SubConstructionUserVo::getProjectId) | ||||||
|             .collect(Collectors.toSet()); |             .collect(Collectors.toSet()); | ||||||
|         Map<Long, List<BusProject>> projectIdProjectMap = projectService.listByIds(projectIdList).stream() |         Map<Long, List<BusProject>> projectIdProjectMap = projectService.listByIds(projectIdList).stream() | ||||||
|             .collect(Collectors.groupingBy(BusProject::getId)); |             .collect(Collectors.groupingBy(BusProject::getId)); | ||||||
| @ -263,7 +269,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员大屏数据 |      * @return 施工人员大屏数据 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusConstructionUserGisVo getGisData(BusConstructionUserGisReq req) { |     public SubConstructionUserGisVo getGisData(SubConstructionUserGisReq req) { | ||||||
|         // 参数校验 |         // 参数校验 | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
|         BusProject project = projectService.getById(projectId); |         BusProject project = projectService.getById(projectId); | ||||||
| @ -271,10 +277,10 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             throw new ServiceException("项目信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("项目信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         // 获取大屏数据 |         // 获取大屏数据 | ||||||
|         BusConstructionUserGisVo resp = new BusConstructionUserGisVo(); |         SubConstructionUserGisVo resp = new SubConstructionUserGisVo(); | ||||||
|         // 获取施工人员总数 |         // 获取施工人员总数 | ||||||
|         Long count = this.lambdaQuery() |         Long count = this.lambdaQuery() | ||||||
|             .eq(BusConstructionUser::getProjectId, projectId).count(); |             .eq(SubConstructionUser::getProjectId, projectId).count(); | ||||||
|         resp.setPeopleCount(count); |         resp.setPeopleCount(count); | ||||||
|         // 获取考勤数据 |         // 获取考勤数据 | ||||||
|         List<Long> attendancePeopleList = attendanceService.listAttendancePeopleByProjectId(projectId); |         List<Long> attendancePeopleList = attendanceService.listAttendancePeopleByProjectId(projectId); | ||||||
| @ -291,9 +297,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否新增成功 |      * @return 是否新增成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Long insertByBo(BusConstructionUserCreateReq req) { |     public Long insertByBo(SubConstructionUserCreateReq req) { | ||||||
|         // 将实体类和 DTO 进行转换 |         // 将实体类和 DTO 进行转换 | ||||||
|         BusConstructionUser constructionUser = new BusConstructionUser(); |         SubConstructionUser constructionUser = new SubConstructionUser(); | ||||||
|         BeanUtils.copyProperties(req, constructionUser); |         BeanUtils.copyProperties(req, constructionUser); | ||||||
|         // 数据校验 |         // 数据校验 | ||||||
|         validEntityBeforeSave(constructionUser, true); |         validEntityBeforeSave(constructionUser, true); | ||||||
| @ -317,14 +323,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateByBo(BusConstructionUserUpdateReq req) { |     public Boolean updateByBo(SubConstructionUserUpdateReq req) { | ||||||
|         // 将实体类和 DTO 进行转换 |         // 将实体类和 DTO 进行转换 | ||||||
|         BusConstructionUser constructionUser = new BusConstructionUser(); |         SubConstructionUser constructionUser = new SubConstructionUser(); | ||||||
|         BeanUtils.copyProperties(req, constructionUser); |         BeanUtils.copyProperties(req, constructionUser); | ||||||
|         // 数据校验 |         // 数据校验 | ||||||
|         validEntityBeforeSave(constructionUser, false); |         validEntityBeforeSave(constructionUser, false); | ||||||
|         // 判断是否存在 |         // 判断是否存在 | ||||||
|         BusConstructionUser oldConstructionUser = this.getById(constructionUser.getId()); |         SubConstructionUser oldConstructionUser = this.getById(constructionUser.getId()); | ||||||
|         if (oldConstructionUser == null) { |         if (oldConstructionUser == null) { | ||||||
|             throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -347,18 +353,18 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateSalary(BusConstructionUserUpdateSalaryReq req) { |     public Boolean updateSalary(SubConstructionUserUpdateSalaryReq req) { | ||||||
|         Long id = req.getId(); |         Long id = req.getId(); | ||||||
|         Long salary = req.getSalary(); |         Long salary = req.getSalary(); | ||||||
|         // 判断对应施工人员是否存在 |         // 判断对应施工人员是否存在 | ||||||
|         BusConstructionUser oldConstructionUser = this.getById(id); |         SubConstructionUser oldConstructionUser = this.getById(id); | ||||||
|         if (oldConstructionUser == null) { |         if (oldConstructionUser == null) { | ||||||
|             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         // 判断当前操作用户是否有权限 |         // 判断当前操作用户是否有权限 | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         projectService.validAuth(oldConstructionUser.getProjectId(), userId); |         projectService.validAuth(oldConstructionUser.getProjectId(), userId); | ||||||
|         BusConstructionUser constructionUser = new BusConstructionUser(); |         SubConstructionUser constructionUser = new SubConstructionUser(); | ||||||
|         constructionUser.setId(id); |         constructionUser.setId(id); | ||||||
|         // 修改薪水 |         // 修改薪水 | ||||||
|         constructionUser.setSalary(Objects.requireNonNullElse(salary, 0L)); |         constructionUser.setSalary(Objects.requireNonNullElse(salary, 0L)); | ||||||
| @ -373,11 +379,11 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateClock(BusConstructionUserUpdateClockReq req) { |     public Boolean updateClock(SubConstructionUserUpdateClockReq req) { | ||||||
|         Long id = req.getId(); |         Long id = req.getId(); | ||||||
|         String clock = req.getClock(); |         String clock = req.getClock(); | ||||||
|         // 判断对应施工人员是否存在 |         // 判断对应施工人员是否存在 | ||||||
|         BusConstructionUser oldConstructionUser = this.getById(id); |         SubConstructionUser oldConstructionUser = this.getById(id); | ||||||
|         if (oldConstructionUser == null) { |         if (oldConstructionUser == null) { | ||||||
|             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -387,7 +393,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         if (clock.equals(oldConstructionUser.getClock())) { |         if (clock.equals(oldConstructionUser.getClock())) { | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|         BusConstructionUser constructionUser = new BusConstructionUser(); |         SubConstructionUser constructionUser = new SubConstructionUser(); | ||||||
|         constructionUser.setId(id); |         constructionUser.setId(id); | ||||||
|         constructionUser.setClock(clock); |         constructionUser.setClock(clock); | ||||||
|         return this.updateById(constructionUser); |         return this.updateById(constructionUser); | ||||||
| @ -400,10 +406,10 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean changeUserProject(BusConstructionUserChangeProjectReq req) { |     public Boolean changeUserProject(SubConstructionUserChangeProjectReq req) { | ||||||
|         Long id = req.getId(); |         Long id = req.getId(); | ||||||
|         // 判断对应施工人员是否存在 |         // 判断对应施工人员是否存在 | ||||||
|         BusConstructionUser constructionUser = this.getById(id); |         SubConstructionUser constructionUser = this.getById(id); | ||||||
|         if (constructionUser == null) { |         if (constructionUser == null) { | ||||||
|             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -422,14 +428,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         if (req.getContractorId().equals(constructionUser.getContractorId())) { |         if (req.getContractorId().equals(constructionUser.getContractorId())) { | ||||||
|             throw new ServiceException("已在当前分包公司下,请勿重复修改", HttpStatus.BAD_REQUEST); |             throw new ServiceException("已在当前分包公司下,请勿重复修改", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         BusConstructionUser validUser = new BusConstructionUser(); |         SubConstructionUser validUser = new SubConstructionUser(); | ||||||
|         BeanUtils.copyProperties(req, validUser); |         BeanUtils.copyProperties(req, validUser); | ||||||
|         this.validEntityBeforeSave(validUser, false); |         this.validEntityBeforeSave(validUser, false); | ||||||
|         // 操作数据库,更新数据 |         // 操作数据库,更新数据 | ||||||
|         LambdaUpdateWrapper<BusConstructionUser> lambdaUpdate = Wrappers.lambdaUpdate(BusConstructionUser.class) |         LambdaUpdateWrapper<SubConstructionUser> lambdaUpdate = Wrappers.lambdaUpdate(SubConstructionUser.class) | ||||||
|             .eq(BusConstructionUser::getId, id) |             .eq(SubConstructionUser::getId, id) | ||||||
|             .set(BusConstructionUser::getProjectId, req.getProjectId()) |             .set(SubConstructionUser::getProjectId, req.getProjectId()) | ||||||
|             .set(BusConstructionUser::getContractorId, req.getContractorId()); |             .set(SubConstructionUser::getContractorId, req.getContractorId()); | ||||||
|         return this.update(lambdaUpdate); |         return this.update(lambdaUpdate); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -441,14 +447,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean batchUpdateStatus(BusConstructionUserBatchUpdateStatusReq req) { |     public Boolean batchUpdateStatus(SubConstructionUserBatchUpdateStatusReq req) { | ||||||
|         List<Long> idList = req.getIdList(); |         List<Long> idList = req.getIdList(); | ||||||
|         String status = req.getStatus(); |         String status = req.getStatus(); | ||||||
|         // 查询对应数据是否存在 |         // 查询对应数据是否存在 | ||||||
|         if (CollUtil.isEmpty(idList)) { |         if (CollUtil.isEmpty(idList)) { | ||||||
|             throw new ServiceException("施工人员 id 不能为空", HttpStatus.BAD_REQUEST); |             throw new ServiceException("施工人员 id 不能为空", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         List<BusConstructionUser> constructionUserList = this.listByIds(idList); |         List<SubConstructionUser> constructionUserList = this.listByIds(idList); | ||||||
|         // 判断对应数据是否都存在 |         // 判断对应数据是否都存在 | ||||||
|         if (constructionUserList.size() != idList.size()) { |         if (constructionUserList.size() != idList.size()) { | ||||||
|             throw new ServiceException("修改施工人员状态失败,数据缺失", HttpStatus.BAD_REQUEST); |             throw new ServiceException("修改施工人员状态失败,数据缺失", HttpStatus.BAD_REQUEST); | ||||||
| @ -456,14 +462,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         // 判断当前操作用户是否有权限 |         // 判断当前操作用户是否有权限 | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         List<Long> projectIdList = constructionUserList.stream() |         List<Long> projectIdList = constructionUserList.stream() | ||||||
|             .map(BusConstructionUser::getProjectId) |             .map(SubConstructionUser::getProjectId) | ||||||
|             .distinct().toList(); |             .distinct().toList(); | ||||||
|         projectService.validAuth(projectIdList, userId); |         projectService.validAuth(projectIdList, userId); | ||||||
|         // 批量修改 |         // 批量修改 | ||||||
|         List<BusConstructionUser> list = constructionUserList.stream() |         List<SubConstructionUser> list = constructionUserList.stream() | ||||||
|             .filter(user -> !status.equals(user.getStatus())) |             .filter(user -> !status.equals(user.getStatus())) | ||||||
|             .map(user -> { |             .map(user -> { | ||||||
|                 BusConstructionUser constructionUser = new BusConstructionUser(); |                 SubConstructionUser constructionUser = new SubConstructionUser(); | ||||||
|                 constructionUser.setId(user.getId()); |                 constructionUser.setId(user.getId()); | ||||||
|                 constructionUser.setStatus(status); |                 constructionUser.setStatus(status); | ||||||
|                 return constructionUser; |                 return constructionUser; | ||||||
| @ -485,7 +491,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean batchUpdateClockByProjectId(BusConstructionUserBatchUpdateClockReq req) { |     public Boolean batchUpdateClockByProjectId(SubConstructionUserBatchUpdateClockReq req) { | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
|         String clock = req.getClock(); |         String clock = req.getClock(); | ||||||
|         // 校验打卡状态是否为空 |         // 校验打卡状态是否为空 | ||||||
| @ -503,9 +509,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         projectService.validAuth(projectId, userId); |         projectService.validAuth(projectId, userId); | ||||||
|         // 操作数据库,批量修改 |         // 操作数据库,批量修改 | ||||||
|         LambdaUpdateWrapper<BusConstructionUser> lambdaUpdate = Wrappers.lambdaUpdate(BusConstructionUser.class) |         LambdaUpdateWrapper<SubConstructionUser> lambdaUpdate = Wrappers.lambdaUpdate(SubConstructionUser.class) | ||||||
|             .eq(BusConstructionUser::getProjectId, projectId) |             .eq(SubConstructionUser::getProjectId, projectId) | ||||||
|             .set(BusConstructionUser::getClock, clock); |             .set(SubConstructionUser::getClock, clock); | ||||||
|         boolean update = this.update(lambdaUpdate); |         boolean update = this.update(lambdaUpdate); | ||||||
|         if (!update) { |         if (!update) { | ||||||
|             throw new ServiceException("修改施工人员打卡状态失败,数据库异常", HttpStatus.ERROR); |             throw new ServiceException("修改施工人员打卡状态失败,数据库异常", HttpStatus.ERROR); | ||||||
| @ -516,7 +522,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|     /** |     /** | ||||||
|      * 保存前的数据校验 |      * 保存前的数据校验 | ||||||
|      */ |      */ | ||||||
|     private void validEntityBeforeSave(BusConstructionUser entity, Boolean create) { |     private void validEntityBeforeSave(SubConstructionUser entity, Boolean create) { | ||||||
|         // TODO 做一些数据校验,如唯一约束 |         // TODO 做一些数据校验,如唯一约束 | ||||||
|         // 校验项目id和对应项目是否存在 |         // 校验项目id和对应项目是否存在 | ||||||
|         Long projectId = entity.getProjectId(); |         Long projectId = entity.getProjectId(); | ||||||
| @ -547,7 +553,7 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         if (contractorId != null) { |         if (contractorId != null) { | ||||||
|             BusContractor contractor = contractorService.getById(contractorId); |             SubContractor contractor = contractorService.getById(contractorId); | ||||||
|             if (contractor == null) { |             if (contractor == null) { | ||||||
|                 throw new ServiceException("分包单位信息不存在", HttpStatus.NOT_FOUND); |                 throw new ServiceException("分包单位信息不存在", HttpStatus.NOT_FOUND); | ||||||
|             } |             } | ||||||
| @ -585,11 +591,11 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         List<BusConstructionUser> constructionUserList = this.listByIds(ids); |         List<SubConstructionUser> constructionUserList = this.listByIds(ids); | ||||||
|         if (isValid) { |         if (isValid) { | ||||||
|             // 做一些业务上的校验,判断是否需要校验 |             // 做一些业务上的校验,判断是否需要校验 | ||||||
|             // 获取项目id列表 |             // 获取项目id列表 | ||||||
|             List<Long> projectIdList = constructionUserList.stream().map(BusConstructionUser::getProjectId).toList(); |             List<Long> projectIdList = constructionUserList.stream().map(SubConstructionUser::getProjectId).toList(); | ||||||
|             // 判断是否有权限操作对应项目下的内容 |             // 判断是否有权限操作对应项目下的内容 | ||||||
|             projectService.validAuth(projectIdList, userId); |             projectService.validAuth(projectIdList, userId); | ||||||
|             // 判断待删除的人员是否存在于班组 |             // 判断待删除的人员是否存在于班组 | ||||||
| @ -604,8 +610,8 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             throw new ServiceException("删除施工人员信息失败,数据缺失", HttpStatus.BAD_REQUEST); |             throw new ServiceException("删除施工人员信息失败,数据缺失", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         // 批量删除施工人员下的文件信息 |         // 批量删除施工人员下的文件信息 | ||||||
|         LambdaQueryWrapper<BusConstructionUserFile> constructionUserFileLqw = Wrappers.lambdaQuery(BusConstructionUserFile.class) |         LambdaQueryWrapper<SubConstructionUserFile> constructionUserFileLqw = Wrappers.lambdaQuery(SubConstructionUserFile.class) | ||||||
|             .in(BusConstructionUserFile::getUserId, ids); |             .in(SubConstructionUserFile::getUserId, ids); | ||||||
|         boolean removeFile = constructionUserFileService.remove(constructionUserFileLqw); |         boolean removeFile = constructionUserFileService.remove(constructionUserFileLqw); | ||||||
|         if (!removeFile) { |         if (!removeFile) { | ||||||
|             throw new ServiceException("删除施工人员信息失败,施工人员文件信息删除失败", HttpStatus.ERROR); |             throw new ServiceException("删除施工人员信息失败,施工人员文件信息删除失败", HttpStatus.ERROR); | ||||||
| @ -621,9 +627,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员视图对象 |      * @return 施工人员视图对象 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusConstructionUserVo getVo(BusConstructionUser constructionUser) { |     public SubConstructionUserVo getVo(SubConstructionUser constructionUser) { | ||||||
|         // 对象转封装类 |         // 对象转封装类 | ||||||
|         BusConstructionUserVo constructionUserVo = new BusConstructionUserVo(); |         SubConstructionUserVo constructionUserVo = new SubConstructionUserVo(); | ||||||
|         if (constructionUser == null) { |         if (constructionUser == null) { | ||||||
|             return constructionUserVo; |             return constructionUserVo; | ||||||
|         } |         } | ||||||
| @ -666,8 +672,8 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusConstructionUser> buildQueryWrapper(BusConstructionUserQueryReq req) { |     public LambdaQueryWrapper<SubConstructionUser> buildQueryWrapper(SubConstructionUserQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusConstructionUser> lqw = Wrappers.lambdaQuery(); |         LambdaQueryWrapper<SubConstructionUser> lqw = Wrappers.lambdaQuery(); | ||||||
|         if (req == null) { |         if (req == null) { | ||||||
|             return lqw; |             return lqw; | ||||||
|         } |         } | ||||||
| @ -695,40 +701,40 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|         Long salary = req.getSalary(); |         Long salary = req.getSalary(); | ||||||
|         String remark = req.getRemark(); |         String remark = req.getRemark(); | ||||||
|         // 模糊查询 |         // 模糊查询 | ||||||
|         lqw.like(StringUtils.isNotBlank(userName), BusConstructionUser::getUserName, userName); |         lqw.like(StringUtils.isNotBlank(userName), SubConstructionUser::getUserName, userName); | ||||||
|         lqw.like(StringUtils.isNotBlank(remark), BusConstructionUser::getRemark, remark); |         lqw.like(StringUtils.isNotBlank(remark), SubConstructionUser::getRemark, remark); | ||||||
|         lqw.like(StringUtils.isNotBlank(phone), BusConstructionUser::getPhone, phone); |         lqw.like(StringUtils.isNotBlank(phone), SubConstructionUser::getPhone, phone); | ||||||
|         lqw.like(StringUtils.isNotBlank(nation), BusConstructionUser::getNation, nation); |         lqw.like(StringUtils.isNotBlank(nation), SubConstructionUser::getNation, nation); | ||||||
|         lqw.like(StringUtils.isNotBlank(sfzNumber), BusConstructionUser::getSfzNumber, sfzNumber); |         lqw.like(StringUtils.isNotBlank(sfzNumber), SubConstructionUser::getSfzNumber, sfzNumber); | ||||||
|         lqw.like(StringUtils.isNotBlank(nativePlace), BusConstructionUser::getNativePlace, nativePlace); |         lqw.like(StringUtils.isNotBlank(nativePlace), SubConstructionUser::getNativePlace, nativePlace); | ||||||
|         lqw.like(StringUtils.isNotBlank(yhkNumber), BusConstructionUser::getYhkNumber, yhkNumber); |         lqw.like(StringUtils.isNotBlank(yhkNumber), SubConstructionUser::getYhkNumber, yhkNumber); | ||||||
|         lqw.like(StringUtils.isNotBlank(yhkOpeningBank), BusConstructionUser::getYhkOpeningBank, yhkOpeningBank); |         lqw.like(StringUtils.isNotBlank(yhkOpeningBank), SubConstructionUser::getYhkOpeningBank, yhkOpeningBank); | ||||||
|         lqw.like(StringUtils.isNotBlank(yhkCardholder), BusConstructionUser::getYhkCardholder, yhkCardholder); |         lqw.like(StringUtils.isNotBlank(yhkCardholder), SubConstructionUser::getYhkCardholder, yhkCardholder); | ||||||
|         lqw.like(StringUtils.isNotBlank(teamName), BusConstructionUser::getTeamName, teamName); |         lqw.like(StringUtils.isNotBlank(teamName), SubConstructionUser::getTeamName, teamName); | ||||||
|         // 精确查询 |         // 精确查询 | ||||||
|         lqw.eq(StringUtils.isNotBlank(status), BusConstructionUser::getStatus, status); |         lqw.eq(StringUtils.isNotBlank(status), SubConstructionUser::getStatus, status); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(id), BusConstructionUser::getId, id); |         lqw.eq(ObjectUtils.isNotEmpty(id), SubConstructionUser::getId, id); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusConstructionUser::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubConstructionUser::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorId), BusConstructionUser::getContractorId, contractorId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubConstructionUser::getContractorId, contractorId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(teamId), BusConstructionUser::getTeamId, teamId); |         lqw.eq(ObjectUtils.isNotEmpty(teamId), SubConstructionUser::getTeamId, teamId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(isPinch), BusConstructionUser::getIsPinch, isPinch); |         lqw.eq(StringUtils.isNotBlank(isPinch), SubConstructionUser::getIsPinch, isPinch); | ||||||
|         lqw.eq(StringUtils.isNotBlank(sex), BusConstructionUser::getSex, sex); |         lqw.eq(StringUtils.isNotBlank(sex), SubConstructionUser::getSex, sex); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(typeOfWork), BusConstructionUser::getTypeOfWork, typeOfWork); |         lqw.eq(ObjectUtils.isNotEmpty(typeOfWork), SubConstructionUser::getTypeOfWork, typeOfWork); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(clock), BusConstructionUser::getClock, clock); |         lqw.eq(ObjectUtils.isNotEmpty(clock), SubConstructionUser::getClock, clock); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(salary), BusConstructionUser::getSalary, salary); |         lqw.eq(ObjectUtils.isNotEmpty(salary), SubConstructionUser::getSalary, salary); | ||||||
|         lqw.eq(StringUtils.isNotBlank(wageMeasureUnit), BusConstructionUser::getWageMeasureUnit, wageMeasureUnit); |         lqw.eq(StringUtils.isNotBlank(wageMeasureUnit), SubConstructionUser::getWageMeasureUnit, wageMeasureUnit); | ||||||
|         // 精准查询,不等于 |         // 精准查询,不等于 | ||||||
|         if (ObjectUtils.isNotEmpty(notTeamId)) { |         if (ObjectUtils.isNotEmpty(notTeamId)) { | ||||||
|             lqw.and(wrapper -> wrapper |             lqw.and(wrapper -> wrapper | ||||||
|                 .ne(BusConstructionUser::getTeamId, notTeamId) |                 .ne(SubConstructionUser::getTeamId, notTeamId) | ||||||
|                 .or().isNull(BusConstructionUser::getTeamId)); |                 .or().isNull(SubConstructionUser::getTeamId)); | ||||||
|         } |         } | ||||||
|         // 查询当前项目下的黑名单人员 |         // 查询当前项目下的黑名单人员 | ||||||
|         if (projectId != null) { |         if (projectId != null) { | ||||||
|             List<Long> blackUserIdList = constructionBlacklistService.queryIdListByProjectId(projectId); |             List<Long> blackUserIdList = constructionBlacklistService.queryIdListByProjectId(projectId); | ||||||
|             // 查询结果移除黑名单人员 |             // 查询结果移除黑名单人员 | ||||||
|             if (CollUtil.isNotEmpty(blackUserIdList)) { |             if (CollUtil.isNotEmpty(blackUserIdList)) { | ||||||
|                 lqw.notIn(BusConstructionUser::getId, blackUserIdList); |                 lqw.notIn(SubConstructionUser::getId, blackUserIdList); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return lqw; |         return lqw; | ||||||
| @ -741,9 +747,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员分页对象视图 |      * @return 施工人员分页对象视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<BusConstructionUserVo> getVoPage(Page<BusConstructionUser> constructionUserPage) { |     public Page<SubConstructionUserVo> getVoPage(Page<SubConstructionUser> constructionUserPage) { | ||||||
|         List<BusConstructionUser> constructionUserList = constructionUserPage.getRecords(); |         List<SubConstructionUser> constructionUserList = constructionUserPage.getRecords(); | ||||||
|         Page<BusConstructionUserVo> constructionUserVoPage = new Page<>( |         Page<SubConstructionUserVo> constructionUserVoPage = new Page<>( | ||||||
|             constructionUserPage.getCurrent(), |             constructionUserPage.getCurrent(), | ||||||
|             constructionUserPage.getSize(), |             constructionUserPage.getSize(), | ||||||
|             constructionUserPage.getTotal()); |             constructionUserPage.getTotal()); | ||||||
| @ -751,39 +757,39 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             return constructionUserVoPage; |             return constructionUserVoPage; | ||||||
|         } |         } | ||||||
|         // 关联查询分包公司信息 |         // 关联查询分包公司信息 | ||||||
|         Set<Long> contractorIdSet = constructionUserList.stream().map(BusConstructionUser::getContractorId) |         Set<Long> contractorIdSet = constructionUserList.stream().map(SubConstructionUser::getContractorId) | ||||||
|             .collect(Collectors.toSet()); |             .collect(Collectors.toSet()); | ||||||
|         Map<Long, List<BusContractor>> contractorIdContractorMap = contractorService.listByIds(contractorIdSet).stream() |         Map<Long, List<SubContractor>> contractorIdContractorMap = contractorService.listByIds(contractorIdSet).stream() | ||||||
|             .collect(Collectors.groupingBy(BusContractor::getId)); |             .collect(Collectors.groupingBy(SubContractor::getId)); | ||||||
|         // 关联查询工资标准 |         // 关联查询工资标准 | ||||||
|         LambdaQueryWrapper<BusWorkWage> workWageLqw = Wrappers.lambdaQuery(BusWorkWage.class) |         LambdaQueryWrapper<BusWorkWage> workWageLqw = Wrappers.lambdaQuery(BusWorkWage.class) | ||||||
|             .in(BusWorkWage::getProjectId, constructionUserList.stream().map(BusConstructionUser::getProjectId).toList()) |             .in(BusWorkWage::getProjectId, constructionUserList.stream().map(SubConstructionUser::getProjectId).toList()) | ||||||
|             .in(BusWorkWage::getWorkType, constructionUserList.stream().map(BusConstructionUser::getTypeOfWork).toList()) |             .in(BusWorkWage::getWorkType, constructionUserList.stream().map(SubConstructionUser::getTypeOfWork).toList()) | ||||||
|             .in(BusWorkWage::getWageMeasureUnit, constructionUserList.stream().map(BusConstructionUser::getWageMeasureUnit).toList()); |             .in(BusWorkWage::getWageMeasureUnit, constructionUserList.stream().map(SubConstructionUser::getWageMeasureUnit).toList()); | ||||||
|         Map<String, Long> workWageMap = workWageService.list(workWageLqw).stream().collect(Collectors.toMap( |         Map<String, Long> workWageMap = workWageService.list(workWageLqw).stream().collect(Collectors.toMap( | ||||||
|             workWage -> workWage.getWorkType() + "_" + workWage.getWageMeasureUnit(), |             workWage -> workWage.getWorkType() + "_" + workWage.getWageMeasureUnit(), | ||||||
|             BusWorkWage::getWage, |             BusWorkWage::getWage, | ||||||
|             (wage1, wage2) -> wage1 |             (wage1, wage2) -> wage1 | ||||||
|         )); |         )); | ||||||
|         int fileTypeSize = dictTypeService.selectDictDataByType(BusConstructionUserConstant.USER_FILE_TYPE).size(); |         int fileTypeSize = dictTypeService.selectDictDataByType(SubConstructionUserConstant.USER_FILE_TYPE).size(); | ||||||
|         // 获取用户上传文件数量信息 |         // 获取用户上传文件数量信息 | ||||||
|         List<Long> userIdList = constructionUserList.stream().map(BusConstructionUser::getId).toList(); |         List<Long> userIdList = constructionUserList.stream().map(SubConstructionUser::getId).toList(); | ||||||
|         List<BusConstructionUserFile> fileList = constructionUserFileService.lambdaQuery() |         List<SubConstructionUserFile> fileList = constructionUserFileService.lambdaQuery() | ||||||
|             .select(BusConstructionUserFile::getId, BusConstructionUserFile::getUserId) |             .select(SubConstructionUserFile::getId, SubConstructionUserFile::getUserId) | ||||||
|             .in(BusConstructionUserFile::getUserId, userIdList) |             .in(SubConstructionUserFile::getUserId, userIdList) | ||||||
|             .list(); |             .list(); | ||||||
|         Map<Long, Long> fileCountMap = fileList.stream() |         Map<Long, Long> fileCountMap = fileList.stream() | ||||||
|             .collect(Collectors.groupingBy( |             .collect(Collectors.groupingBy( | ||||||
|                 BusConstructionUserFile::getUserId, |                 SubConstructionUserFile::getUserId, | ||||||
|                 Collectors.counting() |                 Collectors.counting() | ||||||
|             )); |             )); | ||||||
|         // 填充信息 |         // 填充信息 | ||||||
|         List<BusConstructionUserVo> constructionUserVoList = constructionUserList.stream().map(constructionUser -> { |         List<SubConstructionUserVo> constructionUserVoList = constructionUserList.stream().map(constructionUser -> { | ||||||
|             BusConstructionUserVo constructionUserVo = new BusConstructionUserVo(); |             SubConstructionUserVo constructionUserVo = new SubConstructionUserVo(); | ||||||
|             BeanUtils.copyProperties(constructionUser, constructionUserVo); |             BeanUtils.copyProperties(constructionUser, constructionUserVo); | ||||||
|             // 关联分包公司信息 |             // 关联分包公司信息 | ||||||
|             Long contractorId = constructionUser.getContractorId(); |             Long contractorId = constructionUser.getContractorId(); | ||||||
|             BusContractorVo contractor = null; |             SubContractorVo contractor = null; | ||||||
|             if (contractorIdContractorMap.containsKey(contractorId)) { |             if (contractorIdContractorMap.containsKey(contractorId)) { | ||||||
|                 contractor = contractorService.getVo(contractorIdContractorMap.get(contractorId).getFirst()); |                 contractor = contractorService.getVo(contractorIdContractorMap.get(contractorId).getFirst()); | ||||||
|             } |             } | ||||||
| @ -798,11 +804,11 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             // 关联施工人员文件上传状态 |             // 关联施工人员文件上传状态 | ||||||
|             long count = fileCountMap.getOrDefault(constructionUser.getId(), 0L); |             long count = fileCountMap.getOrDefault(constructionUser.getId(), 0L); | ||||||
|             if (count <= 0) { |             if (count <= 0) { | ||||||
|                 constructionUserVo.setFileUploadStatus(BusConstructionUserFileStatusEnum.NOUPLOAD.getValue()); |                 constructionUserVo.setFileUploadStatus(SubConstructionUserFileStatusEnum.NOUPLOAD.getValue()); | ||||||
|             } else if (count < fileTypeSize) { |             } else if (count < fileTypeSize) { | ||||||
|                 constructionUserVo.setFileUploadStatus(BusConstructionUserFileStatusEnum.PARTUPLOAD.getValue()); |                 constructionUserVo.setFileUploadStatus(SubConstructionUserFileStatusEnum.PARTUPLOAD.getValue()); | ||||||
|             } else if (count == fileTypeSize) { |             } else if (count == fileTypeSize) { | ||||||
|                 constructionUserVo.setFileUploadStatus(BusConstructionUserFileStatusEnum.UPLOAD.getValue()); |                 constructionUserVo.setFileUploadStatus(SubConstructionUserFileStatusEnum.UPLOAD.getValue()); | ||||||
|             } |             } | ||||||
|             // 解密身份证号码 |             // 解密身份证号码 | ||||||
|             String decrypt = idCardEncryptorUtil.decrypt(constructionUserVo.getSfzNumber()); |             String decrypt = idCardEncryptorUtil.decrypt(constructionUserVo.getSfzNumber()); | ||||||
| @ -821,9 +827,9 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|      * @return 施工人员考勤分页对象视图 |      * @return 施工人员考勤分页对象视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<BusConstructionUserAttendanceTotalVo> getAttendanceTotalVoPage(BusConstructionUserAttendanceQueryReq req, |     public Page<SubConstructionUserAttendanceTotalVo> getAttendanceTotalVoPage(SubConstructionUserAttendanceQueryReq req, | ||||||
|                                                                                PageQuery pageQuery) { |                                                                                PageQuery pageQuery) { | ||||||
|         LambdaQueryWrapper<BusConstructionUser> lqw = Wrappers.lambdaQuery(); |         LambdaQueryWrapper<SubConstructionUser> lqw = Wrappers.lambdaQuery(); | ||||||
|         // 从对象中取值 |         // 从对象中取值 | ||||||
|         String userName = req.getUserName(); |         String userName = req.getUserName(); | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
| @ -852,25 +858,25 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             List<Long> userIdList = attendanceService.list(attendanceLqw) |             List<Long> userIdList = attendanceService.list(attendanceLqw) | ||||||
|                 .stream().map(BusAttendance::getUserId).toList(); |                 .stream().map(BusAttendance::getUserId).toList(); | ||||||
|             if (CollUtil.isNotEmpty(userIdList)) { |             if (CollUtil.isNotEmpty(userIdList)) { | ||||||
|                 lqw.in(BusConstructionUser::getId, userIdList); |                 lqw.in(SubConstructionUser::getId, userIdList); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         // 模糊查询 |         // 模糊查询 | ||||||
|         lqw.like(StringUtils.isNotBlank(userName), BusConstructionUser::getUserName, userName); |         lqw.like(StringUtils.isNotBlank(userName), SubConstructionUser::getUserName, userName); | ||||||
|         // 精确查询 |         // 精确查询 | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusConstructionUser::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubConstructionUser::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(teamId), BusConstructionUser::getTeamId, teamId); |         lqw.eq(ObjectUtils.isNotEmpty(teamId), SubConstructionUser::getTeamId, teamId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(typeOfWork), BusConstructionUser::getTypeOfWork, typeOfWork); |         lqw.eq(StringUtils.isNotBlank(typeOfWork), SubConstructionUser::getTypeOfWork, typeOfWork); | ||||||
|         // 查询当前项目下的黑名单人员 |         // 查询当前项目下的黑名单人员 | ||||||
|         List<Long> blackUserIdList = constructionBlacklistService.queryIdListByProjectId(projectId); |         List<Long> blackUserIdList = constructionBlacklistService.queryIdListByProjectId(projectId); | ||||||
|         // 查询结果移除黑名单人员 |         // 查询结果移除黑名单人员 | ||||||
|         if (CollUtil.isNotEmpty(blackUserIdList)) { |         if (CollUtil.isNotEmpty(blackUserIdList)) { | ||||||
|             lqw.notIn(BusConstructionUser::getId, blackUserIdList); |             lqw.notIn(SubConstructionUser::getId, blackUserIdList); | ||||||
|         } |         } | ||||||
|         // 分页查询获取数据 |         // 分页查询获取数据 | ||||||
|         Page<BusConstructionUser> constructionUserPage = this.page(pageQuery.build(), lqw); |         Page<SubConstructionUser> constructionUserPage = this.page(pageQuery.build(), lqw); | ||||||
|         List<BusConstructionUser> constructionUserList = constructionUserPage.getRecords(); |         List<SubConstructionUser> constructionUserList = constructionUserPage.getRecords(); | ||||||
|         Page<BusConstructionUserAttendanceTotalVo> constructionUserAttendanceTotalPage = new Page<>( |         Page<SubConstructionUserAttendanceTotalVo> constructionUserAttendanceTotalPage = new Page<>( | ||||||
|             constructionUserPage.getCurrent(), |             constructionUserPage.getCurrent(), | ||||||
|             constructionUserPage.getSize(), |             constructionUserPage.getSize(), | ||||||
|             constructionUserPage.getTotal()); |             constructionUserPage.getTotal()); | ||||||
| @ -878,14 +884,14 @@ public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionU | |||||||
|             return constructionUserAttendanceTotalPage; |             return constructionUserAttendanceTotalPage; | ||||||
|         } |         } | ||||||
|         // 获取施工人员id列表 |         // 获取施工人员id列表 | ||||||
|         List<Long> userIdList = constructionUserList.stream().map(BusConstructionUser::getId).toList(); |         List<Long> userIdList = constructionUserList.stream().map(SubConstructionUser::getId).toList(); | ||||||
|         // 关联查询施工人员考勤列表 |         // 关联查询施工人员考勤列表 | ||||||
|         attendanceLqw.in(BusAttendance::getUserId, userIdList); |         attendanceLqw.in(BusAttendance::getUserId, userIdList); | ||||||
|         Map<Long, List<BusAttendance>> userIdBusAttendanceListMap = attendanceService.list(attendanceLqw) |         Map<Long, List<BusAttendance>> userIdBusAttendanceListMap = attendanceService.list(attendanceLqw) | ||||||
|             .stream().collect(Collectors.groupingBy(BusAttendance::getUserId)); |             .stream().collect(Collectors.groupingBy(BusAttendance::getUserId)); | ||||||
|         // 填充信息 |         // 填充信息 | ||||||
|         List<BusConstructionUserAttendanceTotalVo> userAttendanceTotalList = constructionUserList.stream().map(constructionUser -> { |         List<SubConstructionUserAttendanceTotalVo> userAttendanceTotalList = constructionUserList.stream().map(constructionUser -> { | ||||||
|             BusConstructionUserAttendanceTotalVo constructionUserAttendanceTotalResp = new BusConstructionUserAttendanceTotalVo(); |             SubConstructionUserAttendanceTotalVo constructionUserAttendanceTotalResp = new SubConstructionUserAttendanceTotalVo(); | ||||||
|             Long id = constructionUser.getId(); |             Long id = constructionUser.getId(); | ||||||
|             BeanUtils.copyProperties(constructionUser, constructionUserAttendanceTotalResp); |             BeanUtils.copyProperties(constructionUser, constructionUserAttendanceTotalResp); | ||||||
|             // 关联施工人员考勤信息 |             // 关联施工人员考勤信息 | ||||||
| @ -0,0 +1,302 @@ | |||||||
|  | package org.dromara.contractor.service.impl; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
|  | import org.dromara.common.core.constant.HttpStatus; | ||||||
|  | import org.dromara.common.core.exception.ServiceException; | ||||||
|  | import org.dromara.common.core.utils.ObjectUtils; | ||||||
|  | import org.dromara.common.core.utils.StringUtils; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.common.satoken.utils.LoginHelper; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterial; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterialRecord; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterialrecord.SubContractorMaterialRecordUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.enums.SubContractorRecordEnum; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterialrecord.SubContractorMaterialRecordVo; | ||||||
|  | import org.dromara.contractor.mapper.SubContractorMaterialRecordMapper; | ||||||
|  | import org.dromara.contractor.service.ISubContractorMaterialRecordService; | ||||||
|  | import org.dromara.contractor.service.ISubContractorMaterialService; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
|  | import org.dromara.project.service.IBusProjectService; | ||||||
|  | import org.springframework.beans.BeanUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料记录Service业务层处理 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class SubContractorMaterialRecordServiceImpl extends ServiceImpl<SubContractorMaterialRecordMapper, SubContractorMaterialRecord> | ||||||
|  |     implements ISubContractorMaterialRecordService { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private IBusProjectService projectService; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ISubContractorService contractorService; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ISubContractorMaterialService contractorMaterialService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      * @return 分包方物料记录 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public SubContractorMaterialRecordVo queryById(Long id) { | ||||||
|  |         SubContractorMaterialRecord entity = this.getById(id); | ||||||
|  |         if (entity == null) { | ||||||
|  |             throw new ServiceException("分包方物料记录信息不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         return this.getVo(entity); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分页查询分包方物料记录列表 | ||||||
|  |      * | ||||||
|  |      * @param req       查询条件 | ||||||
|  |      * @param pageQuery 分页参数 | ||||||
|  |      * @return 分包方物料记录分页列表 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public TableDataInfo<SubContractorMaterialRecordVo> queryPageList(SubContractorMaterialRecordQueryReq req, PageQuery pageQuery) { | ||||||
|  |         Page<SubContractorMaterialRecord> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); | ||||||
|  |         return TableDataInfo.build(this.getVoPage(result)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的分包方物料记录列表 | ||||||
|  |      * | ||||||
|  |      * @param req 查询条件 | ||||||
|  |      * @return 分包方物料记录列表 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public List<SubContractorMaterialRecordVo> queryList(SubContractorMaterialRecordQueryReq req) { | ||||||
|  |         LambdaQueryWrapper<SubContractorMaterialRecord> lqw = buildQueryWrapper(req); | ||||||
|  |         return this.list(lqw).stream().map(this::getVo).toList(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录 | ||||||
|  |      * @return 新增分包方物料记录主键id | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public Long insertByBo(SubContractorMaterialRecordCreateReq req) { | ||||||
|  |         SubContractorMaterialRecord entry = new SubContractorMaterialRecord(); | ||||||
|  |         BeanUtils.copyProperties(req, entry); | ||||||
|  |         Long contractorMaterialId = req.getContractorMaterialId(); | ||||||
|  |         if (contractorMaterialId == null) { | ||||||
|  |             throw new ServiceException("物料id不能为空", HttpStatus.BAD_REQUEST); | ||||||
|  |         } | ||||||
|  |         SubContractorMaterial contractorMaterial = contractorMaterialService.getById(contractorMaterialId); | ||||||
|  |         if (contractorMaterial == null) { | ||||||
|  |             throw new ServiceException("分包方物料不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         // 填充默认值 | ||||||
|  |         entry.setProjectId(contractorMaterial.getProjectId()); | ||||||
|  |         entry.setContractorId(contractorMaterial.getContractorId()); | ||||||
|  |         String recordType = req.getRecordType(); | ||||||
|  |         BigDecimal recordNumber = req.getRecordNumber(); | ||||||
|  |         // 同步更新工具数量 | ||||||
|  |         BigDecimal number = this.computeRemainingMaterialNumber(contractorMaterial, recordType, recordNumber); | ||||||
|  |         entry.setRemainingNumber(number); | ||||||
|  |         boolean save = this.save(entry); | ||||||
|  |         if (!save) { | ||||||
|  |             throw new ServiceException("保存分包方物料记录失败", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return entry.getId(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料记录 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录 | ||||||
|  |      * @return 是否修改成功 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public Boolean updateByBo(SubContractorMaterialRecordUpdateReq req) { | ||||||
|  |         SubContractorMaterialRecord entry = new SubContractorMaterialRecord(); | ||||||
|  |         BeanUtils.copyProperties(req, entry); | ||||||
|  |         SubContractorMaterialRecord contractorMaterialEntry = this.getById(entry.getId()); | ||||||
|  |         if (contractorMaterialEntry == null) { | ||||||
|  |             throw new ServiceException("修改分包方物料记录失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         SubContractorMaterial contractorMaterial = contractorMaterialService.getById(contractorMaterialEntry.getContractorMaterialId()); | ||||||
|  |         if (contractorMaterial == null) { | ||||||
|  |             throw new ServiceException("分包方物料不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         String recordType = contractorMaterialEntry.getRecordType(); | ||||||
|  |         BigDecimal recordNumber = req.getRecordNumber(); | ||||||
|  |         // 同步更新工具数量 | ||||||
|  |         BigDecimal number = this.computeRemainingMaterialNumber(contractorMaterial, recordType, recordNumber); | ||||||
|  |         entry.setRemainingNumber(number); | ||||||
|  |         boolean result = this.updateById(entry); | ||||||
|  |         if (!result) { | ||||||
|  |             throw new ServiceException("修改分包方物料记录失败", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并批量删除分包方物料记录信息 | ||||||
|  |      * | ||||||
|  |      * @param ids     待删除的主键集合 | ||||||
|  |      * @param isValid 是否进行有效性校验 | ||||||
|  |      * @return 是否删除成功 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|  |         Long userId = LoginHelper.getUserId(); | ||||||
|  |         List<SubContractorMaterialRecord> list = this.listByIds(ids); | ||||||
|  |         if (isValid) { | ||||||
|  |             List<Long> projectIdList = list.stream().map(SubContractorMaterialRecord::getProjectId).toList(); | ||||||
|  |             projectService.validAuth(projectIdList, userId); | ||||||
|  |         } | ||||||
|  |         return this.removeBatchByIds(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录视图对象 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterialRecord 分包方物料记录对象 | ||||||
|  |      * @return 分包方物料记录视图对象 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public SubContractorMaterialRecordVo getVo(SubContractorMaterialRecord contractorMaterialRecord) { | ||||||
|  |         SubContractorMaterialRecordVo vo = new SubContractorMaterialRecordVo(); | ||||||
|  |         if (contractorMaterialRecord == null) { | ||||||
|  |             throw new ServiceException("数据不存在"); | ||||||
|  |         } | ||||||
|  |         BeanUtils.copyProperties(contractorMaterialRecord, vo); | ||||||
|  |         SubContractorMaterial contractorMaterial = contractorMaterialService.getById(vo.getContractorMaterialId()); | ||||||
|  |         if (contractorMaterial != null) { | ||||||
|  |             vo.setContractorMaterialName(contractorMaterial.getMaterialName()); | ||||||
|  |         } | ||||||
|  |         SubContractor contractor = contractorService.getById(vo.getContractorId()); | ||||||
|  |         if (contractor != null) { | ||||||
|  |             vo.setContractorName(contractor.getName()); | ||||||
|  |         } | ||||||
|  |         return vo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录查询条件封装 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料记录查询条件 | ||||||
|  |      * @return 分包方物料记录查询条件封装 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public LambdaQueryWrapper<SubContractorMaterialRecord> buildQueryWrapper(SubContractorMaterialRecordQueryReq req) { | ||||||
|  |         LambdaQueryWrapper<SubContractorMaterialRecord> lqw = new LambdaQueryWrapper<>(); | ||||||
|  |         if (req == null) { | ||||||
|  |             return lqw; | ||||||
|  |         } | ||||||
|  |         Long projectId = req.getProjectId(); | ||||||
|  |         Long contractorId = req.getContractorId(); | ||||||
|  |         Long contractorMaterialId = req.getContractorMaterialId(); | ||||||
|  |         String recordType = req.getRecordType(); | ||||||
|  |         String usedPosition = req.getUsedPosition(); | ||||||
|  |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractorMaterialRecord::getProjectId, projectId); | ||||||
|  |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubContractorMaterialRecord::getContractorId, contractorId); | ||||||
|  |         lqw.eq(ObjectUtils.isNotEmpty(contractorMaterialId), SubContractorMaterialRecord::getContractorMaterialId, contractorMaterialId); | ||||||
|  |         lqw.eq(StringUtils.isNotBlank(recordType), SubContractorMaterialRecord::getRecordType, recordType); | ||||||
|  |         lqw.like(StringUtils.isNotBlank(usedPosition), SubContractorMaterialRecord::getUsedPosition, usedPosition); | ||||||
|  |         return lqw; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料记录分页对象视图 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterialRecordPage 分包方物料记录分页对象 | ||||||
|  |      * @return 分包方物料记录分页对象视图 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public Page<SubContractorMaterialRecordVo> getVoPage(Page<SubContractorMaterialRecord> contractorMaterialRecordPage) { | ||||||
|  |         List<SubContractorMaterialRecord> contractorMaterialEntryList = contractorMaterialRecordPage.getRecords(); | ||||||
|  |         Page<SubContractorMaterialRecordVo> contractorMaterialEntryVoPage = new Page<>( | ||||||
|  |             contractorMaterialRecordPage.getCurrent(), | ||||||
|  |             contractorMaterialRecordPage.getSize(), | ||||||
|  |             contractorMaterialRecordPage.getTotal()); | ||||||
|  |         if (CollUtil.isEmpty(contractorMaterialEntryList)) { | ||||||
|  |             return contractorMaterialEntryVoPage; | ||||||
|  |         } | ||||||
|  |         Set<Long> contractorIdList = contractorMaterialEntryList.stream().map(SubContractorMaterialRecord::getContractorId).collect(Collectors.toSet()); | ||||||
|  |         Map<Long, SubContractor> contractorMap = contractorService.listByIds(contractorIdList) | ||||||
|  |             .stream().collect(Collectors.toMap(SubContractor::getId, v -> v)); | ||||||
|  |         Set<Long> contractorMaterialIdList = contractorMaterialEntryList.stream().map(SubContractorMaterialRecord::getContractorMaterialId).collect(Collectors.toSet()); | ||||||
|  |         Map<Long, SubContractorMaterial> contractorMaterialMap = contractorMaterialService.listByIds(contractorMaterialIdList) | ||||||
|  |             .stream().collect(Collectors.toMap(SubContractorMaterial::getId, v -> v)); | ||||||
|  |         List<SubContractorMaterialRecordVo> contractorMaterialEntryVoList = contractorMaterialEntryList.stream().map(entity -> { | ||||||
|  |             SubContractorMaterialRecordVo vo = new SubContractorMaterialRecordVo(); | ||||||
|  |             BeanUtils.copyProperties(entity, vo); | ||||||
|  |             if (contractorMaterialMap.containsKey(entity.getContractorMaterialId())) { | ||||||
|  |                 vo.setContractorMaterialName(contractorMaterialMap.get(entity.getContractorMaterialId()).getMaterialName()); | ||||||
|  |             } | ||||||
|  |             if (contractorMap.containsKey(entity.getContractorId())) { | ||||||
|  |                 vo.setContractorName(contractorMap.get(entity.getContractorId()).getName()); | ||||||
|  |             } | ||||||
|  |             return vo; | ||||||
|  |         }).toList(); | ||||||
|  |         contractorMaterialEntryVoPage.setRecords(contractorMaterialEntryVoList); | ||||||
|  |         return contractorMaterialEntryVoPage; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 计算剩余库存并更新库存对象返回剩余数量 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterial 当前库存工具 | ||||||
|  |      * @param recordType         操作类型(入库/出库) | ||||||
|  |      * @param recordNumber       本次操作数量 | ||||||
|  |      * @return 剩余数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal computeRemainingMaterialNumber(SubContractorMaterial contractorMaterial, String recordType, BigDecimal recordNumber) { | ||||||
|  |         if (recordNumber == null) { | ||||||
|  |             throw new ServiceException("物料数量不能为空", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         BigDecimal materialNumber = contractorMaterial.getMaterialNumber(); | ||||||
|  |         SubContractorMaterial newContractorMaterial = new SubContractorMaterial(); | ||||||
|  |         newContractorMaterial.setId(contractorMaterial.getId()); | ||||||
|  |         BigDecimal result; | ||||||
|  |         if (SubContractorRecordEnum.PUT.getValue().equals(recordType)) { | ||||||
|  |             result = materialNumber.add(recordNumber); | ||||||
|  |         } else if (SubContractorRecordEnum.OUT.getValue().equals(recordType)) { | ||||||
|  |             result = materialNumber.subtract(recordNumber); | ||||||
|  |             if (result.compareTo(BigDecimal.ZERO) < 0) { | ||||||
|  |                 throw new ServiceException("出库数量不能大于库存数量", HttpStatus.ERROR); | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             throw new ServiceException("分包方物料记录类型错误", HttpStatus.BAD_REQUEST); | ||||||
|  |         } | ||||||
|  |         newContractorMaterial.setMaterialNumber(result); | ||||||
|  |         boolean update = contractorMaterialService.updateById(newContractorMaterial); | ||||||
|  |         if (!update) { | ||||||
|  |             throw new ServiceException("更新分包方物料信息异常", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,246 @@ | |||||||
|  | package org.dromara.contractor.service.impl; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
|  | import org.dromara.common.core.constant.HttpStatus; | ||||||
|  | import org.dromara.common.core.exception.ServiceException; | ||||||
|  | import org.dromara.common.core.utils.ObjectUtils; | ||||||
|  | import org.dromara.common.core.utils.StringUtils; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.common.satoken.utils.LoginHelper; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.SubContractorMaterial; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractormaterial.SubContractorMaterialUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractormaterial.SubContractorMaterialVo; | ||||||
|  | import org.dromara.contractor.mapper.SubContractorMaterialMapper; | ||||||
|  | import org.dromara.contractor.service.ISubContractorMaterialService; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
|  | import org.dromara.project.service.IBusProjectService; | ||||||
|  | import org.springframework.beans.BeanUtils; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Set; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包方物料Service业务层处理 | ||||||
|  |  * | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025-06-27 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class SubContractorMaterialServiceImpl extends ServiceImpl<SubContractorMaterialMapper, SubContractorMaterial> | ||||||
|  |     implements ISubContractorMaterialService { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private IBusProjectService projectService; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ISubContractorService contractorService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      * @return 分包方物料 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public SubContractorMaterialVo queryById(Long id) { | ||||||
|  |         SubContractorMaterial contractorMaterial = this.getById(id); | ||||||
|  |         if (contractorMaterial == null) { | ||||||
|  |             throw new ServiceException("分包方物料信息不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         return this.getVo(contractorMaterial); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分页查询分包方物料列表 | ||||||
|  |      * | ||||||
|  |      * @param req       查询条件 | ||||||
|  |      * @param pageQuery 分页参数 | ||||||
|  |      * @return 分包方物料分页列表 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public TableDataInfo<SubContractorMaterialVo> queryPageList(SubContractorMaterialQueryReq req, PageQuery pageQuery) { | ||||||
|  |         Page<SubContractorMaterial> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); | ||||||
|  |         return TableDataInfo.build(this.getVoPage(result)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的分包方物料列表 | ||||||
|  |      * | ||||||
|  |      * @param req 查询条件 | ||||||
|  |      * @return 分包方物料列表 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public List<SubContractorMaterialVo> queryList(SubContractorMaterialQueryReq req) { | ||||||
|  |         LambdaQueryWrapper<SubContractorMaterial> lqw = this.buildQueryWrapper(req); | ||||||
|  |         return this.list(lqw).stream().map(this::getVo).toList(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料 | ||||||
|  |      * @return 新增分包物料主键id | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public Long insertByBo(SubContractorMaterialCreateReq req) { | ||||||
|  |         SubContractorMaterial contractorMaterial = new SubContractorMaterial(); | ||||||
|  |         BeanUtils.copyProperties(req, contractorMaterial); | ||||||
|  |         validEntityBeforeSave(contractorMaterial, true); | ||||||
|  |         boolean result = this.save(contractorMaterial); | ||||||
|  |         if (!result) { | ||||||
|  |             throw new ServiceException("分包方物料新增失败", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return contractorMaterial.getId(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改分包方物料 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料 | ||||||
|  |      * @return 是否修改成功 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public Boolean updateByBo(SubContractorMaterialUpdateReq req) { | ||||||
|  |         Long id = req.getId(); | ||||||
|  |         SubContractorMaterial oldContractorMaterial = this.getById(id); | ||||||
|  |         if (oldContractorMaterial == null) { | ||||||
|  |             throw new ServiceException("修改分包方物料失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         SubContractorMaterial contractorMaterial = new SubContractorMaterial(); | ||||||
|  |         BeanUtils.copyProperties(req, contractorMaterial); | ||||||
|  |         validEntityBeforeSave(contractorMaterial, false); | ||||||
|  |         boolean result = this.updateById(contractorMaterial); | ||||||
|  |         if (!result) { | ||||||
|  |             throw new ServiceException("修改分包方物料失败", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 保存前的数据校验 | ||||||
|  |      */ | ||||||
|  |     private void validEntityBeforeSave(SubContractorMaterial entity, Boolean create) { | ||||||
|  |         Long projectId = entity.getProjectId(); | ||||||
|  |         Long contractorId = entity.getContractorId(); | ||||||
|  |         if (create) { | ||||||
|  |             if (projectId == null) { | ||||||
|  |                 throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST); | ||||||
|  |             } | ||||||
|  |             if (contractorId == null) { | ||||||
|  |                 throw new ServiceException("合同方 id 不能为空", HttpStatus.BAD_REQUEST); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         if (projectId != null && projectService.getById(projectId) == null) { | ||||||
|  |             throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         if (contractorId != null && contractorService.getById(contractorId) == null) { | ||||||
|  |             throw new ServiceException("对应分包方不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并批量删除分包方物料信息 | ||||||
|  |      * | ||||||
|  |      * @param ids     待删除的主键集合 | ||||||
|  |      * @param isValid 是否进行有效性校验 | ||||||
|  |      * @return 是否删除成功 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|  |         Long userId = LoginHelper.getUserId(); | ||||||
|  |         List<SubContractorMaterial> contractorMaterialList = this.listByIds(ids); | ||||||
|  |         if (isValid) { | ||||||
|  |             //TODO 做一些业务上的校验,判断是否需要校验 | ||||||
|  |             List<Long> projectIdList = contractorMaterialList.stream().map(SubContractorMaterial::getProjectId).distinct().toList(); | ||||||
|  |             projectService.validAuth(projectIdList, userId); | ||||||
|  |         } | ||||||
|  |         return this.removeBatchByIds(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料视图对象 | ||||||
|  |      * | ||||||
|  |      * @param contractorMaterial 分包方物料对象 | ||||||
|  |      * @return 分包方物料视图对象 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public SubContractorMaterialVo getVo(SubContractorMaterial contractorMaterial) { | ||||||
|  |         SubContractorMaterialVo contractorMaterialVo = new SubContractorMaterialVo(); | ||||||
|  |         if (contractorMaterial == null) { | ||||||
|  |             return contractorMaterialVo; | ||||||
|  |         } | ||||||
|  |         BeanUtils.copyProperties(contractorMaterial, contractorMaterialVo); | ||||||
|  |         Long contractorId = contractorMaterial.getContractorId(); | ||||||
|  |         SubContractor contractor = contractorService.getById(contractorId); | ||||||
|  |         contractorMaterialVo.setContractorName(contractor.getName()); | ||||||
|  |         return contractorMaterialVo; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料查询条件封装 | ||||||
|  |      * | ||||||
|  |      * @param req 分包方物料查询条件 | ||||||
|  |      * @return 分包方物料查询条件封装 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public LambdaQueryWrapper<SubContractorMaterial> buildQueryWrapper(SubContractorMaterialQueryReq req) { | ||||||
|  |         LambdaQueryWrapper<SubContractorMaterial> lqw = new LambdaQueryWrapper<>(); | ||||||
|  |         Long projectId = req.getProjectId(); | ||||||
|  |         Long contractorId = req.getContractorId(); | ||||||
|  |         String materialName = req.getMaterialName(); | ||||||
|  |         String materialType = req.getMaterialType(); | ||||||
|  |         String materialModel = req.getMaterialModel(); | ||||||
|  |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractorMaterial::getProjectId, projectId); | ||||||
|  |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubContractorMaterial::getContractorId, contractorId); | ||||||
|  |         lqw.eq(StringUtils.isNotBlank(materialType), SubContractorMaterial::getMaterialModel, materialType); | ||||||
|  |         lqw.like(StringUtils.isNotBlank(materialName), SubContractorMaterial::getMaterialName, materialName); | ||||||
|  |         lqw.like(StringUtils.isNotBlank(materialModel), SubContractorMaterial::getMaterialModel, materialModel); | ||||||
|  |         return lqw; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取分包方物料分页对象视图 | ||||||
|  |      * | ||||||
|  |      * @param contractorPage 分包方物料分页对象 | ||||||
|  |      * @return 分包方物料分页对象视图 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public Page<SubContractorMaterialVo> getVoPage(Page<SubContractorMaterial> contractorPage) { | ||||||
|  |         List<SubContractorMaterial> contractorMaterialList = contractorPage.getRecords(); | ||||||
|  |         Page<SubContractorMaterialVo> contractorMaterialVoPage = new Page<>( | ||||||
|  |             contractorPage.getCurrent(), | ||||||
|  |             contractorPage.getSize(), | ||||||
|  |             contractorPage.getTotal()); | ||||||
|  |         if (CollUtil.isEmpty(contractorMaterialList)) { | ||||||
|  |             return contractorMaterialVoPage; | ||||||
|  |         } | ||||||
|  |         Set<Long> contractorIdList = contractorMaterialList.stream().map(SubContractorMaterial::getContractorId).collect(Collectors.toSet()); | ||||||
|  |         Map<Long, SubContractor> contractorMap = contractorService.listByIds(contractorIdList) | ||||||
|  |             .stream().collect(Collectors.toMap(SubContractor::getId, v -> v)); | ||||||
|  |         List<SubContractorMaterialVo> contractorMaterialVoList = contractorMaterialList.stream().map(contractorMaterial -> { | ||||||
|  |             SubContractorMaterialVo contractorMaterialVo = new SubContractorMaterialVo(); | ||||||
|  |             BeanUtils.copyProperties(contractorMaterial, contractorMaterialVo); | ||||||
|  |             Long contractorId = contractorMaterial.getContractorId(); | ||||||
|  |             if (contractorMap.containsKey(contractorId)) { | ||||||
|  |                 contractorMaterialVo.setContractorName(contractorMap.get(contractorId).getName()); | ||||||
|  |             } | ||||||
|  |             return contractorMaterialVo; | ||||||
|  |         }).toList(); | ||||||
|  |         contractorMaterialVoPage.setRecords(contractorMaterialVoList); | ||||||
|  |         return contractorMaterialVoPage; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.service.impl; | package org.dromara.contractor.service.impl; | ||||||
| 
 | 
 | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.core.util.PhoneUtil; | import cn.hutool.core.util.PhoneUtil; | ||||||
| @ -16,16 +16,16 @@ 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.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractor.SubContractorQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.contractor.SubContractorUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.contractor.SubContractorVo; | ||||||
|  | import org.dromara.contractor.mapper.SubContractorMapper; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.dromara.project.domain.BusProject; | import org.dromara.project.domain.BusProject; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorCreateReq; | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorQueryReq; |  | ||||||
| import org.dromara.project.domain.dto.contractor.BusContractorUpdateReq; |  | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; |  | ||||||
| import org.dromara.project.mapper.BusContractorMapper; |  | ||||||
| import org.dromara.project.service.IBusConstructionUserService; |  | ||||||
| import org.dromara.project.service.IBusContractorService; |  | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.dromara.system.domain.bo.SysDeptBo; | import org.dromara.system.domain.bo.SysDeptBo; | ||||||
| import org.dromara.system.service.ISysDeptService; | import org.dromara.system.service.ISysDeptService; | ||||||
| @ -46,11 +46,11 @@ import java.util.Map; | |||||||
|  * @date 2025-03-07 |  * @date 2025-03-07 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, BusContractor> | public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, SubContractor> | ||||||
|     implements IBusContractorService { |     implements ISubContractorService { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserService constructionUserService; |     private ISubConstructionUserService constructionUserService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
| @ -68,8 +68,8 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包单位 |      * @return 分包单位 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusContractorVo queryById(Long id) { |     public SubContractorVo queryById(Long id) { | ||||||
|         BusContractor contractor = this.getById(id); |         SubContractor contractor = this.getById(id); | ||||||
|         if (contractor == null) { |         if (contractor == null) { | ||||||
|             throw new ServiceException("分包单位信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("分包单位信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -84,9 +84,9 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包单位分页列表 |      * @return 分包单位分页列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public TableDataInfo<BusContractorVo> queryPageList(BusContractorQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubContractorVo> queryPageList(SubContractorQueryReq req, PageQuery pageQuery) { | ||||||
|         // 查询数据库 |         // 查询数据库 | ||||||
|         Page<BusContractor> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); |         Page<SubContractor> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); | ||||||
|         return TableDataInfo.build(this.getVoPage(result)); |         return TableDataInfo.build(this.getVoPage(result)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -97,9 +97,9 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包单位列表 |      * @return 分包单位列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusContractorVo> queryList(BusContractorQueryReq req) { |     public List<SubContractorVo> queryList(SubContractorQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusContractor> lqw = this.buildQueryWrapper(req); |         LambdaQueryWrapper<SubContractor> lqw = this.buildQueryWrapper(req); | ||||||
|         List<BusContractor> list = this.list(lqw); |         List<SubContractor> list = this.list(lqw); | ||||||
|         return list.stream().map(this::getVo).toList(); |         return list.stream().map(this::getVo).toList(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -111,9 +111,9 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Long insertByBo(BusContractorCreateReq req) { |     public Long insertByBo(SubContractorCreateReq req) { | ||||||
|         // 将实体类和 DTO 进行转换 |         // 将实体类和 DTO 进行转换 | ||||||
|         BusContractor contractor = new BusContractor(); |         SubContractor contractor = new SubContractor(); | ||||||
|         BeanUtils.copyProperties(req, contractor); |         BeanUtils.copyProperties(req, contractor); | ||||||
|         // 数据转换 |         // 数据转换 | ||||||
|         Map<String, Long> fileMap = req.getFileMap(); |         Map<String, Long> fileMap = req.getFileMap(); | ||||||
| @ -122,7 +122,7 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|         // 数据校验 |         // 数据校验 | ||||||
|         validEntityBeforeSave(contractor, true); |         validEntityBeforeSave(contractor, true); | ||||||
|         String name = req.getName(); |         String name = req.getName(); | ||||||
|         Long count = this.lambdaQuery().eq(BusContractor::getName, name).count(); |         Long count = this.lambdaQuery().eq(SubContractor::getName, name).count(); | ||||||
|         if (count > 0) { |         if (count > 0) { | ||||||
|             throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); |             throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
| @ -166,9 +166,9 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateByBo(BusContractorUpdateReq req) { |     public Boolean updateByBo(SubContractorUpdateReq req) { | ||||||
|         // 将实体类和 DTO 进行转换 |         // 将实体类和 DTO 进行转换 | ||||||
|         BusContractor contractor = new BusContractor(); |         SubContractor contractor = new SubContractor(); | ||||||
|         BeanUtils.copyProperties(req, contractor); |         BeanUtils.copyProperties(req, contractor); | ||||||
|         // 数据转换 |         // 数据转换 | ||||||
|         Map<String, Long> fileMap = req.getFileMap(); |         Map<String, Long> fileMap = req.getFileMap(); | ||||||
| @ -177,13 +177,13 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|         // 数据校验 |         // 数据校验 | ||||||
|         validEntityBeforeSave(contractor, false); |         validEntityBeforeSave(contractor, false); | ||||||
|         // 判断是否存在 |         // 判断是否存在 | ||||||
|         BusContractor oldContractor = this.getById(contractor.getId()); |         SubContractor oldContractor = this.getById(contractor.getId()); | ||||||
|         if (oldContractor == null) { |         if (oldContractor == null) { | ||||||
|             throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         // 判断名称是否重复 |         // 判断名称是否重复 | ||||||
|         if (!oldContractor.getName().equals(req.getName())) { |         if (!oldContractor.getName().equals(req.getName())) { | ||||||
|             Long count = this.lambdaQuery().eq(BusContractor::getName, req.getName()).count(); |             Long count = this.lambdaQuery().eq(SubContractor::getName, req.getName()).count(); | ||||||
|             if (count > 0) { |             if (count > 0) { | ||||||
|                 throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); |                 throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||||
|             } |             } | ||||||
| @ -195,7 +195,7 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|     /** |     /** | ||||||
|      * 保存前的数据校验 |      * 保存前的数据校验 | ||||||
|      */ |      */ | ||||||
|     private void validEntityBeforeSave(BusContractor entity, Boolean create) { |     private void validEntityBeforeSave(SubContractor entity, Boolean create) { | ||||||
|         // 做一些数据校验,如唯一约束 |         // 做一些数据校验,如唯一约束 | ||||||
|         String name = entity.getName(); |         String name = entity.getName(); | ||||||
|         String principal = entity.getPrincipal(); |         String principal = entity.getPrincipal(); | ||||||
| @ -231,14 +231,14 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         List<BusContractor> contractorList = this.listByIds(ids); |         List<SubContractor> contractorList = this.listByIds(ids); | ||||||
|         // 做一些业务上的校验,判断是否需要校验 |         // 做一些业务上的校验,判断是否需要校验 | ||||||
|         if (isValid) { |         if (isValid) { | ||||||
|             // 仅当前项目下的用户可以删除 |             // 仅当前项目下的用户可以删除 | ||||||
|             List<Long> projectIdList = contractorList.stream().map(BusContractor::getProjectId).toList(); |             List<Long> projectIdList = contractorList.stream().map(SubContractor::getProjectId).toList(); | ||||||
|             projectService.validAuth(projectIdList, userId); |             projectService.validAuth(projectIdList, userId); | ||||||
|             // 判断当前分包公司下是否还包含施工人员 |             // 判断当前分包公司下是否还包含施工人员 | ||||||
|             QueryWrapper<BusConstructionUser> queryWrapper = new QueryWrapper<>(); |             QueryWrapper<SubConstructionUser> queryWrapper = new QueryWrapper<>(); | ||||||
|             queryWrapper.in("contractor_id", ids); |             queryWrapper.in("contractor_id", ids); | ||||||
|             if (constructionUserService.count(queryWrapper) > 0) { |             if (constructionUserService.count(queryWrapper) > 0) { | ||||||
|                 throw new ServiceException("删除分包单位失败,删除分包单位下存在施工人员", HttpStatus.BAD_REQUEST); |                 throw new ServiceException("删除分包单位失败,删除分包单位下存在施工人员", HttpStatus.BAD_REQUEST); | ||||||
| @ -258,9 +258,9 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包公司视图对象 |      * @return 分包公司视图对象 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusContractorVo getVo(BusContractor contractor) { |     public SubContractorVo getVo(SubContractor contractor) { | ||||||
|         // 对象转封装类 |         // 对象转封装类 | ||||||
|         BusContractorVo contractorVo = new BusContractorVo(); |         SubContractorVo contractorVo = new SubContractorVo(); | ||||||
|         if (contractor == null) { |         if (contractor == null) { | ||||||
|             return contractorVo; |             return contractorVo; | ||||||
|         } |         } | ||||||
| @ -284,8 +284,8 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包公司查询条件封装 |      * @return 分包公司查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusContractor> buildQueryWrapper(BusContractorQueryReq req) { |     public LambdaQueryWrapper<SubContractor> buildQueryWrapper(SubContractorQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusContractor> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubContractor> lqw = new LambdaQueryWrapper<>(); | ||||||
|         if (req == null) { |         if (req == null) { | ||||||
|             return lqw; |             return lqw; | ||||||
|         } |         } | ||||||
| @ -300,16 +300,16 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|         String contractorType = req.getContractorType(); |         String contractorType = req.getContractorType(); | ||||||
|         String remark = req.getRemark(); |         String remark = req.getRemark(); | ||||||
|         // 模糊查询 |         // 模糊查询 | ||||||
|         lqw.like(StringUtils.isNotBlank(name), BusContractor::getName, name); |         lqw.like(StringUtils.isNotBlank(name), SubContractor::getName, name); | ||||||
|         lqw.like(StringUtils.isNotBlank(principal), BusContractor::getPrincipal, principal); |         lqw.like(StringUtils.isNotBlank(principal), SubContractor::getPrincipal, principal); | ||||||
|         lqw.like(StringUtils.isNotBlank(principalPhone), BusContractor::getPrincipalPhone, principalPhone); |         lqw.like(StringUtils.isNotBlank(principalPhone), SubContractor::getPrincipalPhone, principalPhone); | ||||||
|         lqw.like(StringUtils.isNotBlank(custodian), BusContractor::getCustodian, custodian); |         lqw.like(StringUtils.isNotBlank(custodian), SubContractor::getCustodian, custodian); | ||||||
|         lqw.like(StringUtils.isNotBlank(custodianPhone), BusContractor::getCustodianPhone, custodianPhone); |         lqw.like(StringUtils.isNotBlank(custodianPhone), SubContractor::getCustodianPhone, custodianPhone); | ||||||
|         lqw.like(StringUtils.isNotBlank(remark), BusContractor::getRemark, remark); |         lqw.like(StringUtils.isNotBlank(remark), SubContractor::getRemark, remark); | ||||||
|         // 精确查询 |         // 精确查询 | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(id), BusContractor::getId, id); |         lqw.eq(ObjectUtils.isNotEmpty(id), SubContractor::getId, id); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusContractor::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractor::getProjectId, projectId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(contractorType), BusContractor::getContractorType, contractorType); |         lqw.eq(StringUtils.isNotBlank(contractorType), SubContractor::getContractorType, contractorType); | ||||||
|         return lqw; |         return lqw; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -320,16 +320,16 @@ public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, B | |||||||
|      * @return 分包公司分页对象视图 |      * @return 分包公司分页对象视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<BusContractorVo> getVoPage(Page<BusContractor> contractorPage) { |     public Page<SubContractorVo> getVoPage(Page<SubContractor> contractorPage) { | ||||||
|         List<BusContractor> contractorList = contractorPage.getRecords(); |         List<SubContractor> contractorList = contractorPage.getRecords(); | ||||||
|         Page<BusContractorVo> contractorVoPage = new Page<>( |         Page<SubContractorVo> contractorVoPage = new Page<>( | ||||||
|             contractorPage.getCurrent(), |             contractorPage.getCurrent(), | ||||||
|             contractorPage.getSize(), |             contractorPage.getSize(), | ||||||
|             contractorPage.getTotal()); |             contractorPage.getTotal()); | ||||||
|         if (CollUtil.isEmpty(contractorList)) { |         if (CollUtil.isEmpty(contractorList)) { | ||||||
|             return contractorVoPage; |             return contractorVoPage; | ||||||
|         } |         } | ||||||
|         List<BusContractorVo> contractorVoList = contractorList.stream().map(this::getVo).toList(); |         List<SubContractorVo> contractorVoList = contractorList.stream().map(this::getVo).toList(); | ||||||
|         contractorVoPage.setRecords(contractorVoList); |         contractorVoPage.setRecords(contractorVoList); | ||||||
|         return contractorVoPage; |         return contractorVoPage; | ||||||
|     } |     } | ||||||
| @ -12,22 +12,24 @@ 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.common.satoken.utils.LoginHelper; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.SubContractorTool; | ||||||
| import org.dromara.contractor.domain.SubContractorToolRecord; | import org.dromara.contractor.domain.SubContractorToolRecord; | ||||||
| import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordCreateReq; | import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordCreateReq; | ||||||
| import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordQueryReq; | import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordQueryReq; | ||||||
| import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordUpdateReq; | import org.dromara.contractor.domain.dto.contractortoolentry.SubContractorToolRecordUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.enums.SubContractorRecordEnum; | ||||||
| import org.dromara.contractor.domain.vo.contractortoolentry.SubContractorToolRecordVo; | import org.dromara.contractor.domain.vo.contractortoolentry.SubContractorToolRecordVo; | ||||||
| import org.dromara.contractor.mapper.SubContractorToolRecordMapper; | import org.dromara.contractor.mapper.SubContractorToolRecordMapper; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.dromara.contractor.service.ISubContractorToolRecordService; | import org.dromara.contractor.service.ISubContractorToolRecordService; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.service.ISubContractorToolService; | ||||||
| import org.dromara.project.domain.BusContractorTool; |  | ||||||
| import org.dromara.project.service.IBusContractorService; |  | ||||||
| import org.dromara.project.service.IBusContractorToolService; |  | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| @ -48,10 +50,10 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorService contractorService; |     private ISubContractorService contractorService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorToolService contractorToolService; |     private ISubContractorToolService contractorToolService; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询分包方工器具记录 |      * 查询分包方工器具记录 | ||||||
| @ -100,6 +102,7 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|      * @return 新增分包方工器具记录主键id |      * @return 新增分包方工器具记录主键id | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Long insertByBo(SubContractorToolRecordCreateReq req) { |     public Long insertByBo(SubContractorToolRecordCreateReq req) { | ||||||
|         SubContractorToolRecord entry = new SubContractorToolRecord(); |         SubContractorToolRecord entry = new SubContractorToolRecord(); | ||||||
|         BeanUtils.copyProperties(req, entry); |         BeanUtils.copyProperties(req, entry); | ||||||
| @ -107,16 +110,21 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|         if (contractorToolId == null) { |         if (contractorToolId == null) { | ||||||
|             throw new ServiceException("工器具id不能为空", HttpStatus.BAD_REQUEST); |             throw new ServiceException("工器具id不能为空", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         BusContractorTool contractorTool = contractorToolService.getById(contractorToolId); |         SubContractorTool contractorTool = contractorToolService.getById(contractorToolId); | ||||||
|         if (contractorTool == null) { |         if (contractorTool == null) { | ||||||
|             throw new ServiceException("分包方工器具不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("分包方工器具不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         // 填充默认值 |         // 填充默认值 | ||||||
|         entry.setProjectId(contractorTool.getProjectId()); |         entry.setProjectId(contractorTool.getProjectId()); | ||||||
|         entry.setContractorId(contractorTool.getContractorId()); |         entry.setContractorId(contractorTool.getContractorId()); | ||||||
|  |         String recordType = req.getRecordType(); | ||||||
|  |         BigDecimal recordNumber = req.getRecordNumber(); | ||||||
|  |         // 同步更新工具数量 | ||||||
|  |         BigDecimal number = this.computeRemainingToolNumber(contractorTool, recordType, recordNumber); | ||||||
|  |         entry.setRemainingNumber(number); | ||||||
|         boolean save = this.save(entry); |         boolean save = this.save(entry); | ||||||
|         if (!save) { |         if (!save) { | ||||||
|             throw new ServiceException("分包方工器具记录失败", HttpStatus.ERROR); |             throw new ServiceException("保存分包方工器具记录失败", HttpStatus.ERROR); | ||||||
|         } |         } | ||||||
|         return entry.getId(); |         return entry.getId(); | ||||||
|     } |     } | ||||||
| @ -128,6 +136,7 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean updateByBo(SubContractorToolRecordUpdateReq req) { |     public Boolean updateByBo(SubContractorToolRecordUpdateReq req) { | ||||||
|         SubContractorToolRecord entry = new SubContractorToolRecord(); |         SubContractorToolRecord entry = new SubContractorToolRecord(); | ||||||
|         BeanUtils.copyProperties(req, entry); |         BeanUtils.copyProperties(req, entry); | ||||||
| @ -135,6 +144,15 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|         if (contractorToolEntry == null) { |         if (contractorToolEntry == null) { | ||||||
|             throw new ServiceException("修改分包方工器具记录失败,数据不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("修改分包方工器具记录失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|  |         SubContractorTool contractorTool = contractorToolService.getById(contractorToolEntry.getContractorToolId()); | ||||||
|  |         if (contractorTool == null) { | ||||||
|  |             throw new ServiceException("分包方工器具不存在", HttpStatus.NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         String recordType = contractorToolEntry.getRecordType(); | ||||||
|  |         BigDecimal recordNumber = req.getRecordNumber(); | ||||||
|  |         // 同步更新工具数量 | ||||||
|  |         BigDecimal number = this.computeRemainingToolNumber(contractorTool, recordType, recordNumber); | ||||||
|  |         entry.setRemainingNumber(number); | ||||||
|         boolean result = this.updateById(entry); |         boolean result = this.updateById(entry); | ||||||
|         if (!result) { |         if (!result) { | ||||||
|             throw new ServiceException("修改分包方工器具记录失败", HttpStatus.ERROR); |             throw new ServiceException("修改分包方工器具记录失败", HttpStatus.ERROR); | ||||||
| @ -165,21 +183,21 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具记录视图对象 |      * 获取分包方工器具记录视图对象 | ||||||
|      * |      * | ||||||
|      * @param contractorToolEntry 分包方工器具记录对象 |      * @param subContractorToolRecord 分包方工器具记录对象 | ||||||
|      * @return 分包方工器具记录视图对象 |      * @return 分包方工器具记录视图对象 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public SubContractorToolRecordVo getVo(SubContractorToolRecord contractorToolEntry) { |     public SubContractorToolRecordVo getVo(SubContractorToolRecord subContractorToolRecord) { | ||||||
|         SubContractorToolRecordVo vo = new SubContractorToolRecordVo(); |         SubContractorToolRecordVo vo = new SubContractorToolRecordVo(); | ||||||
|         if (contractorToolEntry == null) { |         if (subContractorToolRecord == null) { | ||||||
|             throw new ServiceException("数据不存在"); |             throw new ServiceException("数据不存在"); | ||||||
|         } |         } | ||||||
|         BeanUtils.copyProperties(contractorToolEntry, vo); |         BeanUtils.copyProperties(subContractorToolRecord, vo); | ||||||
|         BusContractorTool contractorTool = contractorToolService.getById(vo.getContractorToolId()); |         SubContractorTool contractorTool = contractorToolService.getById(vo.getContractorToolId()); | ||||||
|         if (contractorTool != null) { |         if (contractorTool != null) { | ||||||
|             vo.setContractorToolName(contractorTool.getToolName()); |             vo.setContractorToolName(contractorTool.getToolName()); | ||||||
|         } |         } | ||||||
|         BusContractor contractor = contractorService.getById(vo.getContractorId()); |         SubContractor contractor = contractorService.getById(vo.getContractorId()); | ||||||
|         if (contractor != null) { |         if (contractor != null) { | ||||||
|             vo.setContractorName(contractor.getName()); |             vo.setContractorName(contractor.getName()); | ||||||
|         } |         } | ||||||
| @ -203,9 +221,11 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|         Long contractorToolId = req.getContractorToolId(); |         Long contractorToolId = req.getContractorToolId(); | ||||||
|         String checkNum = req.getCheckNum(); |         String checkNum = req.getCheckNum(); | ||||||
|         String checkDept = req.getCheckDept(); |         String checkDept = req.getCheckDept(); | ||||||
|  |         String recordType = req.getRecordType(); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractorToolRecord::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractorToolRecord::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubContractorToolRecord::getContractorId, contractorId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubContractorToolRecord::getContractorId, contractorId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorToolId), SubContractorToolRecord::getContractorToolId, contractorToolId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorToolId), SubContractorToolRecord::getContractorToolId, contractorToolId); | ||||||
|  |         lqw.eq(StringUtils.isNotBlank(recordType), SubContractorToolRecord::getRecordType, recordType); | ||||||
|         lqw.like(StringUtils.isNotBlank(checkNum), SubContractorToolRecord::getCheckNum, checkNum); |         lqw.like(StringUtils.isNotBlank(checkNum), SubContractorToolRecord::getCheckNum, checkNum); | ||||||
|         lqw.like(StringUtils.isNotBlank(checkDept), SubContractorToolRecord::getCheckDept, checkDept); |         lqw.like(StringUtils.isNotBlank(checkDept), SubContractorToolRecord::getCheckDept, checkDept); | ||||||
|         return lqw; |         return lqw; | ||||||
| @ -214,25 +234,25 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|     /** |     /** | ||||||
|      * 获取分包方工器具记录分页对象视图 |      * 获取分包方工器具记录分页对象视图 | ||||||
|      * |      * | ||||||
|      * @param contractorToolEntryPage 分包方工器具记录分页对象 |      * @param contractorToolRecordPage 分包方工器具记录分页对象 | ||||||
|      * @return 分包方工器具记录分页对象视图 |      * @return 分包方工器具记录分页对象视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<SubContractorToolRecordVo> getVoPage(Page<SubContractorToolRecord> contractorToolEntryPage) { |     public Page<SubContractorToolRecordVo> getVoPage(Page<SubContractorToolRecord> contractorToolRecordPage) { | ||||||
|         List<SubContractorToolRecord> contractorToolEntryList = contractorToolEntryPage.getRecords(); |         List<SubContractorToolRecord> contractorToolEntryList = contractorToolRecordPage.getRecords(); | ||||||
|         Page<SubContractorToolRecordVo> contractorToolEntryVoPage = new Page<>( |         Page<SubContractorToolRecordVo> contractorToolEntryVoPage = new Page<>( | ||||||
|             contractorToolEntryPage.getCurrent(), |             contractorToolRecordPage.getCurrent(), | ||||||
|             contractorToolEntryPage.getSize(), |             contractorToolRecordPage.getSize(), | ||||||
|             contractorToolEntryPage.getTotal()); |             contractorToolRecordPage.getTotal()); | ||||||
|         if (CollUtil.isEmpty(contractorToolEntryList)) { |         if (CollUtil.isEmpty(contractorToolEntryList)) { | ||||||
|             return contractorToolEntryVoPage; |             return contractorToolEntryVoPage; | ||||||
|         } |         } | ||||||
|         Set<Long> contractorIdList = contractorToolEntryList.stream().map(SubContractorToolRecord::getContractorId).collect(Collectors.toSet()); |         Set<Long> contractorIdList = contractorToolEntryList.stream().map(SubContractorToolRecord::getContractorId).collect(Collectors.toSet()); | ||||||
|         Map<Long, BusContractor> contractorMap = contractorService.listByIds(contractorIdList) |         Map<Long, SubContractor> contractorMap = contractorService.listByIds(contractorIdList) | ||||||
|             .stream().collect(Collectors.toMap(BusContractor::getId, v -> v)); |             .stream().collect(Collectors.toMap(SubContractor::getId, v -> v)); | ||||||
|         Set<Long> contractorToolIdList = contractorToolEntryList.stream().map(SubContractorToolRecord::getContractorToolId).collect(Collectors.toSet()); |         Set<Long> contractorToolIdList = contractorToolEntryList.stream().map(SubContractorToolRecord::getContractorToolId).collect(Collectors.toSet()); | ||||||
|         Map<Long, BusContractorTool> contractorToolMap = contractorToolService.listByIds(contractorToolIdList) |         Map<Long, SubContractorTool> contractorToolMap = contractorToolService.listByIds(contractorToolIdList) | ||||||
|             .stream().collect(Collectors.toMap(BusContractorTool::getId, v -> v)); |             .stream().collect(Collectors.toMap(SubContractorTool::getId, v -> v)); | ||||||
|         List<SubContractorToolRecordVo> contractorToolEntryVoList = contractorToolEntryList.stream().map(entity -> { |         List<SubContractorToolRecordVo> contractorToolEntryVoList = contractorToolEntryList.stream().map(entity -> { | ||||||
|             SubContractorToolRecordVo vo = new SubContractorToolRecordVo(); |             SubContractorToolRecordVo vo = new SubContractorToolRecordVo(); | ||||||
|             BeanUtils.copyProperties(entity, vo); |             BeanUtils.copyProperties(entity, vo); | ||||||
| @ -247,4 +267,39 @@ public class SubContractorToolRecordServiceImpl extends ServiceImpl<SubContracto | |||||||
|         contractorToolEntryVoPage.setRecords(contractorToolEntryVoList); |         contractorToolEntryVoPage.setRecords(contractorToolEntryVoList); | ||||||
|         return contractorToolEntryVoPage; |         return contractorToolEntryVoPage; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 计算剩余库存并更新库存对象返回剩余数量 | ||||||
|  |      * | ||||||
|  |      * @param contractorTool 当前库存工具 | ||||||
|  |      * @param recordType     操作类型(入库/出库) | ||||||
|  |      * @param recordNumber   本次操作数量 | ||||||
|  |      * @return 剩余数量 | ||||||
|  |      */ | ||||||
|  |     private BigDecimal computeRemainingToolNumber(SubContractorTool contractorTool, String recordType, BigDecimal recordNumber) { | ||||||
|  |         if (recordNumber == null) { | ||||||
|  |             throw new ServiceException("工器具数量不能为空", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         BigDecimal toolNumber = contractorTool.getToolNumber(); | ||||||
|  |         SubContractorTool newContractorTool = new SubContractorTool(); | ||||||
|  |         newContractorTool.setId(contractorTool.getId()); | ||||||
|  |         BigDecimal result; | ||||||
|  |         if (SubContractorRecordEnum.PUT.getValue().equals(recordType)) { | ||||||
|  |             result = toolNumber.add(recordNumber); | ||||||
|  |         } else if (SubContractorRecordEnum.OUT.getValue().equals(recordType)) { | ||||||
|  |             result = toolNumber.subtract(recordNumber); | ||||||
|  |             if (result.compareTo(BigDecimal.ZERO) < 0) { | ||||||
|  |                 throw new ServiceException("出库数量不能大于库存数量", HttpStatus.ERROR); | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             throw new ServiceException("分包方工器具记录类型错误", HttpStatus.BAD_REQUEST); | ||||||
|  |         } | ||||||
|  |         newContractorTool.setToolNumber(result); | ||||||
|  |         boolean update = contractorToolService.updateById(newContractorTool); | ||||||
|  |         if (!update) { | ||||||
|  |             throw new ServiceException("更新分包方工器具信息异常", HttpStatus.ERROR); | ||||||
|  |         } | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.service.impl; | package org.dromara.contractor.service.impl; | ||||||
| 
 | 
 | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| @ -12,15 +12,15 @@ 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.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
| import org.dromara.project.domain.BusContractorTool; | import org.dromara.contractor.domain.SubContractorTool; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolCreateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolCreateReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolQueryReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolQueryReq; | ||||||
| import org.dromara.project.domain.dto.contractortool.BusContractorToolUpdateReq; | import org.dromara.contractor.domain.dto.contractortool.SubContractorToolUpdateReq; | ||||||
| import org.dromara.project.domain.vo.contractortool.BusContractorToolVo; | import org.dromara.contractor.domain.vo.contractortool.SubContractorToolVo; | ||||||
| import org.dromara.project.mapper.BusContractorToolMapper; | import org.dromara.contractor.mapper.SubContractorToolMapper; | ||||||
| import org.dromara.project.service.IBusContractorService; | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.dromara.project.service.IBusContractorToolService; | import org.dromara.contractor.service.ISubContractorToolService; | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @ -39,14 +39,14 @@ import java.util.stream.Collectors; | |||||||
|  * @date 2025-06-26 |  * @date 2025-06-26 | ||||||
|  */ |  */ | ||||||
| @Service | @Service | ||||||
| public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolMapper, BusContractorTool> | public class SubContractorToolServiceImpl extends ServiceImpl<SubContractorToolMapper, SubContractorTool> | ||||||
|     implements IBusContractorToolService { |     implements ISubContractorToolService { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorService contractorService; |     private ISubContractorService contractorService; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 查询分包方工器具 |      * 查询分包方工器具 | ||||||
| @ -55,8 +55,8 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具 |      * @return 分包方工器具 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusContractorToolVo queryById(Long id) { |     public SubContractorToolVo queryById(Long id) { | ||||||
|         BusContractorTool contractorTool = this.getById(id); |         SubContractorTool contractorTool = this.getById(id); | ||||||
|         if (contractorTool == null) { |         if (contractorTool == null) { | ||||||
|             throw new ServiceException("分包方工器具信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("分包方工器具信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -71,8 +71,8 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具分页列表 |      * @return 分包方工器具分页列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public TableDataInfo<BusContractorToolVo> queryPageList(BusContractorToolQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubContractorToolVo> queryPageList(SubContractorToolQueryReq req, PageQuery pageQuery) { | ||||||
|         Page<BusContractorTool> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); |         Page<SubContractorTool> result = this.page(pageQuery.build(), this.buildQueryWrapper(req)); | ||||||
|         return TableDataInfo.build(this.getVoPage(result)); |         return TableDataInfo.build(this.getVoPage(result)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -83,8 +83,8 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具列表 |      * @return 分包方工器具列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusContractorToolVo> queryList(BusContractorToolQueryReq req) { |     public List<SubContractorToolVo> queryList(SubContractorToolQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusContractorTool> lqw = this.buildQueryWrapper(req); |         LambdaQueryWrapper<SubContractorTool> lqw = this.buildQueryWrapper(req); | ||||||
|         return this.list(lqw).stream().map(this::getVo).toList(); |         return this.list(lqw).stream().map(this::getVo).toList(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -95,8 +95,8 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 新增分包工器具主键id |      * @return 新增分包工器具主键id | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Long insertByBo(BusContractorToolCreateReq req) { |     public Long insertByBo(SubContractorToolCreateReq req) { | ||||||
|         BusContractorTool contractorTool = new BusContractorTool(); |         SubContractorTool contractorTool = new SubContractorTool(); | ||||||
|         BeanUtils.copyProperties(req, contractorTool); |         BeanUtils.copyProperties(req, contractorTool); | ||||||
|         validEntityBeforeSave(contractorTool, true); |         validEntityBeforeSave(contractorTool, true); | ||||||
|         boolean result = this.save(contractorTool); |         boolean result = this.save(contractorTool); | ||||||
| @ -113,13 +113,13 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateByBo(BusContractorToolUpdateReq req) { |     public Boolean updateByBo(SubContractorToolUpdateReq req) { | ||||||
|         Long id = req.getId(); |         Long id = req.getId(); | ||||||
|         BusContractorTool oldContractorTool = this.getById(id); |         SubContractorTool oldContractorTool = this.getById(id); | ||||||
|         if (oldContractorTool == null) { |         if (oldContractorTool == null) { | ||||||
|             throw new ServiceException("修改分包方工器具失败,数据不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("修改分包方工器具失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         BusContractorTool contractorTool = new BusContractorTool(); |         SubContractorTool contractorTool = new SubContractorTool(); | ||||||
|         BeanUtils.copyProperties(req, contractorTool); |         BeanUtils.copyProperties(req, contractorTool); | ||||||
|         validEntityBeforeSave(contractorTool, false); |         validEntityBeforeSave(contractorTool, false); | ||||||
|         boolean result = this.updateById(contractorTool); |         boolean result = this.updateById(contractorTool); | ||||||
| @ -132,7 +132,7 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|     /** |     /** | ||||||
|      * 保存前的数据校验 |      * 保存前的数据校验 | ||||||
|      */ |      */ | ||||||
|     private void validEntityBeforeSave(BusContractorTool entity, Boolean create) { |     private void validEntityBeforeSave(SubContractorTool entity, Boolean create) { | ||||||
|         Long projectId = entity.getProjectId(); |         Long projectId = entity.getProjectId(); | ||||||
|         Long contractorId = entity.getContractorId(); |         Long contractorId = entity.getContractorId(); | ||||||
|         if (create) { |         if (create) { | ||||||
| @ -162,10 +162,10 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         List<BusContractorTool> contractorToolList = this.listByIds(ids); |         List<SubContractorTool> contractorToolList = this.listByIds(ids); | ||||||
|         if (isValid) { |         if (isValid) { | ||||||
|             //TODO 做一些业务上的校验,判断是否需要校验 |             //TODO 做一些业务上的校验,判断是否需要校验 | ||||||
|             List<Long> projectIdList = contractorToolList.stream().map(BusContractorTool::getProjectId).distinct().toList(); |             List<Long> projectIdList = contractorToolList.stream().map(SubContractorTool::getProjectId).distinct().toList(); | ||||||
|             projectService.validAuth(projectIdList, userId); |             projectService.validAuth(projectIdList, userId); | ||||||
|         } |         } | ||||||
|         return this.removeBatchByIds(ids); |         return this.removeBatchByIds(ids); | ||||||
| @ -178,14 +178,14 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具视图对象 |      * @return 分包方工器具视图对象 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusContractorToolVo getVo(BusContractorTool contractorTool) { |     public SubContractorToolVo getVo(SubContractorTool contractorTool) { | ||||||
|         BusContractorToolVo contractorToolVo = new BusContractorToolVo(); |         SubContractorToolVo contractorToolVo = new SubContractorToolVo(); | ||||||
|         if (contractorTool == null) { |         if (contractorTool == null) { | ||||||
|             return contractorToolVo; |             return contractorToolVo; | ||||||
|         } |         } | ||||||
|         BeanUtils.copyProperties(contractorTool, contractorToolVo); |         BeanUtils.copyProperties(contractorTool, contractorToolVo); | ||||||
|         Long contractorId = contractorTool.getContractorId(); |         Long contractorId = contractorTool.getContractorId(); | ||||||
|         BusContractor contractor = contractorService.getById(contractorId); |         SubContractor contractor = contractorService.getById(contractorId); | ||||||
|         contractorToolVo.setContractorName(contractor.getName()); |         contractorToolVo.setContractorName(contractor.getName()); | ||||||
|         return contractorToolVo; |         return contractorToolVo; | ||||||
|     } |     } | ||||||
| @ -197,18 +197,18 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具查询条件封装 |      * @return 分包方工器具查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusContractorTool> buildQueryWrapper(BusContractorToolQueryReq req) { |     public LambdaQueryWrapper<SubContractorTool> buildQueryWrapper(SubContractorToolQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusContractorTool> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubContractorTool> lqw = new LambdaQueryWrapper<>(); | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
|         Long contractorId = req.getContractorId(); |         Long contractorId = req.getContractorId(); | ||||||
|         String toolName = req.getToolName(); |         String toolName = req.getToolName(); | ||||||
|         String toolType = req.getToolType(); |         String toolType = req.getToolType(); | ||||||
|         String toolModel = req.getToolModel(); |         String toolModel = req.getToolModel(); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusContractorTool::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubContractorTool::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorId), BusContractorTool::getContractorId, contractorId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubContractorTool::getContractorId, contractorId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(toolType), BusContractorTool::getToolType, toolType); |         lqw.eq(StringUtils.isNotBlank(toolType), SubContractorTool::getToolType, toolType); | ||||||
|         lqw.like(StringUtils.isNotBlank(toolName), BusContractorTool::getToolName, toolName); |         lqw.like(StringUtils.isNotBlank(toolName), SubContractorTool::getToolName, toolName); | ||||||
|         lqw.like(StringUtils.isNotBlank(toolModel), BusContractorTool::getToolModel, toolModel); |         lqw.like(StringUtils.isNotBlank(toolModel), SubContractorTool::getToolModel, toolModel); | ||||||
|         return lqw; |         return lqw; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -219,20 +219,20 @@ public class BusContractorToolServiceImpl extends ServiceImpl<BusContractorToolM | |||||||
|      * @return 分包方工器具分页对象视图 |      * @return 分包方工器具分页对象视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<BusContractorToolVo> getVoPage(Page<BusContractorTool> contractorPage) { |     public Page<SubContractorToolVo> getVoPage(Page<SubContractorTool> contractorPage) { | ||||||
|         List<BusContractorTool> contractorToolList = contractorPage.getRecords(); |         List<SubContractorTool> contractorToolList = contractorPage.getRecords(); | ||||||
|         Page<BusContractorToolVo> contractorToolVoPage = new Page<>( |         Page<SubContractorToolVo> contractorToolVoPage = new Page<>( | ||||||
|             contractorPage.getCurrent(), |             contractorPage.getCurrent(), | ||||||
|             contractorPage.getSize(), |             contractorPage.getSize(), | ||||||
|             contractorPage.getTotal()); |             contractorPage.getTotal()); | ||||||
|         if (CollUtil.isEmpty(contractorToolList)) { |         if (CollUtil.isEmpty(contractorToolList)) { | ||||||
|             return contractorToolVoPage; |             return contractorToolVoPage; | ||||||
|         } |         } | ||||||
|         Set<Long> contractorIdList = contractorToolList.stream().map(BusContractorTool::getContractorId).collect(Collectors.toSet()); |         Set<Long> contractorIdList = contractorToolList.stream().map(SubContractorTool::getContractorId).collect(Collectors.toSet()); | ||||||
|         Map<Long, BusContractor> contractorMap = contractorService.listByIds(contractorIdList) |         Map<Long, SubContractor> contractorMap = contractorService.listByIds(contractorIdList) | ||||||
|             .stream().collect(Collectors.toMap(BusContractor::getId, v -> v)); |             .stream().collect(Collectors.toMap(SubContractor::getId, v -> v)); | ||||||
|         List<BusContractorToolVo> contractorToolVoList = contractorToolList.stream().map(contractorTool -> { |         List<SubContractorToolVo> contractorToolVoList = contractorToolList.stream().map(contractorTool -> { | ||||||
|             BusContractorToolVo contractorToolVo = new BusContractorToolVo(); |             SubContractorToolVo contractorToolVo = new SubContractorToolVo(); | ||||||
|             BeanUtils.copyProperties(contractorTool, contractorToolVo); |             BeanUtils.copyProperties(contractorTool, contractorToolVo); | ||||||
|             Long contractorId = contractorTool.getContractorId(); |             Long contractorId = contractorTool.getContractorId(); | ||||||
|             if (contractorMap.containsKey(contractorId)) { |             if (contractorMap.containsKey(contractorId)) { | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package org.dromara.project.service.impl; | package org.dromara.contractor.service.impl; | ||||||
| 
 | 
 | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| @ -13,17 +13,17 @@ 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.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.domain.BusContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.domain.SubSubcontract; | ||||||
|  | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractCreateReq; | ||||||
|  | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractQueryReq; | ||||||
|  | import org.dromara.contractor.domain.dto.subcontract.SubSubcontractUpdateReq; | ||||||
|  | import org.dromara.contractor.domain.vo.subcontract.SubSubcontractVo; | ||||||
|  | import org.dromara.contractor.mapper.SubSubcontractMapper; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
|  | import org.dromara.contractor.service.ISubSubcontractService; | ||||||
| import org.dromara.project.domain.BusProject; | import org.dromara.project.domain.BusProject; | ||||||
| import org.dromara.project.domain.BusSubcontract; |  | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractCreateReq; |  | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractQueryReq; |  | ||||||
| import org.dromara.project.domain.dto.subcontract.BusSubcontractUpdateReq; |  | ||||||
| import org.dromara.project.domain.vo.subcontract.BusSubcontractVo; |  | ||||||
| import org.dromara.project.mapper.BusSubcontractMapper; |  | ||||||
| import org.dromara.project.service.IBusContractorService; |  | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.dromara.project.service.IBusSubcontractService; |  | ||||||
| import org.dromara.system.service.ISysOssService; | import org.dromara.system.service.ISysOssService; | ||||||
| import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @ -43,14 +43,14 @@ import java.util.stream.Collectors; | |||||||
|  */ |  */ | ||||||
| @Slf4j | @Slf4j | ||||||
| @Service | @Service | ||||||
| public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, BusSubcontract> | public class SubSubcontractServiceImpl extends ServiceImpl<SubSubcontractMapper, SubSubcontract> | ||||||
|     implements IBusSubcontractService { |     implements ISubSubcontractService { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorService contractorService; |     private ISubContractorService contractorService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private ISysOssService ossService; |     private ISysOssService ossService; | ||||||
| @ -62,8 +62,8 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 分包合同 |      * @return 分包合同 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusSubcontractVo queryById(Long id) { |     public SubSubcontractVo queryById(Long id) { | ||||||
|         BusSubcontract subcontract = this.getById(id); |         SubSubcontract subcontract = this.getById(id); | ||||||
|         if (subcontract == null) { |         if (subcontract == null) { | ||||||
|             throw new ServiceException("分包合同信息不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("分包合同信息不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -78,9 +78,9 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 分包合同分页列表 |      * @return 分包合同分页列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public TableDataInfo<BusSubcontractVo> queryPageList(BusSubcontractQueryReq req, PageQuery pageQuery) { |     public TableDataInfo<SubSubcontractVo> queryPageList(SubSubcontractQueryReq req, PageQuery pageQuery) { | ||||||
|         LambdaQueryWrapper<BusSubcontract> lqw = buildQueryWrapper(req); |         LambdaQueryWrapper<SubSubcontract> lqw = buildQueryWrapper(req); | ||||||
|         Page<BusSubcontract> result = this.page(pageQuery.build(), lqw); |         Page<SubSubcontract> result = this.page(pageQuery.build(), lqw); | ||||||
|         return TableDataInfo.build(this.getVoPage(result)); |         return TableDataInfo.build(this.getVoPage(result)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -91,8 +91,8 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 分包合同列表 |      * @return 分包合同列表 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public List<BusSubcontractVo> queryList(BusSubcontractQueryReq req) { |     public List<SubSubcontractVo> queryList(SubSubcontractQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusSubcontract> lqw = buildQueryWrapper(req); |         LambdaQueryWrapper<SubSubcontract> lqw = buildQueryWrapper(req); | ||||||
|         return this.list(lqw).stream().map(this::getVo).toList(); |         return this.list(lqw).stream().map(this::getVo).toList(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -103,14 +103,14 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 新增主键id |      * @return 新增主键id | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Long insertByBo(BusSubcontractCreateReq req) { |     public Long insertByBo(SubSubcontractCreateReq req) { | ||||||
|         BusSubcontract subcontract = new BusSubcontract(); |         SubSubcontract subcontract = new SubSubcontract(); | ||||||
|         BeanUtils.copyProperties(req, subcontract); |         BeanUtils.copyProperties(req, subcontract); | ||||||
|         validEntityBeforeSave(subcontract); |         validEntityBeforeSave(subcontract); | ||||||
|         Long count = this.lambdaQuery() |         Long count = this.lambdaQuery() | ||||||
|             .eq(BusSubcontract::getProjectId, req.getProjectId()) |             .eq(SubSubcontract::getProjectId, req.getProjectId()) | ||||||
|             .eq(BusSubcontract::getContractorId, req.getContractorId()) |             .eq(SubSubcontract::getContractorId, req.getContractorId()) | ||||||
|             .eq(BusSubcontract::getContractFileId, req.getContractFileId()) |             .eq(SubSubcontract::getContractFileId, req.getContractFileId()) | ||||||
|             .count(); |             .count(); | ||||||
|         if (count > 0) { |         if (count > 0) { | ||||||
|             throw new ServiceException("已关联该项目合同", HttpStatus.BAD_REQUEST); |             throw new ServiceException("已关联该项目合同", HttpStatus.BAD_REQUEST); | ||||||
| @ -129,19 +129,19 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 是否修改成功 |      * @return 是否修改成功 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Boolean updateByBo(BusSubcontractUpdateReq req) { |     public Boolean updateByBo(SubSubcontractUpdateReq req) { | ||||||
|         BusSubcontract subcontract = new BusSubcontract(); |         SubSubcontract subcontract = new SubSubcontract(); | ||||||
|         BeanUtils.copyProperties(req, subcontract); |         BeanUtils.copyProperties(req, subcontract); | ||||||
|         validEntityBeforeSave(subcontract); |         validEntityBeforeSave(subcontract); | ||||||
|         Long id = req.getId(); |         Long id = req.getId(); | ||||||
|         BusSubcontract oldSubcontract = this.getById(id); |         SubSubcontract oldSubcontract = this.getById(id); | ||||||
|         if (oldSubcontract == null) { |         if (oldSubcontract == null) { | ||||||
|             throw new ServiceException("修改分包合同失败,数据不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("修改分包合同失败,数据不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         Long count = this.lambdaQuery() |         Long count = this.lambdaQuery() | ||||||
|             .eq(BusSubcontract::getProjectId, req.getProjectId()) |             .eq(SubSubcontract::getProjectId, req.getProjectId()) | ||||||
|             .eq(BusSubcontract::getContractorId, req.getContractorId()) |             .eq(SubSubcontract::getContractorId, req.getContractorId()) | ||||||
|             .eq(BusSubcontract::getContractFileId, req.getContractFileId()) |             .eq(SubSubcontract::getContractFileId, req.getContractFileId()) | ||||||
|             .count(); |             .count(); | ||||||
|         if (count > 0) { |         if (count > 0) { | ||||||
|             throw new ServiceException("已关联该项目合同", HttpStatus.BAD_REQUEST); |             throw new ServiceException("已关联该项目合同", HttpStatus.BAD_REQUEST); | ||||||
| @ -156,7 +156,7 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|     /** |     /** | ||||||
|      * 保存前的数据校验 |      * 保存前的数据校验 | ||||||
|      */ |      */ | ||||||
|     private void validEntityBeforeSave(BusSubcontract entity) { |     private void validEntityBeforeSave(SubSubcontract entity) { | ||||||
|         Long projectId = entity.getProjectId(); |         Long projectId = entity.getProjectId(); | ||||||
|         Long contractorId = entity.getContractorId(); |         Long contractorId = entity.getContractorId(); | ||||||
|         if (projectId == null) { |         if (projectId == null) { | ||||||
| @ -169,7 +169,7 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|         if (project == null) { |         if (project == null) { | ||||||
|             throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|         BusContractor contractor = contractorService.getById(contractorId); |         SubContractor contractor = contractorService.getById(contractorId); | ||||||
|         if (contractor == null) { |         if (contractor == null) { | ||||||
|             throw new ServiceException("对应合同方不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("对应合同方不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
| @ -189,13 +189,13 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|     @Transactional(rollbackFor = Exception.class) |     @Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|         Long userId = LoginHelper.getUserId(); |         Long userId = LoginHelper.getUserId(); | ||||||
|         List<BusSubcontract> list = this.listByIds(ids); |         List<SubSubcontract> list = this.listByIds(ids); | ||||||
|         if (isValid) { |         if (isValid) { | ||||||
|             List<Long> projectIdList = list.stream().map(BusSubcontract::getProjectId).toList(); |             List<Long> projectIdList = list.stream().map(SubSubcontract::getProjectId).toList(); | ||||||
|             projectService.validAuth(projectIdList, userId); |             projectService.validAuth(projectIdList, userId); | ||||||
|         } |         } | ||||||
|         // 关联删除文件 |         // 关联删除文件 | ||||||
|         Set<Long> fileIdList = list.stream().map(BusSubcontract::getContractFileId).collect(Collectors.toSet()); |         Set<Long> fileIdList = list.stream().map(SubSubcontract::getContractFileId).collect(Collectors.toSet()); | ||||||
|         Boolean result = ossService.deleteWithValidByIds(fileIdList, false); |         Boolean result = ossService.deleteWithValidByIds(fileIdList, false); | ||||||
|         if (!result) { |         if (!result) { | ||||||
|             log.error("删除文件:{}失败", fileIdList); |             log.error("删除文件:{}失败", fileIdList); | ||||||
| @ -210,9 +210,9 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 分包合同视图 |      * @return 分包合同视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public BusSubcontractVo getVo(BusSubcontract subcontract) { |     public SubSubcontractVo getVo(SubSubcontract subcontract) { | ||||||
|         // 封装对象 |         // 封装对象 | ||||||
|         BusSubcontractVo subcontractVo = new BusSubcontractVo(); |         SubSubcontractVo subcontractVo = new SubSubcontractVo(); | ||||||
|         if (subcontract == null) { |         if (subcontract == null) { | ||||||
|             return subcontractVo; |             return subcontractVo; | ||||||
|         } |         } | ||||||
| @ -227,18 +227,18 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 查询条件封装 |      * @return 查询条件封装 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public LambdaQueryWrapper<BusSubcontract> buildQueryWrapper(BusSubcontractQueryReq req) { |     public LambdaQueryWrapper<SubSubcontract> buildQueryWrapper(SubSubcontractQueryReq req) { | ||||||
|         LambdaQueryWrapper<BusSubcontract> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubSubcontract> lqw = new LambdaQueryWrapper<>(); | ||||||
|         Long projectId = req.getProjectId(); |         Long projectId = req.getProjectId(); | ||||||
|         Long contractorId = req.getContractorId(); |         Long contractorId = req.getContractorId(); | ||||||
|         String contractNumber = req.getContractNumber(); |         String contractNumber = req.getContractNumber(); | ||||||
|         String contractName = req.getContractName(); |         String contractName = req.getContractName(); | ||||||
|         String contractType = req.getContractType(); |         String contractType = req.getContractType(); | ||||||
|         lqw.like(StringUtils.isNotBlank(contractNumber), BusSubcontract::getContractNumber, contractNumber); |         lqw.like(StringUtils.isNotBlank(contractNumber), SubSubcontract::getContractNumber, contractNumber); | ||||||
|         lqw.like(StringUtils.isNotBlank(contractName), BusSubcontract::getContractName, contractName); |         lqw.like(StringUtils.isNotBlank(contractName), SubSubcontract::getContractName, contractName); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(projectId), BusSubcontract::getProjectId, projectId); |         lqw.eq(ObjectUtils.isNotEmpty(projectId), SubSubcontract::getProjectId, projectId); | ||||||
|         lqw.eq(ObjectUtils.isNotEmpty(contractorId), BusSubcontract::getContractorId, contractorId); |         lqw.eq(ObjectUtils.isNotEmpty(contractorId), SubSubcontract::getContractorId, contractorId); | ||||||
|         lqw.eq(StringUtils.isNotBlank(contractType), BusSubcontract::getContractType, contractType); |         lqw.eq(StringUtils.isNotBlank(contractType), SubSubcontract::getContractType, contractType); | ||||||
|         return lqw; |         return lqw; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -249,9 +249,9 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|      * @return 分包合同分页视图 |      * @return 分包合同分页视图 | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public Page<BusSubcontractVo> getVoPage(Page<BusSubcontract> subcontractPage) { |     public Page<SubSubcontractVo> getVoPage(Page<SubSubcontract> subcontractPage) { | ||||||
|         List<BusSubcontract> subcontractList = subcontractPage.getRecords(); |         List<SubSubcontract> subcontractList = subcontractPage.getRecords(); | ||||||
|         Page<BusSubcontractVo> subcontractVoPage = new Page<>( |         Page<SubSubcontractVo> subcontractVoPage = new Page<>( | ||||||
|             subcontractPage.getCurrent(), |             subcontractPage.getCurrent(), | ||||||
|             subcontractPage.getSize(), |             subcontractPage.getSize(), | ||||||
|             subcontractPage.getTotal() |             subcontractPage.getTotal() | ||||||
| @ -260,15 +260,15 @@ public class BusSubcontractServiceImpl extends ServiceImpl<BusSubcontractMapper, | |||||||
|             return subcontractVoPage; |             return subcontractVoPage; | ||||||
|         } |         } | ||||||
|         // 获取分包商信息 |         // 获取分包商信息 | ||||||
|         Set<Long> contractorIdList = subcontractList.stream().map(BusSubcontract::getContractorId).collect(Collectors.toSet()); |         Set<Long> contractorIdList = subcontractList.stream().map(SubSubcontract::getContractorId).collect(Collectors.toSet()); | ||||||
|         Map<Long, BusContractor> contractorMap = contractorService.listByIds(contractorIdList) |         Map<Long, SubContractor> contractorMap = contractorService.listByIds(contractorIdList) | ||||||
|             .stream().collect(Collectors.toMap(BusContractor::getId, v -> v)); |             .stream().collect(Collectors.toMap(SubContractor::getId, v -> v)); | ||||||
|         List<BusSubcontractVo> subcontractVoList = subcontractList.stream().map(entity -> { |         List<SubSubcontractVo> subcontractVoList = subcontractList.stream().map(entity -> { | ||||||
|             BusSubcontractVo subcontractVo = new BusSubcontractVo(); |             SubSubcontractVo subcontractVo = new SubSubcontractVo(); | ||||||
|             BeanUtils.copyProperties(entity, subcontractVo); |             BeanUtils.copyProperties(entity, subcontractVo); | ||||||
|             Long contractorId = entity.getContractorId(); |             Long contractorId = entity.getContractorId(); | ||||||
|             if (contractorMap.containsKey(contractorId)) { |             if (contractorMap.containsKey(contractorId)) { | ||||||
|                 BusContractor contractor = contractorMap.get(contractorId); |                 SubContractor contractor = contractorMap.get(contractorId); | ||||||
|                 subcontractVo.setContractorName(contractor.getName()); |                 subcontractVo.setContractorName(contractor.getName()); | ||||||
|             } |             } | ||||||
|             return subcontractVo; |             return subcontractVo; | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | package org.dromara.manager.changxiemanager; | ||||||
|  |  | ||||||
|  | import cn.hutool.json.JSONObject; | ||||||
|  | import cn.hutool.json.JSONUtil; | ||||||
|  | import jakarta.servlet.http.HttpServletRequest; | ||||||
|  | import jakarta.servlet.http.HttpServletResponse; | ||||||
|  | import org.springframework.web.bind.annotation.PostMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
|  | import java.io.*; | ||||||
|  | import java.net.HttpURLConnection; | ||||||
|  | import java.net.URI; | ||||||
|  | import java.net.URL; | ||||||
|  | import java.util.Scanner; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @author lcj | ||||||
|  |  * @date 2025/6/27 17:02 | ||||||
|  |  */ | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/changxie") | ||||||
|  | public class ChangxieController { | ||||||
|  |  | ||||||
|  |     @PostMapping("/callback") | ||||||
|  |     public void singleFileUploads(HttpServletRequest request, HttpServletResponse response) throws IOException { | ||||||
|  |         PrintWriter writer = response.getWriter(); | ||||||
|  |         Scanner scanner = new Scanner(request.getInputStream(), "GBK").useDelimiter("\\A"); | ||||||
|  |         String body = scanner.hasNext() ? scanner.next() : ""; | ||||||
|  |         JSONObject jsonObj = JSONUtil.parseObj(body); | ||||||
|  |         if ((long) jsonObj.get("status") == 2 || (long) jsonObj.get("status") == 6) { | ||||||
|  |             String downloadUri = (String) jsonObj.get("url"); | ||||||
|  |             URI uri = URI.create(downloadUri); | ||||||
|  |             URL url = uri.toURL(); | ||||||
|  |             HttpURLConnection connection = (HttpURLConnection) url.openConnection(); | ||||||
|  |             InputStream stream = connection.getInputStream(); | ||||||
|  |             File savedFile = new File("file/resource/changxie"); | ||||||
|  |             try (FileOutputStream out = new FileOutputStream(savedFile)) { | ||||||
|  |                 int read; | ||||||
|  |                 final byte[] bytes = new byte[1024]; | ||||||
|  |                 while ((read = stream.read(bytes)) != -1) { | ||||||
|  |                     out.write(bytes, 0, read); | ||||||
|  |                 } | ||||||
|  |                 out.flush(); | ||||||
|  |             } | ||||||
|  |             connection.disconnect(); | ||||||
|  |         } else if ((long) jsonObj.get("status") == 3 || (long) jsonObj.get("status") == 7) { | ||||||
|  |             writer.write("{\"error\":-1}"); | ||||||
|  |         } | ||||||
|  |         writer.write("{\"error\":0}"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package org.dromara.project.mapper; |  | ||||||
|  |  | ||||||
| import org.dromara.project.domain.BusConstructionUserFile; |  | ||||||
| import org.dromara.project.domain.vo.constructionuserfile.BusConstructionUserFileVo; |  | ||||||
| import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 施工人员文件存储Mapper接口 |  | ||||||
|  * |  | ||||||
|  * @author lcj |  | ||||||
|  * @date 2025-04-01 |  | ||||||
|  */ |  | ||||||
| public interface BusConstructionUserFileMapper extends BaseMapperPlus<BusConstructionUserFile, BusConstructionUserFileVo> { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package org.dromara.project.mapper; |  | ||||||
|  |  | ||||||
| import org.dromara.project.domain.BusConstructionUser; |  | ||||||
| import org.dromara.project.domain.vo.constructionuser.BusConstructionUserVo; |  | ||||||
| import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 施工人员Mapper接口 |  | ||||||
|  * |  | ||||||
|  * @author lcj |  | ||||||
|  * @date 2025-03-07 |  | ||||||
|  */ |  | ||||||
| public interface BusConstructionUserMapper extends BaseMapperPlus<BusConstructionUser, BusConstructionUserVo> { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package org.dromara.project.mapper; |  | ||||||
|  |  | ||||||
| import org.dromara.project.domain.BusContractor; |  | ||||||
| import org.dromara.project.domain.vo.contractor.BusContractorVo; |  | ||||||
| import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 分包单位Mapper接口 |  | ||||||
|  * |  | ||||||
|  * @author lcj |  | ||||||
|  * @date 2025-03-07 |  | ||||||
|  */ |  | ||||||
| public interface BusContractorMapper extends BaseMapperPlus<BusContractor, BusContractorVo> { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package org.dromara.project.mapper; |  | ||||||
|  |  | ||||||
| import org.dromara.project.domain.BusContractorTool; |  | ||||||
| import org.dromara.project.domain.vo.contractortool.BusContractorToolVo; |  | ||||||
| import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 分包方工器具Mapper接口 |  | ||||||
|  * |  | ||||||
|  * @author lcj |  | ||||||
|  * @date 2025-06-26 |  | ||||||
|  */ |  | ||||||
| public interface BusContractorToolMapper extends BaseMapperPlus<BusContractorTool, BusContractorToolVo> { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -1,15 +0,0 @@ | |||||||
| package org.dromara.project.mapper; |  | ||||||
|  |  | ||||||
| import org.dromara.project.domain.BusSubcontract; |  | ||||||
| import org.dromara.project.domain.vo.subcontract.BusSubcontractVo; |  | ||||||
| import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 分包合同Mapper接口 |  | ||||||
|  * |  | ||||||
|  * @author lcj |  | ||||||
|  * @date 2025-06-25 |  | ||||||
|  */ |  | ||||||
| public interface BusSubcontractMapper extends BaseMapperPlus<BusSubcontract, BusSubcontractVo> { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -15,8 +15,9 @@ 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.contractor.domain.SubConstructionUser; | ||||||
|  | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.dromara.project.domain.BusAttendance; | import org.dromara.project.domain.BusAttendance; | ||||||
| import org.dromara.project.domain.BusConstructionUser; |  | ||||||
| import org.dromara.project.domain.BusProjectTeamMember; | import org.dromara.project.domain.BusProjectTeamMember; | ||||||
| import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum; | import org.dromara.project.domain.enums.BusAttendanceClockStatusEnum; | ||||||
| import org.dromara.project.domain.enums.BusAttendanceCommuterEnum; | import org.dromara.project.domain.enums.BusAttendanceCommuterEnum; | ||||||
| @ -56,7 +57,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | |||||||
|     private IBusProjectTeamMemberService projectTeamMemberService; |     private IBusProjectTeamMemberService projectTeamMemberService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserService constructionUserService; |     private ISubConstructionUserService constructionUserService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionBlacklistService constructionBlacklistService; |     private IBusConstructionBlacklistService constructionBlacklistService; | ||||||
| @ -135,11 +136,11 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | |||||||
|         List<Long> blackList = constructionBlacklistService.queryIdListByProjectId(projectId); |         List<Long> blackList = constructionBlacklistService.queryIdListByProjectId(projectId); | ||||||
|         // 构建查询用户相关信息查询条件 |         // 构建查询用户相关信息查询条件 | ||||||
|         List<Long> userIdList = constructionUserService.lambdaQuery() |         List<Long> userIdList = constructionUserService.lambdaQuery() | ||||||
|             .eq(BusConstructionUser::getProjectId, projectId) |             .eq(SubConstructionUser::getProjectId, projectId) | ||||||
|             .eq(req.getTeamId() != null, BusConstructionUser::getTeamId, req.getTeamId()) |             .eq(req.getTeamId() != null, SubConstructionUser::getTeamId, req.getTeamId()) | ||||||
|             .eq(req.getTypeOfWork() != null, BusConstructionUser::getTypeOfWork, req.getTypeOfWork()) |             .eq(req.getTypeOfWork() != null, SubConstructionUser::getTypeOfWork, req.getTypeOfWork()) | ||||||
|             .notIn(CollUtil.isNotEmpty(blackList), BusConstructionUser::getId, blackList) |             .notIn(CollUtil.isNotEmpty(blackList), SubConstructionUser::getId, blackList) | ||||||
|             .list().stream().map(BusConstructionUser::getId).toList(); |             .list().stream().map(SubConstructionUser::getId).toList(); | ||||||
|         lqw.in(CollUtil.isNotEmpty(userIdList), BusAttendance::getUserId, userIdList); |         lqw.in(CollUtil.isNotEmpty(userIdList), BusAttendance::getUserId, userIdList); | ||||||
|         Map<Date, List<BusAttendance>> dateListMap = this.list(lqw) |         Map<Date, List<BusAttendance>> dateListMap = this.list(lqw) | ||||||
|             .stream().collect(Collectors.groupingBy(BusAttendance::getClockDate)); |             .stream().collect(Collectors.groupingBy(BusAttendance::getClockDate)); | ||||||
|  | |||||||
| @ -15,14 +15,14 @@ import org.dromara.common.mybatis.core.page.PageQuery; | |||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
| import org.dromara.common.satoken.utils.LoginHelper; | import org.dromara.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.domain.BusConstructionBlacklist; | import org.dromara.project.domain.BusConstructionBlacklist; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
| import org.dromara.project.domain.BusProjectTeamMember; | import org.dromara.project.domain.BusProjectTeamMember; | ||||||
| import org.dromara.project.domain.dto.constructionblacklist.BusConstructionBlacklistCreateReq; | import org.dromara.project.domain.dto.constructionblacklist.BusConstructionBlacklistCreateReq; | ||||||
| import org.dromara.project.domain.dto.constructionblacklist.BusConstructionBlacklistQueryReq; | import org.dromara.project.domain.dto.constructionblacklist.BusConstructionBlacklistQueryReq; | ||||||
| import org.dromara.project.domain.vo.constructionblacklist.BusConstructionBlacklistVo; | import org.dromara.project.domain.vo.constructionblacklist.BusConstructionBlacklistVo; | ||||||
| import org.dromara.project.mapper.BusConstructionBlacklistMapper; | import org.dromara.project.mapper.BusConstructionBlacklistMapper; | ||||||
| import org.dromara.project.service.IBusConstructionBlacklistService; | import org.dromara.project.service.IBusConstructionBlacklistService; | ||||||
| import org.dromara.project.service.IBusConstructionUserService; | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.dromara.project.service.IBusProjectTeamMemberService; | import org.dromara.project.service.IBusProjectTeamMemberService; | ||||||
| import org.dromara.common.utils.IdCardEncryptorUtil; | import org.dromara.common.utils.IdCardEncryptorUtil; | ||||||
| @ -48,7 +48,7 @@ public class BusConstructionBlacklistServiceImpl extends ServiceImpl<BusConstruc | |||||||
|     private IBusProjectService projectService; |     private IBusProjectService projectService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserService constructionUserService; |     private ISubConstructionUserService constructionUserService; | ||||||
|  |  | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
| @ -151,7 +151,7 @@ public class BusConstructionBlacklistServiceImpl extends ServiceImpl<BusConstruc | |||||||
|         if (userId == null) { |         if (userId == null) { | ||||||
|             throw new ServiceException("用户 id 不能为空", HttpStatus.BAD_REQUEST); |             throw new ServiceException("用户 id 不能为空", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
|         BusConstructionUser constructionUser = constructionUserService.getById(userId); |         SubConstructionUser constructionUser = constructionUserService.getById(userId); | ||||||
|         if (constructionUser == null) { |         if (constructionUser == null) { | ||||||
|             throw new ServiceException("对应用户不存在", HttpStatus.NOT_FOUND); |             throw new ServiceException("对应用户不存在", HttpStatus.NOT_FOUND); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -27,13 +27,14 @@ 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.common.satoken.utils.LoginHelper; | ||||||
|  | import org.dromara.contractor.domain.SubContractor; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.dromara.facility.domain.FacMatrix; | import org.dromara.facility.domain.FacMatrix; | ||||||
| import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo; | import org.dromara.facility.domain.vo.matrix.FacMatrixBySubProjectVo; | ||||||
| import org.dromara.facility.service.IFacMatrixService; | import org.dromara.facility.service.IFacMatrixService; | ||||||
| import org.dromara.manager.weathermanager.WeatherConstant; | import org.dromara.manager.weathermanager.WeatherConstant; | ||||||
| import org.dromara.manager.weathermanager.WeatherManager; | import org.dromara.manager.weathermanager.WeatherManager; | ||||||
| import org.dromara.project.constant.BusProjectConstant; | import org.dromara.project.constant.BusProjectConstant; | ||||||
| import org.dromara.project.domain.BusContractor; |  | ||||||
| import org.dromara.project.domain.BusProject; | import org.dromara.project.domain.BusProject; | ||||||
| import org.dromara.project.domain.BusProjectFile; | import org.dromara.project.domain.BusProjectFile; | ||||||
| import org.dromara.project.domain.BusUserProjectRelevancy; | import org.dromara.project.domain.BusUserProjectRelevancy; | ||||||
| @ -43,7 +44,6 @@ import org.dromara.project.domain.dto.project.BusProjectQueryReq; | |||||||
| import org.dromara.project.domain.dto.project.BusProjectUpdateReq; | import org.dromara.project.domain.dto.project.BusProjectUpdateReq; | ||||||
| import org.dromara.project.domain.vo.project.*; | import org.dromara.project.domain.vo.project.*; | ||||||
| import org.dromara.project.mapper.BusProjectMapper; | import org.dromara.project.mapper.BusProjectMapper; | ||||||
| import org.dromara.project.service.IBusContractorService; |  | ||||||
| import org.dromara.project.service.IBusProjectFileService; | import org.dromara.project.service.IBusProjectFileService; | ||||||
| import org.dromara.project.service.IBusProjectService; | import org.dromara.project.service.IBusProjectService; | ||||||
| import org.dromara.project.service.IBusUserProjectRelevancyService; | import org.dromara.project.service.IBusUserProjectRelevancyService; | ||||||
| @ -83,7 +83,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj | |||||||
|  |  | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusContractorService contractorService; |     private ISubContractorService contractorService; | ||||||
|  |  | ||||||
|     @Lazy |     @Lazy | ||||||
|     @Resource |     @Resource | ||||||
| @ -270,10 +270,10 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj | |||||||
|         List<Long> projectIdList = userProjectRelevancyService.listObjs(userProjectRelevancyLqw, obj -> (Long) obj); |         List<Long> projectIdList = userProjectRelevancyService.listObjs(userProjectRelevancyLqw, obj -> (Long) obj); | ||||||
|         List<BusProject> projectList = this.listByIds(projectIdList); |         List<BusProject> projectList = this.listByIds(projectIdList); | ||||||
|         // 获取项目列表下的分包公司列表 |         // 获取项目列表下的分包公司列表 | ||||||
|         LambdaQueryWrapper<BusContractor> lqw = new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SubContractor> lqw = new LambdaQueryWrapper<>(); | ||||||
|         lqw.in(BusContractor::getProjectId, projectIdList); |         lqw.in(SubContractor::getProjectId, projectIdList); | ||||||
|         Map<Long, List<BusContractor>> projectIdContractorList = contractorService.list(lqw).stream() |         Map<Long, List<SubContractor>> projectIdContractorList = contractorService.list(lqw).stream() | ||||||
|             .collect(Collectors.groupingBy(BusContractor::getProjectId)); |             .collect(Collectors.groupingBy(SubContractor::getProjectId)); | ||||||
|         // 获取封装 |         // 获取封装 | ||||||
|         return projectList.stream().map(project -> { |         return projectList.stream().map(project -> { | ||||||
|             BusProjectContractorListVo projectContractorListResp = new BusProjectContractorListVo(); |             BusProjectContractorListVo projectContractorListResp = new BusProjectContractorListVo(); | ||||||
| @ -281,7 +281,7 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj | |||||||
|             projectContractorListResp.setId(project.getId()); |             projectContractorListResp.setId(project.getId()); | ||||||
|             projectContractorListResp.setProjectName(project.getProjectName()); |             projectContractorListResp.setProjectName(project.getProjectName()); | ||||||
|             // 获取分包公司列表 |             // 获取分包公司列表 | ||||||
|             List<BusContractor> contractorList = projectIdContractorList.get(project.getId()); |             List<SubContractor> contractorList = projectIdContractorList.get(project.getId()); | ||||||
|             if (CollUtil.isEmpty(contractorList)) { |             if (CollUtil.isEmpty(contractorList)) { | ||||||
|                 throw new ServiceException("项目:" + project.getProjectName() + "下无分包单位,请创建后再进行操作", HttpStatus.BAD_REQUEST); |                 throw new ServiceException("项目:" + project.getProjectName() + "下无分包单位,请创建后再进行操作", HttpStatus.BAD_REQUEST); | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -15,7 +15,8 @@ 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.common.satoken.utils.LoginHelper; | ||||||
| import org.dromara.project.domain.BusConstructionUser; | import org.dromara.contractor.domain.SubConstructionUser; | ||||||
|  | import org.dromara.contractor.service.ISubConstructionUserService; | ||||||
| import org.dromara.project.domain.BusConstructionUserExit; | import org.dromara.project.domain.BusConstructionUserExit; | ||||||
| import org.dromara.project.domain.BusProjectTeam; | import org.dromara.project.domain.BusProjectTeam; | ||||||
| import org.dromara.project.domain.BusProjectTeamMember; | import org.dromara.project.domain.BusProjectTeamMember; | ||||||
| @ -48,7 +49,7 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|     implements IBusProjectTeamMemberService { |     implements IBusProjectTeamMemberService { | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusConstructionUserService constructionUserService; |     private ISubConstructionUserService constructionUserService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private IBusProjectTeamService projectTeamService; |     private IBusProjectTeamService projectTeamService; | ||||||
| @ -139,12 +140,12 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|             throw new ServiceException("新增项目班组下的成员失败,数据库异常", HttpStatus.ERROR); |             throw new ServiceException("新增项目班组下的成员失败,数据库异常", HttpStatus.ERROR); | ||||||
|         } |         } | ||||||
|         // 同步修改用户表的team_id字段并添加入场时间 |         // 同步修改用户表的team_id字段并添加入场时间 | ||||||
|         LambdaUpdateWrapper<BusConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(BusConstructionUser.class) |         LambdaUpdateWrapper<SubConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class) | ||||||
|             .eq(BusConstructionUser::getId, projectTeamMember.getMemberId()) |             .eq(SubConstructionUser::getId, projectTeamMember.getMemberId()) | ||||||
|             .set(BusConstructionUser::getTeamId, projectTeamMember.getTeamId()) |             .set(SubConstructionUser::getTeamId, projectTeamMember.getTeamId()) | ||||||
|             .set(BusConstructionUser::getTeamName, projectTeam.getTeamName()) |             .set(SubConstructionUser::getTeamName, projectTeam.getTeamName()) | ||||||
|             .set(BusConstructionUser::getEntryDate, new Date()) |             .set(SubConstructionUser::getEntryDate, new Date()) | ||||||
|             .set(BusConstructionUser::getLeaveDate, null); |             .set(SubConstructionUser::getLeaveDate, null); | ||||||
|         constructionUserService.update(constructionUserLuw); |         constructionUserService.update(constructionUserLuw); | ||||||
|         return projectTeamMember.getId(); |         return projectTeamMember.getId(); | ||||||
|     } |     } | ||||||
| @ -176,10 +177,10 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|         } |         } | ||||||
|         // 如果修改了班组信息,同步修改用户表的字段 |         // 如果修改了班组信息,同步修改用户表的字段 | ||||||
|         if (!oldProjectTeamMember.getTeamId().equals(teamId)) { |         if (!oldProjectTeamMember.getTeamId().equals(teamId)) { | ||||||
|             LambdaUpdateWrapper<BusConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(BusConstructionUser.class) |             LambdaUpdateWrapper<SubConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class) | ||||||
|                 .eq(BusConstructionUser::getId, projectTeamMember.getMemberId()) |                 .eq(SubConstructionUser::getId, projectTeamMember.getMemberId()) | ||||||
|                 .set(BusConstructionUser::getTeamId, projectTeamMember.getTeamId()) |                 .set(SubConstructionUser::getTeamId, projectTeamMember.getTeamId()) | ||||||
|                 .set(BusConstructionUser::getTeamName, projectTeam.getTeamName()); |                 .set(SubConstructionUser::getTeamName, projectTeam.getTeamName()); | ||||||
|             constructionUserService.update(constructionUserLuw); |             constructionUserService.update(constructionUserLuw); | ||||||
|         } |         } | ||||||
|         // 操作数据库 |         // 操作数据库 | ||||||
| @ -240,7 +241,7 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|             throw new ServiceException("删除项目班组下的成员失败,数据库异常", HttpStatus.ERROR); |             throw new ServiceException("删除项目班组下的成员失败,数据库异常", HttpStatus.ERROR); | ||||||
|         } |         } | ||||||
|         // 将文件信息保存到数据库 |         // 将文件信息保存到数据库 | ||||||
|         BusConstructionUser constructionUser = constructionUserService.getById(projectTeamMember.getMemberId()); |         SubConstructionUser constructionUser = constructionUserService.getById(projectTeamMember.getMemberId()); | ||||||
|         BusConstructionUserExit constructionUserExit = new BusConstructionUserExit(); |         BusConstructionUserExit constructionUserExit = new BusConstructionUserExit(); | ||||||
|         constructionUserExit.setProjectId(constructionUser.getProjectId()); |         constructionUserExit.setProjectId(constructionUser.getProjectId()); | ||||||
|         constructionUserExit.setUserId(constructionUser.getId()); |         constructionUserExit.setUserId(constructionUser.getId()); | ||||||
| @ -252,10 +253,10 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|         constructionUserExit.setRemark(req.getRemark()); |         constructionUserExit.setRemark(req.getRemark()); | ||||||
|         constructionUserExitService.save(constructionUserExit); |         constructionUserExitService.save(constructionUserExit); | ||||||
|         // 同步修改用户表的team_id字段 |         // 同步修改用户表的team_id字段 | ||||||
|         LambdaUpdateWrapper<BusConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(BusConstructionUser.class) |         LambdaUpdateWrapper<SubConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class) | ||||||
|             .eq(BusConstructionUser::getId, projectTeamMember.getMemberId()) |             .eq(SubConstructionUser::getId, projectTeamMember.getMemberId()) | ||||||
|             .set(BusConstructionUser::getTeamId, null) |             .set(SubConstructionUser::getTeamId, null) | ||||||
|             .set(BusConstructionUser::getLeaveDate, new Date()); |             .set(SubConstructionUser::getLeaveDate, new Date()); | ||||||
|         constructionUserService.update(constructionUserLuw); |         constructionUserService.update(constructionUserLuw); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
| @ -276,7 +277,7 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|         BeanUtils.copyProperties(projectTeamMember, projectTeamMemberVo); |         BeanUtils.copyProperties(projectTeamMember, projectTeamMemberVo); | ||||||
|         // 关联获取施工人员信息 |         // 关联获取施工人员信息 | ||||||
|         Long memberId = projectTeamMember.getMemberId(); |         Long memberId = projectTeamMember.getMemberId(); | ||||||
|         BusConstructionUser constructionUser = constructionUserService.getById(memberId); |         SubConstructionUser constructionUser = constructionUserService.getById(memberId); | ||||||
|         projectTeamMemberVo.setMemberName(constructionUser.getUserName()); |         projectTeamMemberVo.setMemberName(constructionUser.getUserName()); | ||||||
|         return projectTeamMemberVo; |         return projectTeamMemberVo; | ||||||
|     } |     } | ||||||
| @ -303,7 +304,7 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|         String remark = req.getRemark(); |         String remark = req.getRemark(); | ||||||
|         // 联表查询 |         // 联表查询 | ||||||
|         if (StringUtils.isNotBlank(memberName)) { |         if (StringUtils.isNotBlank(memberName)) { | ||||||
|             QueryWrapper<BusConstructionUser> constructionUserQueryWrapper = new QueryWrapper<>(); |             QueryWrapper<SubConstructionUser> constructionUserQueryWrapper = new QueryWrapper<>(); | ||||||
|             constructionUserQueryWrapper.select("id"); |             constructionUserQueryWrapper.select("id"); | ||||||
|             constructionUserQueryWrapper.like("user_name", memberName); |             constructionUserQueryWrapper.like("user_name", memberName); | ||||||
|             List<Long> constructionUserIdList = constructionUserService.listObjs(constructionUserQueryWrapper, obj -> (Long) obj); |             List<Long> constructionUserIdList = constructionUserService.listObjs(constructionUserQueryWrapper, obj -> (Long) obj); | ||||||
| @ -339,8 +340,8 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM | |||||||
|         // 关联查询施工人员信息 |         // 关联查询施工人员信息 | ||||||
|         Set<Long> teamMemberIdSet = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId) |         Set<Long> teamMemberIdSet = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId) | ||||||
|             .collect(Collectors.toSet()); |             .collect(Collectors.toSet()); | ||||||
|         Map<Long, List<BusConstructionUser>> contractorIdContractorList = constructionUserService.listByIds(teamMemberIdSet).stream() |         Map<Long, List<SubConstructionUser>> contractorIdContractorList = constructionUserService.listByIds(teamMemberIdSet).stream() | ||||||
|             .collect(Collectors.groupingBy(BusConstructionUser::getId)); |             .collect(Collectors.groupingBy(SubConstructionUser::getId)); | ||||||
|         // 填充信息 |         // 填充信息 | ||||||
|         List<BusProjectTeamMemberVo> projectTeamMemberVoList = projectTeamMemberList.stream().map(projectTeamMember -> { |         List<BusProjectTeamMemberVo> projectTeamMemberVoList = projectTeamMemberList.stream().map(projectTeamMember -> { | ||||||
|             BusProjectTeamMemberVo projectTeamMemberVo = new BusProjectTeamMemberVo(); |             BusProjectTeamMemberVo projectTeamMemberVo = new BusProjectTeamMemberVo(); | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user