diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java index 3ceadb1..ec7d5c4 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/AndonEnumUtil.java @@ -83,7 +83,7 @@ public class AndonEnumUtil { public enum ALARM_FLAG{ CALL(1,"10","呼叫"), - SIGN(2,"20","签到"), + SIGN(2,"20","响应"), RESOLVE(3,"30","解决"), CANCEL(4,"40", "撤销"); 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 4c07060..c131da7 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 @@ -132,6 +132,51 @@ public interface BaseRepository extends JpaReposito int updateByProperties(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue); /** + * 通过多单属性进行单个值更新(eg: price = price + :price) + * @param conditionName + * @param conditionValue + * @param propertyName + * @param propertyValue + */ + int updateByPropertiesWithVal(String conditionName, Object conditionValue, String propertyName, Object propertyValue); + + /** + * 通过单个属性进行多个值更新(eg: price = price + :price) + * @param conditionName + * @param conditionValue + * @param propertyName + * @param propertyValue + */ + int updateByPropertiesWithVal(String conditionName, Object conditionValue, String[] propertyName, Object[] propertyValue); + + /** + * 通过属性进行多个值更新(eg: price = price + :price) + * @param propertyName + * @param propertyValue + */ + int updateByPropertiesWithVal(String propertyName, Object propertyValue,DdlPackBean packBean); + int updateByPropertiesWithVal(String[] propertyName, Object[] propertyValue,DdlPackBean packBean); + + + /** + * 通过多个属性进行单个值更新(eg: price = price + :price) + * @param conditionName + * @param conditionValue + * @param propertyName + * @param propertyValue + */ + int updateByPropertiesWithVal(String[] conditionName, Object[] conditionValue, String propertyName, Object propertyValue); + + /** + * 通过多个属性进行多个值更新(eg: price = price + :price) + * @param conditionName 查询属性名称 + * @param conditionValue 查询属性值 + * @param propertyName 更新属性名称 + * @param propertyValue 更新属性值 + */ + int updateByPropertiesWithVal(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue); + + /** * 根据 hqlWhere 批量修改制定字段 * @param hqlWhere * @param propertyName 修改的字段名称 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 ae2aecf..04141fd 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 @@ -11,10 +11,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.NoResultException; -import javax.persistence.Query; +import javax.persistence.*; import java.io.Serializable; import java.lang.reflect.Field; import java.text.SimpleDateFormat; @@ -196,6 +193,42 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public int updateByProperties(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue) { + return updateByPropertiesMain(conditionName, conditionValue, propertyName, propertyValue,true); + } + + @Override + public int updateByPropertiesWithVal(String conditionName, Object conditionValue, String propertyName, Object propertyValue) { + return updateByPropertiesWithVal(new String[] { conditionName }, new Object[] { conditionValue }, new String[] { propertyName }, new Object[] { propertyValue }); + } + + @Override + public int updateByPropertiesWithVal(String conditionName, Object conditionValue, String[] propertyName, Object[] propertyValue) { + return updateByPropertiesWithVal(new String[] { conditionName }, new Object[] { conditionValue }, propertyName, propertyValue); + } + + @Override + public int updateByPropertiesWithVal(String[] conditionName, Object[] conditionValue, String propertyName, Object propertyValue) { + return updateByPropertiesWithVal(conditionName, conditionValue, new String[] { propertyName }, new Object[] { propertyValue }); + } + + @Override + public int updateByPropertiesWithVal(String[] conditionName, Object[] conditionValue, String[] propertyName, Object[] propertyValue) { + return updateByPropertiesMain(conditionName, conditionValue, propertyName, propertyValue,false); + } + + /** + * 更新参数汇总方法 + * @param conditionName 条件属性名 + * @param conditionValue 条件属性值 + * @param propertyName 更新属性名 + * @param propertyValue 更新属性值 + * @param valWithSimple 是否简单赋值 + * true为正常eg: price = :price + * false为自身添加eg: price = price + :price + * @return + */ + private int updateByPropertiesMain(String[] conditionName, Object[] conditionValue, + String[] propertyName, Object[] propertyValue,boolean valWithSimple) { if ((propertyName != null) && (propertyName.length > 0) && (propertyValue != null) && (propertyValue.length > 0) && (propertyName.length == propertyValue.length) && (conditionValue != null) && (conditionValue.length > 0)) { @@ -203,7 +236,11 @@ public class BaseRepositoryImpl extends SimpleJpaRep sb.append("update " + persistentClass.getName() + " model set "); for (int i = 0; i < propertyName.length; i++) { - sb.append(propertyName[i] + " = :p_" + propertyName[i] + ","); + if(valWithSimple) { + sb.append(propertyName[i] + " = :p_" + propertyName[i] + ","); + }else{ + sb.append(propertyName[i] + " = " + propertyName[i] + " + :p_" + propertyName[i] + ","); + } } sb.deleteCharAt(sb.length() - 1); @@ -229,13 +266,32 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public int updateByProperties(String[] propertyName, Object[] propertyValue,DdlPackBean packBean) { + return updateByPropertiesDdlPack(propertyName, propertyValue,packBean,true); + } + + @Override + public int updateByPropertiesWithVal(String propertyName, Object propertyValue,DdlPackBean packBean) { + return updateByPropertiesWithVal(new String[] { propertyName }, new Object[] { propertyValue },packBean); + } + + @Override + public int updateByPropertiesWithVal(String[] propertyName, Object[] propertyValue,DdlPackBean packBean) { + return updateByPropertiesDdlPack(propertyName, propertyValue,packBean,false); + } + + private int updateByPropertiesDdlPack(String[] propertyName, Object[] propertyValue, + DdlPackBean packBean,boolean valWithSimple) { if ((propertyName != null) && (propertyName.length > 0) && (propertyValue != null) && (propertyValue.length > 0) && (propertyName.length == propertyValue.length)) { StringBuffer sb = new StringBuffer(); sb.append("update " + persistentClass.getName() + " model set "); for (int i = 0; i < propertyName.length; i++) { - sb.append(propertyName[i] + " = :p_" + propertyName[i] + ","); + if(valWithSimple) { + sb.append(propertyName[i] + " = :p_" + propertyName[i] + ","); + }else{ + sb.append(propertyName[i] + " = " + propertyName[i] + " + :p_" + propertyName[i] + ","); + } } sb.deleteCharAt(sb.length() - 1); sb.append(" where 1=1 " + packBean.getWhereAppend()); @@ -297,7 +353,9 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public List list() { - return this.findAll(); + List l = this.findAll(); + this.flush(); + return l; } @Override @@ -1349,7 +1407,11 @@ public class BaseRepositoryImpl extends SimpleJpaRep if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { StringBuffer sb = new StringBuffer("select sum(model." + sumPropertyName + ") from " + persistentClass.getName() + " model where 1=1 "); appendQL(sb, paramName, paramValue); - sb.append(" group by model." + groupByName); + + if(StringUtils.isNotBlank(groupByName)) { + sb.append(" group by model." + groupByName); + } + Query query = entityManager.createQuery(sb.toString()); setParameter(query,paramName,paramValue); @@ -1374,7 +1436,10 @@ public class BaseRepositoryImpl extends SimpleJpaRep if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { StringBuffer sb = new StringBuffer("select avg(model."+sumPropertyName+") from " + persistentClass.getName() + " model where 1=1 "); appendQL(sb,paramName,paramValue); - sb.append(" group by model." + groupByName); + + if(StringUtils.isNotBlank(groupByName)) { + sb.append(" group by model." + groupByName); + } Query query = entityManager.createQuery(sb.toString()); setParameter(query,paramName,paramValue); @@ -1400,7 +1465,7 @@ public class BaseRepositoryImpl extends SimpleJpaRep if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { StringBuffer sb = new StringBuffer("select max(model." + sumPropertyName + ") from " + persistentClass.getName() + " model where 1=1 "); appendQL(sb, paramName, paramValue); - if(!StringUtils.isEmpty(groupByName)){ + if(StringUtils.isNotBlank(groupByName)){ sb.append(" group by model." + groupByName); } @@ -1428,7 +1493,10 @@ public class BaseRepositoryImpl extends SimpleJpaRep if ((paramName != null) && (paramName.length > 0) && (paramValue != null) && (paramValue.length > 0)) { StringBuffer sb = new StringBuffer("select min(model." + sumPropertyName + ") from " + persistentClass.getName() + " model where 1=1 "); appendQL(sb, paramName, paramValue); - sb.append(" group by model." + groupByName); + + if(StringUtils.isNotBlank(groupByName)) { + sb.append(" group by model." + groupByName); + } Query query = entityManager.createQuery(sb.toString()); setParameter(query,paramName,paramValue); diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/TestTransUser.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/TestTransUser.java new file mode 100644 index 0000000..7f5be42 --- /dev/null +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/bean/TestTransUser.java @@ -0,0 +1,46 @@ +package cn.estsh.i3plus.pojo.platform.bean; + +import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Version; + +/** + * @Description : 测试类,用来测试事务 + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2019-05-14 12:51 + * @Modify: + **/ +@Data +@Entity +@DynamicInsert +@DynamicUpdate +@EqualsAndHashCode(callSuper = true) +@Table(name="TEST_TRANS_USER") +@Api(value="测试用户类",description = "测试事务信息") +public class TestTransUser extends BaseBean { + + @Column(name="NAME") + @ApiParam(value ="名称" , access ="名称") + private String name; + + @Column(name="SALARY") + @ApiParam(value ="金额" , access ="金额") + private Double salary; + + /*@Version + @ApiParam(value ="版本控制" , access ="乐观锁") + private int version;*/ +} diff --git a/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/repository/TestTransUserRepository.java b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/repository/TestTransUserRepository.java new file mode 100644 index 0000000..2221006 --- /dev/null +++ b/modules/i3plus-pojo-platform/src/main/java/cn/estsh/i3plus/pojo/platform/repository/TestTransUserRepository.java @@ -0,0 +1,15 @@ +package cn.estsh.i3plus.pojo.platform.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; +import cn.estsh.i3plus.pojo.platform.bean.TestTransUser; + +/** + * @Description : 测试事务用户 + * @Reference : + * @Author : frin + * @Date : 2019-5-14 + * @Modify : + **/ +public interface TestTransUserRepository extends BaseRepository { +}