考勤机管理

This commit is contained in:
方亮 2025-11-27 17:56:21 +08:00
parent 5790b234ef
commit 4399fdce55
11 changed files with 298 additions and 8 deletions

View File

@ -20,7 +20,7 @@ import java.util.List;
* @author xxxxx
*/
@RestController
@RequestMapping("/bm_app_version")
@RequestMapping("/appVersion")
public class BmAppVersionController extends BaseController {
/**
* 服务对象

View File

@ -0,0 +1,51 @@
package com.bonus.bmw.controller;
import com.bonus.bmw.domain.vo.KqCmdBean;
import com.bonus.bmw.service.KqCmdService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 考勤机操作控制层
*
* @author fly
*/
@Slf4j
@RestController
@RequestMapping("/kqManager")
public class KqCmdController extends BaseController {
/**
* 服务对象
*/
@Resource
private KqCmdService service;
/**
* 工程-考勤机树
*
* @param o 主键
* @return 单条数据
*/
@GetMapping("getProKqjTree")
@SysLog(title = "工程考勤机树", businessType = OperaType.QUERY, logType = 0, module = "工程考勤机树", details = "工程考勤机树")
public AjaxResult getProKqjTree(KqCmdBean o) {
try {
return service.getProKqjTree(o);
} catch (Exception e) {
logger.error(e.toString(), e);
}
return error("系统异常,请联系管理员");
}
}

View File

@ -0,0 +1,50 @@
package com.bonus.bmw.domain.vo;
import java.util.Date;
import lombok.Data;
/**
* APP版本表
*/
@Data
public class BmAppVersion {
/**
* 自增主键
*/
private Integer id;
/**
* 版本号
*/
private String version;
/**
* apk名称
*/
private String apkName;
/**
* apk路径
*/
private String apkPath;
/**
* 更新内容
*/
private String updateContent;
/**
* 部署时间
*/
private Date deployTime;
/**
* 部署人员
*/
private String deployUser;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,58 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* 考勤任务信息表
*/
@Data
public class KqCmdBean {
/**
* 主键
*/
private Integer id;
/**
* 指令编码
*/
private String cmdCode;
/**
* 指令参数
*/
private String cmdParam;
/**
* 设备编码
*/
private String deviceCode;
/**
* 任务状态 0 待执行 1已执行 2 完成 3执行失败 4 取消
*/
private String transStatus;
/**
* 任务执行更新时间
*/
private Date transStatusUpdateTime;
/**
* 更新状态 默认 0 1 则是更新数据
*/
private Integer updateState;
/**
* 消息内容
*/
private String msg;
/**
* 工程id
*/
private Integer proId;
private String proName;
}

View File

@ -0,0 +1,25 @@
package com.bonus.bmw.domain.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class TreeNode {
private String id;
private String name;
private String type;
private List<TreeNode> children;
public TreeNode(String id, String name, String type) {
this.id = id;
this.name = name;
this.type = type;
this.children = new ArrayList<>();
}
public void addChild(TreeNode child) { this.children.add(child); }
}

View File

@ -0,0 +1,12 @@
package com.bonus.bmw.mapper;
import com.bonus.bmw.domain.vo.KqCmdBean;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface KqCmdMapper {
List<KqCmdBean> getProKqjTree(KqCmdBean o);
}

View File

@ -0,0 +1,9 @@
package com.bonus.bmw.service;
import com.bonus.bmw.domain.vo.KqCmdBean;
import com.bonus.common.core.web.domain.AjaxResult;
public interface KqCmdService{
AjaxResult getProKqjTree(KqCmdBean o);
}

View File

@ -1,13 +1,13 @@
package com.bonus.bmw.service;
package com.bonus.bmw.service.impl;
import com.bonus.bmw.mapper.CertificateStatisticsMapper;
import com.bonus.bmw.domain.vo.CertificateStatisticsBean;
import com.bonus.bmw.service.CertificateStatisticsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* packageName com.bonus.gzrn.rnbmw.certificate.service

View File

@ -0,0 +1,63 @@
package com.bonus.bmw.service.impl;
import com.bonus.bmw.domain.vo.KqCmdBean;
import com.bonus.bmw.domain.vo.TreeNode;
import com.bonus.bmw.mapper.KqCmdMapper;
import com.bonus.bmw.service.KqCmdService;
import com.bonus.common.core.web.domain.AjaxResult;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class KqCmdServiceImpl implements KqCmdService {
@Resource
private KqCmdMapper mapper;
@Override
public AjaxResult getProKqjTree(KqCmdBean o) {
List<KqCmdBean> list = mapper.getProKqjTree(o);
// 构建设备树
List<TreeNode> deviceTree = buildDeviceTree(list);
return AjaxResult.success(deviceTree);
}
/**
* 构建设备树
* @param data 包含pro_id和device_code的数据列表
* @return 树形结构的根节点列表
*/
public static List<TreeNode> buildDeviceTree(List<KqCmdBean> data) {
// 使用Map来存储pro_id到设备列表的映射
Map<String, List<String>> proToDeviceMap = new HashMap<>();
// 遍历数据建立映射关系
for (KqCmdBean item : data) {
String proName = item.getProName();
String deviceCode = item.getDeviceCode();
proToDeviceMap.computeIfAbsent(proName, k -> new ArrayList<>()).add(deviceCode);
}
// 构建树形结构
List<TreeNode> result = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : proToDeviceMap.entrySet()) {
String proName = entry.getKey();
List<String> deviceCodes = entry.getValue();
// 创建项目节点
TreeNode projectNode = new TreeNode(proName, "项目" + proName, "project");
// 为每个设备码创建子节点
for (String deviceCode : deviceCodes) {
TreeNode deviceNode = new TreeNode(deviceCode, "设备" + deviceCode, "device");
projectNode.addChild(deviceNode);
}
result.add(projectNode);
}
return result;
}
}

View File

@ -341,11 +341,11 @@ public class PmWorkerServiceImpl implements PmWorkerService{
}
//合同
BmWorkerWageCard bmWorkerWageCard = new BmWorkerWageCard();
bmWorkerWageCard.setWorkerId(worker.getId());
bmWorkerWageCard.setBankCardCode(worker.getBankCardCode());
bmWorkerWageCard.setBankName(worker.getBankName());
bmWorkerWageCard.setBankBranchName(worker.getBankBranchName());
bmWorkerWageCard.setBankIdentifierCode(worker.getBankIdentifierCode());
bmWorkerWageCard.setWorkerId(export.getId());
bmWorkerWageCard.setBankCardCode(export.getBankCardCode());
bmWorkerWageCard.setBankName(export.getBankName());
bmWorkerWageCard.setBankBranchName(export.getBankBranchName());
bmWorkerWageCard.setBankIdentifierCode(export.getBankIdentifierCode());
insertWorkerWageCard(bmWorkerWageCard);
//入场
importEinData(export);

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.bmw.mapper.KqCmdMapper">
<resultMap id="BaseResultMap" type="com.bonus.bmw.domain.vo.KqCmdBean">
<id column="id" property="id" />
<result column="cmd_code" property="cmdCode" />
<result column="cmd_param" property="cmdParam" />
<result column="device_code" property="deviceCode" />
<result column="trans_status" property="transStatus" />
<result column="trans_status_update_time" property="transStatusUpdateTime" />
<result column="update_state" property="updateState" />
<result column="msg" property="msg" />
<result column="pro_id" property="proId" />
</resultMap>
<select id="getProKqjTree" resultType="com.bonus.bmw.domain.vo.KqCmdBean">
select
pp.pro_name,device_code
from pm_att_device pad
inner join pm_project pp on pad.pro_id = pp.id
</select>
</mapper>