ResourceAction - genscript-lz/manufacturing GitHub Wiki
package com.genscript.gsscm.manufacture.web;
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry;
import org.apache.commons.lang.StringUtils; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.beans.factory.annotation.Autowired;
import com.genscript.core.orm.Page; import com.genscript.core.orm.PropertyFilter; import com.genscript.gsscm.basedata.entity.PbCurrency; import com.genscript.gsscm.basedata.entity.PbDropdownListOptions; import com.genscript.gsscm.basedata.service.ExceptionService; import com.genscript.gsscm.basedata.service.PublicService; import com.genscript.gsscm.common.constant.Constants; import com.genscript.gsscm.common.constant.DropDownListName; import com.genscript.gsscm.common.constant.SessionConstant; import com.genscript.gsscm.common.util.OrderLockRelease; import com.genscript.gsscm.common.util.PagerUtil; import com.genscript.gsscm.common.util.SessionUtil; import com.genscript.gsscm.common.util.Struts2Util; import com.genscript.gsscm.common.util.WebUtil; import com.genscript.gsscm.manufacture.entity.OperationResource; import com.genscript.gsscm.manufacture.entity.Resource; import com.genscript.gsscm.manufacture.entity.WorkCenter; import com.genscript.gsscm.manufacture.entity.WorkGroup; import com.genscript.gsscm.manufacture.service.SetupService; import com.genscript.gsscm.system.entity.DepartmentSystem; import com.genscript.gsscm.ws.WSException; import com.opensymphony.xwork2.ActionSupport;
@Results( { @Result(name = "search_from", location = "manufacture/resource_search_form.jsp"), @Result(name = "search_result", location = "manufacture/resource_search_result.jsp"), @Result(name = "resource_add", location = "manufacture/resource_add.jsp"), @Result(name = "resource_edit", location = "manufacture/resource_edit.jsp"), @Result(name = "group_select_resource", location = "manufacture/group_select_resource.jsp"), @Result(name = "operation_resource_select", location = "manufacture/operation_resource_select.jsp"), //Work order > Operation -> Resource new. @Result(name = "wo_resource_select", location = "manufacture/workorder_operation_resource_select.jsp") }) public class ResourceAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 6534283335416418911L;
@Autowired
private ExceptionService exceptionUtil;
@Autowired
private SetupService setupService;
@Autowired
private PublicService publicService;
private Resource resource;
private Integer resourceId;
private Page<Resource> resourcePage;
private String[] delResourceId;
private List<PbCurrency> currencyList;
private Map<String, List<PbDropdownListOptions>> dropDownMap;
private List<WorkGroup> workGroupList;
private String operation_method;
private boolean workGroupShow;
private Integer centerId;
private Integer operationId;
private String workGroupId;
private List<WorkCenter> userDeptList;
/**
* 进入Resource的主页面
*
* @return
*/
public String search() {
try {
this.userDeptList = this.setupService.getAllWorkCenter(Constants.ROLE_MANUFACTURINGSETUPS_MANAGER);
List<DropDownListName> listName = new ArrayList<DropDownListName>();
listName.add(DropDownListName.RESOURCE_GROUP);
dropDownMap = publicService.getDropDownMap(listName);
} catch(Exception e) {
e.printStackTrace();
}
return "search_from";
}
/**
* 进入新增页面
*/
public String add() {
this.doInput();
resource = new Resource();
resource.setCostBasis("Per Item");
return "resource_add";
}
/**
* 进入修改页面.
*
* @return
*/
public String edit() {
//*********** Add By Zhang Yong Start *****************************//
if (this.resourceId != null && !("").equals(this.resourceId)) {
//判断将要修改的单号是否正在被操作
String editUrl = "resource!edit.action?resourceId="+this.resourceId;
OrderLockRelease orderLockRelease = new OrderLockRelease();
String byUser = orderLockRelease.checkOrderStatus(editUrl);
if (byUser != null) {
operation_method = byUser;
}
} else {
//释放application中的订单锁
OrderLockRelease realeseOrderLock = new OrderLockRelease();
realeseOrderLock.releaseOrderLock();
}
//*********** Add By Zhang Yong End *****************************//
this.doInput();
resource = this.setupService.getResource(this.resourceId);
if(workGroupShow) {
workGroupList = this.setupService.getActiveGroupListByCenter(centerId);
OperationResource operationResource = this.setupService.findByOpAndRE(operationId,this.resourceId);
resource.setWorkGroupId(operationResource!=null?operationResource.getWorkGroupId():null);
}
return "resource_edit";
}
private void doInput(){
try {
this.userDeptList = this.setupService.getAllWorkCenter(Constants.ROLE_MANUFACTURINGSETUPS_MANAGER);
this.currencyList = this.publicService.getCurrencyList();
List<DropDownListName> listName = new ArrayList<DropDownListName>();
listName.add(DropDownListName.RESOURCE_COST_BASIS);
listName.add(DropDownListName.RESOURCE_UOM);
listName.add(DropDownListName.RESOURCE_GROUP);
dropDownMap = publicService.getDropDownMap(listName);
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* 分页查找
*/
public String list() {
try {
// 获得分页请求相关数据:如第几页
PagerUtil<Resource> pagerUtil = new PagerUtil<Resource>();
resourcePage = pagerUtil.getRequestPage();
// 设置默认排序
if (!resourcePage.isOrderBySetted()) {
resourcePage.setOrderBy("resourceNo");
resourcePage.setOrder(Page.ASC);
}
// 设置默认每页显示记录条数
// resourcePage.setPageSize(20); // 获得查询条件 List filters = WebUtil .buildPropertyFilters(ServletActionContext.getRequest()); resourcePage = setupService.searchResourcePage(resourcePage, filters); ServletActionContext.getRequest().setAttribute("pagerInfo", resourcePage); } catch (Exception ex) { return "search_result"; } return "search_result"; }
/**
* 新增或修改一个Resource
*/
public String save() {
Map<String, Object> rt = new HashMap<String, Object>();
try {
//*********** Add By Zhang Yong Start *****************************//
//校验当前对象是否正被其他人先编辑,有则不保存,跳转到编辑页面,防止用户通过URL方式保存订单
if (resource!= null && resource.getResourceId() != null) {
String editUrl = "resource!edit.action?resourceId="+resource.getResourceId();
OrderLockRelease orderLockRelease = new OrderLockRelease();
String byUser = orderLockRelease.checkOrderStatus(editUrl);
if (byUser != null) {
operation_method = byUser;
rt.put("message", "Save fail,the resource is editing by "+operation_method);
Struts2Util.renderJson(rt);
return null;
}
}
//*********** Add By Zhang Yong End *****************************//
this.setupService.saveResource(resource, SessionUtil.getUserId());
rt.put("message", "Save resource sucessfully.");
//*********** Add By Zhang Yong Start *****************************//
//释放同步锁
OrderLockRelease realeseOrderLock = new OrderLockRelease();
realeseOrderLock.releaseOrderLock();
//*********** Add By Zhang Yong End *****************************//
} catch (Exception ex) {
WSException exDTO = exceptionUtil.getExceptionDetails(ex);
exceptionUtil.logException(exDTO, this.getClass(), ex,
new Exception().getStackTrace()[0].getMethodName(),
"INTF0203", SessionUtil.getUserId());
rt.put("hasException", "Y");
rt.put("exception", exDTO);
}
Struts2Util.renderJson(rt);
return null;
}
/**
* 保存resource与operation关联的表的信息
*/
public String updateOperationResource() {
Map<String, Object> rt = new HashMap<String, Object>();
Map<String, OperationResource> sessMap = (Map<String, OperationResource>) SessionUtil
.getRow(SessionConstant.OperationResource.value(),
String.valueOf(this.operationId));
if (sessMap == null) {
return NONE;
}
for (Entry<String, OperationResource> entry : sessMap.entrySet()) {
OperationResource groupRes = entry.getValue();
if(groupRes.getResource().getResourceId().intValue()==resourceId.intValue()&&groupRes.getOperationId().intValue()==this.operationId.intValue()) {
groupRes.setWorkGroupId(StringUtils.isNotEmpty(workGroupId)?Integer.parseInt(workGroupId):null);
break;
}
}
SessionUtil.updateRow(SessionConstant.OperationResource.value(), String.valueOf(this.operationId), sessMap);
Struts2Util.renderJson(rt);
return null;
}
/**
*
* 批量删除Resource.
*/
public String delete() {
Map<String, Object> rt = new HashMap<String, Object>();
try {
List<Integer> idList = new ArrayList<Integer>();
for (String temp : this.delResourceId) {
idList.add(Integer.valueOf(temp));
}
this.setupService.delResource(idList);
rt.put("message", "Delete resource sucessfully !");
} catch (Exception ex) {
WSException exDTO = exceptionUtil.getExceptionDetails(ex);
exceptionUtil.logException(exDTO, this.getClass(), ex,
new Exception().getStackTrace()[0].getMethodName(),
"INTF0203", SessionUtil.getUserId());
rt.put("hasException", "Y");
rt.put("exception", exDTO);
}
Struts2Util.renderJson(rt);
return null;
}
/**
* WorkGroup编辑页面的select resource.
* @return
*/
public String selectForGroup() {
String pageName = "group_select_resource";
try {
// 获得分页请求相关数据:如第几页
PagerUtil<Resource> pagerUtil = new PagerUtil<Resource>();
resourcePage = pagerUtil.getRequestPage();
// 设置默认排序
if (!resourcePage.isOrderBySetted()) {
resourcePage.setOrderBy("resourceNo");
resourcePage.setOrder(Page.ASC);
}
// 设置默认每页显示记录条数
// resourcePage.setPageSize(20); // 获得查询条件 List filters = WebUtil .buildPropertyFilters(ServletActionContext.getRequest()); if (filters == null || filters.isEmpty()) { // 默认列表的结果集(含分页信息) resourcePage = setupService.searchResourcePage(resourcePage, null); } else { // 有查询条件的结果集(含分页信息) resourcePage = setupService.searchResourcePage(resourcePage, filters); } ServletActionContext.getRequest().setAttribute("pagerInfo", resourcePage); if (Struts2Util.getParameter("pageName") != null) { pageName = Struts2Util.getParameter("pageName"); } } catch (Exception ex) { return pageName; } return pageName; }
/**
* WorkGroup编辑页面的select resource.
* @return
*/
public String selectForOperation() {
try {
// 获得分页请求相关数据:如第几页
PagerUtil<Resource> pagerUtil = new PagerUtil<Resource>();
resourcePage = pagerUtil.getRequestPage();
// 设置默认排序
if (!resourcePage.isOrderBySetted()) {
resourcePage.setOrderBy("resourceId");
resourcePage.setOrder(Page.DESC);
}
// 设置默认每页显示记录条数
// resourcePage.setPageSize(20); // 获得查询条件 List filters = WebUtil .buildPropertyFilters(ServletActionContext.getRequest()); if (filters == null || filters.isEmpty()) { // 默认列表的结果集(含分页信息) resourcePage = setupService.searchResourcePage(resourcePage, null); } else { // 有查询条件的结果集(含分页信息) resourcePage = setupService.searchResourcePage(resourcePage, filters); } ServletActionContext.getRequest().setAttribute("pagerInfo", resourcePage); } catch (Exception ex) { return "operation_resource_select"; } return "operation_resource_select"; }
public Resource getResource() {
return resource;
}
public void setResource(Resource resource) {
this.resource = resource;
}
public Integer getResourceId() {
return resourceId;
}
public void setResourceId(Integer resourceId) {
this.resourceId = resourceId;
}
public Page<Resource> getResourcePage() {
return resourcePage;
}
public void setResourcePage(Page<Resource> resourcePage) {
this.resourcePage = resourcePage;
}
public String[] getDelResourceId() {
return delResourceId;
}
public void setDelResourceId(String[] delResourceId) {
this.delResourceId = delResourceId;
}
public List<PbCurrency> getCurrencyList() {
return currencyList;
}
public void setCurrencyList(List<PbCurrency> currencyList) {
this.currencyList = currencyList;
}
public Map<String, List<PbDropdownListOptions>> getDropDownMap() {
return dropDownMap;
}
public void setDropDownMap(Map<String, List<PbDropdownListOptions>> dropDownMap) {
this.dropDownMap = dropDownMap;
}
public String getOperation_method() {
return operation_method;
}
public void setOperation_method(String operation_method) {
this.operation_method = operation_method;
}
public List<WorkGroup> getWorkGroupList() {
return workGroupList;
}
public void setWorkGroupList(List<WorkGroup> workGroupList) {
this.workGroupList = workGroupList;
}
public boolean isWorkGroupShow() {
return workGroupShow;
}
public void setWorkGroupShow(boolean workGroupShow) {
this.workGroupShow = workGroupShow;
}
public Integer getCenterId() {
return centerId;
}
public void setCenterId(Integer centerId) {
this.centerId = centerId;
}
public Integer getOperationId() {
return operationId;
}
public void setOperationId(Integer operationId) {
this.operationId = operationId;
}
public String getWorkGroupId() {
return workGroupId;
}
public void setWorkGroupId(String workGroupId) {
this.workGroupId = workGroupId;
}
public List<WorkCenter> getUserDeptList() {
return userDeptList;
}
public void setUserDeptList(List<WorkCenter> userDeptList) {
this.userDeptList = userDeptList;
}
}