package com.jeesite.modules.mes.web; import com.jeesite.common.config.Global; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.collect.MapUtils; import com.jeesite.common.entity.Page; import com.jeesite.common.lang.StringUtils; import com.jeesite.common.web.BaseController; import com.jeesite.modules.mes.entity.MesLineProcess; import com.jeesite.modules.mes.entity.MesLineProcessUser; import com.jeesite.modules.mes.service.MesLineProcessService; import com.jeesite.modules.mes.service.MesLineProcessUserService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * 生产工序物料表Controller * @author mes * @version 2024-04-02 */ @Controller @RequestMapping(value = "${adminPath}/mes/mesLineProcessUser") public class MesLineProcessUserController extends BaseController { @Autowired private MesLineProcessUserService mesLineProcessUserService; @Autowired private MesLineProcessService mesLineProcessService; @Autowired private JdbcTemplate jdbcTemplate; /** * 获取数据 */ @ModelAttribute public MesLineProcessUser get(String id, boolean isNewRecord) { return mesLineProcessUserService.get(id, isNewRecord); } /** * 查询列表 */ @RequiresPermissions("mes:mesLineProcess:view") @RequestMapping(value = {"list", ""}) public String list(MesLineProcessUser mesLineProcessUser, Model model) { model.addAttribute("mesLineProcessUser", mesLineProcessUser); MesLineProcess mesLineProcess = new MesLineProcess(); mesLineProcess.setId(mesLineProcessUser.getLineProcessId()); MesLineProcess mlInfo = mesLineProcessService.get(mesLineProcess); model.addAttribute("mlInfo", mlInfo); return "modules/mes/mesLineProcessUserList"; } /** * 查询列表数据 */ @RequiresPermissions("mes:mesLineProcess:view") @RequestMapping(value = "listData") @ResponseBody public Page listData(MesLineProcessUser mesLineProcessUser, HttpServletRequest request, HttpServletResponse response) { mesLineProcessUser.setPage(new Page<>(request, response)); Page page = mesLineProcessUserService.findPage(mesLineProcessUser); return page; } /** * 查看编辑表单 */ @RequiresPermissions("mes:mesLineProcess:view") @RequestMapping(value = "form") public String form(MesLineProcessUser mesLineProcessUser, Model model) { model.addAttribute("mesLineProcessUser", mesLineProcessUser); return "modules/mes/mesLineProcessUserForm"; } /** * 生产工位人员选择树:查询全部正常用户,不按当前登录人的创建人/数据权限过滤。 */ @RequiresPermissions("mes:mesLineProcess:view") @RequestMapping(value = "userTreeData") @ResponseBody public List> userTreeData() { List> mapList = ListUtils.newArrayList(); List> officeList = jdbcTemplate.queryForList( "select office_code, parent_code, office_name " + "from js_sys_office where status = '0' order by tree_sorts, tree_sort"); for (Map office : officeList) { Map map = MapUtils.newHashMap(); map.put("id", valueToString(office.get("office_code"))); map.put("pId", StringUtils.defaultIfBlank(valueToString(office.get("parent_code")), "0")); map.put("name", office.get("office_name")); map.put("isParent", true); mapList.add(map); } List> userList = jdbcTemplate.queryForList( "select u.user_code, u.login_code, u.user_name, u.ref_name, e.emp_name, e.office_code " + "from js_sys_user u " + "left join js_sys_employee e on e.emp_code = u.ref_code and e.status = '0' " + "where u.status = '0' and u.user_type = 'employee' " + "order by e.office_code, u.user_weight desc, u.user_name, u.login_code"); for (Map user : userList) { Map map = MapUtils.newHashMap(); String userCode = valueToString(user.get("user_code")); String userName = firstNotBlank( valueToString(user.get("user_name")), valueToString(user.get("ref_name")), valueToString(user.get("emp_name")), valueToString(user.get("login_code")), userCode); map.put("id", userCode); map.put("pId", StringUtils.defaultIfBlank(valueToString(user.get("office_code")), "0")); map.put("name", userName); map.put("isParent", false); mapList.add(map); } return mapList; } /** * 保存数据 */ @RequiresPermissions("mes:mesLineProcess:edit") @PostMapping(value = "save") @ResponseBody public String save(@Validated MesLineProcessUser mesLineProcessUser) { if(mesLineProcessUser.getIsNewRecord()){ Set userCodeSet = new LinkedHashSet<>(); String[] userCodes = StringUtils.split(StringUtils.trim(mesLineProcessUser.getUserCode()), ","); if (userCodes != null) { for (String userCode : userCodes) { if (StringUtils.isNotBlank(userCode)) { userCodeSet.add(StringUtils.trim(userCode)); } } } if (userCodeSet.isEmpty()) { return renderResult(Global.FALSE, text("请选择人员!")); } int saveCount = 0; for (String userCode : userCodeSet) { MesLineProcessUser exists = new MesLineProcessUser(); exists.setLineProcessId(mesLineProcessUser.getLineProcessId()); exists.setUserCode(userCode); Long mr = mesLineProcessUserService.findCount(exists); if(mr > 0){ continue; } MesLineProcessUser saveUser = new MesLineProcessUser(); saveUser.setIsNewRecord(true); saveUser.setLineProcessId(mesLineProcessUser.getLineProcessId()); saveUser.setUserCode(userCode); saveUser.setAuth(mesLineProcessUser.getAuth()); mesLineProcessUserService.save(saveUser); saveCount++; } if(saveCount == 0){ return renderResult(Global.FALSE, text("当前人员已添加!")); } return renderResult(Global.TRUE, text("保存成功!")); } mesLineProcessUserService.save(mesLineProcessUser); return renderResult(Global.TRUE, text("保存成功!")); } /** * 删除数据 */ @RequiresPermissions("mes:mesLineProcess:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(MesLineProcessUser mesLineProcessUser) { mesLineProcessUserService.delete(mesLineProcessUser); return renderResult(Global.TRUE, text("删除成功!")); } private String firstNotBlank(String... values) { if (values == null) { return ""; } for (String value : values) { if (StringUtils.isNotBlank(value)) { return value; } } return ""; } private String valueToString(Object value) { return value == null ? "" : String.valueOf(value); } }