ErpPackageAction.java

package com.mycim.webapp.actions.unit.erpPackage;

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.beans.BeanUtils;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.framework.utils.lang.collections.MapUtils;
import com.mycim.framework.utils.msg.JsonUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.erp.lotScrapShip.ErpPackage;
import com.mycim.valueobject.prp.WorkOrder;
import com.mycim.valueobject.sys.ReferenceFileDetail;
import com.mycim.valueobject.wip.Lot;
import com.mycim.valueobject.wip.LotStatus;
import com.mycim.webapp.actions.WipSetupAction;
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.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ErpPackageAction extends WipSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        return mapping.getInputForward();
    }


    public ActionForward initPackage(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                     HttpServletResponse response) throws Exception {
        return mapping.getInputForward();
    }

    public ActionForward addPackageInit(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                                        HttpServletResponse response) throws Exception {
        request.setAttribute("packageType", request.getParameter("packageType"));
        return mapping.findForward("addPackageInit");
    }

    public List<Map<String, Object>> getPackage(HttpServletRequest request, Map<String, Object> reqMap) {
        Page page = new Page(MapUtils.getIntValue(reqMap, "page"), MapUtils.getIntValue(reqMap, "limit"));
        String packageType = MapUtils.getString(reqMap, "packageType");
        Assert.isFalse(StringUtils.isEmpty(packageType), Errors.create().key(MessageIdList.PACKAGE_CHOOSEPACKAGETYPE)
                                                               .content("Please choose package type").build());
        String lotId = StringUtils.trim(StringUtils.replace(MapUtils.getString(reqMap, "lotId"), "*", "%"));
        String productId = StringUtils.trim(StringUtils.replace(MapUtils.getString(reqMap, "productId"), "*", "%"));
        Page package1 = workOrderService.getPackage(page, packageType, lotId, productId);
        List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();
        for (ErpPackage pa : (List<ErpPackage>) package1.getResults()) {
            Map<String, Object> map = new HashMap<String, Object>();
            BeanUtils.copyBeanToMap(map, pa);
            retList.add(map);
        }
        return retList;
    }

    public List<Map<String, Object>> getPackageDetails(HttpServletRequest request, Map<String, Object> reqMap) {
        Long transRrn = MapUtils.getLong(reqMap, "transRrn");
        List<ErpPackage.UnitInfo> list = workOrderService.getPackageDetails(transRrn);

        List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();
        for (ErpPackage.UnitInfo pa : list) {
            Map<String, Object> map = new HashMap<String, Object>();
            BeanUtils.copyBeanToMap(map, pa);
            retList.add(map);
        }
        return retList;
    }

    public List<Map> getUnitByLotId(HttpServletRequest request, Map<String, Object> reqMap) {
        String lotId = MapUtils.getString(reqMap, "lotId");
        Lot lot = lotQueryService.getLot(lotId, LocalContext.getFacilityRrn());
        Assert.isFalse(lot == null || lot.getLotRrn() == 0L,
                       Errors.create().key(MessageIdList.LOT_LOTRRN_NOT_FOUND).content("lot id not found").build());
        if (StringUtils.equals(MapUtils.getString(reqMap, "packageType"), "SHIP")) {
            Assert.isTrue(StringUtils.equals(lot.getLotStatus(), LotStatus.COMPLETEDSS),
                          Errors.create().key(MessageIdList.LOT_STATUS_NOT_ALLOW)
                                .content("lot status must be COMPLETEDSS").build());
        } else if (StringUtils.equals(MapUtils.getString(reqMap, "packageType"), "SCRAP")) {
            Assert.isTrue(StringUtils.equals(lot.getLotStatus(), LotStatus.SCRAPPED),
                          Errors.create().key(MessageIdList.LOT_STATUS_NOT_ALLOW)
                                .content("lot status must " + "be SCRAP").build());
        }
        Assert.notNull(workOrderService.getWorkOrderById(lot.getInnerOrderNO()),
                       Errors.create().key(MessageIdList.LOT_WORKORDERNOTEXIST)
                             .content("Workorder dose not " + "exist!").build());

        List<Map> unitListByLot = workOrderService.getUnpackUnitListByLot(lot.getLotRrn());
        return unitListByLot;

    }

    public Map getLotInfo(HttpServletRequest request, Map<String, Object> reqMap) {
        String lotId = MapUtils.getString(reqMap, "lotId");
        Lot lot = lotQueryService.getLot(lotId, LocalContext.getFacilityRrn());
        Assert.isFalse(lot == null || lot.getLotRrn() == 0L,
                       Errors.create().key(MessageIdList.LOT_LOTRRN_NOT_FOUND).content("lotRrn not found").build());
        if (StringUtils.equals(MapUtils.getString(reqMap, "packageType"), "SHIP")) {
            Assert.isTrue(StringUtils.equals(lot.getLotStatus(), LotStatus.COMPLETEDSS),
                          Errors.create().key(MessageIdList.LOT_STATUS_NOT_ALLOW)
                                .content("lot status must be COMPLETEDSS").build());
        } else if (StringUtils.equals(MapUtils.getString(reqMap, "packageType"), "SCRAP")) {
            Assert.isTrue(StringUtils.equals(lot.getLotStatus(), LotStatus.SCRAPPED),
                          Errors.create().key(MessageIdList.LOT_STATUS_NOT_ALLOW)
                                .content("lot status must " + "be SCRAPPED").build());
        }
        WorkOrder workOrder = workOrderService.getWorkOrderById(lot.getInnerOrderNO());
        Assert.notNull(workOrder,
                       Errors.create().key(MessageIdList.LOT_WORKORDERNOTEXIST).content("Workorder dose not exist!")
                             .build());

        Map copyBeanToMap = workOrder == null ? new HashMap() : BeanUtils.copyBeanToMap(workOrder);
        copyBeanToMap.put("lotId", lot.getLotId());
        copyBeanToMap.put("lotRrn", lot.getLotRrn());
        int shipCount = workOrderService.getPackageDieCount(workOrder.getWorkorderRrn(), "SHIP");
        int scraptCount = workOrderService.getPackageDieCount(workOrder.getWorkorderRrn(), "SCRAP");
        copyBeanToMap.put("finishDieQty", shipCount);
        copyBeanToMap.put("scrapDieQty", scraptCount);
        copyBeanToMap.put("operatingDieQty", workOrder.getOrderDieQty() - shipCount - scraptCount);

        List<String> binProductName = sysService
                .getRefFileKeysByDataValue("$$BIN_PRODUCT_NAME", workOrder.getProductId(), "DATA_1_VALUE");
        copyBeanToMap.put("binProductName", binProductName);

        return copyBeanToMap;
    }

    public Map<String, Object> ajaxFlush(HttpServletRequest request, Map<String, Object> reqMap) {
        Map<String, Object> retMap = new HashMap<String, Object>();

        List<ReferenceFileDetail> judgeBin = sysService.getRefFileValues("$$JUDGE_BIN", LocalContext.getFacilityRrn());
        List<ReferenceFileDetail> subInventory = sysService
                .getRefFileValues("$$SUB_INVENTORY", LocalContext.getFacilityRrn());
        List<ReferenceFileDetail> locator = sysService.getRefFileValues("$$LOCATOR", LocalContext.getFacilityRrn());
        retMap.put("judgeBin", judgeBin);
        retMap.put("subInventory", subInventory);
        retMap.put("locator", locator);
        return retMap;

    }

    public Map<String, String> savePackageData(HttpServletRequest request, Map<String, Object> reqMap) {
        Map<String, String> retMap = new HashMap<String, String>();
        String formVals = MapUtils.getString(reqMap, "formVals");
        ErpPackage value2Bean = JsonUtils.getValue2Bean(formVals, ErpPackage.class);
        String lpn = workOrderService.savePackageData(value2Bean);

        retMap.put("msg", "Package Id:" + lpn);
        return retMap;
    }

}