diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java index 72d4e0c..95d1c5a 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/dao/BaseRepository.java @@ -215,7 +215,7 @@ public interface BaseRepository extends JpaReposito List findByProperty(String propertyName, Object value); - List findByWasProperty(String[] propertyNames, Object[] values); + List> findByWasProperty(String[] propertyNames, Object[] values); List findByProperty(String[] propertyNames, Object[] values); diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java index 92a320a..012951c 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java @@ -6,8 +6,12 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.WmsEnumUtil; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.util.BeanMapUtils; +import cn.estsh.i3plus.pojo.base.util.StringCastUtils; import org.apache.commons.lang3.StringUtils; import org.hibernate.NonUniqueResultException; +import org.hibernate.SQLQuery; +import org.hibernate.transform.Transformers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; @@ -414,31 +418,34 @@ public class BaseRepositoryImpl extends SimpleJpaRep } @Override - public List findByWasProperty(String[] propertyNames, Object[] values) { + public List> findByWasProperty(String[] propertyNames, Object[] values) { if (propertyNames.length != values.length) { throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length); } StringBuffer queryString = new StringBuffer(); - queryString.append(" select new "+persistentClass.getSimpleName()+"(snStatus,whNo,locateNo,partNo,partNameRdd,lotNo,sum(qty)) from " + persistentClass.getSimpleName() + " "); - + queryString.append(" SELECT \n" + + " a.sn_status AS snStatus,\n" + + " a.wh_no AS whNo,\n" + + " a.locate_no AS locateNo,\n" + + " a.part_no AS partNo,\n" + + " a.part_name_rdd AS partNameRdd,\n" + + " a.lot_no AS lotNo,\n" + + " CAST(IFNULL(SUM(a.qty), 0) AS DOUBLE) AS qty \n" + + "FROM\n" + + " `wms_stock_sn` a "); int size = propertyNames.length; if (size > 0) { - queryString.append("where 1=1 and snStatus in ('"+ WmsEnumUtil.STOCK_SN_STATUS.PRE_INSTOCK.getValue()+"','"+WmsEnumUtil.STOCK_SN_STATUS.INSTOCKED.getValue()+"','"+WmsEnumUtil.STOCK_SN_STATUS.PICKED.getValue()+"','"+WmsEnumUtil.STOCK_SN_STATUS.QUALITY_CONTROL.getValue()+"') "); + queryString.append("where 1=1 and a.sn_status in ('"+ WmsEnumUtil.STOCK_SN_STATUS.PRE_INSTOCK.getValue()+"', '"+WmsEnumUtil.STOCK_SN_STATUS.INSTOCKED.getValue()+"','"+WmsEnumUtil.STOCK_SN_STATUS.PICKED.getValue()+"','"+WmsEnumUtil.STOCK_SN_STATUS.QUALITY_CONTROL.getValue()+"') "); } for (int i = 0; i < size; i++) { if (values[i] != null) { - queryString.append(" and " + propertyNames[i] + "= :" + propertyNames[i]); - } - } - queryString.append("/n group by lotNo,dateCode"); - Query queryObject = entityManager.createQuery(queryString.toString()); - for (int i = 0; i < size; i++) { - if (values[i] != null) { - queryObject.setParameter(propertyNames[i], values[i]); + queryString.append(" and a." + StringCastUtils.upperCharToUnderLine(propertyNames[i]) + "= " + values[i]); } } - return queryObject.getResultList(); + queryString.append(" group by a.lot_no,a.date_code"); + return entityManager.createNativeQuery(queryString.toString()).unwrap(SQLQuery.class).setResultTransformer( + Transformers.ALIAS_TO_ENTITY_MAP).getResultList(); } @Override @@ -1559,4 +1566,6 @@ public class BaseRepositoryImpl extends SimpleJpaRep } return num; } + + } diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java new file mode 100644 index 0000000..387ed78 --- /dev/null +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/BeanMapUtils.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.pojo.base.util; + +import org.springframework.cglib.beans.BeanMap; + +import java.util.HashMap; +import java.util.Map; + +public class BeanMapUtils { + /** + * 将对象属性转化为map结合 + */ + public static Map beanToMap(T bean) { + Map map = new HashMap<>(); + if (bean != null) { + BeanMap beanMap = BeanMap.create(bean); + for (Object key : beanMap.keySet()) { + map.put(key + "", beanMap.get(key)); + } + } + return map; + } + + /** + * 将map集合中的数据转化为指定对象的同名属性中 + */ + public static T mapToBean(Map map, Class clazz) throws Exception { + T bean = clazz.newInstance(); + BeanMap beanMap = BeanMap.create(bean); + beanMap.putAll(map); + return bean; + + } +} diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/StringCastUtils.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/StringCastUtils.java new file mode 100644 index 0000000..959c68d --- /dev/null +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/util/StringCastUtils.java @@ -0,0 +1,38 @@ +package cn.estsh.i3plus.pojo.base.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 字符串转大写换成下滑线加小写 + */ +public class StringCastUtils { + + + + public static String upperCharToUnderLine(String param) { + Pattern p= Pattern.compile("[A-Z]"); + if(param==null ||param.equals("")){ + return ""; + } + StringBuilder builder=new StringBuilder(param); + Matcher mc=p.matcher(param); + int i=0; + while (mc.find()) { + System.out.println(builder.toString()); + System.out.println("mc.start():" + mc.start() + ", i: " + i); + System.out.println("mc.end():" + mc.start() + ", i: " + i); + builder.replace(mc.start()+i, mc.end()+i, "_"+mc.group().toLowerCase()); + i++; + } + if('_' == builder.charAt(0)){ + builder.deleteCharAt(0); + } + System.out.println(builder.toString()); + return builder.toString(); + } + + public static void main(String[] args) { + upperCharToUnderLine("snStatus"); + } +} diff --git a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java index 7641cf5..0bb8f7c 100644 --- a/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java +++ b/modules/i3plus-pojo-model/src/main/java/cn/estsh/i3plus/pojo/model/softswitch/BsSuitCaseModel.java @@ -5,7 +5,6 @@ import cn.estsh.i3plus.pojo.softswitch.bean.*; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiParam; import lombok.Data; -import org.springframework.beans.factory.annotation.Autowired; import java.io.Serializable;