安徽合武项目需求增加
This commit is contained in:
parent
0af7c9ff21
commit
de2916d8be
1
ArcFace64.dat
Normal file
1
ArcFace64.dat
Normal file
@ -0,0 +1 @@
|
||||
EWEPEPEOGMGTELIZJUGECKIUJDBCJTCNISGPBNHLJTJUBHEWGNAKGEGAIOHJDQAJGNCFDRFZJEDMJTGEDVIQGKEJIKACHIIXDEELIWCCEEELCVCEHFHAJGIPGIIKJRASJFEHAMIKCIGXAPGEHIIZGFBBJMFJJNGFHUGDGDFGFAITGDAXBGAZGKAMBMDABKBAERDUHDAUDOEBIBGBBMCUIZGABKCABIDMFHFRILIIANEBEWBOAIJHBYFAIREBFQFFCHHREKFTFJJQIAGFDSDZHMHUCGBVHIAUENBCJIBBJDIHHDIQFKFNDEBJCKCFGLJKBMHFAZHTHOIRGLJFDUHWEVFGFHDKIBEKFVCGAQJGCYBZAMHDJBJREAIOJPIAJDCJFXHKHPJTHUBTJPDWISESIEIPISDWDRAMFVFFBJCTFVFAARGJHFIMELIQJEAHFRFQDTERDCCGDCIKCAGBJVDLGHEXEBAWAMAFITJDANGBCRDPBPEECBAVAEBNJADGIPJAFWFJCYDZHFBFDHCMDCGNGTJTARACGRGOCDFWBPIRHKJACZAEHDJLGUFUGJDTHNJODDEBEVJLJUDDAAIJGNBPIQJOFNDHGKDQGOIBCWEGDBHDHDDBDPCFGLIBCRIPDSHECTAJBKGHGYAPDFJHFEDMCPAUHBDXAXEQCOEVCFDLGKAUASEZDAESETEUAJGHJFHLCTANBPDDCOGABTJJBBJHGLJPFMCQJOBTHPCNBMGFIPGNCHJSHOJGFQFSHGGUBVACADCHEDFDJHCKFEHBDIFJIUINCVJUDUENFHIUEFJFDBEPFHHGJAGLJGAOEMJNDYANAADPDODKGXFMHUCVHVCXGLCFHLFLETEZIWCTEFBRAOFFADEUIDFCGWDBCSAVDQJOANHKGHCSBFIBEACRITIEJGETGEJIAFDAIRJLHMEIBRCUIKDLBTHWHIEPHOGABGBBCCFFHKIECJJQHUDFHDITIQBQBCANARGIBPDUFTDHFKGOCMEEFHGXCTJVCOIXFUFDEAGZGNILISHSHKJGHQAEEAHLDWAWJADUGGELCKBACPAEINFSJHBQIFBVJHJICEAEGEFKBHCIHZCNJUJLIHGPFLILBRJTIYFUAZJVCPHPFQFYIDGZAUFXANHWBFJGJJHWFFBRCVBOCXJDIMBNBQJGJEFPGTAEDJFLHGITESAKCFBZBD
|
||||
@ -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")
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 != ''">
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
BIN
src/main/resources/excel/班前教育信息.xlsx
Normal file
BIN
src/main/resources/excel/班前教育信息.xlsx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user