NpwLotWaferUsageAction.java

package com.mycim.webapp.actions.npwlotwaferusage;

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.MapUtils;
import com.mycim.framework.utils.lang.math.NumberUtils;
import com.mycim.valueobject.MessageIdList;
import com.mycim.valueobject.wip.Unit;
import com.mycim.webapp.WebUtils;
import com.mycim.webapp.actions.NpwSetupAction;
import com.mycim.webapp.forms.LotInfoFormNpw;
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.HashMap;
import java.util.List;
import java.util.Map;

public class NpwLotWaferUsageAction extends NpwSetupAction {

    @Override
    public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                              HttpServletResponse response) throws Exception {
        LotInfoFormNpw theform = (LotInfoFormNpw) form;
        return mapping.findForward("modify");
    }

    public Map batchUpdateWafer(HttpServletRequest request, Map map) {
        String user = LocalContext.getUserId();
        Long facilityRrn = LocalContext.getFacilityRrn();

        Assert.isTrue(NumberUtils.isNumber(MapUtils.getString(map, "count").trim()),
                      Errors.create().key(MessageIdList.NPWLOTWAFERUSAGE_ENTER_NON_INTEGER).content("输入非整数!").build());
        Integer count = NumberUtils.toInt(MapUtils.getString(map, "count").trim());
        String[] unitsRrnStr = StringUtils.split(MapUtils.getString(map, "rrns"), ",");
        String[] unitId = StringUtils.split(MapUtils.getString(map, "unitIds"), ",");
        String type = "";
        for (int i = 0; i < unitsRrnStr.length; i++) {
            Long unitRrn = NumberUtils.toLong(unitsRrnStr[i]);
            Unit unit = wipQueryService.getUnit(facilityRrn, unitId[i]);

            Map transInfo = new HashMap();
            transInfo.put("unitRrn", unitRrn);
            transInfo.put("unit", unit);
            transInfo.put("user", user);
            if (StringUtils.isNotBlank(WebUtils.getParameter("loopCount", request))) {
                transInfo.put("loopCount", count);
                dmmLotService.updateUnitUsage(transInfo);
                type = "loopCount";
            } else {
                transInfo.put("sumLoopCount", count);
                dmmLotService.updateUnitSumLoopCount(transInfo);
                type = "sumCount";
            }
        }

        Map json = new HashMap();
        json.put("success", 1);
        json.put("modifyType", type);
        json.put("results", count);
        return json;
    }

    public Map queryByCondition(ActionMapping mapping, LotInfoFormNpw theform, HttpServletRequest request,
                                HttpServletResponse response) {
        String carrierId = request.getParameter("carrierId");
        String productId = request.getParameter("productId");
        List<Unit> list = dmmLotService.getUnitList(carrierId, productId);
        Map json = new HashMap();
        json.put("success", 1);
        json.put("results", list);
        return json;
    }

    public Map updateUsageCount(ActionMapping mapping, LotInfoFormNpw theform, HttpServletRequest request,
                                HttpServletResponse response) {
        String user = LocalContext.getUserId();
        Long facilityRrn = LocalContext.getFacilityRrn();
        // Integer usageCount = Integer.parseInt(request.getParameter("usageCount"));
        Assert.isFalse(StringUtils.isBlank(WebUtils.getParameter("usageCount", request)) &&
                               StringUtils.isBlank(WebUtils.getParameter("limitCount", request)),
                       Errors.create().key(MessageIdList.NPWLOTWAFERUSAGE_NO_AVAILABLE_PARAMETER).content("没有可用参数!")
                             .build());
        String unitRrn = request.getParameter("unitRrn");
        String unitId = request.getParameter("unitId");
        Integer limitCount = -1;
        Integer usageCount = -1;
        Assert.isFalse(StringUtils.isBlank(unitRrn),
                       Errors.create().key(MessageIdList.NPWLOTWAFERUSAGE_NO_AVAILABLE_PARAMETER).content("没有可用参数!")
                             .build());
        Unit unit = wipQueryService.getUnit(facilityRrn, unitId);
        /*
         * if (usageCount < 0 || usageCount > unit.getUsageLimit()) { throw new
         * UnitDAOSysException("Error in parameter, no available value."); }
         */
        Map transInfo = new HashMap();
        transInfo.put("unitRrn", unitRrn);
        transInfo.put("unit", unit);
        transInfo.put("user", user);
        if (StringUtils.isNotBlank(WebUtils.getParameter("usageCount", request))) {
            Assert.isTrue(NumberUtils.isNumber(WebUtils.getParameter("usageCount", request).trim()),
                          Errors.create().key(MessageIdList.NPWLOTWAFERUSAGE_ENTER_NON_INTEGER).content("输入非整数!")
                                .build());
            usageCount = NumberUtils.toInt(WebUtils.getParameter("usageCount", request).trim());
            transInfo.put("loopCount", usageCount);
            dmmLotService.updateUnitUsage(transInfo);
        }
        if (StringUtils.isNotBlank(WebUtils.getParameter("limitCount", request))) {
            Assert.isTrue(NumberUtils.isNumber(WebUtils.getParameter("limitCount", request).trim()),
                          Errors.create().key(MessageIdList.NPWLOTWAFERUSAGE_ENTER_NON_INTEGER).content("输入非整数!")
                                .build());
            limitCount = NumberUtils.toInt(WebUtils.getParameter("limitCount", request).trim());
            transInfo.put("sumLoopCount", limitCount);
            dmmLotService.updateUnitSumLoopCount(transInfo);
        }

        Map json = new HashMap();
        json.put("success", 1);
        json.put("limitCount", limitCount);
        json.put("usageCount", usageCount);
        return json;

    }

}