6 changed files with 426 additions and 1 deletions
-
84src/main/java/com/xujie/sys/modules/erf/controller/ErfTriConfirmController.java
-
112src/main/java/com/xujie/sys/modules/erf/entity/ErfProcessTemplate.java
-
28src/main/java/com/xujie/sys/modules/erf/mapper/ErfProcessTemplateMapper.java
-
45src/main/java/com/xujie/sys/modules/erf/service/ErfProcessTemplateService.java
-
135src/main/java/com/xujie/sys/modules/erf/service/impl/ErfProcessTemplateServiceImpl.java
-
23src/main/resources/mapper/erf/ErfProcessTemplateMapper.xml
@ -0,0 +1,112 @@ |
|||||
|
package com.xujie.sys.modules.erf.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 工序模版实体类 |
||||
|
* |
||||
|
* <p><b>核心字段说明:</b></p> |
||||
|
* <ul> |
||||
|
* <li><b>template_name</b>:模版名称(工序名称)</li> |
||||
|
* <li><b>prod_approver_name</b>:车间负责人默认值</li> |
||||
|
* <li><b>qa_approver_name</b>:质量负责人默认值</li> |
||||
|
* <li><b>tech_approver_name</b>:技术负责人默认值</li> |
||||
|
* </ul> |
||||
|
* |
||||
|
* @author System |
||||
|
* @since 2026-01-27 |
||||
|
*/ |
||||
|
@Data |
||||
|
@TableName("erf_process_template") |
||||
|
public class ErfProcessTemplate implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键ID |
||||
|
*/ |
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Long id; |
||||
|
|
||||
|
/** |
||||
|
* 站点编码 |
||||
|
*/ |
||||
|
@TableField("site") |
||||
|
private String site; |
||||
|
|
||||
|
/** |
||||
|
* 模版名称(工序名称) |
||||
|
*/ |
||||
|
@TableField("template_name") |
||||
|
private String templateName; |
||||
|
|
||||
|
/** |
||||
|
* 车间负责人 |
||||
|
*/ |
||||
|
@TableField("prod_approver_name") |
||||
|
private String prodApproverName; |
||||
|
|
||||
|
/** |
||||
|
* 车间负责人用户ID |
||||
|
*/ |
||||
|
@TableField("prod_approver_user_id") |
||||
|
private Long prodApproverUserId; |
||||
|
|
||||
|
/** |
||||
|
* 质量负责人 |
||||
|
*/ |
||||
|
@TableField("qa_approver_name") |
||||
|
private String qaApproverName; |
||||
|
|
||||
|
/** |
||||
|
* 质量负责人用户ID |
||||
|
*/ |
||||
|
@TableField("qa_approver_user_id") |
||||
|
private Long qaApproverUserId; |
||||
|
|
||||
|
/** |
||||
|
* 技术负责人 |
||||
|
*/ |
||||
|
@TableField("tech_approver_name") |
||||
|
private String techApproverName; |
||||
|
|
||||
|
/** |
||||
|
* 技术负责人用户ID |
||||
|
*/ |
||||
|
@TableField("tech_approver_user_id") |
||||
|
private Long techApproverUserId; |
||||
|
|
||||
|
/** |
||||
|
* 备注 |
||||
|
*/ |
||||
|
@TableField("remark") |
||||
|
private String remark; |
||||
|
|
||||
|
/** |
||||
|
* 创建人用户ID |
||||
|
*/ |
||||
|
@TableField(value = "creator_user_id", fill = FieldFill.INSERT) |
||||
|
private Long creatorUserId; |
||||
|
|
||||
|
/** |
||||
|
* 创建人姓名 |
||||
|
*/ |
||||
|
@TableField(value = "creator_name", fill = FieldFill.INSERT) |
||||
|
private String creatorName; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
@TableField(value = "create_time", fill = FieldFill.INSERT) |
||||
|
private Date createTime; |
||||
|
|
||||
|
/** |
||||
|
* 删除标记 (0=未删除, 1=已删除) |
||||
|
*/ |
||||
|
@TableField("is_deleted") |
||||
|
@TableLogic |
||||
|
private Integer isDeleted; |
||||
|
} |
||||
@ -0,0 +1,28 @@ |
|||||
|
package com.xujie.sys.modules.erf.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.xujie.sys.modules.erf.entity.ErfProcessTemplate; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 工序模版Mapper |
||||
|
* |
||||
|
* @author System |
||||
|
* @since 2026-01-27 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface ErfProcessTemplateMapper extends BaseMapper<ErfProcessTemplate> { |
||||
|
|
||||
|
/** |
||||
|
* 根据角色名称查询用户列表 |
||||
|
* |
||||
|
* @param roleName 角色名称 |
||||
|
* @param site 站点编码 |
||||
|
* @return 用户列表 |
||||
|
*/ |
||||
|
List<Map<String, Object>> getUserListByRoleName(@Param("roleName") String roleName, @Param("site") String site); |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
package com.xujie.sys.modules.erf.service; |
||||
|
|
||||
|
import com.xujie.sys.modules.erf.entity.ErfProcessTemplate; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 工序模版服务接口 |
||||
|
* |
||||
|
* @author System |
||||
|
* @since 2026-01-27 |
||||
|
*/ |
||||
|
public interface ErfProcessTemplateService { |
||||
|
|
||||
|
/** |
||||
|
* 查询工序模版列表 |
||||
|
* |
||||
|
* @param site 站点编码 |
||||
|
* @return 模版列表 |
||||
|
*/ |
||||
|
List<ErfProcessTemplate> getTemplateList(String site); |
||||
|
|
||||
|
/** |
||||
|
* 保存工序模版 |
||||
|
* |
||||
|
* @param template 模版数据 |
||||
|
*/ |
||||
|
void saveTemplate(ErfProcessTemplate template); |
||||
|
|
||||
|
/** |
||||
|
* 删除工序模版 |
||||
|
* |
||||
|
* @param id 模版ID |
||||
|
*/ |
||||
|
void deleteTemplate(Long id); |
||||
|
|
||||
|
/** |
||||
|
* 根据角色查询负责人列表 |
||||
|
* |
||||
|
* @param roleType 角色类型(PROD=车间, QA=质量, TECH=技术) |
||||
|
* @param site 站点编码 |
||||
|
* @return 用户列表 |
||||
|
*/ |
||||
|
List<java.util.Map<String, Object>> getUserListByRole(String roleType, String site); |
||||
|
} |
||||
@ -0,0 +1,135 @@ |
|||||
|
package com.xujie.sys.modules.erf.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.xujie.sys.modules.erf.entity.ErfProcessTemplate; |
||||
|
import com.xujie.sys.modules.erf.mapper.ErfProcessTemplateMapper; |
||||
|
import com.xujie.sys.modules.erf.service.ErfProcessTemplateService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 工序模版服务实现类 |
||||
|
* |
||||
|
* @author System |
||||
|
* @since 2026-01-27 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@Transactional |
||||
|
public class ErfProcessTemplateServiceImpl implements ErfProcessTemplateService { |
||||
|
|
||||
|
@Autowired |
||||
|
private ErfProcessTemplateMapper erfProcessTemplateMapper; |
||||
|
|
||||
|
/** |
||||
|
* 查询工序模版列表 |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<ErfProcessTemplate> getTemplateList(String site) { |
||||
|
log.info("查询工序模版列表,site: {}", site); |
||||
|
|
||||
|
QueryWrapper<ErfProcessTemplate> wrapper = new QueryWrapper<>(); |
||||
|
wrapper.eq("site", site); |
||||
|
wrapper.orderByDesc("create_time"); |
||||
|
|
||||
|
return erfProcessTemplateMapper.selectList(wrapper); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 保存工序模版 |
||||
|
*/ |
||||
|
@Override |
||||
|
public void saveTemplate(ErfProcessTemplate template) { |
||||
|
log.info("保存工序模版: {}", template.getTemplateName()); |
||||
|
|
||||
|
// 检查是否已存在同名模版 |
||||
|
QueryWrapper<ErfProcessTemplate> wrapper = new QueryWrapper<>(); |
||||
|
wrapper.eq("site", template.getSite()); |
||||
|
wrapper.eq("template_name", template.getTemplateName()); |
||||
|
|
||||
|
ErfProcessTemplate existing = erfProcessTemplateMapper.selectOne(wrapper); |
||||
|
|
||||
|
if (existing != null) { |
||||
|
// 更新已有模版 |
||||
|
template.setId(existing.getId()); |
||||
|
erfProcessTemplateMapper.updateById(template); |
||||
|
} else { |
||||
|
// 新增模版 |
||||
|
erfProcessTemplateMapper.insert(template); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除工序模版 |
||||
|
*/ |
||||
|
@Override |
||||
|
public void deleteTemplate(Long id) { |
||||
|
log.info("删除工序模版,id: {}", id); |
||||
|
erfProcessTemplateMapper.deleteById(id); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 根据角色查询负责人列表 |
||||
|
* |
||||
|
* <p><b>角色类型说明:</b></p> |
||||
|
* <ul> |
||||
|
* <li>PROD:车间负责人</li> |
||||
|
* <li>QA:质量负责人</li> |
||||
|
* <li>TECH:技术负责人</li> |
||||
|
* </ul> |
||||
|
* |
||||
|
* <p><b>实现逻辑:</b></p> |
||||
|
* <ul> |
||||
|
* <li>根据角色类型映射到sys_role表中的角色名称</li> |
||||
|
* <li>通过sys_user_role关联表查询拥有该角色的用户</li> |
||||
|
* <li>只返回状态为正常(status=1)且匹配站点的用户</li> |
||||
|
* </ul> |
||||
|
*/ |
||||
|
@Override |
||||
|
public List<Map<String, Object>> getUserListByRole(String roleType, String site) { |
||||
|
log.info("查询负责人列表,roleType: {}, site: {}", roleType, site); |
||||
|
|
||||
|
// 角色类型映射到角色名称 |
||||
|
String roleName = getRoleNameByType(roleType); |
||||
|
|
||||
|
if (roleName == null) { |
||||
|
log.warn("未知的角色类型: {}", roleType); |
||||
|
return new ArrayList<>(); |
||||
|
} |
||||
|
|
||||
|
log.info("映射角色名称: {} -> {}", roleType, roleName); |
||||
|
|
||||
|
// 从数据库查询用户列表 |
||||
|
List<Map<String, Object>> userList = erfProcessTemplateMapper.getUserListByRoleName(roleName, site); |
||||
|
|
||||
|
log.info("查询到 {} 条用户记录", userList.size()); |
||||
|
|
||||
|
return userList; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 角色类型映射到角色名称 |
||||
|
* |
||||
|
* @param roleType 角色类型(PROD/QA/TECH) |
||||
|
* @return 角色名称 |
||||
|
*/ |
||||
|
private String getRoleNameByType(String roleType) { |
||||
|
switch (roleType) { |
||||
|
case "PROD": |
||||
|
return "车间负责人"; |
||||
|
case "QA": |
||||
|
return "质量负责人"; |
||||
|
case "TECH": |
||||
|
return "技术负责人"; |
||||
|
default: |
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
<?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.xujie.sys.modules.erf.mapper.ErfProcessTemplateMapper"> |
||||
|
|
||||
|
<!-- 根据角色名称查询用户列表 --> |
||||
|
<select id="getUserListByRoleName" resultType="map"> |
||||
|
SELECT DISTINCT |
||||
|
u.user_id AS userId, |
||||
|
u.username AS userName, |
||||
|
u.user_display AS userDisplay, |
||||
|
u.site, |
||||
|
r.role_name AS roleName |
||||
|
FROM sys_user u |
||||
|
INNER JOIN sys_user_role ur ON u.user_id = ur.user_id |
||||
|
INNER JOIN sys_role r ON ur.role_id = r.role_id |
||||
|
WHERE r.role_name = #{roleName} |
||||
|
AND u.site = #{site} |
||||
|
AND u.status = 1 |
||||
|
ORDER BY u.username |
||||
|
</select> |
||||
|
|
||||
|
</mapper> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue