LotReturnFactoryEditAction.java
package com.mycim.webapp.actions.outfactory.returnfactory;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.CollectionUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.wip.Lot;
import com.mycim.valueobject.wip.LotStatus;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.WipSetupAction;
import com.mycim.webapp.forms.outfactory.LotOutFactoryForm;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author liuji.li
* @version 6.0.0
* @date 2019/10/25
**/
public class LotReturnFactoryEditAction extends WipSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
return initReturnFactory(mapping, form, request, response);
}
public ActionForward initReturnFactory(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
LotOutFactoryForm lotOutFactoryForm = (LotOutFactoryForm) request.getAttribute("lotOutFactoryForm");
if (lotOutFactoryForm == null) {
lotOutFactoryForm = (LotOutFactoryForm) form;
}
List<Map> ofoLots = (List<Map>) WebUtils.getCacheString2Obj(lotOutFactoryForm.getCacheCurrentlots());
if (ofoLots == null) {
ofoLots = new ArrayList<>();
}
request.setAttribute("ofoLots", ofoLots);
request.setAttribute("outFactoryRrn", lotOutFactoryForm.getOutFactoryRrn());
return mapping.getInputForward();
}
public ActionForward addOfoLots(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
LotOutFactoryForm lotOutFactoryForm = (LotOutFactoryForm) form;
String lotOfoId = lotOutFactoryForm.getLotOfoId();
List<Map> ofoLots = (List<Map>) WebUtils.getCacheString2Obj(lotOutFactoryForm.getCacheCurrentlots());
if (ofoLots == null) {
ofoLots = new ArrayList<>();
}
if (StringUtils.isNotBlank(lotOfoId)) {
Lot lot = lotQueryService.getLot(lotOfoId.trim().toUpperCase());
long lotRrn = lot.getLotRrn();
Map<String, Object> lotMap = new HashMap<String, Object>();
Assert.isFalse(lotRrn < 1, Errors.create().key(MessageIdList.LOTOUTFACTORY_LOTID_ERROR)
.content("lot Id does not exist!").build());
String lotStatus = lot.getLotStatus();
Assert.isFalse(StringUtils.isBlank(lotStatus) || !lotStatus.equalsIgnoreCase(LotStatus.OUTSOURCING),
Errors.create().key(MessageIdList.RETURNFACTORY_STATUS_ERROR)
.content("The Lot state must be OUTSOURCING!").build());
// 判断是否是本工厂外包的批次
Map<String, Object> outsourcingLotHistory = wipService
.getOutsourcingLotHistory(lotOutFactoryForm.getOutFactoryRrn(), lotRrn);
Assert.isFalse(outsourcingLotHistory.isEmpty(),
Errors.create().key(MessageIdList.RETURNFACTORY_PROCESS_ERROR)
.content("The Lot is not processed in the " + "outsourced plant!").build());
// 检查是否重复添加
for (Map<String, Object> map : ofoLots) {
long lotRrnE = MapUtils.getLongValue(map, "lotRrn");
Assert.isFalse(lotRrnE == lotRrn, Errors.create().key(MessageIdList.LOTOUTFACTORY_NOT_REPEAT)
.content("Please do not repeat the submission!").build());
}
long ofoh_rrn = MapUtils.getLongValue(outsourcingLotHistory, "OUT_FACTORY_H_RRN");
long bankRrn = MapUtils.getLongValue(outsourcingLotHistory, "BANK_RRN");
Timestamp planTs = (Timestamp) outsourcingLotHistory.get("RECIVE_PLAN_TIME");
String fsendComments = MapUtils.getString(outsourcingLotHistory, "FSEND_COMMENTS");
lotMap.put("ofoh_rrn", ofoh_rrn);
lotMap.put("lotId", lot.getLotId());
lotMap.put("productId", lot.getProductId());
lotMap.put("processId", lot.getProcessId());
lotMap.put("lotRrn", lotRrn);
lotMap.put("opComments", lotOutFactoryForm.getOpComments());
lotMap.put("bankRrn", bankRrn);
lotMap.put("fsendComments", fsendComments);
lotMap.put("lot", lot);
if (planTs != null) {
lotMap.put("outFactoryPlanTime", planTs);
}
ofoLots.add(lotMap);
lotOutFactoryForm.setLotOfoId("");
lotOutFactoryForm.setOpComments("");
lotOutFactoryForm.setCacheCurrentlots(WebUtils.getCacheObj2String(ofoLots));
request.setAttribute("ofoLots", ofoLots);
request.setAttribute("outFactoryRrn", lotOutFactoryForm.getOutFactoryRrn());
}
return mapping.getInputForward();
}
public ActionForward deleteLot(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
LotOutFactoryForm lotOutFactoryForm = (LotOutFactoryForm) form;
List<Map> ofoLots = (List<Map>) WebUtils.getCacheString2Obj(lotOutFactoryForm.getCacheCurrentlots());
String deleteLotRrn = request.getParameter("deleteLotRrn");
for (Map<String, Object> map : ofoLots) {
String lotRrn = map.get("lotRrn").toString();
if (lotRrn.equals(deleteLotRrn)) {
ofoLots.remove(map);
break;
}
}
lotOutFactoryForm.setCacheCurrentlots(WebUtils.getCacheObj2String(ofoLots));
request.setAttribute("ofoLots", ofoLots);
request.setAttribute("outFactoryRrn", lotOutFactoryForm.getOutFactoryRrn());
return mapping.getInputForward();
}
public ActionForward reciveLot(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
String user = LocalContext.getUserId();
LotOutFactoryForm lotOutFactoryForm = (LotOutFactoryForm) form;
List<Map> ofoLots = (List<Map>) WebUtils.getCacheString2Obj(lotOutFactoryForm.getCacheCurrentlots());
Map<String, Object> transInfos = new HashMap();
Assert.isFalse(CollectionUtils.isEmpty(ofoLots),
Errors.create().key(MessageIdList.LOTOUTFACTORY_LOTS_WRONG).content("Please add lot first!")
.build());
transInfos.put("user", user);
transInfos.put("ofoRrn", lotOutFactoryForm.getOutFactoryRrn());
transInfos.put("transId", TransactionNames.TRANSID_RECIVE);
transInfos.put("lots", ofoLots);
lotService.reciveLots(transInfos);
request.setAttribute("operationSuccess", true);
lotOutFactoryForm.setLotOfoId("");
lotOutFactoryForm.setOpComments("");
request.setAttribute("outFactoryRrn", lotOutFactoryForm.getOutFactoryRrn());
request.setAttribute("ofoLots", new ArrayList<>());
lotOutFactoryForm.setCacheCurrentlots(WebUtils.getCacheObj2String(new ArrayList<>()));
return mapping.getInputForward();
}
}