安徽合武项目需求增加

This commit is contained in:
pengjie 2025-02-25 11:01:14 +08:00
parent 0af7c9ff21
commit de2916d8be
8 changed files with 135 additions and 14 deletions

1
ArcFace64.dat Normal file
View File

@ -0,0 +1 @@
EWEPEPEOGMGTELIZJUGECKIUJDBCJTCNISGPBNHLJTJUBHEWGNAKGEGAIOHJDQAJGNCFDRFZJEDMJTGEDVIQGKEJIKACHIIXDEELIWCCEEELCVCEHFHAJGIPGIIKJRASJFEHAMIKCIGXAPGEHIIZGFBBJMFJJNGFHUGDGDFGFAITGDAXBGAZGKAMBMDABKBAERDUHDAUDOEBIBGBBMCUIZGABKCABIDMFHFRILIIANEBEWBOAIJHBYFAIREBFQFFCHHREKFTFJJQIAGFDSDZHMHUCGBVHIAUENBCJIBBJDIHHDIQFKFNDEBJCKCFGLJKBMHFAZHTHOIRGLJFDUHWEVFGFHDKIBEKFVCGAQJGCYBZAMHDJBJREAIOJPIAJDCJFXHKHPJTHUBTJPDWISESIEIPISDWDRAMFVFFBJCTFVFAARGJHFIMELIQJEAHFRFQDTERDCCGDCIKCAGBJVDLGHEXEBAWAMAFITJDANGBCRDPBPEECBAVAEBNJADGIPJAFWFJCYDZHFBFDHCMDCGNGTJTARACGRGOCDFWBPIRHKJACZAEHDJLGUFUGJDTHNJODDEBEVJLJUDDAAIJGNBPIQJOFNDHGKDQGOIBCWEGDBHDHDDBDPCFGLIBCRIPDSHECTAJBKGHGYAPDFJHFEDMCPAUHBDXAXEQCOEVCFDLGKAUASEZDAESETEUAJGHJFHLCTANBPDDCOGABTJJBBJHGLJPFMCQJOBTHPCNBMGFIPGNCHJSHOJGFQFSHGGUBVACADCHEDFDJHCKFEHBDIFJIUINCVJUDUENFHIUEFJFDBEPFHHGJAGLJGAOEMJNDYANAADPDODKGXFMHUCVHVCXGLCFHLFLETEZIWCTEFBRAOFFADEUIDFCGWDBCSAVDQJOANHKGHCSBFIBEACRITIEJGETGEJIAFDAIRJLHMEIBRCUIKDLBTHWHIEPHOGABGBBCCFFHKIECJJQHUDFHDITIQBQBCANARGIBPDUFTDHFKGOCMEEFHGXCTJVCOIXFUFDEAGZGNILISHSHKJGHQAEEAHLDWAWJADUGGELCKBACPAEINFSJHBQIFBVJHJICEAEGEFKBHCIHZCNJUJLIHGPFLILBRJTIYFUAZJVCPHPFQFYIDGZAUFXANHWBFJGJJHWFFBRCVBOCXJDIMBNBQJGJEFPGTAEDJFLHGITESAKCFBZBD

View File

@ -27,10 +27,12 @@ import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
@ -51,6 +53,10 @@ import java.util.Map;
@Slf4j
@Api(tags = "人员考勤")
public class WorkerAttendanceController {
@Value("${basePath}")
private String basePath;
@Autowired
private IWorkerAttendanceService workerAttendanceService;
@ -152,16 +158,12 @@ public class WorkerAttendanceController {
@ApiImplicitParam(name = "passType", value = "考勤类型 1:进 2出", dataType = "Integer", paramType = "body", required = false),
})
@PostMapping(value = "/export")
public ModelAndView export(@RequestBody Map<String, Object> map) {
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) {
List<WorkerAttendanceDto> pageList = workerAttendanceService.selectWorkerAttendanceListByHwgt(map);
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME, "班前教育列表");
mv.addObject(NormalExcelConstants.CLASS, XzTaskProgressContent.class);
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("班前教育列表数据", "导出人:" + SecurityUtils.getUser().getRealName(), "导出信息"));
mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv;
for (WorkerAttendanceDto workerAttendanceDto : pageList) {
workerAttendanceDto.setSexName(workerAttendanceDto.getSex() == 1 ? "" : "");
}
ExcelUtils.exporWorkerAttendByHw(response, pageList, basePath);
}
@ApiOperation(value = "列表查询项目下最新人员考勤信息", notes = "列表查询项目下最新人员考勤信息", httpMethod = "POST")

View File

@ -12,10 +12,13 @@ public class WorkerAttendanceDto {
@ApiModelProperty(value = "姓名")
private java.lang.String workerName;
@Excel(name = "性别", width = 15)
@ApiModelProperty(value = "性别1男2女")
private java.lang.Integer sex;
@Excel(name = "性别", width = 15)
@ApiModelProperty(value = "性别1男2女")
private java.lang.String sexName;
@Excel(name = "年龄", width = 15)
@ApiModelProperty(value = "年龄")
private java.lang.String age;
@ -24,7 +27,11 @@ public class WorkerAttendanceDto {
@ApiModelProperty(value = "部门")
private java.lang.String departmentName;
@Excel(name = "照片", width = 15)
@Excel(name = "企业", width = 15)
@ApiModelProperty(value = "企业")
private java.lang.String enterpriseName;
// @Excel(name = "照片", width = 15)
@ApiModelProperty(value = "照片")
private java.lang.String imageUrl;

View File

@ -90,7 +90,7 @@
</select>
<select id="selectWorkerAttendanceListByHwgt" resultType="com.zhgd.jeecg.common.mybatis.EntityMap">
SELECT b.worker_name, b.sex,
SELECT b.worker_name, b.sex, e.enterprise_name,
(case
when b.birthday != '' then year(from_days(datediff(NOW(), b.birthday)))
else '-' end) age,
@ -99,6 +99,7 @@
a.create_time
from worker_attendance a
LEFT JOIN worker_info b ON a.person_sn = b.person_sn
LEFT JOIN enterprise_info e ON b.enterprise_id = e.id
LEFT JOIN department_info d ON b.department_id = d.id
WHERE a.project_sn = #{param.projectSn}
<if test="param.workerName != null and param.workerName != ''">

View File

@ -2696,7 +2696,9 @@ public class WorkerInfoServiceImpl extends ServiceImpl<WorkerInfoMapper, WorkerI
.eq(WorkerAttendancePresence::getProjectSn, projectSn)).stream().map(w -> w.getPersonSn()).collect(Collectors.toList());
//今日考勤人数
List<String> workerAttendList = workerAttendanceMapper.selectList(Wrappers.<WorkerAttendance>lambdaQuery()
.eq(WorkerAttendance::getProjectSn, projectSn)).stream().map(w -> w.getPersonSn()).distinct().collect(Collectors.toList());
.eq(WorkerAttendance::getProjectSn, projectSn)
.ge(WorkerAttendance::getCreateTime, DateUtil.beginOfDay(new Date()))
.le(WorkerAttendance::getCreateTime, DateUtil.endOfDay(new Date()))).stream().map(w -> w.getPersonSn()).distinct().collect(Collectors.toList());
List<WorkerInfo> presenceWorkerList = workerInfoList.stream().filter(w -> workerAttendancePresenceList.contains(w.getPersonSn())).collect(Collectors.toList());
List<WorkerInfo> attendWorkerList = workerInfoList.stream().filter(w -> workerAttendList.contains(w.getPersonSn())).collect(Collectors.toList());
List<DepartmentInfo> departmentInfos = departmentInfoMapper.selectList(Wrappers.<DepartmentInfo>lambdaQuery().eq(DepartmentInfo::getProjectSn, projectSn));

View File

@ -4,7 +4,10 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.xuyanwu.spring.file.storage.FileInfo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -16,6 +19,7 @@ import com.zhgd.xmgl.modules.basicdata.mapper.SystemLogoConfigMapper;
import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper;
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.basicdata.service.UploadFileService;
import com.zhgd.xmgl.modules.dangerous.entity.HiddenDangerInspectRecord;
import com.zhgd.xmgl.modules.dangerous.service.IHiddenDangerInspectRecordService;
import com.zhgd.xmgl.modules.project.entity.Project;
@ -51,6 +55,7 @@ import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchAlarmService;
import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchConfigService;
import com.zhgd.xmgl.modules.xz.service.IXzWorkerSafeWatchManagerService;
import com.zhgd.xmgl.modules.xz.service.impl.XzCertificateExpireAlarmRecordServiceImpl;
import com.zhgd.xmgl.util.Base64Util;
import com.zhgd.xmgl.util.ElecardUtil;
import com.zhgd.xmgl.util.MapBuilder;
import com.zhgd.xmgl.util.NumberUtils;
@ -64,7 +69,9 @@ import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -127,7 +134,8 @@ public class WorkerTask {
private IHiddenDangerInspectRecordService hiddenDangerInspectRecordService;
@Autowired
private IXzSecurityQualityInspectionRecordService qualityInspectionRecordService;
@Resource
private UploadFileService uploadFileService;
/**
* 定时修改用户码状态
*/
@ -767,4 +775,63 @@ public class WorkerTask {
}
}
/**
* 劳务安徽合武项目拉取考勤数据
*/
@Scheduled(cron = "0 0/1 * * * ?")
@SchedulerLock(name = "getWorkerAttendByHw", lockAtMostFor = 1000 * 55, lockAtLeastFor = 1000 * 55)
@RequestMapping("getWorkerAttendByHw")
public void getWorkerAttendByHw() {
List<WorkerInfo> workerInfoList = workerInfoMapper.selectList(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, "BD3137498CB84BF0969979E0342CDBCA"));
JSONObject pJo = new JSONObject();
pJo.put("tenantId", "1833147242533949441");
pJo.put("orgId", "1833149331474493441");
pJo.put("current", 1);
pJo.put("size", 100);
pJo.put("startTime", System.currentTimeMillis() - 60000);
pJo.put("endTime", System.currentTimeMillis());
String result = HttpRequest.post("http://api.1357.cn/hz-labour/api/open/labour/findCardRecordByPage")
.header("appId", "6789018810540796316")
.header("appSecret", "91291360e88431ded65ba63687c16b516c23ca12")
.body(pJo.toJSONString())
.timeout(3000)
.execute().body();
if (result != null) {
JSONObject jsonObject = JSONObject.parseObject(result);
if (jsonObject.getInteger("statusCode") == 200) {
JSONArray records = jsonObject.getJSONObject("data").getJSONArray("records");
for (int i = 0; i < records.size(); i++) {
int finalI = i;
CompletableFuture.runAsync(() -> {
doAddWorkerAttend(records.getJSONObject(finalI), workerInfoList);
}).exceptionally(throwable -> {
log.error("err", throwable);
return null;
});
}
}
}
}
private void doAddWorkerAttend(JSONObject obj, List<WorkerInfo> workerInfoList) {
String idCardNo = obj.getString("idCardNo");
List<WorkerInfo> collect = workerInfoList.stream().filter(w -> w.getIdCard().equals(idCardNo)).collect(Collectors.toList());
if (collect.size() > 0) {
WorkerInfo workerInfo = collect.get(0);
Map<String, Object> map = new HashMap<>();
String imagePath = obj.getString("imagePath");
String deviceNo = obj.getString("deviceNo");
String fileToBase64 = "data:image/jpeg;base64," + Base64Util.getFileToBase64(imagePath);
FileInfo fileInfo = uploadFileService.uploadFileBase64Image(fileToBase64);
String url = fileInfo.getUrl();
map.put("idCard", idCardNo);
map.put("projectCode", workerInfo.getProjectSn());
map.put("passTime", DateUtil.formatDateTime(new Date(obj.getLong("createTime"))));
map.put("direction", obj.getIntValue("inOrOut"));
map.put("passType", 2);
map.put("devCode", StringUtils.isNotBlank(deviceNo) ? deviceNo : "HW0225001");
map.put("faceUrl", url);
workerAttendanceService.saveExternalPassRecord(map);
}
}
}

View File

@ -6,6 +6,7 @@ import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatFence;
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
import com.zhgd.xmgl.modules.worker.entity.WorkerSafeEducationWorker;
import com.zhgd.xmgl.modules.worker.entity.WorkerType;
import com.zhgd.xmgl.modules.worker.entity.dto.WorkerAttendanceDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
@ -371,6 +372,46 @@ public class ExcelUtils {
}
}
public static void exporWorkerAttendByHw(HttpServletResponse response, List<WorkerAttendanceDto> pageList, String basePath) {
try {
ClassPathResource classPathResource = new ClassPathResource("excel/班前教育信息.xlsx");
InputStream inputStream = classPathResource.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheet("班前教育");
for (int i = 2; i < pageList.size() + 2; i++) {
for (int j = 0; j < 12; j++) {
if (j == 0) {
sheet.getRow(i).getCell(j).setCellValue(i - 1);
}
if (j == 1) {
sheet.getRow(i).getCell(j).setCellValue(pageList.get(i - 2).getWorkerName());
}
if (j == 2) {
sheet.getRow(i).getCell(j).setCellValue(pageList.get(i - 2).getSexName());
}
if (j == 3) {
sheet.getRow(i).getCell(j).setCellValue(pageList.get(i - 2).getAge());
}
if (j == 4) {
sheet.getRow(i).getCell(j).setCellValue(pageList.get(i - 2).getEnterpriseName());
}
if (j == 5) {
if (StringUtils.isNotBlank(pageList.get(i - 2).getImageUrl())) {
String imageUrl = pageList.get(i - 2).getImageUrl();
picture(basePath + imageUrl, sheet, i, i + 1, j, j + 1);
}
}
if (j == 6) {
sheet.getRow(i).getCell(j).setCellValue(pageList.get(i - 2).getCreateTime());
}
}
}
downLoadExcel("班前教育信息.xlsx", response, workbook);
} catch (IOException e) {
log.error("error", e);
}
}
/*public static void main(String[] args) {
try {
InputStream instream = new FileInputStream("D:/qqq.xlsx");

Binary file not shown.