LotConsumesMaterialHistoryAction.java
package com.mycim.webapp.actions.warehouse;
import com.fa.sesa.exception.Assert;
import com.fa.sesa.exception.Errors;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.jdbc.Page;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.valueobject.inv.MaterialDO;
import com.mycim.valueobject.prp.BOR;
import com.mycim.valueobject.prp.Operation;
import com.mycim.valueobject.wip.LotConsumesMaterialHistory;
import com.mycim.webapp.Constants;
import com.mycim.webapp.actions.AsmSetupAction;
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.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 批次消耗物料历史
*/
public class LotConsumesMaterialHistoryAction extends AsmSetupAction {
@Override
public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
return mapping.findForward(Constants.HISTORY_KEY);
}
public Map<String, Object> getHistory(ActionMapping mapping, Map<String, String> theform,
HttpServletRequest request,
HttpServletResponse response) throws ParseException {
Map<String, Object> conditions = buildCondition(request, theform);
int pageNo = MapUtils.getIntValue(theform, "currentPage", 1);
int pageSize = 10;
Page page = new Page();
page.setPageSize(pageSize);
page.setPageNo(pageNo);
page = warehouseService.getLotConsumesMaterialHistoryForPage(page, conditions);
buildLotConsumesMaterialHistoryShow(page);
Map<String, Object> result = new HashMap<>();
result.put("pageSize", page.getNextPage());
result.put("pageNum", page.getPageNo());
result.put("maxPage", page.getTotalPages());
result.put("startRowNum", page.getStartRow());
result.put("isFirstPage", page.isFirstPage());
result.put("hasPreviousPage", page.isHasPrePage());
result.put("isLastPage", page.isLastPage());
result.put("hasNextPage", page.isHasNextPage());
result.put("list", page.getResults());
return result;
}
private Map<String, Object> buildCondition(HttpServletRequest request,
Map<String, String> theform) throws ParseException {
Map<String, Object> conditions = new HashMap<>();
Long borRrn = null;
if (StringUtils.isNotEmpty(theform.get("borId"))) {
BOR bor = prpService.getBOR(LocalContext.getFacilityRrn(), theform.get("borId"));
Assert.isFalse(bor.getInstanceRrn() <= 0, Errors.create().content("BOM id not exist!").build());
borRrn = bor.getInstanceRrn();
}
Integer borVersion = StringUtils.isNotEmpty(MapUtils.getString(theform, "borVersion")) ? MapUtils
.getInteger(theform, "borVersion") : null;
String borLossType = StringUtils.trimToUpperCase(MapUtils.getString(theform, "borLossType"));
Long warehouseRrn = null;
if (StringUtils.isNotEmpty(theform.get("warehouseId"))) {
Operation warehouse = warehouseService
.getWarehouse(LocalContext.getFacilityRrn(), theform.get("warehouseId"));
Assert.isFalse(warehouse.getInstanceRrn() <= 0, Errors.create().content("Warehouse id not exist!").build());
warehouseRrn = warehouse.getInstanceRrn();
}
Long materialRrn = null;
if (StringUtils.isNotEmpty(theform.get("materialId"))) {
MaterialDO material = asmService.getMaterial(LocalContext.getFacilityRrn(), theform.get("materialId"));
Assert.isFalse(material == null || material.getInstanceRrn() <= 0,
Errors.create().content("Material id not exist!").build());
materialRrn = material.getInstanceRrn();
}
String lotId = StringUtils.isNotEmpty(MapUtils.getString(theform, "lotId")) ? StringUtils
.trimToUpperCase(MapUtils.getString(theform, "lotId")) : null;
String lotStepSequence = StringUtils.isNotEmpty(MapUtils.getString(theform, "lotStepSequence")) ? MapUtils
.getString(theform, "lotStepSequence") : null;
String effectiveDateFrom = MapUtils.getString(theform, "effectiveDateFrom");
String effectiveDateTo = MapUtils.getString(theform, "effectiveDateTo");
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date startDateTime = StringUtils.isEmpty(effectiveDateFrom) ? null : df.parse(effectiveDateFrom);
Date endDateTime = StringUtils.isEmpty(effectiveDateTo) ? null : df.parse(effectiveDateTo);
conditions.put("borRrn", borRrn);
conditions.put("borVersion", borVersion);
conditions.put("borLossType", borLossType);
conditions.put("warehouseRrn", warehouseRrn);
conditions.put("materialRrn", materialRrn);
conditions.put("lotId", lotId);
conditions.put("lotStepSequence", lotStepSequence);
conditions.put("startDateTime", startDateTime);
conditions.put("endDateTime", endDateTime);
return conditions;
}
private void buildLotConsumesMaterialHistoryShow(Page page) {
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
List<Map<String, String>> results = new ArrayList<>();
Map<String, String> showMsg;
for (Iterator<?> iterator = page.getResults().iterator(); iterator.hasNext(); ) {
LotConsumesMaterialHistory lotConsumesMaterialHistory = (LotConsumesMaterialHistory) iterator.next();
showMsg = new HashMap<>();
showMsg.put("borId", getInstanceId(lotConsumesMaterialHistory.getBorRrn()));
showMsg.put("borVersion", StringUtils.toString(lotConsumesMaterialHistory.getBorVersion()));
showMsg.put("borLossType", lotConsumesMaterialHistory.getBorLossType());
showMsg.put("lotNumber", lotConsumesMaterialHistory.getLotNumber());
showMsg.put("materialId", getInstanceId(lotConsumesMaterialHistory.getItemRrn()));
showMsg.put("materialType", lotConsumesMaterialHistory.getMaterialType());
showMsg.put("warehouseId", getInstanceId(lotConsumesMaterialHistory.getWarehouseRrn()));
showMsg.put("lotIds", lotConsumesMaterialHistory.getLotIds());
showMsg.put("consumptionQty", StringUtils.toString(lotConsumesMaterialHistory.getConsumptionQty()));
showMsg.put("consumptionDate", df.format(lotConsumesMaterialHistory.getConsumptionDate()));
showMsg.put("consumptionUserId", lotConsumesMaterialHistory.getConsumptionUserId());
results.add(showMsg);
}
page.setResults(results);
}
}