feat:相关方、临时人员门禁申请 审批

koumen
dearLin 2026-03-16 10:39:47 +08:00
parent 45c25c8c01
commit c7cf2ecabc
30 changed files with 526 additions and 51 deletions

View File

@ -11,6 +11,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.primeport.api.PersonApplyServiceI;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.PersonCountCO;
import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import io.swagger.annotations.Api;
@ -33,12 +34,13 @@ import java.util.ArrayList;
@AllArgsConstructor
public class PersonApplyController {
private final PersonApplyServiceI personApplyService;
@ApiOperation("详情")
@ApiOperation("相关方、临时-人员申请-详情")
@GetMapping("/xgfPersonApplyInfoById")
public SingleResponse<XgfPersonApplyCO> xgfPersonApplyInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(new XgfPersonApplyCO());
return SingleResponse.of(personApplyService.xgfPersonApplyInfoById(id));
}
@ApiOperation("待审批的相关方申请列表-同已审批记录")
@ApiOperation("待审批的相关方申请人员入场列表-同已审批记录")
@PostMapping("/xgfPersonAuditList")
public PageResponse<XgfPersonApplyCO> xgfPersonAuditList(@RequestBody XgfApplyPersonPageQry qry) {
return personApplyService.xgfPersonAuditList(qry);
@ -95,11 +97,20 @@ public class PersonApplyController {
return SingleResponse.buildSuccess();
}
// @ApiOperation("修改")
// @PutMapping("/edit")
// public SingleResponse edit(@Validated @RequestBody PersonApplyUpdateCmd personApplyUpdateCmd) {
// personApplyService.edit(personApplyUpdateCmd);
// return SingleResponse.buildSuccess();
// }
@ApiOperation("股份,分公司-人员及车辆管理-分页")
@GetMapping("/personnelVehicleManagementList")
public PageResponse<PersonCountCO> personnelVehicleManagementList(PersonCountPageQry qry) {
if (qry.getCorpId() == null) {
qry.setCorpId(AuthContext.getTenantId());
}
return personApplyService.personnelVehicleManagementList(qry);
}
@ApiOperation("股份,分公司-人员授权")
@PostMapping("/authorization")
public Response authorization(PersonAuthCmd cmd) {
personApplyService.authorization(cmd);
return Response.buildSuccess();
}
}

View File

@ -31,7 +31,7 @@ import java.util.Map;
* @Author makejava
* @Date 2026-03-05 11:33:23
*/
@Api(tags = "车辆申请审批信息")
@Api(tags = "车辆申请信息")
@RequestMapping("/${application.gateway}/vehicleApply")
@RestController
@AllArgsConstructor
@ -56,7 +56,7 @@ public class VehicleApplyController {
return vehicleApplyService.listPage(qry);
}
@ApiOperation("详情")
@ApiOperation("股份、相关方车辆审批-详情")
@GetMapping("/{id}")
public SingleResponse<VehicleApplyCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(vehicleApplyService.getInfoById(id));

View File

@ -7,8 +7,10 @@ import com.zcloud.primeport.domain.gateway.XgfApplyPersonGateway;
import com.zcloud.primeport.domain.model.PersonApplyE;
import com.zcloud.primeport.domain.model.XgfApplyPersonE;
import com.zcloud.primeport.dto.PersonApplyAddCmd;
import com.zcloud.primeport.dto.PersonAuthCmd;
import com.zcloud.primeport.dto.XgfPersonApplyAddCmd;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
@ -48,23 +50,7 @@ public class PersonApplyAddExe {
public SingleResponse<PersonApplyCO> xgfPersonSave(XgfPersonApplyAddCmd cmd) {
// 先进行相关方申请的保存
XgfApplyPersonE build = XgfApplyPersonE.builder()
.personBelongType(cmd.getPersonBelongType())
.gateLevelAuthArea(cmd.getGateLevelAuthArea())
.mkmjPermission(2)
.mkmjId(cmd.getMkmjId())
.auditFlag(1)
.auditCorpId(cmd.getAuditCorpId())
.auditCorpName(cmd.getAuditCorpName())
.auditDeptId(cmd.getAuditDeptId())
.auditDeptName(cmd.getAuditDeptName())
.auditUserId(cmd.getAuditUserId())
.auditUserName(cmd.getAuditUserName())
.visitStartTime(cmd.getVisitStartTime())
.visitEndTime(cmd.getVisitEndTime())
.projectId(cmd.getProjectId())
.projectName(cmd.getProjectName())
.informSignId(cmd.getInformSignId()).build();
XgfApplyPersonE build = XgfApplyPersonE.builder().personBelongType(cmd.getPersonBelongType()).gateLevelAuthArea(cmd.getGateLevelAuthArea()).mkmjId(cmd.getMkmjId()).auditFlag((cmd.getPersonBelongType() == 1 || cmd.getPersonBelongType() == 2) ? 2 : 1).auditCorpId(cmd.getAuditCorpId()).auditCorpName(cmd.getAuditCorpName()).auditDeptId(cmd.getAuditDeptId()).auditDeptName(cmd.getAuditDeptName()).auditUserId(cmd.getAuditUserId()).auditUserName(cmd.getAuditUserName()).visitStartTime(cmd.getVisitStartTime()).visitEndTime(cmd.getVisitEndTime()).projectId(cmd.getProjectId()).projectName(cmd.getProjectName()).informSignId(cmd.getInformSignId()).build();
xgfApplyPersonGateway.save(build);
List<XgfPersonApplyAddCmd.PersonApplyAddCmdExt> personApplyList = cmd.getPersonApplyList();
// 相关方人员信息的保存
@ -73,10 +59,46 @@ public class PersonApplyAddExe {
PersonApplyE personApplyE = new PersonApplyE();
BeanUtils.copyProperties(personApply, personApplyE);
personApplyE.setXgfApplyPersonId(build.getId());
personApplyE.setMkmjPermission((cmd.getPersonBelongType() == 1 || cmd.getPersonBelongType() == 2) ? 1 : 2);
personApplyES.add(personApplyE);
});
personApplyGateway.saveBatch(personApplyES);
return SingleResponse.buildSuccess();
}
public void authorization(PersonAuthCmd cmd) {
XgfPersonApplyAddCmd xgfPersonApplyAddCmd = new XgfPersonApplyAddCmd();
xgfPersonApplyAddCmd.setPersonBelongType(cmd.getPersonBelongType());
xgfPersonApplyAddCmd.setGateLevelAuthArea(cmd.getGateLevelAuthArea());
XgfPersonApplyAddCmd.PersonApplyAddCmdExt personApplyAddCmdExt = new XgfPersonApplyAddCmd.PersonApplyAddCmdExt();
personApplyAddCmdExt.setPersonCorpId(cmd.getCorpinfoId());
personApplyAddCmdExt.setPersonCorpName(cmd.getCorpName());
personApplyAddCmdExt.setPersonDepartmentId(cmd.getDepartmentId());
personApplyAddCmdExt.setPersonDepartmentName(cmd.getDepartmentName());
personApplyAddCmdExt.setEmployeePersonUserName(cmd.getUserName());
personApplyAddCmdExt.setEmployeePersonUserId(cmd.getUserId());
personApplyAddCmdExt.setUserFaceUrl(cmd.getUserFaceUrl());
personApplyAddCmdExt.setUserCard(cmd.getUserCard());
personApplyAddCmdExt.setUserPhone(cmd.getUserPhone());
xgfPersonApplyAddCmd.setPersonApplyList(new ArrayList<XgfPersonApplyAddCmd.PersonApplyAddCmdExt>() {{
add(personApplyAddCmdExt);
}});
xgfPersonSave(xgfPersonApplyAddCmd);
}
public XgfPersonApplyCO xgfPersonApplyInfoById(Long id) {
XgfPersonApplyCO xgfPersonApplyCO = new XgfPersonApplyCO();
XgfApplyPersonE xgfApplyPersonE = xgfApplyPersonGateway.getInfoById(id);
BeanUtils.copyProperties(xgfApplyPersonE, xgfPersonApplyCO);
List<PersonApplyE> userApplyList = personApplyGateway.personListByxgfApplyPersonId(id);
ArrayList<XgfPersonApplyAddCmd.PersonApplyAddCmdExt> personApplyAddCmdExts = new ArrayList<>();
userApplyList.forEach(item -> {
XgfPersonApplyAddCmd.PersonApplyAddCmdExt personApplyAddCmdExt = new XgfPersonApplyAddCmd.PersonApplyAddCmdExt();
BeanUtils.copyProperties(item, personApplyAddCmdExt);
personApplyAddCmdExts.add(personApplyAddCmdExt);
});
xgfPersonApplyCO.setPersonApplyList(personApplyAddCmdExts);
return xgfPersonApplyCO;
}
}

View File

@ -11,6 +11,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
/**
* web-app
@ -40,5 +42,12 @@ public class PersonApplyUpdateExe {
build.setId(cmd.getId());
personApplyGateway.xgfPersonAudit(build);
}
public void authorization(Long applyPersonId, Integer mkmjPermission) {
PersonApplyE personApplyE = new PersonApplyE();
personApplyE.setId(applyPersonId);
personApplyE.setMkmjPermission(mkmjPermission);
personApplyGateway.update(personApplyE);
}
}

View File

@ -1,7 +1,10 @@
package com.zcloud.primeport.command.convertor;
import com.zcloud.primeport.domain.model.PersonApplyE;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.PersonCountCO;
import com.zcloud.primeport.persistence.dataobject.PersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.PersonCountDto;
import org.mapstruct.Mapper;
import java.util.List;
@ -20,5 +23,8 @@ public interface PersonApplyCoConvertor {
* @return
*/
List<PersonApplyCO> converDOsToCOs(List<PersonApplyDO> personApplyDOs);
List<PersonCountCO> converDtosToCOs(List<PersonCountDto> data);
List<PersonApplyCO> converEstosToCOs(List<PersonApplyE> data);
}

View File

@ -6,10 +6,13 @@ import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.primeport.command.convertor.PersonApplyCoConvertor;
import com.zcloud.primeport.command.convertor.XgfApplyPersonCoConvertor;
import com.zcloud.primeport.dto.PersonApplyPageQry;
import com.zcloud.primeport.dto.PersonCountPageQry;
import com.zcloud.primeport.dto.XgfApplyPersonPageQry;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.PersonCountCO;
import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO;
import com.zcloud.primeport.persistence.dataobject.PersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.PersonCountDto;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import com.zcloud.primeport.persistence.repository.PersonApplyRepository;
@ -78,5 +81,14 @@ public class PersonApplyQueryExe {
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public PageResponse<PersonCountCO> personnelVehicleManagementList(PersonCountPageQry qry) {
Map<String, Object> parmas = PageQueryHelper.toHashMap(qry);
parmas.put("applyCorpId", AuthContext.getTenantId());
PageResponse<PersonCountDto> pageResponse = xgfPersonApplyRepository.personnelVehicleManagementList(parmas);
List<PersonCountCO> examCenterCOS = personApplyCoConvertor.converDtosToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -1,15 +1,20 @@
package com.zcloud.primeport.command.query;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.primeport.command.convertor.VehicleApplyCoConvertor;
import com.zcloud.primeport.dto.VehicleApplyPageQry;
import com.zcloud.primeport.dto.clientobject.VehicleApplyCO;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.dataobject.VehicleAuditDO;
import com.zcloud.primeport.persistence.repository.VehicleApplyRepository;
import com.zcloud.primeport.persistence.repository.VehicleAuditRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -24,6 +29,7 @@ import java.util.Map;
@AllArgsConstructor
public class VehicleApplyQueryExe {
private final VehicleApplyRepository vehicleApplyRepository;
private final VehicleAuditRepository vehicleAuditRepository;
private final VehicleApplyCoConvertor vehicleApplyCoConvertor;
/**
@ -40,7 +46,20 @@ public class VehicleApplyQueryExe {
}
public VehicleApplyCO getInfoById(Long id) {
return vehicleApplyCoConvertor.converDOToCO(vehicleApplyRepository.getById(id));
VehicleApplyDO vehicleApplyDO = vehicleApplyRepository.getById(id);
QueryWrapper<VehicleAuditDO> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("vehicle_apply_id",id);
objectQueryWrapper.orderByDesc("id");
ArrayList<VehicleApplyCO.VehicleAuditLog> vehicleAuditLogs = new ArrayList<>();
List<VehicleAuditDO> list = vehicleAuditRepository.list(objectQueryWrapper);
list.forEach(item ->{
VehicleApplyCO.VehicleAuditLog vehicleAuditLog = new VehicleApplyCO.VehicleAuditLog();
BeanUtils.copyProperties(item, vehicleAuditLog);
vehicleAuditLogs.add(vehicleAuditLog);
});
VehicleApplyCO vehicleApplyCO = vehicleApplyCoConvertor.converDOToCO(vehicleApplyDO);
vehicleApplyCO.setVehicleAuditLogList(vehicleAuditLogs);
return vehicleApplyCO;
}
}

View File

@ -9,6 +9,7 @@ import com.zcloud.primeport.command.PersonApplyUpdateExe;
import com.zcloud.primeport.command.query.PersonApplyQueryExe;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.PersonCountCO;
import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -79,5 +80,26 @@ public class PersonApplyServiceImpl implements PersonApplyServiceI {
public void xgfPersonAudit(XgfPersonApplyAuditCmd cmd) {
personApplyUpdateExe.xgfPersonAudit(cmd);
}
@Override
public PageResponse<PersonCountCO> personnelVehicleManagementList(PersonCountPageQry qry) {
return personApplyQueryExe.personnelVehicleManagementList(qry);
}
@Override
public void authorization(PersonAuthCmd cmd) {
if (cmd.getXgfApplyPersonId() != null) {
// 修改
personApplyUpdateExe.authorization(cmd.getApplyPersonId(),cmd.getMkmjPermission());
} else {
// 新增 就是股份,企业的。
personApplyAddExe.authorization(cmd);
}
}
@Override
public XgfPersonApplyCO xgfPersonApplyInfoById(Long id) {
return personApplyAddExe.xgfPersonApplyInfoById(id);
}
}

View File

@ -4,6 +4,7 @@ import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.primeport.dto.*;
import com.zcloud.primeport.dto.clientobject.PersonApplyCO;
import com.zcloud.primeport.dto.clientobject.PersonCountCO;
import com.zcloud.primeport.dto.clientobject.XgfPersonApplyCO;
/**
@ -32,5 +33,11 @@ public interface PersonApplyServiceI {
PageResponse<PersonApplyCO> tmpPersonApplyH5List(XgfApplyPersonPageQry qry);
void xgfPersonAudit(XgfPersonApplyAuditCmd cmd);
PageResponse<PersonCountCO> personnelVehicleManagementList(PersonCountPageQry qry);
void authorization(PersonAuthCmd cmd);
XgfPersonApplyCO xgfPersonApplyInfoById(Long id);
}

View File

@ -0,0 +1,68 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author makejava
* @Date 2026-03-05 11:33:22
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PersonAuthCmd extends Command {
@ApiModelProperty(value = "有id就是修改项目申请人员ID", name = "applyPersonId")
private Long applyPersonId;
@ApiModelProperty(value = "有id就是修改项目申请人员ID", name = "xgfApplyPersonId")
private Long xgfApplyPersonId;
@ApiModelProperty(value = "1股份2分公司3相关方", name = "personBelongType")
@NotNull(message = "1股份2分公司3相关方不能为空")
private Integer personBelongType;
//待审批人员所属企业ID
@ApiModelProperty(value = "待审批人员所属企业ID", name = "corpinfoId")
private Long corpinfoId;
//待审批人员所属企业名称
@ApiModelProperty(value = "待审批人员所属企业名称", name = "corpName")
private String corpName;
//待审批人员所属部门id
@ApiModelProperty(value = "待审批人员所属部门id", name = "departmentId")
private Long departmentId;
//待审批人员部门名称
@ApiModelProperty(value = "待审批人员部门名称", name = "departmentName")
private String departmentName;
//待审批人员id
@ApiModelProperty(value = "待审批人员id", name = "userId")
private Long userId;
//待审批人员姓名
@ApiModelProperty(value = "待审批人员姓名", name = "userName")
private String userName;
//头像
@ApiModelProperty(value = "头像", name = "userFaceUrl")
private String userFaceUrl;
//手机号
@ApiModelProperty(value = "手机号", name = "userPhone")
private String userPhone;
//身份证号码
@ApiModelProperty(value = "身份证号码", name = "userCard")
private String userCard;
@ApiModelProperty(value = "授权范围港区与区域", name = "gateLevelAuthArea")
@NotEmpty(message = "授权范围港区与区域不能为空")
private String gateLevelAuthArea;
@ApiModelProperty(value = "进出港权限(1:有 2无)", name = "mkmjPermission")
@NotNull(message = "进出港权限(1:有 2无)不能为空")
private Integer mkmjPermission;
}

View File

@ -0,0 +1,25 @@
package com.zcloud.primeport.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author makejava
* @Date 2026-03-05 11:33:24
*/
@Data
public class PersonCountPageQry extends PageQuery {
@ApiModelProperty(value = "姓名", name = "name")
private String name;
@ApiModelProperty(value = "性别", name = "sex")
private Long sex;
@ApiModelProperty(value = "部门ID", name = "departmentId")
private Long departmentId;
@ApiModelProperty(value = "公司ID", name = "corpId")
private Long corpId;
}

View File

@ -22,8 +22,6 @@ import java.util.Date;
@NoArgsConstructor
@AllArgsConstructor
public class VehicleApplyAddCmd extends Command {
// @ApiModelProperty(value = "车辆状态(1未启用,2启用)", name = "statusFlag", required = true)
// private Integer statusFlag;
@ApiModelProperty(value = "车牌类型数据字典", name = "licenceType", required = true)
@NotEmpty(message = "车牌类型数据字典不能为空")
private String licenceType;
@ -45,12 +43,6 @@ public class VehicleApplyAddCmd extends Command {
@ApiModelProperty(value = "授权范围港区与区域", name = "gateLevelAuthArea", required = true)
@NotEmpty(message = "授权范围港区与区域不能为空")
private String gateLevelAuthArea;
// @ApiModelProperty(value = "审核状态(1:审核中;2审核通过; 3审核驳回4无需审批检查部门车辆)", name = "auditFlag", required = true)
//// @NotNull(message = "审核状态(1:审核中;2审核通过; 3审核驳回4无需审批检查部门车辆)不能为空")
// private Integer auditFlag;
// @ApiModelProperty(value = "进出港权限(1:有 2无)", name = "mkmjPermission", required = true)
// @NotNull(message = "进出港权限(1:有 2无)不能为空")
// private Integer mkmjPermission;
@ApiModelProperty(value = "访问起始时间", name = "visitStartTime", required = true)
@NotEmpty(message = "访问起始时间不能为空")
private String visitStartTime;

View File

@ -27,15 +27,22 @@ public class VehicleApplyPageQry extends PageQuery {
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(value = "licenceNo", name = "车牌号")
@ApiModelProperty(value = "车牌号", name = "licenceNo")
private String licenceNo;
@ApiModelProperty(value = "auditFlag", name = "审核状态")
@ApiModelProperty(value = "审核状态", name = "auditFlag")
private Integer auditFlag;
@ApiModelProperty(value = "visitStartTime ", name = "访问起始时间")
@ApiModelProperty(value = "访问起始时间", name = "visitStartTime ")
private String visitStartTime;
@ApiModelProperty(value = "visitEndTime", name = "访问结束时间")
@ApiModelProperty(value = "访问结束时间", name = "visitEndTime")
private String visitEndTime;
@ApiModelProperty(value = "gateLevelAuthAreaId", name = "授权范围港区与区域")
@ApiModelProperty(value = "授权范围港区与区域", name = "gateLevelAuthAreaId")
private String gateLevelAuthAreaId;
@ApiModelProperty(value = "车辆归属的部门的部门depetid", name = "vehicleDepartmentId")
private Long vehicleDepartmentId;
@ApiModelProperty(value = "车辆归属的员工的员工userid", name = "employeeVehicleUserId")
private Long employeeVehicleUserId;
@ApiModelProperty(value = "车辆所属类型 1-股份员工车辆2-股份单位车辆3-分公司员工车辆4-分公司单位车辆 5-相关方车辆, 6:临时车辆7检查部门车辆", name = "vehicleBelongType")
private Integer vehicleBelongType;
}

View File

@ -0,0 +1,53 @@
package com.zcloud.primeport.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author makejava
* @Date 2026-03-05 11:33:21
*/
@Data
public class PersonCountCO extends ClientObject {
@ApiModelProperty(value = "用户ID")
private Long userId;
@ApiModelProperty(value = "手机号")
private String userPhone;
@ApiModelProperty(value = "用户名")
private String userName;
@ApiModelProperty(value = "身份证号")
private String userCard;
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpName;
@ApiModelProperty(value = "部门id")
private Long departmentId;
@ApiModelProperty(value = "部门名称")
private String departmentName;
@ApiModelProperty(value = "职位名称")
private String postName;
@ApiModelProperty(value = "项目ID")
private Long projectId;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "访问开始时间")
private String visitStartTime;
@ApiModelProperty(value = "访问结束时间")
private String visitEndTime;
@ApiModelProperty(value = "项目申请人员ID")
private Long xgfApplyPersonId;
@ApiModelProperty(value = "人员门禁权限id")
private Long applyPersonId;
@ApiModelProperty(value = "车辆数量")
private Integer vehicleCount;
@ApiModelProperty(value = "是否允许访问")
private Integer mkmjPermission;
@ApiModelProperty(value = "用户头像URL")
private String userFaceUrl;
}

View File

@ -2,9 +2,12 @@ package com.zcloud.primeport.dto.clientobject;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
@ -100,5 +103,51 @@ public class VehicleApplyCO extends ClientObject {
private Long auditUserId;
@ApiModelProperty(value = "currentUserId", name = "当前用户")
private Long currentUserId;
@ApiModelProperty(value = "车辆申请的审批记录", name = "VehicleAuditLogList")
private List<VehicleAuditLog> vehicleAuditLogList;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class VehicleAuditLog {
//id
@ApiModelProperty(value = "id")
private Long id;
//车辆申请id
@ApiModelProperty(value = "车辆申请id", name = "vehicleApplyId")
private String vehicleApplyId;
//审批批次(1.普通车辆.2危险化学品车辆)
@ApiModelProperty(value = "审批批次(1.普通车辆.2危险化学品车辆)", name = "batchType")
private Integer batchType;
//审批状态(1,申请;2.更新)
@ApiModelProperty(value = "审批状态(1,申请;2.更新)", name = "batchState")
private Integer batchState;
//审批人id
@ApiModelProperty(value = "审批人id", name = "auditUserId")
private Long auditUserId;
//审批人姓名
@ApiModelProperty(value = "审批人姓名", name = "auditUserName")
private String auditUserName;
//审批部门id
@ApiModelProperty(value = "审批部门id", name = "auditDeptId")
private Long auditDeptId;
//审批部门名称
@ApiModelProperty(value = "审批部门名称", name = "auditDeptName")
private String auditDeptName;
//审批人企业id
@ApiModelProperty(value = "审批人企业id", name = "auditCorpId")
private Long auditCorpId;
//审批人企业名称
@ApiModelProperty(value = "审批人企业名称", name = "auditCorpName")
private String auditCorpName;
//审批状态(1,未开始,2通过,3不通过)
@ApiModelProperty(value = "审批状态(1,未开始,2通过,3不通过)", name = "auditStatus")
private Integer auditStatus;
//审批意见
@ApiModelProperty(value = "审批意见(驳回原因)", name = "remarks")
private String remarks;
}
}

View File

@ -25,9 +25,6 @@ public class XgfPersonApplyCO extends ClientObject {
//审核状态(1:审核中;2审核通过; 3审核驳回4无需审批长期人员)
@ApiModelProperty(value = "审核状态(1:审核中;2审核通过; 3审核驳回4无需审批长期人员)",name = "auditFlag")
private Integer auditFlag;
//进出港权限(1:有 2无)
@ApiModelProperty(value = "进出港权限(1:有 2无)",name = "mkmjPermission")
private Integer mkmjPermission;
//访问起始时间
@ApiModelProperty(value = "访问起始时间",name = "visitStartTime")
private String visitStartTime;
@ -77,5 +74,10 @@ public class XgfPersonApplyCO extends ClientObject {
private String reasonsRefusal;
@ApiModelProperty(value = "来访事由", name = "reasonVisit")
private String reasonVisit;
@ApiModelProperty(value = "项目人员数",name = "personApplyCount")
private Integer personApplyCount;
@ApiModelProperty(value = "申请人员列表", name = "personApplyList")
private List<XgfPersonApplyAddCmd.PersonApplyAddCmdExt> personApplyList;
}

View File

@ -4,6 +4,7 @@ import com.zcloud.primeport.domain.model.PersonApplyE;
import com.zcloud.primeport.domain.model.XgfApplyPersonE;
import java.util.ArrayList;
import java.util.List;
/**
* web-domain
@ -33,5 +34,7 @@ public interface PersonApplyGateway {
void saveBatch(ArrayList<PersonApplyE> personApplyES);
void xgfPersonAudit(XgfApplyPersonE build);
List<PersonApplyE> personListByxgfApplyPersonId(Long id);
}

View File

@ -3,6 +3,8 @@ package com.zcloud.primeport.domain.gateway;
import com.zcloud.primeport.domain.model.PersonApplyE;
import com.zcloud.primeport.domain.model.XgfApplyPersonE;
import java.util.List;
/**
* web-domain
*
@ -12,5 +14,7 @@ import com.zcloud.primeport.domain.model.XgfApplyPersonE;
public interface XgfApplyPersonGateway {
void save(XgfApplyPersonE build);
XgfApplyPersonE getInfoById(Long id);
}

View File

@ -20,6 +20,7 @@ import java.util.Date;
@Builder
public class PersonApplyE extends BaseE {
private Long xgfApplyPersonId;
private Integer mkmjPermission;
//待审批人员所属企业ID
private Long personCorpId;
//待审批人员所属企业名称

View File

@ -1,6 +1,7 @@
package com.zcloud.primeport.gatewayimpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.zcloud.primeport.domain.gateway.PersonApplyGateway;
import com.zcloud.primeport.domain.model.PersonApplyE;
import com.zcloud.primeport.domain.model.XgfApplyPersonE;
@ -60,7 +61,7 @@ public class PersonApplyGatewayImpl implements PersonApplyGateway {
@Override
public void saveBatch(ArrayList<PersonApplyE> personApplyES) {
ArrayList<PersonApplyDO> d = new ArrayList<>();
personApplyES.forEach(item ->{
personApplyES.forEach(item -> {
PersonApplyDO doItem = new PersonApplyDO();
BeanUtils.copyProperties(item, doItem);
d.add(doItem);
@ -79,8 +80,11 @@ public class PersonApplyGatewayImpl implements PersonApplyGateway {
QueryWrapper<PersonApplyDO> personApplyDOQueryWrapper = new QueryWrapper<>();
personApplyDOQueryWrapper.eq("xgf_apply_person_id", d.getId());
List<PersonApplyDO> list = personApplyRepository.list(personApplyDOQueryWrapper);
UpdateWrapper<PersonApplyDO> personApplyDOUpdateWrapper = new UpdateWrapper<>();
personApplyDOUpdateWrapper.set("mkmj_permission", 1);
personApplyDOUpdateWrapper.eq("xgf_apply_person_id", d.getId());
ArrayList<PersonMessageDO> personMessageDOS = new ArrayList<>();
list.forEach( item ->{
list.forEach(item -> {
PersonMessageDO messageDO = new PersonMessageDO();
messageDO.setPersonBelongType(byId.getPersonBelongType());
messageDO.setPersonApplyId(d.getId());
@ -95,5 +99,19 @@ public class PersonApplyGatewayImpl implements PersonApplyGateway {
personMessageRepository.saveBatch(personMessageDOS);
}
}
@Override
public List<PersonApplyE> personListByxgfApplyPersonId(Long id) {
QueryWrapper<PersonApplyDO> xgfApplyPersonDOQueryWrapper = new QueryWrapper<>();
xgfApplyPersonDOQueryWrapper.eq("xgf_apply_person_id", id);
List<PersonApplyDO> xgfApplyPersonDOS = personApplyRepository.list(xgfApplyPersonDOQueryWrapper);
ArrayList<PersonApplyE> xgfApplyPersonES = new ArrayList<>();
xgfApplyPersonDOS.forEach(item -> {
PersonApplyE xgfApplyPersonE = new PersonApplyE();
BeanUtils.copyProperties(item, xgfApplyPersonE);
xgfApplyPersonES.add(xgfApplyPersonE);
});
return xgfApplyPersonES;
}
}

View File

@ -1,5 +1,6 @@
package com.zcloud.primeport.gatewayimpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zcloud.primeport.domain.gateway.PersonApplyGateway;
import com.zcloud.primeport.domain.gateway.XgfApplyPersonGateway;
import com.zcloud.primeport.domain.model.PersonApplyE;
@ -12,7 +13,9 @@ import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* web-infrastructure
@ -32,5 +35,14 @@ public class XgfApplyPersonGatewayImpl implements XgfApplyPersonGateway {
xgfApplyPersonMapper.insert(d);
build.setId(d.getId());
}
@Override
public XgfApplyPersonE getInfoById(Long id) {
XgfApplyPersonDO xgfApplyPersonDO = xgfApplyPersonMapper.selectById(id);
XgfApplyPersonE d = new XgfApplyPersonE();
BeanUtils.copyProperties(xgfApplyPersonDO, d);
return d;
}
}

View File

@ -63,5 +63,6 @@ public class PersonApplyDO extends BaseDO {
private Long mkmjName;
@TableField(exist = false)
private Integer personBelongType;
private Integer mkmjPermission;
}

View File

@ -0,0 +1,53 @@
package com.zcloud.primeport.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* web-infrastructure
*
* @Author makejava
* @Date 2026-03-05 11:33:22
*/
@Data
public class PersonCountDto{
@ApiModelProperty(value = "用户ID")
private Long userId;
@ApiModelProperty(value = "手机号")
private String userPhone;
@ApiModelProperty(value = "用户名")
private String userName;
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpName;
@ApiModelProperty(value = "部门id")
private Long departmentId;
@ApiModelProperty(value = "部门名称")
private String departmentName;
@ApiModelProperty(value = "职位名称")
private String postName;
@ApiModelProperty(value = "项目ID")
private Long projectId;
@ApiModelProperty(value = "项目名称")
private String projectName;
@ApiModelProperty(value = "访问开始时间")
private String visitStartTime;
@ApiModelProperty(value = "访问结束时间")
private String visitEndTime;
@ApiModelProperty(value = "项目申请人员ID")
private Long xgfApplyPersonId;
@ApiModelProperty(value = "人员门禁权限id用于授权")
private Long applyPersonId;
@ApiModelProperty(value = "车辆数量")
private Integer vehicleCount;
@ApiModelProperty(value = "是否允许访问")
private Integer mkmjPermission;
@ApiModelProperty(value = "用户头像URL")
private String userFaceUrl;
}

View File

@ -99,6 +99,9 @@ public class VehicleApplyDO extends BaseDO {
//1被拉黑2未拉黑
@ApiModelProperty(value = "1被拉黑2未拉黑")
private Integer blockedFlag;
@TableField(exist = false)
@ApiModelProperty(value = "项目人员数")
private Integer personApplyCount;
@ApiModelProperty(value = "审核企业")

View File

@ -25,8 +25,8 @@ public class XgfApplyPersonDO extends BaseDO {
@ApiModelProperty(value = "审核状态(1:审核中;2审核通过; 3审核驳回4无需审批长期人员)")
private Integer auditFlag;
//进出港权限(1:有 2无)
@ApiModelProperty(value = "进出港权限(1:有 2无)")
private Integer mkmjPermission;
// @ApiModelProperty(value = "进出港权限(1:有 2无)")
// private Integer mkmjPermission;
//访问起始时间
@ApiModelProperty(value = "访问起始时间")
private String visitStartTime;

View File

@ -3,6 +3,7 @@ package com.zcloud.primeport.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zcloud.primeport.persistence.dataobject.PersonCountDto;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import org.apache.ibatis.annotations.Mapper;
@ -19,5 +20,7 @@ import java.util.Map;
public interface XgfApplyPersonMapper extends BaseMapper<XgfApplyPersonDO> {
IPage<VehicleApplyDO> xgfPersonAuditList(Page<Map<String, Object>> page, Map<String, Object> parmas, String menuPerms);
IPage<PersonCountDto> personnelVehicleManagementList(Page<Map<String, Object>> page, Map<String, Object> parmas, String menuPerms);
}

View File

@ -3,6 +3,7 @@ package com.zcloud.primeport.persistence.repository;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.primeport.persistence.dataobject.PersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.PersonCountDto;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import java.util.Map;
@ -15,5 +16,7 @@ import java.util.Map;
*/
public interface XgfApplyPersonRepository extends BaseRepository<XgfApplyPersonDO> {
PageResponse<XgfApplyPersonDO> xgfPersonAuditList(Map<String, Object> parmas);
PageResponse<PersonCountDto> personnelVehicleManagementList(Map<String, Object> parmas);
}

View File

@ -12,6 +12,7 @@ import com.zcloud.gbscommon.utils.Query;
import com.zcloud.gbscommon.utils.Tools;
import com.zcloud.primeport.domain.enums.MenuEnum;
import com.zcloud.primeport.persistence.dataobject.PersonApplyDO;
import com.zcloud.primeport.persistence.dataobject.PersonCountDto;
import com.zcloud.primeport.persistence.dataobject.VehicleApplyDO;
import com.zcloud.primeport.persistence.dataobject.XgfApplyPersonDO;
import com.zcloud.primeport.persistence.mapper.PersonApplyMapper;
@ -45,5 +46,16 @@ public class XgfApplyPersonRepositoryImpl extends BaseRepositoryImpl<XgfApplyPer
IPage<VehicleApplyDO> result = xgfApplyPersonMapper.xgfPersonAuditList(page, parmas,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override
public PageResponse<PersonCountDto> personnelVehicleManagementList(Map<String, Object> parmas) {
Page<Map<String, Object>> page = new Page<>(Integer.parseInt(parmas.get("pageIndex").toString()), Integer.parseInt(parmas.get("pageSize").toString()));
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(parmas.get("menuPath"))) {
menuPerms = MenuEnum.getMenuKeyByPath(parmas.get("menuPath").toString());
}
IPage<PersonCountDto> result = xgfApplyPersonMapper.personnelVehicleManagementList(page, parmas,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords());
}
}

View File

@ -58,8 +58,14 @@
<if test="parmas.visitEndTime != null">
AND f.visit_end_time LIKE CONCAT('%', #{parmas.gateName}, '%')
</if>
<if test="parmas.gateCategory != null and parmas.gateCategory != ''">
AND g.gate_category = #{parmas.gateCategory}
<if test="parmas.vehicleBelongType != null and parmas.vehicleBelongType != ''">
AND f.vehicle_belong_type = #{parmas.vehicleBelongType}
</if>
<if test="parmas.vehicleDepartmentId != null and parmas.vehicleDepartmentId != ''">
AND f.vehicle_department_id = #{parmas.vehicleDepartmentId}
</if>
<if test="parmas.employeeVehicleUserId != null and parmas.employeeVehicleUserId != ''">
AND f.employee_vehicle_user_id = #{parmas.employeeVehicleUserId}
</if>
</select>
</mapper>

View File

@ -33,5 +33,57 @@
AND p.apply_corp_name like CONCAT('%', #{parmas.applyCorpName}, '%')
</if>
</select>
<select id="personnelVehicleManagementList"
resultType="com.zcloud.primeport.persistence.dataobject.PersonCountDto">
SELECT
u.corpinfo_id,
c.corp_name,
u.id user_id,
u.phone user_phone,
u.name user_name,
d.id department_id,
d.`name` department_name,
p.post_name,
xap.project_id,
xap.project_name,
xap.visit_start_time,
xap.visit_end_time,
pa.id apply_person_id,
pa.xgf_apply_person_id,
IFNULL( tmp.vehicle_count, 0 ) vehicle_count,
IFNULL( xap.mkmj_permission, 2 ) mkmj_permission,
u.user_avatar_url user_face_url
FROM
USER u
LEFT JOIN department d ON u.department_id = d.id
LEFT JOIN post p ON u.post_id = p.id
LEFT JOIN person_apply pa ON u.id = pa.employee_person_user_id
LEFT JOIN xgf_apply_person xap ON pa.xgf_apply_person_id = xap.id
LEFT JOIN (
SELECT
va.employee_vehicle_user_id,
COUNT( va.id ) vehicle_count
FROM
vehicle_apply va
WHERE
va.delete_enum = 'FALSE'
AND va.employee_vehicle_user_id != ''
AND va.employee_vehicle_user_id IS NOT NULL
GROUP BY
va.employee_vehicle_user_id
) tmp ON u.id = tmp.employee_vehicle_user_id
WHERE
u.delete_enum = 'FALSE'
AND u.main_corp_flag = 0
AND u.corpinfo_id = #{parmas.corpId}
<if test="parmas.departmentId != null and parmas.departmentId != ''">
AND u.department_id = #{parmas.departmentId}
</if>
<if test="parmas.name != null and parmas.name != ''">
AND u.name like CONCAT('%', #{parmas.name}, '%')
</if>
ORDER BY
u.department_id
</select>
</mapper>