From 2c50201ca0237f3b0a2cd1447006c60375528d96 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 17 Jun 2021 16:52:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E5=85=B8=E7=BB=84=E4=B8=8E=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E5=80=BC=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bean/constant/OptGroupStatus.java | 48 +++ .../controller/bean/models/SysOptitem.java | 76 ++++- .../bean/models/SysOptitemExample.java | 186 +++++++++-- .../controller/dao/SysOptgroupMapper.java | 10 +- .../controller/dao/SysOptitemMapper.java | 47 +-- .../ops/convert/ConvertValueMyBatis.java | 49 +++ .../ops/pages/cas/OptionItemManager.java | 266 +++++++++++++++ .../primary/sqlmap/SysOptitemMapper.xml | 52 ++- .../ops/pages/cas/OptionItemManager.tml | 302 ++++++++++++++++++ 9 files changed, 959 insertions(+), 77 deletions(-) create mode 100644 src/main/java/net/wicp/tams/app/duckula/controller/bean/constant/OptGroupStatus.java create mode 100644 src/main/java/net/wicp/tams/duckula/ops/convert/ConvertValueMyBatis.java create mode 100644 src/main/java/net/wicp/tams/duckula/ops/pages/cas/OptionItemManager.java create mode 100644 src/main/resources/net/wicp/tams/duckula/ops/pages/cas/OptionItemManager.tml diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/bean/constant/OptGroupStatus.java b/src/main/java/net/wicp/tams/app/duckula/controller/bean/constant/OptGroupStatus.java new file mode 100644 index 0000000..d8306ba --- /dev/null +++ b/src/main/java/net/wicp/tams/app/duckula/controller/bean/constant/OptGroupStatus.java @@ -0,0 +1,48 @@ +package net.wicp.tams.app.duckula.controller.bean.constant; + +import org.apache.commons.lang3.StringUtils; + +import net.wicp.tams.common.constant.dic.intf.IEnumCombobox; + +public enum OptGroupStatus implements IEnumCombobox { + + DEL("已删除"), MOV("已移动"), UNUSE("未启用"); + private final String desc; + + private OptGroupStatus(String desc) { + this.desc = desc; + } + + @Override + public String getDesc() { + return this.desc; + } + + @Override + public String getDesc_en() { + return this.desc; + } + + @Override + public String getDesc_zh() { + return this.desc; + } + + @Override + public String getName() { + return this.name(); + } + + public static OptGroupStatus find(String name) { + if (StringUtils.isEmpty(name)) { + return null; + } + for (OptGroupStatus ele : OptGroupStatus.values()) { + if (name.equalsIgnoreCase(ele.name())) { + return ele; + } + } + return null; + } + +} diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitem.java b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitem.java index 6e149c3..e00f61f 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitem.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitem.java @@ -24,6 +24,11 @@ public class SysOptitem { * @mbg.generated */ private Long parentId; + /** + * Database Column Remarks: 在对应的组被移动时临时保存 This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.parent_id_old + * @mbg.generated + */ + private Long parentIdOld; /** * This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.group_code * @mbg.generated @@ -70,10 +75,15 @@ public class SysOptitem { */ private String remark; /** - * This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.isValid + * This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.status * @mbg.generated */ - private String isvalid; + private String status; + /** + * This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.status_parent + * @mbg.generated + */ + private String statusParent; /** * This field was generated by MyBatis Generator. This field corresponds to the database column sys_optitem.create_time * @mbg.generated @@ -84,12 +94,13 @@ public class SysOptitem { * This method was generated by MyBatis Generator. This method corresponds to the database table sys_optitem * @mbg.generated */ - public SysOptitem(Long id, String itemCode, Long parentId, String groupCode, String nameZh, String nameEn, - Integer orderNo, String field1, String field2, String field3, String field4, String remark, String isvalid, - Date createTime) { + public SysOptitem(Long id, String itemCode, Long parentId, Long parentIdOld, String groupCode, String nameZh, + String nameEn, Integer orderNo, String field1, String field2, String field3, String field4, String remark, + String status, String statusParent, Date createTime) { this.id = id; this.itemCode = itemCode; this.parentId = parentId; + this.parentIdOld = parentIdOld; this.groupCode = groupCode; this.nameZh = nameZh; this.nameEn = nameEn; @@ -99,7 +110,8 @@ public class SysOptitem { this.field3 = field3; this.field4 = field4; this.remark = remark; - this.isvalid = isvalid; + this.status = status; + this.statusParent = statusParent; this.createTime = createTime; } @@ -165,6 +177,24 @@ public class SysOptitem { this.parentId = parentId; } + /** + * This method was generated by MyBatis Generator. This method returns the value of the database column sys_optitem.parent_id_old + * @return the value of sys_optitem.parent_id_old + * @mbg.generated + */ + public Long getParentIdOld() { + return parentIdOld; + } + + /** + * This method was generated by MyBatis Generator. This method sets the value of the database column sys_optitem.parent_id_old + * @param parentIdOld the value for sys_optitem.parent_id_old + * @mbg.generated + */ + public void setParentIdOld(Long parentIdOld) { + this.parentIdOld = parentIdOld; + } + /** * This method was generated by MyBatis Generator. This method returns the value of the database column sys_optitem.group_code * @return the value of sys_optitem.group_code @@ -328,21 +358,39 @@ public class SysOptitem { } /** - * This method was generated by MyBatis Generator. This method returns the value of the database column sys_optitem.isValid - * @return the value of sys_optitem.isValid + * This method was generated by MyBatis Generator. This method returns the value of the database column sys_optitem.status + * @return the value of sys_optitem.status + * @mbg.generated + */ + public String getStatus() { + return status; + } + + /** + * This method was generated by MyBatis Generator. This method sets the value of the database column sys_optitem.status + * @param status the value for sys_optitem.status + * @mbg.generated + */ + public void setStatus(String status) { + this.status = status; + } + + /** + * This method was generated by MyBatis Generator. This method returns the value of the database column sys_optitem.status_parent + * @return the value of sys_optitem.status_parent * @mbg.generated */ - public String getIsvalid() { - return isvalid; + public String getStatusParent() { + return statusParent; } /** - * This method was generated by MyBatis Generator. This method sets the value of the database column sys_optitem.isValid - * @param isvalid the value for sys_optitem.isValid + * This method was generated by MyBatis Generator. This method sets the value of the database column sys_optitem.status_parent + * @param statusParent the value for sys_optitem.status_parent * @mbg.generated */ - public void setIsvalid(String isvalid) { - this.isvalid = isvalid; + public void setStatusParent(String statusParent) { + this.statusParent = statusParent; } /** diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitemExample.java b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitemExample.java index 2ac0c5e..bc25658 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitemExample.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/bean/models/SysOptitemExample.java @@ -353,6 +353,66 @@ public class SysOptitemExample { return (Criteria) this; } + public Criteria andParentIdOldIsNull() { + addCriterion("parent_id_old is null"); + return (Criteria) this; + } + + public Criteria andParentIdOldIsNotNull() { + addCriterion("parent_id_old is not null"); + return (Criteria) this; + } + + public Criteria andParentIdOldEqualTo(Long value) { + addCriterion("parent_id_old =", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldNotEqualTo(Long value) { + addCriterion("parent_id_old <>", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldGreaterThan(Long value) { + addCriterion("parent_id_old >", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldGreaterThanOrEqualTo(Long value) { + addCriterion("parent_id_old >=", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldLessThan(Long value) { + addCriterion("parent_id_old <", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldLessThanOrEqualTo(Long value) { + addCriterion("parent_id_old <=", value, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldIn(List values) { + addCriterion("parent_id_old in", values, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldNotIn(List values) { + addCriterion("parent_id_old not in", values, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldBetween(Long value1, Long value2) { + addCriterion("parent_id_old between", value1, value2, "parentIdOld"); + return (Criteria) this; + } + + public Criteria andParentIdOldNotBetween(Long value1, Long value2) { + addCriterion("parent_id_old not between", value1, value2, "parentIdOld"); + return (Criteria) this; + } + public Criteria andGroupCodeIsNull() { addCriterion("group_code is null"); return (Criteria) this; @@ -973,73 +1033,143 @@ public class SysOptitemExample { return (Criteria) this; } - public Criteria andIsvalidIsNull() { - addCriterion("isValid is null"); + public Criteria andStatusIsNull() { + addCriterion("status is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("status is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(String value) { + addCriterion("status =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(String value) { + addCriterion("status <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(String value) { + addCriterion("status >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(String value) { + addCriterion("status >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(String value) { + addCriterion("status <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(String value) { + addCriterion("status <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLike(String value) { + addCriterion("status like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotLike(String value) { + addCriterion("status not like", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("status in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("status not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(String value1, String value2) { + addCriterion("status between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(String value1, String value2) { + addCriterion("status not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusParentIsNull() { + addCriterion("status_parent is null"); return (Criteria) this; } - public Criteria andIsvalidIsNotNull() { - addCriterion("isValid is not null"); + public Criteria andStatusParentIsNotNull() { + addCriterion("status_parent is not null"); return (Criteria) this; } - public Criteria andIsvalidEqualTo(String value) { - addCriterion("isValid =", value, "isvalid"); + public Criteria andStatusParentEqualTo(String value) { + addCriterion("status_parent =", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidNotEqualTo(String value) { - addCriterion("isValid <>", value, "isvalid"); + public Criteria andStatusParentNotEqualTo(String value) { + addCriterion("status_parent <>", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidGreaterThan(String value) { - addCriterion("isValid >", value, "isvalid"); + public Criteria andStatusParentGreaterThan(String value) { + addCriterion("status_parent >", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidGreaterThanOrEqualTo(String value) { - addCriterion("isValid >=", value, "isvalid"); + public Criteria andStatusParentGreaterThanOrEqualTo(String value) { + addCriterion("status_parent >=", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidLessThan(String value) { - addCriterion("isValid <", value, "isvalid"); + public Criteria andStatusParentLessThan(String value) { + addCriterion("status_parent <", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidLessThanOrEqualTo(String value) { - addCriterion("isValid <=", value, "isvalid"); + public Criteria andStatusParentLessThanOrEqualTo(String value) { + addCriterion("status_parent <=", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidLike(String value) { - addCriterion("isValid like", value, "isvalid"); + public Criteria andStatusParentLike(String value) { + addCriterion("status_parent like", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidNotLike(String value) { - addCriterion("isValid not like", value, "isvalid"); + public Criteria andStatusParentNotLike(String value) { + addCriterion("status_parent not like", value, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidIn(List values) { - addCriterion("isValid in", values, "isvalid"); + public Criteria andStatusParentIn(List values) { + addCriterion("status_parent in", values, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidNotIn(List values) { - addCriterion("isValid not in", values, "isvalid"); + public Criteria andStatusParentNotIn(List values) { + addCriterion("status_parent not in", values, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidBetween(String value1, String value2) { - addCriterion("isValid between", value1, value2, "isvalid"); + public Criteria andStatusParentBetween(String value1, String value2) { + addCriterion("status_parent between", value1, value2, "statusParent"); return (Criteria) this; } - public Criteria andIsvalidNotBetween(String value1, String value2) { - addCriterion("isValid not between", value1, value2, "isvalid"); + public Criteria andStatusParentNotBetween(String value1, String value2) { + addCriterion("status_parent not between", value1, value2, "statusParent"); return (Criteria) this; } diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptgroupMapper.java b/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptgroupMapper.java index 2af8aa3..c5ba9cd 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptgroupMapper.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptgroupMapper.java @@ -1,8 +1,7 @@ package net.wicp.tams.app.duckula.controller.dao; import java.util.List; -import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroup; -import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroupExample; + import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; @@ -10,7 +9,12 @@ import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; -public interface SysOptgroupMapper { +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroup; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroupExample; + +public interface SysOptgroupMapper extends BaseMapper { /** * This method was generated by MyBatis Generator. This method corresponds to the database table sys_optgroup diff --git a/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptitemMapper.java b/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptitemMapper.java index b3d9547..5950089 100644 --- a/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptitemMapper.java +++ b/src/main/java/net/wicp/tams/app/duckula/controller/dao/SysOptitemMapper.java @@ -1,8 +1,7 @@ package net.wicp.tams.app.duckula.controller.dao; import java.util.List; -import net.wicp.tams.app.duckula.controller.bean.models.SysOptitem; -import net.wicp.tams.app.duckula.controller.bean.models.SysOptitemExample; + import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; @@ -10,7 +9,12 @@ import org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; -public interface SysOptitemMapper { +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import net.wicp.tams.app.duckula.controller.bean.models.SysOptitem; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptitemExample; + +public interface SysOptitemMapper extends BaseMapper { /** * This method was generated by MyBatis Generator. This method corresponds to the database table sys_optitem @@ -35,15 +39,16 @@ public interface SysOptitemMapper { * This method was generated by MyBatis Generator. This method corresponds to the database table sys_optitem * @mbg.generated */ - @Insert({ "insert into sys_optitem (id, item_code, ", "parent_id, group_code, ", "name_zh, name_en, ", - "order_no, field1, ", "field2, field3, ", "field4, remark, ", "isValid, create_time)", - "values (#{id,jdbcType=BIGINT}, #{itemCode,jdbcType=VARCHAR}, ", - "#{parentId,jdbcType=BIGINT}, #{groupCode,jdbcType=VARCHAR}, ", - "#{nameZh,jdbcType=VARCHAR}, #{nameEn,jdbcType=VARCHAR}, ", - "#{orderNo,jdbcType=INTEGER}, #{field1,jdbcType=VARCHAR}, ", - "#{field2,jdbcType=VARCHAR}, #{field3,jdbcType=VARCHAR}, ", - "#{field4,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}, ", - "#{isvalid,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP})" }) + @Insert({ "insert into sys_optitem (id, item_code, ", "parent_id, parent_id_old, ", "group_code, name_zh, ", + "name_en, order_no, ", "field1, field2, ", "field3, field4, ", "remark, status, ", + "status_parent, create_time)", "values (#{id,jdbcType=BIGINT}, #{itemCode,jdbcType=VARCHAR}, ", + "#{parentId,jdbcType=BIGINT}, #{parentIdOld,jdbcType=BIGINT}, ", + "#{groupCode,jdbcType=VARCHAR}, #{nameZh,jdbcType=VARCHAR}, ", + "#{nameEn,jdbcType=VARCHAR}, #{orderNo,jdbcType=INTEGER}, ", + "#{field1,jdbcType=VARCHAR}, #{field2,jdbcType=VARCHAR}, ", + "#{field3,jdbcType=VARCHAR}, #{field4,jdbcType=VARCHAR}, ", + "#{remark,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, ", + "#{statusParent,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP})" }) int insert(SysOptitem record); /** @@ -62,8 +67,9 @@ public interface SysOptitemMapper { * This method was generated by MyBatis Generator. This method corresponds to the database table sys_optitem * @mbg.generated */ - @Select({ "select", "id, item_code, parent_id, group_code, name_zh, name_en, order_no, field1, field2, ", - "field3, field4, remark, isValid, create_time", "from sys_optitem", "where id = #{id,jdbcType=BIGINT}" }) + @Select({ "select", "id, item_code, parent_id, parent_id_old, group_code, name_zh, name_en, order_no, ", + "field1, field2, field3, field4, remark, status, status_parent, create_time", "from sys_optitem", + "where id = #{id,jdbcType=BIGINT}" }) @ResultMap("net.wicp.tams.app.duckula.controller.dao.SysOptitemMapper.BaseResultMap") SysOptitem selectByPrimaryKey(Long id); @@ -90,12 +96,13 @@ public interface SysOptitemMapper { * @mbg.generated */ @Update({ "update sys_optitem", "set item_code = #{itemCode,jdbcType=VARCHAR},", - "parent_id = #{parentId,jdbcType=BIGINT},", "group_code = #{groupCode,jdbcType=VARCHAR},", - "name_zh = #{nameZh,jdbcType=VARCHAR},", "name_en = #{nameEn,jdbcType=VARCHAR},", - "order_no = #{orderNo,jdbcType=INTEGER},", "field1 = #{field1,jdbcType=VARCHAR},", - "field2 = #{field2,jdbcType=VARCHAR},", "field3 = #{field3,jdbcType=VARCHAR},", - "field4 = #{field4,jdbcType=VARCHAR},", "remark = #{remark,jdbcType=VARCHAR},", - "isValid = #{isvalid,jdbcType=VARCHAR},", "create_time = #{createTime,jdbcType=TIMESTAMP}", + "parent_id = #{parentId,jdbcType=BIGINT},", "parent_id_old = #{parentIdOld,jdbcType=BIGINT},", + "group_code = #{groupCode,jdbcType=VARCHAR},", "name_zh = #{nameZh,jdbcType=VARCHAR},", + "name_en = #{nameEn,jdbcType=VARCHAR},", "order_no = #{orderNo,jdbcType=INTEGER},", + "field1 = #{field1,jdbcType=VARCHAR},", "field2 = #{field2,jdbcType=VARCHAR},", + "field3 = #{field3,jdbcType=VARCHAR},", "field4 = #{field4,jdbcType=VARCHAR},", + "remark = #{remark,jdbcType=VARCHAR},", "status = #{status,jdbcType=VARCHAR},", + "status_parent = #{statusParent,jdbcType=VARCHAR},", "create_time = #{createTime,jdbcType=TIMESTAMP}", "where id = #{id,jdbcType=BIGINT}" }) int updateByPrimaryKey(SysOptitem record); } \ No newline at end of file diff --git a/src/main/java/net/wicp/tams/duckula/ops/convert/ConvertValueMyBatis.java b/src/main/java/net/wicp/tams/duckula/ops/convert/ConvertValueMyBatis.java new file mode 100644 index 0000000..d14acf9 --- /dev/null +++ b/src/main/java/net/wicp/tams/duckula/ops/convert/ConvertValueMyBatis.java @@ -0,0 +1,49 @@ +package net.wicp.tams.duckula.ops.convert; + +import java.io.Serializable; + +import org.apache.commons.beanutils.PropertyUtils; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import lombok.extern.slf4j.Slf4j; +import net.wicp.tams.common.apiext.StringUtil; +import net.wicp.tams.common.callback.IConvertValue; + +/*** + * 从数据库拿到解释(先只支持mysql),只支持主键为一个字段 + * + * @author Administrator + * + */ +@Slf4j +public class ConvertValueMyBatis implements IConvertValue { + private final BaseMapper baseMapper; + private final String retColNames; + + public ConvertValueMyBatis(BaseMapper baseMapper, String retColNames) { + this.baseMapper = baseMapper; + this.retColNames = retColNames; + } + + @Override + public String getStr(Serializable keyObj) { + if (StringUtil.isNull(keyObj)) { + return ""; + } + Object selectObj = this.baseMapper.selectById(keyObj); + if (selectObj == null) { + return ""; + } + try { + StringBuffer buff = new StringBuffer(); + for (String retColName : retColNames.split(",")) { + buff.append("^" + PropertyUtils.getProperty(selectObj, retColName)); + } + return buff.substring(1); + } catch (Exception e) { + log.error("错误取字段", e); + } + return ""; + } +} diff --git a/src/main/java/net/wicp/tams/duckula/ops/pages/cas/OptionItemManager.java b/src/main/java/net/wicp/tams/duckula/ops/pages/cas/OptionItemManager.java new file mode 100644 index 0000000..b83ec7a --- /dev/null +++ b/src/main/java/net/wicp/tams/duckula/ops/pages/cas/OptionItemManager.java @@ -0,0 +1,266 @@ +package net.wicp.tams.duckula.ops.pages.cas; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.apache.tapestry5.annotations.Import; +import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.annotations.SetupRender; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.apache.tapestry5.json.JSONObject; +import org.apache.tapestry5.util.TextStreamResponse; +import org.springframework.dao.DuplicateKeyException; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import lombok.extern.slf4j.Slf4j; +import net.wicp.tams.app.duckula.controller.bean.constant.OptGroupStatus; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroup; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptgroupExample; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptitem; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptitemExample; +import net.wicp.tams.app.duckula.controller.bean.models.SysOptitemExample.Criteria; +import net.wicp.tams.app.duckula.controller.dao.SysOptgroupMapper; +import net.wicp.tams.app.duckula.controller.dao.SysOptitemMapper; +import net.wicp.tams.cas.convert.ConvertValueOpt; +import net.wicp.tams.common.Result; +import net.wicp.tams.common.apiext.CollectionUtil; +import net.wicp.tams.common.apiext.StringUtil; +import net.wicp.tams.common.apiext.json.EasyUiAssist; +import net.wicp.tams.common.apiext.json.JSONUtil; +import net.wicp.tams.common.apiext.json.easyuibean.EasyUINode; +import net.wicp.tams.common.apiext.json.easyuibean.EasyUINodeConf; +import net.wicp.tams.common.callback.IConvertValue; +import net.wicp.tams.common.callback.impl.convertvalue.ConvertValueEnum; +import net.wicp.tams.common.constant.dic.YesOrNo; +import net.wicp.tams.component.tools.TapestryAssist; +import net.wicp.tams.duckula.ops.convert.ConvertValueMyBatis; +import net.wicp.tams.duckula.ops.pages.ParentPage; +import net.wicp.tams.duckula.ops.pages.ParentPageBean; +import redis.clients.jedis.Jedis; + +@Import(library = { "${path.jquery.plugin}/aop.min.js" }) +@SuppressWarnings("all") +@Slf4j +public class OptionItemManager extends ParentPageBean { + + @Inject + private SysOptitemMapper sysOptitemMapper; + @Inject + private SysOptgroupMapper sysOptgroupMapper; + + @Override + public void packageQuery(SysOptitem t, QueryWrapper queryWrapper) { + if (StringUtils.isNotBlank(t.getItemCode())) { + queryWrapper.eq("item_code", t.getItemCode()); + } + String itemName = request.getParameter("itemName"); + if (StringUtils.isNotBlank(itemName)) { + String lan = supportedLocales.getCurLocale().getLanguage().substring(0, 1).toUpperCase() + + supportedLocales.getCurLocale().getLanguage().substring(1); + if ("en".equals(lan)) { + queryWrapper.eq("name_en", itemName); + } else { + queryWrapper.eq("name_zh", itemName); + } + } + if (StringUtils.isNotBlank(t.getGroupCode())) { + queryWrapper.eq("group_code", t.getGroupCode()); + } + if (t.getParentId() != null) { + queryWrapper.eq("parent_id", t.getParentId()); + } + if (StringUtils.isNotBlank(t.getStatus())) { + queryWrapper.eq("status", t.getStatus()); + } + } + + @Override + protected Pair> packageConvert() { + String[] cols = new String[] { "status,status1", "groupCode,group1", getColLan("name"), + "parentId,parentId1"}; + Map conv = new HashMap(); + conv.put("status1", new ConvertValueEnum(YesOrNo.class)); + conv.put("group1", new ConvertValueMyBatis(sysOptgroupMapper,"remark")); + conv.put("parentId1", new ConvertValueMyBatis(sysOptitemMapper,"nameZh")); + return Pair.of(cols, conv); + } + + @Override + public void doSave(SysOptitem t, boolean isInsert) { + if (isInsert) { + t.setCreateTime(new Date()); + sysOptitemMapper.insert(t); + } else { + //保留没有放到界面的信息 + SysOptitem oriObj = sysOptitemMapper.selectByPrimaryKey(t.getId()); + t.setCreateTime(oriObj.getCreateTime()); + sysOptitemMapper.updateByPrimaryKey(t); + } + } + + + + public TextStreamResponse onSaveGroup() { + SysOptgroup group = TapestryAssist.getBeanFromPage(SysOptgroup.class, request); + String isInsert = request.getParameter("isInsert"); + try { + if("yes".equals(isInsert)) { + sysOptgroupMapper.insert(group); + }else { + sysOptgroupMapper.updateByPrimaryKey(group); + updateItemParentStatus(group.getId(),YesOrNo.yes); + } + }catch (DuplicateKeyException e) { + return TapestryAssist.getTextStreamResponse(Result.getError("选项组编码重复,有可能这个编码被设置为废弃")); + } + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + } + + @SetupRender + void init() { + + } + + public TextStreamResponse onGroupTree() { + List groups = sysOptgroupMapper.selectByExample(new SysOptgroupExample()); + EasyUINodeConf conf = new EasyUINodeConf("id", "remark", "parentId"); + conf.setAttrCols("isEdit", "isValid"); + List roots = new ArrayList<>(); + try { + roots = EasyUiAssist.getTreeRoot(groups, conf); + } catch (Exception e) { + } + return TapestryAssist.getTextStreamResponse(EasyUiAssist.getTreeFromList(roots)); + } + + public TextStreamResponse onDelGroup() { + String groupId = request.getParameter("groupId"); + QueryWrapper queryWrapper=new QueryWrapper(); + queryWrapper.eq("parent_id", groupId); + Integer count = sysOptgroupMapper.selectCount(queryWrapper); + if(count>0) { + return TapestryAssist.getTextStreamResponse(Result.getError("此组下面有子组,不允许删除。")); + } + SysOptgroup group = new SysOptgroup(); + group.setIsValid(YesOrNo.no.name()); + group.setId(groupId); + sysOptgroupMapper.updateByPrimaryKeySelective(group); + + updateItemParentStatus(groupId,YesOrNo.no); + + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + } + + private void updateItemParentStatus(String groupId,YesOrNo status) { + //删除item相关 + SysOptitemExample sysOptitemExample=new SysOptitemExample(); + Criteria criteria = sysOptitemExample.createCriteria(); + criteria.andGroupCodeEqualTo(groupId); + SysOptitem record=new SysOptitem(); + record.setStatusParent(status.name()); + sysOptitemMapper.updateByExampleSelective(record, sysOptitemExample); + } + + /*** + * 移动组要做的动作: 1、修改组缓存、旧parentIdOld的optionsubs删除选项、optionitem重新put 2、修改组父信息 + * 3、把组下所有的opt字段设置为: parentId='',parentIdOld=parentId,parentStatus='MOV' 、 + * + * @return + */ + public TextStreamResponse onDragGroup() { + String sourceId = request.getParameter("sourceId"); + String targetId = request.getParameter("targetId"); + // 1、修改组缓存、旧parentIdOld的optionsubs删除选项、optionitem重新put + SysOptgroup optGroup = sysOptgroupMapper.selectByPrimaryKey(sourceId); + optGroup.setParentId(targetId); + sysOptgroupMapper.updateByPrimaryKey(optGroup);// 2、修改组父信息 + List alllist = sysOptitemMapper + .selectByMap(CollectionUtil.newMap("group_code", sourceId)); + for (SysOptitem optionitem : alllist) { + SysOptitem newobj =null; + try { + newobj = (SysOptitem) BeanUtils.cloneBean(optionitem); + newobj.setParentId(null); + } catch (Exception e) { + log.error("移动时修改对应item错误",e); + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + } + + if(optionitem.getParentId()==null) {//一种是曾经有parent但被移除了,另一种是从来就没有parent + if(optionitem.getParentIdOld()!=null) {//曾经有parent但被移除了 + SysOptitem parentOld = sysOptitemMapper.selectByPrimaryKey(optionitem.getParentIdOld()); + if(parentOld.getGroupCode().equals(targetId)) {//刚好移到之前的group下,恢复 + newobj.setParentId(optionitem.getParentIdOld()); + newobj.setParentIdOld(null); + } + } + }else {//防止两次移动冲掉此项,parent不为空,设置为ParentIdOld为parent的值 + newobj.setParentId(null); + newobj.setParentIdOld(optionitem.getParentId()); + } + sysOptitemMapper.updateByPrimaryKey(newobj); + } + return TapestryAssist.getTextStreamResponse(Result.getSuc()); + } + + public TextStreamResponse onQueryGroup() { + List groups = sysOptgroupMapper.selectByExample(new SysOptgroupExample()); + + EasyUINodeConf conf = new EasyUINodeConf("id", "remark", "parentId"); + conf.setFieldCols("isEdit", "isValid"); + String str =""; + try { + List treeRoot = EasyUiAssist.getTreeRoot(groups, conf); + str = EasyUiAssist.getTreeFromList(treeRoot); + } catch (Exception e) { + log.error("组装选项组树失败"); + } + return TapestryAssist.getTextStreamResponse(str); + } + + public TextStreamResponse onQueryParentGroup() { + String groupid = request.getParameter("parent"); + List optlist=new ArrayList(); + if(StringUtil.isNotNull(groupid)) { + SysOptgroup group = sysOptgroupMapper.selectById(groupid); + if(StringUtil.isNotNull(group.getParentId())) { + optlist = sysOptitemMapper.selectByMap(CollectionUtil.newMap("group_code",group.getParentId())); + } + } + Map> conv = new HashMap>(); + conv.put("status1", new ConvertValueEnum(YesOrNo.class)); + // conv.put("group1", new ConvertValueOpt(supportedLocales)); + String str = JSONUtil.getJsonForListAlias(optlist,new String[] { "status,status1", "groupCode,group1" }, + conv); + return TapestryAssist.getTextStreamResponse(str); + } + + + + + + + + @Override + public void doDel(String id) { + + } + + @Override + public BaseMapper getBaseMapper() { + return this.sysOptitemMapper; + } + +} diff --git a/src/main/resources/mybatis/primary/sqlmap/SysOptitemMapper.xml b/src/main/resources/mybatis/primary/sqlmap/SysOptitemMapper.xml index a2b4e6c..05720eb 100644 --- a/src/main/resources/mybatis/primary/sqlmap/SysOptitemMapper.xml +++ b/src/main/resources/mybatis/primary/sqlmap/SysOptitemMapper.xml @@ -10,6 +10,7 @@ + @@ -19,7 +20,8 @@ - + + @@ -94,8 +96,8 @@ WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. --> - id, item_code, parent_id, group_code, name_zh, name_en, order_no, field1, field2, - field3, field4, remark, isValid, create_time + id, item_code, parent_id, parent_id_old, group_code, name_zh, name_en, order_no, + field1, field2, field3, field4, remark, status, status_parent, create_time + + 选项组名称 + + + + + 是否可编辑 + + + + 是否启用 + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
选项编码选项名称 + 选项组 + + 是否可用
父选项 父可用 + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
选项编码 + 选项组 + +
中文名英文名 +
排序 + + 是否可用 +
+ +
域一域二
域三 + 域四
备注 +
+
+ +
+ + + + + + + + \ No newline at end of file -- GitLab