BarcodeGenerateController.java 4.0 KB
package com.myproject.webapp.controller.barcode;

import com.myproject.bean.form.BarcodeGenerateForm;
import com.myproject.bean.update.Barcode;
import com.myproject.bean.update.Component;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager;
import com.myproject.manager.IComponentManager;
import com.myproject.util.StorageConstants;
import com.myproject.webapp.controller.storage.BaseUpdateController;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.UUID;

/**
 * Created by kangmor on 2016/5/16.
 */
@Controller
@RequestMapping("/barcode/barcodeGenerate*")
public class BarcodeGenerateController extends BaseUpdateController {
    private final static String SUCCESS_VIEW = "barcode/barcodeGenerate";

    @Autowired
    private IBarcodeManager barcodeManager;
    @Autowired
    private IComponentManager componentManager;

    protected final Logger log = LogManager.getLogger(getClass());

    public BarcodeGenerateController() {
        setSuccessView(SUCCESS_VIEW);
    }

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView handleRequest(final HttpServletRequest request) {
        Model model = new ExtendedModelMap();
        initMessage(request);
        BarcodeGenerateForm form = getForm(request);
        model.addAttribute("barcodeGenerateForm", form);
        return new ModelAndView(SUCCESS_VIEW, model.asMap());
    }

    protected BarcodeGenerateForm getForm(HttpServletRequest request) {
        BarcodeGenerateForm form = new BarcodeGenerateForm();

        return form;
    }

    @RequestMapping(method = RequestMethod.POST)
    public String submit(BarcodeGenerateForm barcodeGenerateForm, BindingResult result, HttpServletRequest request, HttpServletResponse response) {
        Barcode barcode = barcodeGenerateForm.getBarcode();
        log.debug("Submit barcode with part number: " + barcode.getPartNumber());
        barcode.setStatus(StorageConstants.BARCODE_STATUS.NEW);
        barcode.setUsed(false);
        //String componentId = barcode.getComponentId();
        Component component = componentManager.findByPartNumber(barcode.getPartNumber());
        if(StringUtils.isEmpty(barcode.getBarcode())) {
            String bs = getUuid();

            barcode.setBarcode(bs);
        }

        try {

            if (component == null) {
                log.error("Component partNumber: " + barcode.getPartNumber() + " doesn't exist");
                throw new ValidateException("component.error.notExist", new String[]{barcode.getPartNumber()});
            }
            barcode.setHeight(component.getHeight());
            barcode.setPlateSize(component.getPlateSize());
            barcode.setType(component.getType());
            barcode.setWarmTime(component.getWarmTime());
            barcode.setMaxStorageTime(component.getMaxStorageTime());
            if (barcode.getAmount() == 0) {
                barcode.setAmount(component.getAmount());
            }
            barcode.setPartNumber(component.getPartNumber());
            barcode.setStatus(StorageConstants.BARCODE_STATUS.NEW);
            barcode = barcodeManager.save(barcode);
        } catch (ValidateException e) {
            handValidateException(e, request);
        }
        return getSuccessView();
    }

    public String getUuid() {
        return UUID.randomUUID().toString();
    }

    public void setBarcodeManager(IBarcodeManager barcodeManager) {
        this.barcodeManager = barcodeManager;
    }
}