Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringMVC将输入值与数据库值进行比较_Java_Sql_Spring Mvc - Fatal编程技术网

Java 使用SpringMVC将输入值与数据库值进行比较

Java 使用SpringMVC将输入值与数据库值进行比较,java,sql,spring-mvc,Java,Sql,Spring Mvc,如何将输入值item_code1、item_code2等与另一个表列item_code进行比较,然后根据item_code将库存与数量_reqd1、数量_reqd2()等进行比较。如果compare为true,则生成该项的report1,否则生成report2 @Controller @请求映射(“需求”) 公共类要求控制器{ private static final Logger logger = LoggerFactory.getLogger(RequirementEntity.class

如何将输入值item_code1、item_code2等与另一个表列item_code进行比较,然后根据item_code将库存与数量_reqd1、数量_reqd2()等进行比较。如果compare为true,则生成该项的report1,否则生成report2

@Controller
@请求映射(“需求”) 公共类要求控制器{

private static final Logger logger = LoggerFactory.getLogger(RequirementEntity.class);

@Autowired
private RequirementService reqService;

@Autowired
private Master_service master_service;

@Autowired
private SessionFactory sessionFactory;

@Autowired
private Stock_issuance_service stock_service1;

@Autowired
private Purchase_Order_Service purchase_service1;

@RequestMapping(value = "/sheet", method = RequestMethod.GET)
public ModelAndView getRequirementJsp() {
    System.out.println("Controller is starting..");
    ModelAndView mav = new ModelAndView("requirement_sheet");
    mav.addObject("item", new Item_entity());
    mav.addObject("itemList", this.master_service.getItemList());
    mav.addObject("department", new department_entity());
    mav.addObject("departmentList", this.master_service.getDepartmentList());
    stock_register_dto dto = new stock_register_dto();
    mav.addObject("stock_register", dto);
    return mav;
}

@RequestMapping(value = "/sheet", method = RequestMethod.POST)
public ModelAndView saveRequirement(@ModelAttribute("requirement") RequirementEntity req, RedirectAttributes rd,
        stock_register_dto dto, Purchase_Order_Entity order, ModelAndView modelAndView, ModelAndView modelAndView1,
        Stock_issuance_toDepartment stockIssuance, Session session, Integer item_code, Integer stock) {
    System.out.println("MAV is starting..");
    ModelAndView mav = new ModelAndView("requirement_sheet");
    mav.addObject("item", new Item_entity());
    mav.addObject("itemList", this.master_service.getItemList());
    mav.addObject("department", new department_entity());
    mav.addObject("departmentList", this.master_service.getDepartmentList());
    System.out.println("service is not starting..");
    this.reqService.saveRequirement(req);
    rd.addFlashAttribute("msg", "Requirement details added Successfully.");

    List<stock_register_dto> dataList = master_service.getStockRegisterList(dto);
    Map<String, Object> parameterMap = new HashMap<String, Object>();
    String hql = "FROM Stock_issuance_toDepartment where serial_no = (SELECT max(serial_no) FROM Stock_issuance_toDepartment) ORDER BY serial_no DESC";
    Session session1 = sessionFactory.openSession();
    Query query = session1.createQuery(hql);
    List list1 = query.list();
    try {
        String query1 = "SELECT item_code, stock FROM stock_requirement_register WHERE item_code=?, and stock=? ";
        Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/bjspring", "postgres",
                "postgres");
        PreparedStatement ps = con.prepareStatement(query1);
        ps.setInt(1, item_code);
        ps.setInt(2, stock);
        ResultSet out = ps.executeQuery();
        while (out.next()) {
            Integer code = out.getInt("item_code");
            Integer check = out.getInt("stock");
            if (req.getItem_code1().equals(code) && req.getQuantity_reqd1().equals(check)) {
                JRDataSource JRdataSource1 = new JRBeanCollectionDataSource(list1);
                parameterMap.put("datasource", JRdataSource1);
                modelAndView = new ModelAndView("report3", parameterMap);
                return modelAndView;
            } else {
                return new ModelAndView("redirect:requirement/genReport");
            }
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return mav;
}

@RequestMapping(method = RequestMethod.GET, value = "/genReport")
public ModelAndView generateReport(stock_register_dto dto, RequirementEntity req, Purchase_Order_Entity order,
        Stock_issuance_toDepartment stock, ModelAndView modelAndView) {
    Map<String, Object> parameterMap = new HashMap<String, Object>();
    /*
     * List<Stock_issuance_toDepartment> list1 = stock_service1.list(stock);
     * List<Purchase_Order_Entity> list2 = purchase_service1.list(order);
     */
    /*String hql = "FROM Stock_issuance_toDepartment where serial_no = (SELECT max(serial_no) FROM Stock_issuance_toDepartment) ORDER BY serial_no DESC";
    Session session = sessionFactory.openSession();
    Query query = session.createQuery(hql);
    List list1 = query.list();*/

    String hql1 = "FROM Purchase_Order_Entity where serial_no = (SELECT max(serial_no) FROM Purchase_Order_Entity) ORDER BY serial_no DESC";
    Session session1 = sessionFactory.openSession();
    Query query1 = session1.createQuery(hql1);
    List list2 = query1.list();
    if (list2 != null) {
        JRDataSource JRdataSource2 = new JRBeanCollectionDataSource(list2);
        parameterMap.put("datasource", JRdataSource2);
        modelAndView = new ModelAndView("report2", parameterMap);
        return modelAndView;
    }
    return modelAndView;
}
}

第二实体:

public class stock_register_dto  {

@Id
@Column(name = "serial_no")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer serial_no;

@Column(name = "date")
private Date date;

@Column(name = "sisr_no")
private String sisr_no;

@Column(name = "invoice_no")
private String invoice_no;

@Column(name = "vendor_code")
private String vendor_code;

@Column(name = "department_code")
private String department_code;

@Column(name = "item_code")
private Integer item_code;

@Column(name = "hsn_code")
private Integer hsn_code;

@Column(name = "purchase_price")
private Integer purchase_price;

@Column(name = "quantity_recd")
private Integer quantity_recd;

@Column(name = "quantity_issued")
private Integer quantity_issued;

@Column(name = "stock")
private Integer stock;

public Integer getSerial_no() {
    return serial_no;
}

public void setSerial_no(Integer serial_no) {
    this.serial_no = serial_no;
}

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}

public String getSisr_no() {
    return sisr_no;
}

public void setSisr_no(String sisr_no) {
    this.sisr_no = sisr_no;
}

public String getInvoice_no() {
    return invoice_no;
}

public void setInvoice_no(String invoice_no) {
    this.invoice_no = invoice_no;
}

public String getVendor_code() {
    return vendor_code;
}

public void setVendor_code(String vendor_code) {
    this.vendor_code = vendor_code;
}

public String getDepartment_code() {
    return department_code;
}

public void setDepartment_code(String department_code) {
    this.department_code = department_code;
}

public Integer getItem_code() {
    return item_code;
}

public void setItem_code(Integer item_code) {
    this.item_code = item_code;
}

public Integer getHsn_code() {
    return hsn_code;
}

public void setHsn_code(Integer hsn_code) {
    this.hsn_code = hsn_code;
}

public Integer getPurchase_price() {
    return purchase_price;
}

public void setPurchase_price(Integer purchase_price) {
    this.purchase_price = purchase_price;
}

public Integer getQuantity_recd() {
    return quantity_recd;
}

public void setQuantity_recd(Integer quantity_recd) {
    this.quantity_recd = quantity_recd;
}

public Integer getQuantity_issued() {
    return quantity_issued;
}

public void setQuantity_issued(Integer quantity_issued) {
    this.quantity_issued = quantity_issued;
}

public Integer getStock() {
    return stock;
}

public void setStock(Integer stock) {
    this.stock = stock;
}

@Override
public String toString() {
    return "stock_register_dto [serial_no=" + serial_no + ", date=" + date + ", sisr_no=" + sisr_no
            + ", invoice_no=" + invoice_no + ", vendor_code=" + vendor_code + ", department_code=" + department_code
            + ", item_code=" + item_code + ", hsn_code=" + hsn_code + ", purchase_price=" + purchase_price
            + ", quantity_recd=" + quantity_recd + ", quantity_issued=" + quantity_issued + ", stock=" + stock
            + "]";
}

请帮助我。

如果我理解了您的问题并正确地给出了代码,那么下面是解决方案:

我只需要对您在saveRequirement()控制器方法中编写的以下查询进行解释:

SELECT item_code, stock FROM stock_requirement_register WHERE item_code=?, and 
stock=? 
如果上面的查询只是为了检查是否存在一个带有这样的item_代码和stock的条目,那么它很好,但是您可以应用count查询,而不是获取结果集并对其进行迭代。与处理局部变量本身相比,它可能成本高昂

解决方案:

假设您正在从saveRequirement()方法中的表单获取实体类中正确存储的数据

您可以在Requirementity类中编写一个方法,返回一个映射集合(如下所示)

publicmap getItemCodeList(){
映射响应=新建LinkedHashMap();
响应。放置(本项目代码1,本数量需求1);
响应。放置(此项目代码2,此数量需求2);
响应。放置(本项目代码3,本数量需求3);
响应。放置(本项目代码4,本数量需求4);
响应。放置(本项目代码5,本数量需求5);
返回响应;
}

因此,当您将表单数据保存在requirementty类中时,您可以调用此方法来获取一个映射集合对象,并使用对该映射的键集进行迭代,以将从表单接收的每个项代码与数据库中的数据进行比较

//The place where you have called this below method
@RequestMapping(value = "/sheet", method = RequestMethod.POST)
public ModelAndView saveRequirement

//You can get data in a Integer List as below
boolean report = true;
Map<Integer,Integer> itemCodeList = req.getItemCodeList();
Set<Integer> keys = itemCodeList.keySet()
for(Integer key : keys ){
    if(!(report = compare(itemCodeList, item)))
        break;
}

if(report)
    //code for generate report here... or redirection code as per your logic
//在下面调用此方法的位置
@RequestMapping(value=“/sheet”,method=RequestMethod.POST)
公共模型和视图保存要求
//您可以获得整数列表中的数据,如下所示
布尔报告=真;
Map itemCodeList=req.getItemCodeList();
Set keys=itemCodeList.keySet()
for(整数键:键){
如果(!(报告=比较(itemCodeList,item)))
打破
}
如果(报告)
//此处生成报告的代码。。。或根据您的逻辑重定向代码
上述方法compare()可以位于服务类中的任何位置,您可以在此处相应地调用它。您可以编写代码来比较其中的项目。您可以编写同时匹配物料代码和所需数量的查询,并从中调用generate report方法


但从您的代码看来(如果我错了,请纠正我),您希望为每个项目生成报告,并且为每个符合条件的项目返回MV,这是不可能的。您可以将报告1中要考虑的项目列表与报告2中要考虑的项目列表分开。并相应地继续。

感谢您的回复…但是如何将项目1、项目2等与不同表库存登记簿中保存的项目代码进行比较,以及如何将数量1、数量2等与库存登记表中保存的库存进行比较,并根据项目代码检查数量。如上代码部分所述!您可以在compare方法中编写这部分代码,该方法在“for”循环中调用,该循环在items映射的键集上进行迭代。您可以在那里编写我们的业务逻辑,如
public boolean compare(long itemCode,long quantity){//检查此函数中传递的项目与数据库中传递的项目//根据上述条件,您可以继续检查//库存数量或立即返回false退出代码。}
public Map<Integer, Integer> getItemCodeList(){
    Map<Integer> response = new LinkedHashMap<Integer>();
    response.put(this.item_code1,this.quantity_reqd1);
    response.put(this.item_code2,this.quantity_reqd2);
    response.put(this.item_code3,this.quantity_reqd3);
    response.put(this.item_code4,this.quantity_reqd4);
    response.put(this.item_code5,this.quantity_reqd5);
    return response;
//The place where you have called this below method
@RequestMapping(value = "/sheet", method = RequestMethod.POST)
public ModelAndView saveRequirement

//You can get data in a Integer List as below
boolean report = true;
Map<Integer,Integer> itemCodeList = req.getItemCodeList();
Set<Integer> keys = itemCodeList.keySet()
for(Integer key : keys ){
    if(!(report = compare(itemCodeList, item)))
        break;
}

if(report)
    //code for generate report here... or redirection code as per your logic