AjaxFlushAction.java
// Decompiled by DJ v2.8.8.54 Copyright 2000 Atanas Neshkov Date: 2002-9-6 11:15:32
// Home Page : http://members.fortunecity.com/neshkov/dj.html - Check often for new version!
// Decompiler options: packimports(3)
package com.mycim.webapp.actions.ajaxflush;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.context.spring.SpringContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.server.carrier.service.CarrierService;
import com.mycim.server.wip.service.LotQueryService;
import com.mycim.server.wip.service.WipQueryService;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.NamedObject;
import com.mycim.valueobject.bas.Relation;
import com.mycim.valueobject.security.User;
import com.mycim.valueobject.security.UserGroup;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.AbstractAction;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* ajax无刷新更新,下拉菜单联动
*
* @author Mark
*/
public class AjaxFlushAction extends AbstractAction {
private CarrierService carrierService = SpringContext.getBean(CarrierService.class);
private WipQueryService wipQueryService = SpringContext.getBean(WipQueryService.class);
private LotQueryService lotQueryService = SpringContext.getBean(LotQueryService.class);
public Map checkButtonPermission(Map map) {
long userRrn = LocalContext.getUserRrn();
Map button = null;
String markId = map.get("markId").toString();
Map result = new HashMap();
Collection<Long> roles = securityService.getUserRoleList(userRrn);
if (StringUtils.isNotBlank(markId)) {
button = securityService.getButtonInfoWithRoles(roles, markId);
}
if (MapUtils.isNotEmpty(button) || StringUtils.isBlank(markId)) {
result.put("success", "1");
} else {
result.put("failed", "1");
}
return result;
}
public void checkUserInDept4PCD(Map map) {
long userRrn = LocalContext.getUserRrn();
long facilityRrn = LocalContext.getFacilityRrn();
User currentUser = securityService.getUser(userRrn);
NamedObject pcd = baseService
.isExisted(map.get("instanceId").toString(), getNamedSpace(ObjectList.ENTITY_KEY, facilityRrn),
ObjectList.ENTITY_KEY);
List<Map> holdReasons = carrierService.getHoldReasons(pcd.getInstanceRrn());
Object[] holdReasonArrays = holdReasons.toArray();
boolean state = true;
if (isUserInAdministrator(currentUser)) {
state = true;
} else {
String[] fieldFlag = map.get("fieldFlags").toString().split(",");
for (int i = 0; i < holdReasonArrays.length; i++) {
Map holdReason = (HashMap) holdReasonArrays[i];
if (StringUtils.equals(fieldFlag[i], "0")) {
if (MapUtils.getLongValue(holdReason, "holdRrn") != userRrn) {
String reasonCode = MapUtils.getString(holdReason, "reasonCode");
String releaseGroups = sysService
.getRefFileValue("$HOLD_CARRIER_CODE", reasonCode, "DATA_4_VALUE");
if (MapUtils.getLongValue(holdReason, "holdByRrn") > 0 &&
!StringUtils.equalsIgnoreCase(releaseGroups, "ALL")) {
state = securityService
.checkUserExistedUserGroups(currentUser.getInstanceRrn(), releaseGroups);
if (!state) {
break;
}
} else if (MapUtils.getLongValue(holdReason, "holdByRrn") == 0) {
state = true;
}
}
}
}
}
}
public Map carrierHoldReasonCodes(Map map) {
long userRrn = LocalContext.getUserRrn();
String holdReasonGroupID = map.get("holdReasonGroupID").toString();
User currentUser = securityService.getUser(userRrn);
List<String> holdReasonRoles = sysService
.getRefFileKeys("$REASON_GROUP_CARRIER_DEPARTMENT", "key_1_value", currentUser.getShiftId());
holdReasonRoles.add("ALL");
List<Map> holdReasonCodes = carrierService
.getHoldReasonCodes(holdReasonGroupID, holdReasonRoles, "$HOLD_CARRIER_CODE");
Map options = new LinkedHashMap();
for (Map obj : holdReasonCodes) {
if (obj != null && !obj.isEmpty()) {
options.put(obj.get("holdCode"), obj.get("holdDesc"));
}
}
return options;
}
public Map carrierHoldDept(Map map) {
String reasonCode = map.get("reasonCodeId").toString();
StringBuffer departmentStr = new StringBuffer("");
List<Map> releaseGroups = carrierService.getReleaseGroup(reasonCode, "$HOLD_CARRIER_CODE");
for (Map releaseGroup : releaseGroups) {
String groups = MapUtils.getString(releaseGroup, "releaseGroup");
List<String> departs = securityService.getDepartmentIds("$REASON_GROUP_DEPARTMENT", groups, "data_1_value");
for (String departmentId : departs) {
departmentStr.append(departmentId);
departmentStr.append(",");
}
}
String departments = StringUtils.substringBeforeLast(departmentStr.toString(), ",");
Map reponseMap = new HashMap();
reponseMap.put("department", departments);
return reponseMap;
}
public Map carrierReleaseReasonCodes(Map map) {
String releaseReasonGroupID = map.get("releaseReasonGroupID").toString();
List releaseRoles = new ArrayList();
releaseRoles.add("ALL");
List<Map> releaseReasonCodes = carrierService
.getReleaseReasonCodes(releaseReasonGroupID, releaseRoles, "$RELEASE_CARRIER_CODE");
Map options = new HashMap();
for (Map obj : releaseReasonCodes) {
if (obj != null && !obj.isEmpty()) {
options.put(obj.get("releaseCode"), obj.get("releaseDesc"));
}
}
return options;
}
public Map lotHoldReasonCodes(Map map) {
long userRrn = LocalContext.getUserRrn();
String holdReasonGroupID = MapUtils.getString(map, "holdReasonGroupID");
User currentUser = securityService.getUser(userRrn);
List<String> holdReasonRoles = sysService
.getRefFileKeys("$REASON_GROUP_DEPARTMENT", "key_1_value", currentUser.getShiftId());
holdReasonRoles.add("ALL");
List<Map> holdReasonCodes = wipQueryService
.getHoldReasonCodes(holdReasonGroupID, holdReasonRoles, "$HOLD_CODE");
List<Relation> userGroups = securityService.getUserGroups(userRrn);
Map options = new LinkedHashMap();
for (Map obj : holdReasonCodes) {
if (obj != null && !obj.isEmpty()) {
options.put(obj.get("holdCode"), obj.get("holdDesc"));
}
}
//新增需求,要求暂停批次时Hold Code可以选择$HOLD_CODE类表中hold code group所有配置ALL的hold code。故新增以下方法,查询所有配置ALL的hold code
//List<Map> holdReasonCodes4All = wipQueryService.getHoldReasonCodes4HoldCodeGroupAll("$HOLD_CODE");
//holdReasonCodes.addAll(holdReasonCodes4All);
return options;
}
public Map lotReleaseReasonCodes(Map map) {
String releaseReasonGroupID = map.get("releaseReasonGroupID").toString();
List releaseRoles = new ArrayList();
releaseRoles.add("ALL");
long userRrn = LocalContext.getUserRrn();
User currentUser = securityService.getUser(userRrn);
releaseRoles.add(currentUser.getShiftId());
List<Map> releaseReasonCodes = wipQueryService
.getReleaseReasonCodes(releaseReasonGroupID, releaseRoles, "$RELEASE_CODE");
Map options = new HashMap();
for (Map obj : releaseReasonCodes) {
if (obj != null && !obj.isEmpty()) {
options.put(obj.get("releaseCode"), obj.get("releaseDesc"));
}
}
return options;
}
public Map lotHoldDept(Map map) {
String reasonCode = MapUtils.getString(map, "reasonCodeId");
StringBuffer departmentStr = new StringBuffer("");
List<Map> releaseGroups = wipQueryService.getReleaseGroup(reasonCode, "$HOLD_CODE");
for (Map releaseGroup : releaseGroups) {
String groups = MapUtils.getString(releaseGroup, "releaseGroup");
List<String> departs = securityService.getDepartmentIds("$REASON_GROUP_DEPARTMENT", groups, "data_1_value");
for (String departmentId : departs) {
departmentStr.append(departmentId);
departmentStr.append(",");
}
}
String departments = StringUtils.substringBeforeLast(departmentStr.toString(), ",");
Map reponseMap = new HashMap();
reponseMap.put("department", departments);
return reponseMap;
}
public Boolean checkUserInDept(Map map) {
String lotId = (String) map.get("lotId");
long lotRrn = lotQueryService.getLotRrn(lotId);
List<String> fieldFlags = (List<String>) map.get("fieldFlags");
List<Map<String, Object>> holdReasonList = buildSelectedHoldReasonList(lotRrn, fieldFlags);
return wipQueryService
.hasChangeOrReleaseHoldPermissionForBatch(LocalContext.getFacilityRrn(), LocalContext.getUserRrn(),
holdReasonList);
}
public Map findUserByDeptId(HttpServletRequest request, Map<String, String> map) {
String deptId = request.getParameter("dept");
if (map != null) {
deptId = deptId == null ? map.get("dept") : deptId;
}
List<Map> users = securityService.getUsers(deptId);
Map options = new HashMap();
for (Map option : users) {
options.put(option.get("userRrn"), option.get("userName"));
}
return options;
}
public Map findUserByUserGroup(HttpServletRequest request) {
long facilityRrn = LocalContext.getFacilityRrn();
String userGroupId = WebUtils.getParameter("userGroup", request);
long userGroupRrn = getInstanceRrn(userGroupId, facilityRrn, ObjectList.USERGROUP_KEY);
Map options = new HashMap();
if (StringUtils.isNotEmpty(userGroupId) && userGroupRrn > 0) {
UserGroup userGroup = new UserGroup(userGroupRrn);
userGroup.setInstanceId(userGroupId);
List<Relation> userRrnList = securityService.getUsers(userGroup);
for (Relation relation : userRrnList) {
long userRrn = relation.getFromRrn();
String userName = securityService.getUserName(userRrn);
if (StringUtils.isNotBlank(userName)) {
options.put(userRrn, userName);
}
}
}
return options;
}
public String getTel(HttpServletRequest request, Map<String, String> map) {
String deptId = request.getParameter("dept");
String user = request.getParameter("user");
if (map != null) {
deptId = deptId == null ? map.get("dept") : deptId;
user = user == null ? map.get("user") : user;
}
return securityService.getTel(deptId, user);
}
public Map getReworkCodes(HttpServletRequest request) {
String deptId = request.getParameter("deptId");
long refRrn = getInstanceRrn("$$REWORK_CODE", LocalContext.getFacilityRrn(), ObjectList.REFERENCE_FILE_KEY);
List<ReferenceFileDetail> referenceFileDetails = sysService.getReferenceFileDetails(refRrn);
Map options = new HashMap();
for (ReferenceFileDetail detail : referenceFileDetails) {
String key1Value = detail.getKey1Value();
if (key1Value.equals(deptId)) {
String rework_code = detail.getKey2Value();
String rework_desc = detail.getData1Value();
options.put(rework_code, rework_desc);
}
}
return options;
}
public Map getHoldGroups(HttpServletRequest request) {
long refRrn = getInstanceRrn("$HOLD_GROUP", LocalContext.getFacilityRrn(), ObjectList.REFERENCE_FILE_KEY);
List<ReferenceFileDetail> referenceFileDetails = sysService.getReferenceFileDetails(refRrn);
Map options = new HashMap();
for (ReferenceFileDetail detail : referenceFileDetails) {
options.put(detail.getKey1Value(), detail.getData1Value());
}
return options;
}
public Map getDepartment(HttpServletRequest request) {
long refRrn = getInstanceRrn("$DEPARTMENT", LocalContext.getFacilityRrn(), ObjectList.REFERENCE_FILE_KEY);
List<ReferenceFileDetail> referenceFileDetails = sysService.getReferenceFileDetails(refRrn);
Map options = new HashMap();
for (ReferenceFileDetail detail : referenceFileDetails) {
options.put(detail.getKey1Value(), detail.getData1Value());
}
return options;
}
public List getRefFileValues(Map params) {
String referenceId = MapUtils.getString(params, "referenceId");
List<ReferenceFileDetail> resultList = sysService.getRefFileValues(referenceId, LocalContext.getFacilityRrn());
if (resultList == null) {
resultList = new ArrayList<>();
}
return resultList;
}
private boolean isUserInAdministrator(User user) {
boolean state = false;
List<Relation> userGroups = securityService.getUserGroups(user);
for (Relation relation : userGroups) {
if (StringUtils.equals(relation.getInstanceId(), "ADMINISTRATORS")) {
state = true;
break;
}
}
return state;
}
private List<Map<String, Object>> buildSelectedHoldReasonList(long lotRrn, List<String> fieldFlags) {
List<Map<String, Object>> holdReasonList = new ArrayList<>();
List<Map> holdReasons = wipQueryService.getHoldReasons(lotRrn);
for (int i = 0; i < holdReasons.size(); i++) {
Map<String, Object> holdReason = (HashMap<String, Object>) holdReasons.get(i);
if (StringUtils.equals(fieldFlags.get(i), "0")) {
holdReasonList.add(holdReason);
}
}
return holdReasonList;
}
private String buildGroups(String groupString) {
String[] releases = StringUtils.split(groupString, ",");
String str = "(";
for (int i = 0; i < releases.length; i++) {
if (i == releases.length - 1) {
str += "'" + releases[i] + "')";
} else {
str += "'" + releases[i] + "',";
}
}
return str;
}
}