兴安出门证申请开发

This commit is contained in:
zc
2025-07-10 23:24:48 +08:00
parent 1fac9db599
commit 63c67c07e6
17 changed files with 564 additions and 38 deletions

View File

@@ -51,6 +51,14 @@ public class SysPeopleRecord extends BaseEntity
@Excel(name = "识别记录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss",sort = 1)
private Date showDate;
/** 识别记录时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date showDateState;
/** 识别记录时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date showDateEnd;
/** 活体结果 1:活体判断成功 2:活体判断失败 3:未进行活体判断 */
@Excel(name = "活体结果", readConverterExp = "1=活体判断成功,2=活体判断失败,3=活体判断失败")
private String aliveType;
@@ -136,6 +144,22 @@ public class SysPeopleRecord extends BaseEntity
*/
private String yesterday;
public Date getShowDateState() {
return showDateState;
}
public void setShowDateState(Date showDateState) {
this.showDateState = showDateState;
}
public Date getShowDateEnd() {
return showDateEnd;
}
public void setShowDateEnd(Date showDateEnd) {
this.showDateEnd = showDateEnd;
}
public String getHour() {
return hour;
}

View File

@@ -8,34 +8,37 @@ import com.dcsoft.common.core.constant.Constants;
import com.dcsoft.common.core.exception.ServiceException;
import com.dcsoft.common.core.utils.CollUtil;
import com.dcsoft.common.core.utils.SmsUtils;
import com.dcsoft.common.core.utils.poi.ExcelUtil;
import com.dcsoft.common.core.web.controller.BaseController;
import com.dcsoft.common.core.web.domain.AjaxResult;
import com.dcsoft.common.core.web.page.TableDataInfo;
import com.dcsoft.common.log.annotation.Log;
import com.dcsoft.common.log.enums.BusinessType;
import com.dcsoft.common.redis.service.RedisService;
import com.dcsoft.common.security.annotation.RequiresPermissions;
import com.dcsoft.common.sms.config.properties.SmsProperties;
import com.dcsoft.system.domain.SysPeople;
import com.dcsoft.system.domain.vo.IdNamelVo;
import com.dcsoft.system.service.ISysDictDataService;
import com.dcsoft.system.service.ISysPeopleService;
import com.dcsoft.system.utils.UuidUtil;
import com.dcsoft.system.visitor.domain.CheckCodeVo;
import com.dcsoft.system.visitor.domain.VisExitOutVo;
import com.dcsoft.system.visitor.domain.VisStuffInfoVo;
import com.dcsoft.system.visitor.domain.VisVisitorExamine;
import com.dcsoft.system.visitor.domain.*;
import com.dcsoft.system.visitor.service.IVisCarryStuffService;
import com.dcsoft.system.visitor.service.IVisVisitorExamineService;
import com.dcsoft.system.visitor.service.IVisitorService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@@ -119,7 +122,7 @@ public class VisCarryStuffController extends BaseController {
*/
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
VisExitOutVo stuffVo = visCarryStuffService.selectVisStuffById(id);
VisExitOutVo stuffVo = visCarryStuffService.selectVisExitOutById(id);
//查询物品信息列表
VisStuffInfoVo visStuffInfoVo = new VisStuffInfoVo();
@@ -150,6 +153,12 @@ public class VisCarryStuffController extends BaseController {
if (ObjectUtil.isNotNull(codeVo)) {
stuffVo.setQrCode(codeVo.getCode());
}
//查询审核信息
List<VisitorReviewProcessVo> reviewProcess = visCarryStuffService.queryVisitorReviewProcessList(id);
if(CollUtil.isNotEmpty(reviewProcess)) {
stuffVo.setReviewProcessList(reviewProcess);
}
return success(stuffVo);
}
@@ -160,14 +169,24 @@ public class VisCarryStuffController extends BaseController {
@Log(title = "出门证申请", businessType = BusinessType.INSERT)
@PostMapping
@Transactional
public AjaxResult add(@RequestBody VisExitOutVo vo) {
public AjaxResult add(@Validated @RequestBody VisExitOutVo vo) {
log.info("新增出门证申请信息:{}", vo);
//校验是否存在返厂物资
List<VisStuffInfoVo> visStuffInfoList = vo.getVisStuffInfoList();
for (VisStuffInfoVo visStuffInfoVo : visStuffInfoList) {
if (visStuffInfoVo.getIsBack() == 1) {
vo.setIsExistBack(1);
if (visStuffInfoVo.getBackNumber() > visStuffInfoVo.getNumber()) {
throw new ServiceException("返厂物资数量不能大于出厂物资数量!");
}
}
}
try {
//新增出门申请
visCarryStuffService.insertVisExitOut(vo);
//新增物资信息
List<VisStuffInfoVo> visStuffInfoList = vo.getVisStuffInfoList();
visStuffInfoList.forEach(stuff -> stuff.setExitId(vo.getId()));
visCarryStuffService.insertVisStuffInfo(visStuffInfoList);
} catch (Exception e) {
@@ -189,7 +208,6 @@ public class VisCarryStuffController extends BaseController {
throw new ServiceException("系统异常,请重新提交或联系管理员!");
}
return AjaxResult.success();
}
@@ -241,7 +259,7 @@ public class VisCarryStuffController extends BaseController {
SysPeople sysPeople = sysPeopleService.queryPeopleName(telephone, null);
//查询出门证申请详情信息
VisExitOutVo stuffVo = visCarryStuffService.selectVisStuffById(vo.getId());
VisExitOutVo stuffVo = visCarryStuffService.selectVisExitOutById(vo.getId());
//保存审核环节表
vo.setReviewer(sysPeople.getId());
@@ -339,5 +357,39 @@ public class VisCarryStuffController extends BaseController {
return AjaxResult.success(list);
}
/**
* 导出出门证信息列表
*/
@RequiresPermissions("visitor:stuff:export")
@Log(title = "出门证申请", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, VisExitOutVo vo) {
List<VisStuffInfoExportVo> list = visCarryStuffService.selectVisitorList(vo);
Map<String, String> map = dictDataService.queryDictData("vis_out_stuff_type");
list.forEach(stuff -> {
if (StrUtil.isNotBlank(stuff.getType())) {
stuff.setTypeName(map.get(stuff.getType()));
}
if (StrUtil.isNotBlank(stuff.getBackType())) {
stuff.setBackTypeName(map.get(stuff.getBackType()));
}
if (StrUtil.isNotBlank(stuff.getImgUrls())) {
String[] split = stuff.getImgUrls().split(",");
for (int i = 0; i < split.length; i++) {
if (i == 0) {
stuff.setImgUrls1(split[i]);
}
if (i == 1) {
stuff.setImgUrls2(split[i]);
}
if (i == 2) {
stuff.setImgUrls3(split[i]);
}
}
}
});
ExcelUtil<VisStuffInfoExportVo> util = new ExcelUtil<>(VisStuffInfoExportVo.class);
util.exportExcel(response, list, "出厂物资明细数据");
}
}

View File

@@ -23,7 +23,9 @@ public class VisExitOutRecordController extends BaseController {
@Resource
private IVisExitOutRecordService visExitOutRecordService;
/**
* 查询出门记录列表
*/
@GetMapping("/list")
public TableDataInfo list(VisExitOutRecordVo vo) {
startPage();
@@ -40,9 +42,8 @@ public class VisExitOutRecordController extends BaseController {
return success(stuffVo);
}
/**
* 新增访客信息
* 新增出门证记录信息
*/
@Log(title = "新增出门记录", businessType = BusinessType.INSERT)
@PostMapping
@@ -60,4 +61,21 @@ public class VisExitOutRecordController extends BaseController {
return AjaxResult.success();
}
/**
* 删除出门证记录信息
*/
@DeleteMapping("/{ids}")
public AjaxResult delete(@PathVariable Long[] ids){
log.info("删除出门记录信息:{}", ids);
try {
//新增出门申请
visExitOutRecordService.delete(ids);
} catch (Exception e) {
log.error("新增出门记录异常:", e);
throw new ServiceException("系统异常");
}
return AjaxResult.success();
}
}

View File

@@ -377,7 +377,7 @@ public class VisitorController extends BaseController {
* @return
*/
private VisExitOutVo getVisCarryStuff(Long id, String telephone) {
VisExitOutVo stuffVo = visCarryStuffService.selectVisStuffById(id);
VisExitOutVo stuffVo = visCarryStuffService.selectVisExitOutById(id);
//查询物品信息列表
VisStuffInfoVo visStuffInfoVo = new VisStuffInfoVo();
@@ -387,8 +387,18 @@ public class VisitorController extends BaseController {
//处理字典
Map<String, String> map = dictDataService.queryDictData("vis_out_stuff_type");
stuffList.forEach(stuff -> {
stuff.setTypeName(map.get(stuff.getType()));
stuff.setBackTypeName(map.get(stuff.getBackType()));
if (StrUtil.isNotBlank(stuff.getType())) {
stuff.setTypeName(map.get(stuff.getType()));
}
if (StrUtil.isNotBlank(stuff.getBackType())) {
stuff.setBackTypeName(map.get(stuff.getBackType()));
}
if (StrUtil.isNotBlank(stuff.getImgUrls())) {
stuff.setImgUrlList(Arrays.asList(stuff.getImgUrls().split(",")));
}
if (StrUtil.isNotBlank(stuff.getBackImgUrls())) {
stuff.setBackImgUrlList(Arrays.asList(stuff.getBackImgUrls().split(",")));
}
});
stuffVo.setVisStuffInfoList(stuffList);
}

View File

@@ -14,7 +14,13 @@ public class VisExitOutRecordVo extends BaseEntity {
private Long id;
/**
* 保安
* 出门证主键id
*/
private Long exitId;
/**
* 放行人(保安)
*/
private Long userId;
@@ -24,8 +30,44 @@ public class VisExitOutRecordVo extends BaseEntity {
private String userName;
/**
* 出门申请id
* 出货人名字
*/
private Long exitId;
private String applyName;
/**
* 出门证编号
*/
private String exitPermitNo;
/**
* 申请日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTime;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTimeStart;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTimeEnd;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date createTimeStr;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date createTimeEnd;
}

View File

@@ -5,6 +5,8 @@ import com.dcsoft.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@@ -13,6 +15,8 @@ public class VisExitOutVo extends BaseEntity {
private Long id;
private List<Long> ids;
/**
* 发货人(申请人)
*/
@@ -36,6 +40,7 @@ public class VisExitOutVo extends BaseEntity {
/**
* 出门证编号
*/
@NotBlank(message = "出门证编号为空!")
private String exitPermitNo;
/**
@@ -59,6 +64,18 @@ public class VisExitOutVo extends BaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTime;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTimeStart;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date visTimeEnd;
/**
* 车牌
*/
@@ -67,18 +84,36 @@ public class VisExitOutVo extends BaseEntity {
/**
* 一级审核人
*/
@NotNull(message = "生产部审核人不能为空")
private Long reviewer1;
/**
* 二级审核人
*/
@NotNull(message = "设备部审核人不能为空")
private Long reviewer2;
/**
* 三级审核人
*/
@NotNull(message = "人力综合部审核人不能为空")
private Long reviewer3;
/**
* 一级审核人名字
*/
private String reviewerName1;
/**
* 二级审核人
*/
private String reviewerName2;
/**
* 三级审核人
*/
private String reviewerName3;
/**
* 审核状态 0通过1驳回2审核中4已取消5已失效
*/
@@ -104,12 +139,16 @@ public class VisExitOutVo extends BaseEntity {
*/
private String telephone;
/**
* 当前审批节点
*/
private Integer currentNode;
/**
* 是否存在返厂物资 0:否1
*/
private Integer isExistBack;
/**
* 物品信息列表
*/

View File

@@ -0,0 +1,214 @@
package com.dcsoft.system.visitor.domain;
import com.dcsoft.common.core.annotation.Excel;
import com.dcsoft.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class VisStuffInfoExportVo extends BaseEntity {
private Long id;
/**
* 出门申请id
*/
private Long exitId;
private List<Long> exitIds;
/**
* 发货人
*/
@Excel(name = "出门证编号", sort = 1, width = 19)
private String exitPermitNo;
/**
* 发货人
*/
@Excel(name = "发货人",sort = 2)
private String userName;
/**
* 发货人联系方式
*/
@Excel(name = "发货人联系方式",sort = 3)
private String phone;
/**
* 发货人单位
*/
@Excel(name = "发货人单位",sort = 4)
private String visitingUnit;
/**
* 申请日期
*/
@Excel(name = "申请日期",sort = 5)
@JsonFormat(pattern = "yyyy-MM-dd")
private String visTime;
/**
* 物资名称
*/
@Excel(name = "物资名称",sort = 6)
private String name;
/**
* 物资用途
*/
@Excel(name = "物资用途", sort = 7)
private String purpose;
/**
* 物资类型
*/
private String type;
/**
* 物资类型名称
*/
@Excel(name = "物资类型", sort = 8)
private String typeName;
/**
* 规格型号
*/
@Excel(name = "规格型号", sort = 9)
private String model;
/**
* 计量单位
*/
@Excel(name = "计量单位", sort = 10)
private String unit;
/**
* 数量
*/
@Excel(name = "数量", sort = 11)
private Integer number;
/**
* 图片地址
*/
private String imgUrls;
/**
* 图片地址
*/
@Excel(name = "物资图片1", sort = 12, cellType = Excel.ColumnType.IMAGE, height = 50, width = 8)
private String imgUrls1;
/**
* 图片地址
*/
@Excel(name = "物资图片2", sort = 13, cellType = Excel.ColumnType.IMAGE, height = 50, width = 8)
private String imgUrls2;
/**
* 图片地址
*/
@Excel(name = "物资图片3", sort = 14, cellType = Excel.ColumnType.IMAGE, height = 50, width = 8)
private String imgUrls3;
/**
* 备注
*/
@Excel(name = "备注", sort = 15)
private String remark;
/**
* 是否返厂01
*/
@Excel(name = "是否返厂", sort = 16, readConverterExp = "0=否,1=是")
private Integer isBack;
/**
* 返厂日期
*/
@Excel(name = "返厂日期", sort = 17)
@JsonFormat(pattern = "yyyy-MM-dd")
private String backTime;
/**
* 返厂物资名称
*/
private String backName;
/**
* 返厂物资用途
*/
private String backPurpose;
/**
* 返厂物资类型
*/
private String backType;
/**
* 返厂物资类型名称
*/
private String backTypeName;
/**
* 返厂规格型号
*/
private String backModel;
/**
* 返厂计量单位
*/
private String backUnit;
/**
* 返厂数量
*/
@Excel(name = "返厂数量", sort = 18)
private Integer backNumber;
/**
* 返厂图片地址
*/
private String backImgUrls;
/**
* 返厂图片地址
*/
private String backImgUrls1;
/**
* 返厂图片地址
*/
private String backImgUrls2;
/**
* 返厂图片地址
*/
private String backImgUrls3;
/**
* 返厂备注
*/
@Excel(name = "返厂备注", sort = 19)
private String backRemark;
/**
* 审核状态
*/
@Excel(name = "审核状态", sort = 20, readConverterExp = "0=通过,1=驳回,2=审核中,4=已取消,5=已失效")
private String examineState;
/**
* 排序
*/
private Integer sort;
}

View File

@@ -78,7 +78,7 @@ public class VisStuffInfoVo extends BaseEntity {
/**
* 返厂日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date backTime;
/**

View File

@@ -1,9 +1,6 @@
package com.dcsoft.system.visitor.mapper;
import com.dcsoft.system.visitor.domain.CheckCodeVo;
import com.dcsoft.system.visitor.domain.VisExitOutVo;
import com.dcsoft.system.visitor.domain.VisStuffInfoVo;
import com.dcsoft.system.visitor.domain.VisitorReviewProcessVo;
import com.dcsoft.system.visitor.domain.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -14,7 +11,7 @@ public interface VisCarryStuffMapper {
void insertVisExitOut(VisExitOutVo vo);
VisExitOutVo selectVisStuffById(Long id);
VisExitOutVo selectVisExitOutById(Long id);
CheckCodeVo selectStuffCheckCode(@Param("exitId") Long id);
@@ -29,4 +26,6 @@ public interface VisCarryStuffMapper {
void insertVisStuffInfo(@Param("list") List<VisStuffInfoVo> visStuffInfoList);
List<VisStuffInfoVo> selectStuffList(VisStuffInfoVo visStuffInfoVo);
List<VisStuffInfoExportVo> selectVisitorList(VisExitOutVo vo);
}

View File

@@ -12,4 +12,6 @@ public interface VisExitOutRecordMapper {
VisExitOutRecordVo selectExitOutRecordById(Long id);
void insertExitOutRecord(VisExitOutRecordVo vo);
void delete(@Param("list") List<Long> list);
}

View File

@@ -10,7 +10,7 @@ public interface IVisCarryStuffService {
void insertVisExitOut(VisExitOutVo vo);
VisExitOutVo selectVisStuffById(Long id);
VisExitOutVo selectVisExitOutById(Long id);
CheckCodeVo selectStuffCheckCode(Long id);
@@ -25,4 +25,6 @@ public interface IVisCarryStuffService {
void insertVisStuffInfo(List<VisStuffInfoVo> visStuffInfoList);
List<VisStuffInfoVo> selectStuffList(VisStuffInfoVo vo);
List<VisStuffInfoExportVo> selectVisitorList(VisExitOutVo vo);
}

View File

@@ -11,4 +11,6 @@ public interface IVisExitOutRecordService {
VisExitOutRecordVo selectExitOutRecordById(Long id);
void insertExitOutRecord(VisExitOutRecordVo vo);
void delete(Long[] ids);
}

View File

@@ -53,8 +53,13 @@ public class VisCarryStuffImpl implements IVisCarryStuffService {
}
@Override
public VisExitOutVo selectVisStuffById(Long id) {
return visCarryStuffMapper.selectVisStuffById(id);
public List<VisStuffInfoExportVo> selectVisitorList(VisExitOutVo vo) {
return visCarryStuffMapper.selectVisitorList(vo);
}
@Override
public VisExitOutVo selectVisExitOutById(Long id) {
return visCarryStuffMapper.selectVisExitOutById(id);
}
@Override

View File

@@ -12,6 +12,7 @@ import com.dcsoft.system.visitor.service.IVisExitOutRecordService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
@Service
@@ -32,7 +33,15 @@ public class VisExitOutRecordImpl implements IVisExitOutRecordService {
@Override
public void insertExitOutRecord(VisExitOutRecordVo vo) {
LoginUser loginUser = SecurityUtils.getLoginUser();
vo.setCreateBy(loginUser.getUsername());
visExitOutRecordMapper.insertExitOutRecord(vo);
}
@Override
public void delete(Long[] ids) {
List<Long> list = Arrays.asList(ids);
visExitOutRecordMapper.delete(list);
}
}