Browse Source

工序另存为模版

master
han\hanst 1 month ago
parent
commit
23c0928c8e
  1. 84
      src/main/java/com/xujie/sys/modules/erf/controller/ErfTriConfirmController.java
  2. 112
      src/main/java/com/xujie/sys/modules/erf/entity/ErfProcessTemplate.java
  3. 28
      src/main/java/com/xujie/sys/modules/erf/mapper/ErfProcessTemplateMapper.java
  4. 45
      src/main/java/com/xujie/sys/modules/erf/service/ErfProcessTemplateService.java
  5. 135
      src/main/java/com/xujie/sys/modules/erf/service/impl/ErfProcessTemplateServiceImpl.java
  6. 23
      src/main/resources/mapper/erf/ErfProcessTemplateMapper.xml

84
src/main/java/com/xujie/sys/modules/erf/controller/ErfTriConfirmController.java

@ -2,12 +2,15 @@ package com.xujie.sys.modules.erf.controller;
import com.xujie.sys.common.utils.R; import com.xujie.sys.common.utils.R;
import com.xujie.sys.modules.erf.data.ErfTriConfirmData; import com.xujie.sys.modules.erf.data.ErfTriConfirmData;
import com.xujie.sys.modules.erf.entity.ErfProcessTemplate;
import com.xujie.sys.modules.erf.service.ErfProcessTemplateService;
import com.xujie.sys.modules.erf.service.ErfTriConfirmService; import com.xujie.sys.modules.erf.service.ErfTriConfirmService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 三方确认控制器 * 三方确认控制器
@ -23,6 +26,9 @@ public class ErfTriConfirmController {
@Autowired @Autowired
private ErfTriConfirmService erfTriConfirmService; private ErfTriConfirmService erfTriConfirmService;
@Autowired
private ErfProcessTemplateService erfProcessTemplateService;
/** /**
* 查询三方确认列表 * 查询三方确认列表
* *
@ -105,7 +111,7 @@ public class ErfTriConfirmController {
*/ */
@PostMapping("/updateProcessSequence") @PostMapping("/updateProcessSequence")
@ResponseBody @ResponseBody
public R updateProcessSequence(@RequestBody java.util.Map<String, Object> data) {
public R updateProcessSequence(@RequestBody Map<String, Object> data) {
try { try {
String applyNo = (String) data.get("applyNo"); String applyNo = (String) data.get("applyNo");
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -118,4 +124,80 @@ public class ErfTriConfirmController {
return R.error("更新顺序失败: " + e.getMessage()); return R.error("更新顺序失败: " + e.getMessage());
} }
} }
/**
* 查询工序模版列表
*
* @param data 包含site的请求数据
* @return 模版列表
*/
@PostMapping("/getProcessTemplateList")
@ResponseBody
public R getProcessTemplateList(@RequestBody Map<String, Object> data) {
try {
String site = (String) data.get("site");
List<ErfProcessTemplate> list = erfProcessTemplateService.getTemplateList(site);
return R.ok().put("list", list);
} catch (Exception e) {
log.error("查询工序模版列表失败: " + e.getMessage(), e);
return R.error("查询失败: " + e.getMessage());
}
}
/**
* 保存工序模版
*
* @param template 模版数据
* @return 操作结果
*/
@PostMapping("/saveProcessTemplate")
@ResponseBody
public R saveProcessTemplate(@RequestBody ErfProcessTemplate template) {
try {
erfProcessTemplateService.saveTemplate(template);
return R.ok("保存模版成功");
} catch (Exception e) {
log.error("保存工序模版失败: " + e.getMessage(), e);
return R.error("保存失败: " + e.getMessage());
}
}
/**
* 删除工序模版
*
* @param data 包含id的请求数据
* @return 操作结果
*/
@PostMapping("/deleteProcessTemplate")
@ResponseBody
public R deleteProcessTemplate(@RequestBody Map<String, Object> data) {
try {
Long id = Long.valueOf(data.get("id").toString());
erfProcessTemplateService.deleteTemplate(id);
return R.ok("删除模版成功");
} catch (Exception e) {
log.error("删除工序模版失败: " + e.getMessage(), e);
return R.error("删除失败: " + e.getMessage());
}
}
/**
* 根据角色查询负责人列表
*
* @param data 包含roleType和site的请求数据
* @return 用户列表
*/
@PostMapping("/getUserListByRole")
@ResponseBody
public R getUserListByRole(@RequestBody Map<String, Object> data) {
try {
String roleType = (String) data.get("roleType");
String site = (String) data.get("site");
List<Map<String, Object>> list = erfProcessTemplateService.getUserListByRole(roleType, site);
return R.ok().put("list", list);
} catch (Exception e) {
log.error("查询负责人列表失败: " + e.getMessage(), e);
return R.error("查询失败: " + e.getMessage());
}
}
} }

112
src/main/java/com/xujie/sys/modules/erf/entity/ErfProcessTemplate.java

@ -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;
}

28
src/main/java/com/xujie/sys/modules/erf/mapper/ErfProcessTemplateMapper.java

@ -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);
}

45
src/main/java/com/xujie/sys/modules/erf/service/ErfProcessTemplateService.java

@ -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);
}

135
src/main/java/com/xujie/sys/modules/erf/service/impl/ErfProcessTemplateServiceImpl.java

@ -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;
}
}
}

23
src/main/resources/mapper/erf/ErfProcessTemplateMapper.xml

@ -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>
Loading…
Cancel
Save