diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/FastjsonSortTypeHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/FastjsonSortTypeHandler.java new file mode 100644 index 0000000..b1d0d0b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/FastjsonSortTypeHandler.java @@ -0,0 +1,38 @@ +package org.nl.common.domain.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.parser.Feature; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.core.toolkit.Assert; +import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; + +@Slf4j +@MappedTypes({Object.class}) +@MappedJdbcTypes(JdbcType.VARCHAR) +public class FastjsonSortTypeHandler extends AbstractJsonTypeHandler { + private Class type; + + public FastjsonSortTypeHandler(Class type) { + if (log.isTraceEnabled()) { + log.trace("FastjsonSortTypeHandler(" + type + ")"); + } + Assert.notNull(type, "Type argument cannot be null"); + this.type = type; + } + + @Override + protected Object parse(String json) { + return JSON.parseObject(json, type, Feature.OrderedField); + } + + @Override + protected String toJson(Object obj) { + return JSON.toJSONString(obj,SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.SortField); + } +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/ListTypeHandler.java b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/ListTypeHandler.java new file mode 100644 index 0000000..495d6b1 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/common/domain/handler/ListTypeHandler.java @@ -0,0 +1,47 @@ +package org.nl.common.domain.handler; + +import com.alibaba.fastjson.JSONArray; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +/** + * Description: + * + * @author gongmanman + * @Date Create on 2020/3/19/0019 18:30 + * @since version1.0 Copyright 2020 CLKJ All Rights Reserved. + */ +public class ListTypeHandler extends BaseTypeHandler { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { + + } + + @Override + public Object getNullableResult(ResultSet rs, String columnName) throws SQLException { + return jsonTrans(rs.getString(columnName)); + } + + @Override + public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return jsonTrans(rs.getString(columnIndex)); + } + + @Override + public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return jsonTrans(cs.getString(columnIndex)); + } + + private Object jsonTrans(String s) { + if(s == null){ + return new ArrayList(); + } + return JSONArray.parseArray(s,String.class); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/controller/StStrategyConfigController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/controller/StStrategyConfigController.java new file mode 100644 index 0000000..43bb76d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/controller/StStrategyConfigController.java @@ -0,0 +1,80 @@ +package org.nl.wms.decision_manage.controller; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import cn.dev33.satoken.annotation.SaIgnore; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.utils.MapOf; +import org.nl.wms.decision_manage.service.IStStrategyConfigService; +import org.nl.wms.decision_manage.service.dao.StStrategyConfig; +import org.nl.wms.decision_manage.service.dto.StrategyQuery; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓储策略配置表 前端控制器 + *

+ * + * @author generator + * @since 2024-04-07 + */ +@RestController +@RequestMapping("/api/strategy") +public class StStrategyConfigController { + + @Autowired + private IStStrategyConfigService iStStrategyConfigService; + + @GetMapping + @Log("查询规则") + public ResponseEntity query(StrategyQuery query, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStStrategyConfigService.page(page.build(),query.build())), HttpStatus.OK); + } + @GetMapping("/decisionColumns") + @SaIgnore + public ResponseEntity decisionColumns() { + List list = iStStrategyConfigService.list(new QueryWrapper().select("strategy_code", "strategy_name")); + List result = new ArrayList<>(); + for (StStrategyConfig config : list) { + result.add(MapOf.of("label",config.getStrategy_name(),"value",config.getStrategy_code())); + } + return new ResponseEntity<>(result, HttpStatus.OK); + } + + @PostMapping + @Log("新增规格") + public ResponseEntity create(@Validated @RequestBody StStrategyConfig dao) { + iStStrategyConfigService.create(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping + @Log("修改规格") + public ResponseEntity update(@Validated @RequestBody StStrategyConfig dao) { + iStStrategyConfigService.update(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + + @DeleteMapping + @Log("删除规格") + public ResponseEntity delete(@RequestBody Long[] ids) { + iStStrategyConfigService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping("/changeActive") + @Log("修改启用状态规格") + public ResponseEntity changeActive(@Validated @RequestBody StStrategyConfig dao) { + iStStrategyConfigService.changeActive(dao); + return new ResponseEntity<>(HttpStatus.OK); + } + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/IStStrategyConfigService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/IStStrategyConfigService.java new file mode 100644 index 0000000..e88841e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/IStStrategyConfigService.java @@ -0,0 +1,48 @@ +package org.nl.wms.decision_manage.service; + +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.decision_manage.service.dao.StStrategyConfig; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.decision_manage.service.dto.StrategyQuery; + +/** + *

+ * 仓储策略配置表 服务类 + *

+ * + * @author generator + * @since 2024-04-07 + */ +public interface IStStrategyConfigService extends IService { + + /** + * 分页查询 + * @param query,page / + * @return JSONObject + */ + Object pageQuery(StrategyQuery query, PageQuery page); + + /** + * 新增 + * @param dao:实体类 + */ + void create(StStrategyConfig dao); + + /** + * 修改 + * @param dao: 实体类 + */ + void update(StStrategyConfig dao); + + /** + * 删除 + * @param ids : 标识 + */ + void deleteAll(Long[] ids); + + /** + * 修改启用状态 + * @param dao:实体类 + */ + void changeActive(StStrategyConfig dao); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/StStrategyConfig.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/StStrategyConfig.java new file mode 100644 index 0000000..a2c7c02 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/StStrategyConfig.java @@ -0,0 +1,89 @@ +package org.nl.wms.decision_manage.service.dao; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nl.common.domain.handler.FastjsonSortTypeHandler; +import java.io.Serializable; + +/** + *

+ * 仓储策略配置表 + *

+ * + * @author generator + * @since 2024-04-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName(value = "st_strategy_config",autoResultMap = true) +public class StStrategyConfig implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 策略标识 + */ + @TableId + private String id; + + /** + * 策略编码 + */ + private String strategy_code; + + /** + * 策略名称 + */ + private String strategy_name; + + /** + * 策略类型 + */ + private String strategy_type; + + /** + * 类处理类型 + */ + private String class_type; + + /** + * 处理类 + */ + private String param; + /** + *限定参数 + */ + @TableField(typeHandler = FastjsonSortTypeHandler.class) + private JSONObject form_data = new JSONObject();; + /** + * 描述 + */ + private String remark; + + /** + * 是否启用 + */ + private Boolean is_used; + + private Boolean ban; + /** + * 修改人名称 + */ + private String update_name; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private Boolean is_delete; + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/StStrategyConfigMapper.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/StStrategyConfigMapper.java new file mode 100644 index 0000000..eeb89b9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/StStrategyConfigMapper.java @@ -0,0 +1,28 @@ +package org.nl.wms.decision_manage.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.decision_manage.service.dao.StStrategyConfig; +import org.nl.wms.decision_manage.service.dto.StrategyQuery; +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓储策略配置表 Mapper 接口 + *

+ * + * @author generator + * @since 2024-04-07 + */ +public interface StStrategyConfigMapper extends BaseMapper { + + /** + * 分页查询 + * @param query:查询条件 + * @param pageQuery 分页 + * @return List + */ + List getPageQuery(@Param("query") StrategyQuery query, @Param("pageQuery") PageQuery pageQuery); +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/xml/StStrategyConfigMapper.xml b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/xml/StStrategyConfigMapper.xml new file mode 100644 index 0000000..8d2b13a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dao/mapper/xml/StStrategyConfigMapper.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dto/StrategyQuery.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dto/StrategyQuery.java new file mode 100644 index 0000000..a0a04ed --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/dto/StrategyQuery.java @@ -0,0 +1,25 @@ +package org.nl.wms.decision_manage.service.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.decision_manage.service.dao.StStrategyConfig; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class StrategyQuery extends BaseQuery { + + private String strategy_name; + private Boolean is_delete =Boolean.FALSE; + + @Override + public void paramMapping() { + super.doP.put("strategy_name", QParam.builder().k(new String[]{"strategy_name"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/impl/StStrategyConfigServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/impl/StStrategyConfigServiceImpl.java new file mode 100644 index 0000000..a89d6aa --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/wms/decision_manage/service/impl/StStrategyConfigServiceImpl.java @@ -0,0 +1,101 @@ +package org.nl.wms.decision_manage.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import org.nl.common.utils.IdUtil; +import com.github.pagehelper.PageHelper; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.nl.wms.decision_manage.service.IStStrategyConfigService; +import org.nl.wms.decision_manage.service.dao.StStrategyConfig; +import org.nl.wms.decision_manage.service.dao.mapper.StStrategyConfigMapper; +import org.nl.wms.decision_manage.service.dto.StrategyQuery; +import java.util.List; +import java.util.Map; + +/** + *

+ * 仓储策略配置表 服务实现类 + *

+ * + * @author generator + * @since 2024-04-07 + */ +@Service +public class StStrategyConfigServiceImpl extends ServiceImpl implements IStStrategyConfigService { + + @Override + public Object pageQuery(StrategyQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + page.setOrderBy("create_time DESC"); + List mstDetail = this.baseMapper.getPageQuery(query, pageQuery); + + TableDataInfo build = TableDataInfo.build(mstDetail); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(StStrategyConfig dao) { + + StStrategyConfig oldDao = this.getOne( + new QueryWrapper().lambda() + .eq(StStrategyConfig::getStrategy_name, dao.getStrategy_name()) + ); + + if (ObjectUtil.isNotEmpty(oldDao)) { + throw new BadRequestException("已存在相同名称的策略【"+dao.getStrategy_name()+"】"); + } + + dao.setId(IdUtil.getStringId()); + dao.setStrategy_code("000"); + this.save(dao); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(StStrategyConfig dao) { + dao.setUpdate_name(SecurityUtils.getCurrentNickName()); + dao.setUpdate_time(DateUtil.now()); + this.updateById(dao); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + this.update( + new UpdateWrapper().lambda() + .set(StStrategyConfig::getUpdate_name, SecurityUtils.getCurrentNickName()) + .set(StStrategyConfig::getUpdate_time, DateUtil.now()) + .set(StStrategyConfig::getIs_delete, "1") + .in(StStrategyConfig::getId, ids) + ); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void changeActive(StStrategyConfig dao) { + + Boolean isUsed = true; + if (dao.getIs_used()) { + isUsed = false; + } + dao.setIs_used(isUsed); + dao.setUpdate_time(DateUtil.now()); + dao.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(dao); + } + + +} diff --git a/nladmin-ui/src/views/wms/decision_manage/strategy/AddDialog.vue b/nladmin-ui/src/views/wms/decision_manage/strategy/AddDialog.vue new file mode 100644 index 0000000..ec7e8a8 --- /dev/null +++ b/nladmin-ui/src/views/wms/decision_manage/strategy/AddDialog.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/decision_manage/strategy/index.vue b/nladmin-ui/src/views/wms/decision_manage/strategy/index.vue new file mode 100644 index 0000000..90d9557 --- /dev/null +++ b/nladmin-ui/src/views/wms/decision_manage/strategy/index.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/nladmin-ui/src/views/wms/decision_manage/strategy/strategy.js b/nladmin-ui/src/views/wms/decision_manage/strategy/strategy.js new file mode 100644 index 0000000..7fd8782 --- /dev/null +++ b/nladmin-ui/src/views/wms/decision_manage/strategy/strategy.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/strategy', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/strategy/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/strategy', + method: 'put', + data + }) +} + +export function changeActive(data) { + return request({ + url: 'api/strategy/changeActive', + method: 'put', + data + }) +} + +export default { add, edit, del, changeActive }