1.分配策略页面提交

This commit is contained in:
2025-06-24 15:41:41 +08:00
parent 32e3668dd5
commit 9d224eabe4
12 changed files with 837 additions and 0 deletions

View File

@@ -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<Object> {
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);
}
}

View File

@@ -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 <a href="mailto:qinghehe@qq.com">gongmanman</a>
* @Date Create on 2020/3/19/0019 18:30
* @since version1.0 Copyright 2020 CLKJ All Rights Reserved.
*/
public class ListTypeHandler extends BaseTypeHandler<Object> {
@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<String>();
}
return JSONArray.parseArray(s,String.class);
}
}

View File

@@ -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;
/**
* <p>
* 仓储策略配置表 前端控制器
* </p>
*
* @author generator
* @since 2024-04-07
*/
@RestController
@RequestMapping("/api/strategy")
public class StStrategyConfigController {
@Autowired
private IStStrategyConfigService iStStrategyConfigService;
@GetMapping
@Log("查询规则")
public ResponseEntity<Object> query(StrategyQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iStStrategyConfigService.page(page.build(),query.build())), HttpStatus.OK);
}
@GetMapping("/decisionColumns")
@SaIgnore
public ResponseEntity<Object> decisionColumns() {
List<StStrategyConfig> list = iStStrategyConfigService.list(new QueryWrapper<StStrategyConfig>().select("strategy_code", "strategy_name"));
List<Map> 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<Object> create(@Validated @RequestBody StStrategyConfig dao) {
iStStrategyConfigService.create(dao);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping
@Log("修改规格")
public ResponseEntity<Object> update(@Validated @RequestBody StStrategyConfig dao) {
iStStrategyConfigService.update(dao);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping
@Log("删除规格")
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
iStStrategyConfigService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping("/changeActive")
@Log("修改启用状态规格")
public ResponseEntity<Object> changeActive(@Validated @RequestBody StStrategyConfig dao) {
iStStrategyConfigService.changeActive(dao);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -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;
/**
* <p>
* 仓储策略配置表 服务类
* </p>
*
* @author generator
* @since 2024-04-07
*/
public interface IStStrategyConfigService extends IService<StStrategyConfig> {
/**
* 分页查询
* @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);
}

View File

@@ -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;
/**
* <p>
* 仓储策略配置表
* </p>
*
* @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;
}

View File

@@ -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;
/**
* <p>
* 仓储策略配置表 Mapper 接口
* </p>
*
* @author generator
* @since 2024-04-07
*/
public interface StStrategyConfigMapper extends BaseMapper<StStrategyConfig> {
/**
* 分页查询
* @param query查询条件
* @param pageQuery 分页
* @return List<Map>
*/
List<Map> getPageQuery(@Param("query") StrategyQuery query, @Param("pageQuery") PageQuery pageQuery);
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.decision_manage.service.dao.mapper.StStrategyConfigMapper">
<select id="getPageQuery" resultType="java.util.Map">
SELECT
*
FROM
st_strategy_config
<where>
is_delete = "0"
<if test="query.strategy_name != null and query.strategy_name != ''">
and (strategy_name LIKE '%${query.strategy_name}%'
or strategy_code LIKE '%${query.strategy_name}%')
</if>
</where>
</select>
</mapper>

View File

@@ -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<StStrategyConfig> {
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());
}
}

View File

@@ -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;
/**
* <p>
* 仓储策略配置表 服务实现类
* </p>
*
* @author generator
* @since 2024-04-07
*/
@Service
public class StStrategyConfigServiceImpl extends ServiceImpl<StStrategyConfigMapper, StStrategyConfig> implements IStStrategyConfigService {
@Override
public Object pageQuery(StrategyQuery query, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
page.setOrderBy("create_time DESC");
List<Map> mstDetail = this.baseMapper.getPageQuery(query, pageQuery);
TableDataInfo<Map> 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<StStrategyConfig>().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<StStrategyConfig>().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);
}
}