diff --git a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/Dict.java b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/Dict.java index 12deddd..7ba1323 100644 --- a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/Dict.java +++ b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/Dict.java @@ -78,5 +78,7 @@ public interface Dict extends IEnum { */ String getTxt(); - + default boolean equals(String val) { + return this.getVal().equals(val); + } } diff --git a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictKey.java b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictKey.java index bc57d59..fc1b61b 100644 --- a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictKey.java +++ b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictKey.java @@ -11,5 +11,7 @@ import static java.lang.annotation.ElementType.PARAMETER; @Target({FIELD, PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface DictKey { - String value(); + String value() default ""; + + Class ienum() default DictNone.class; } diff --git a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictNone.java b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictNone.java new file mode 100644 index 0000000..0e0a703 --- /dev/null +++ b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/ienum/DictNone.java @@ -0,0 +1,16 @@ +package com.njzscloud.common.core.ienum; + +public enum DictNone implements Dict { + NOME; + + + @Override + public Object getVal() { + return null; + } + + @Override + public String getTxt() { + return null; + } +} diff --git a/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictItemSerializer.java b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictItemSerializer.java new file mode 100644 index 0000000..66ecfbe --- /dev/null +++ b/njzscloud-common/njzscloud-common-core/src/main/java/com/njzscloud/common/core/jackson/serializer/DictItemSerializer.java @@ -0,0 +1,62 @@ +package com.njzscloud.common.core.jackson.serializer; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonStreamContext; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.ContextualSerializer; +import com.njzscloud.common.core.ienum.*; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Optional; + +@Slf4j +public class DictItemSerializer extends JsonSerializer implements ContextualSerializer { + + private String key; + private Class ienum; + + @Override + public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (StrUtil.isBlank(value)) { + gen.writeNull(); + } else { + JsonStreamContext ctx = gen.getOutputContext(); + gen.writeObject(value); + String currentName = ctx.getCurrentName(); + Dict dictItem; + if (StrUtil.isBlank(key)) { + Object[] enumConstants = ienum.getEnumConstants(); + Optional first = Arrays.stream(enumConstants).filter(it -> ((Dict) it).getVal().equals(value)).findFirst(); + dictItem = (Dict) first.orElse(DictNone.NOME); + } else { + dictItem = SpringUtil.getBean(DictManager.class).get(key, value); + } + gen.writeStringField(currentName + "Txt", dictItem.getTxt()); + gen.writeStringField(currentName + "Key", dictItem.getKey()); + } + } + + @Override + public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { + DictKey dictKey = property.getAnnotation(DictKey.class); + if (dictKey == null) { + return prov.findValueSerializer(String.class, property); + } + String value = dictKey.value(); + Class ienum = dictKey.ienum(); + if (StrUtil.isBlank(value) && (ienum == DictNone.class || Arrays.stream(ienum.getInterfaces()).anyMatch(it -> it != DictStr.class && it != DictInt.class))) { + return prov.findValueSerializer(String.class, property); + } + DictItemSerializer dictItemSerializer = new DictItemSerializer(); + dictItemSerializer.key = value; + dictItemSerializer.ienum = ienum; + return dictItemSerializer; + } +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/constant/SettlementWay.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/constant/SettlementWay.java index 5854e94..ce471ec 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/constant/SettlementWay.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/constant/SettlementWay.java @@ -23,4 +23,6 @@ public enum SettlementWay implements DictStr { private final String val; private final String txt; + + private final String key = "settlement_way"; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/controller/ExpenseItemController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/controller/ExpenseItemController.java index 7ed0ac6..76a1539 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/controller/ExpenseItemController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/controller/ExpenseItemController.java @@ -6,6 +6,7 @@ import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam; import com.njzscloud.dispose.finance.pojo.param.ModifyExpenseItemParam; +import com.njzscloud.dispose.finance.pojo.result.SearchExpenseItemResult; import com.njzscloud.dispose.finance.service.ExpenseItemService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -15,6 +16,7 @@ import java.util.List; /** * 收费项目 + * * @author ljw */ @Slf4j @@ -64,7 +66,7 @@ public class ExpenseItemController { * 分页查询 */ @GetMapping("/paging") - public R> paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) { + public R> paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) { return R.success(expenseItemService.paging(pageParam, expenseItemEntity)); } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/mapper/ExpenseItemMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/mapper/ExpenseItemMapper.java index 3f795c7..29ea87d 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/mapper/ExpenseItemMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/mapper/ExpenseItemMapper.java @@ -1,8 +1,13 @@ package com.njzscloud.dispose.finance.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; +import com.njzscloud.dispose.finance.pojo.result.SearchExpenseItemResult; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 收费项目 @@ -10,5 +15,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ExpenseItemMapper extends BaseMapper { + IPage paging(Page page, @Param("ew") QueryWrapper ew); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/pojo/result/SearchExpenseItemResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/pojo/result/SearchExpenseItemResult.java index e3d68ae..c74b7b7 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/pojo/result/SearchExpenseItemResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/pojo/result/SearchExpenseItemResult.java @@ -97,6 +97,7 @@ public class SearchExpenseItemResult { private String memo; private Long goodsId; + private String goodsName; private LocalDateTime createTime; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/service/ExpenseItemService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/service/ExpenseItemService.java index b700860..2a2b58e 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/service/ExpenseItemService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/finance/service/ExpenseItemService.java @@ -12,6 +12,7 @@ import com.njzscloud.dispose.finance.mapper.ExpenseItemMapper; import com.njzscloud.dispose.finance.pojo.entity.ExpenseItemEntity; import com.njzscloud.dispose.finance.pojo.param.AddExpenseItemParam; import com.njzscloud.dispose.finance.pojo.param.ModifyExpenseItemParam; +import com.njzscloud.dispose.finance.pojo.result.SearchExpenseItemResult; import com.njzscloud.dispose.sys.auth.pojo.result.IdentityInfo; import com.njzscloud.dispose.sys.auth.pojo.result.MyResult; import lombok.RequiredArgsConstructor; @@ -67,7 +68,7 @@ public class ExpenseItemService extends ServiceImpl paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) { + public PageResult paging(PageParam pageParam, ExpenseItemEntity expenseItemEntity) { String expenseItemName = expenseItemEntity.getExpenseItemName(); MyResult userDetail = SecurityUtil.loginUser(); List identities = userDetail.getIdentities(); @@ -75,9 +76,9 @@ public class ExpenseItemService extends ServiceImpllambdaQuery() - .like(StrUtil.isNotBlank(expenseItemName), ExpenseItemEntity::getExpenseItemName, expenseItemName) - .in(CollUtil.isNotEmpty(orgIds), ExpenseItemEntity::getOrgId, orgIds) + return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.query() + .like(StrUtil.isNotBlank(expenseItemName), "a.expense_item_name", expenseItemName) + .in(CollUtil.isNotEmpty(orgIds), "a.org_id", orgIds) )); } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/controller/WarehouseController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/controller/WarehouseController.java index c5e2991..721f10a 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/controller/WarehouseController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/controller/WarehouseController.java @@ -67,4 +67,9 @@ public class WarehouseController { public R> paging(PageParam pageParam, WarehouseEntity warehouseEntity) { return R.success(warehouseService.paging(pageParam, warehouseEntity)); } + + @GetMapping("/a") + public R a() { + return R.success(new WarehouseEntity()); + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/entity/WarehouseEntity.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/entity/WarehouseEntity.java index f73b086..7a91e54 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/entity/WarehouseEntity.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/entity/WarehouseEntity.java @@ -1,9 +1,9 @@ package com.njzscloud.dispose.wh.pojo.entity; import com.baomidou.mybatisplus.annotation.*; -import com.njzscloud.common.core.ienum.DictItem; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.njzscloud.common.core.ienum.DictKey; -import com.njzscloud.common.mp.support.handler.j.DictItemTypeHandler; +import com.njzscloud.common.core.jackson.serializer.DictItemSerializer; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -37,8 +37,8 @@ public class WarehouseEntity { * 仓库类型;raw_material-原料库,finished_product-成品库 */ @DictKey("warehouse_type") - @TableField(typeHandler = DictItemTypeHandler.class) - private DictItem type; + @JsonSerialize(using = DictItemSerializer.class) + private String type = "raw_material"; /** * 所属站点 Id diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/result/WarehouseResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/result/WarehouseResult.java index 1456502..4a203e0 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/result/WarehouseResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/pojo/result/WarehouseResult.java @@ -1,9 +1,8 @@ package com.njzscloud.dispose.wh.pojo.result; -import com.baomidou.mybatisplus.annotation.TableField; -import com.njzscloud.common.core.ienum.DictItem; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.njzscloud.common.core.ienum.DictKey; -import com.njzscloud.common.mp.support.handler.j.DictItemTypeHandler; +import com.njzscloud.common.core.jackson.serializer.DictItemSerializer; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -14,6 +13,7 @@ import java.time.LocalDateTime; /** * 仓库信息-结果类 + * * @author ljw */ @Getter @@ -36,8 +36,8 @@ public class WarehouseResult { * 仓库类型;raw_material-原料库,finished_product-成品库 */ @DictKey("warehouse_type") - @TableField(typeHandler = DictItemTypeHandler.class) - private DictItem type; + @JsonSerialize(using = DictItemSerializer.class) + private String type; /** * 所属站点 Id diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/service/WarehouseService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/service/WarehouseService.java index 5a10313..f9e6d2f 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/service/WarehouseService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/wh/service/WarehouseService.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.njzscloud.common.core.ienum.DictItem; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.dispose.wh.mapper.WarehouseMapper; @@ -67,12 +66,12 @@ public class WarehouseService extends ServiceImpl paging(PageParam pageParam, WarehouseEntity warehouseEntity) { String warehouseName = warehouseEntity.getWarehouseName(); Long stationId = warehouseEntity.getStationId(); - DictItem type = warehouseEntity.getType(); + String type = warehouseEntity.getType(); QueryWrapper ew = Wrappers.query() .eq("ww.deleted", 0) .like(StrUtil.isNotBlank(warehouseName), "ww.warehouse_name", warehouseName) .eq(stationId != null, "ww.station_id", stationId) - .eq(type != null, "ww.type", type); + .eq(StrUtil.isNotBlank(type), "ww.type", type); IPage page = baseMapper.paging(pageParam.toPage(), ew); return PageResult.of(page); diff --git a/njzscloud-svr/src/main/resources/mapper/finance/ExpenseItemMapper.xml b/njzscloud-svr/src/main/resources/mapper/finance/ExpenseItemMapper.xml new file mode 100644 index 0000000..4b995c4 --- /dev/null +++ b/njzscloud-svr/src/main/resources/mapper/finance/ExpenseItemMapper.xml @@ -0,0 +1,36 @@ + + + + + +