package com.biologic.entity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name= "t_quality_inspection")
public class QualityCheck {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String version;
private Date upload_time;
private int qualified;
private int released;
private int processed;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public Date getUpload_time() {
return upload_time;
}
public void setUpload_time(Date upload_time) {
this.upload_time = upload_time;
}
public int getQualified() {
return qualified;
}
public void setQualified(int qualified) {
this.qualified = qualified;
}
public int getReleased() {
return released;
}
public void setReleased(int released) {
this.released = released;
}
public int getProcessed() {
return processed;
}
public void setProcessed(int processed) {
this.processed = processed;
}
}
package com.biologic.api.service;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Service;
import com.biologic.entity.QualityCheck;
@Service
public interface QualityCheckRepository extends JpaRepository<QualityCheck, Long>, JpaSpecificationExecutor<QualityCheck> {
}
package com.biologic.api;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.biologic.api.service.QualityCheckRepository;
import com.biologic.entity.QualityCheck;
@Controller
@RequestMapping(path = "/demo")
public class QualityCheckController {
@Autowired
private QualityCheckRepository qualityCheckRepository;
@GetMapping(path = "/qualityCheck")
public @ResponseBody String qualityCheck() {
QualityCheck model = new QualityCheck();
model.setQualified(1);
model.setProcessed(0);
List<QualityCheck> results = findSearch(model);
for (QualityCheck qualityCheck : results) {
System.out.println("正在質檢:" + qualityCheck.getId());
qualityCheck.setProcessed(1);
qualityCheckRepository.save(qualityCheck);
}
return "ok";
}
public List<QualityCheck> findSearch(QualityCheck model) {
List<QualityCheck> result = qualityCheckRepository.findAll(new Specification<QualityCheck>() {
@Override
public Predicate toPredicate(Root<QualityCheck> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> list = new ArrayList<Predicate>();
list.add(cb.equal(root.get("qualified").as(Integer.class), model.getQualified()));
list.add(cb.equal(root.get("processed").as(Integer.class), model.getProcessed()));
if (model.getVersion() != null && !model.getVersion().equals("")) {
list.add(cb.equal(root.get("version").as(String.class), model.getVersion()));
}
if (model.getVersion() != null && !model.getVersion().equals("")) {
list.add(cb.like(root.get("version").as(String.class), "%" + model.getVersion() + "%"));
}
// 日期
if (model.getUpload_time() != null) {
Date startDate = model.getUpload_time();
Date endDate = new Date();
list.add(cb.between(root.<Date>get("upload_time"), startDate, endDate));
}
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
});
return result;
}
}
參考鏈接:https://blog.csdn.net/zzq900503/article/details/81104220###