Explorar el Código

新增商品管理接口

xie.kaifeng hace 2 meses
padre
commit
9a59a6d3ff
Se han modificado 42 ficheros con 1657 adiciones y 83 borrados
  1. 65 1
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/GoodsSetUpController.java
  2. 10 6
      mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/SystemSetUpController.java
  3. 0 16
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IGoodsService.java
  4. 21 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IGoodsSetUpService.java
  5. 2 2
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/ISystemSetUpService.java
  6. 0 20
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/GoodsServiceImpl.java
  7. 588 0
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/GoodsSetUpServiceImpl.java
  8. 34 28
      mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemSetUpServiceImpl.java
  9. 145 0
      mtp3-century/src/main/resources/mapper/GoodsMapper.xml
  10. 30 2
      mtp3-century/src/main/resources/mapper/MarketMapper.xml
  11. 3 3
      mtp3-century/src/main/resources/mapper/SystemmanagerMapper.xml
  12. 2 0
      mtp3-century/src/main/resources/message_en.properties
  13. 2 0
      mtp3-century/src/main/resources/message_th.properties
  14. 2 0
      mtp3-century/src/main/resources/message_vi.properties
  15. 2 0
      mtp3-century/src/main/resources/message_zh-cn.properties
  16. 2 0
      mtp3-century/src/main/resources/message_zh-hk.properties
  17. 2 0
      mtp3-century/src/main/resources/message_zh-tw.properties
  18. 2 0
      mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/MessageType.java
  19. 1 1
      mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/SysEnums.java
  20. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErmcpGgconvertconfigMapper.java
  21. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErms2WrsconvertdetailMapper.java
  22. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErmsMiddlegoodsMapper.java
  23. 15 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsMapper.java
  24. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsgrouptradefeeMapper.java
  25. 16 0
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsgrouptraderuleMapper.java
  26. 5 1
      mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IMarketMapper.java
  27. 65 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/ErmcpGgconvertconfig.java
  28. 72 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Erms2Wrsconvertdetail.java
  29. 123 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/ErmsMiddlegoods.java
  30. 71 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Goodsgrouptradefee.java
  31. 55 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Goodsgrouptraderule.java
  32. 5 1
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/ListMarketSectionConfig.java
  33. 19 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketNameResult.java
  34. 1 1
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSectionAddParam.java
  35. 1 1
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSetDetail.java
  36. 23 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSetResult.java
  37. 43 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetDetailResult.java
  38. 37 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetQueryParam.java
  39. 33 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetQueryResult.java
  40. 17 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryDetailResult.java
  41. 38 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryParam.java
  42. 41 0
      mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryResult.java

+ 65 - 1
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/GoodsSetUpController.java

@@ -1,12 +1,76 @@
 package com.muchinfo.mtp3century.controller;
 
+import com.muchinfo.mtp3century.service.IGoodsSetUpService;
+import com.muchinfo.mtp3century.utils.AjaxResult;
+import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3pojos.entity.Market;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.TradingMarketQuoterFirstAddParam;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.*;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 @RestController
 @RequestMapping("/goodsSetUp")
-@Api(value = "商品设置管理API", description = "商品设置管理")
+@Api(value = "商品设置管理API", description = "交易市场管理->商品管理")
 public class GoodsSetUpController {
 
+    @Resource
+    private IGoodsSetUpService iGoodsSetUpService;
+
+    @RequestMapping(method = RequestMethod.POST, value = "/listAllInit")
+    @ApiOperation("交易市场管理-->商品管理 --> 初始化市场下拉列表")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    public AjaxResult<Market> listAllInit(HttpServletRequest request, String orgztypes) {
+        return iGoodsSetUpService.listAllInit(request, orgztypes);
+    }
+
+    @ApiOperation("交易市场管理-->商品管理--> 商品组设置--> 获取列表")
+    @RequestMapping(method = RequestMethod.GET, value = "/groupSetQuery")
+    @ApiResponse(code = 200, message = "成功", response = PageResult.class)
+    public PageResult<GoodsGroupSetQueryResult> groupSetQuery(GoodsGroupSetQueryParam dealerQueryParam, HttpServletRequest request) {
+        return iGoodsSetUpService.groupSetQuery(dealerQueryParam, request);
+    }
+
+    @ApiOperation("交易市场管理-->商品管理--> 商品组设置--> 详情")
+    @RequestMapping(method = RequestMethod.GET, value = "/groupSetDetail")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    public AjaxResult<GoodsGroupSetDetailResult> groupSetDetail(Long goodsgroupid, HttpServletRequest request) {
+        return iGoodsSetUpService.groupSetDetail(goodsgroupid, request);
+    }
+
+    @ApiOperation("交易市场管理-->商品管理--> 商品组设置--> 注销")
+    @RequestMapping(method = RequestMethod.GET, value = "/groupDel")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    public AjaxResult groupDel(Long goodsgroupid, HttpServletRequest request) {
+        return iGoodsSetUpService.groupDel(goodsgroupid, request);
+    }
+
+    @RequestMapping(method = RequestMethod.POST, value = "/groupsave")
+    @ApiOperation("交易市场管理-->商品管理 --> 商品组设置 --> 新增、修改")
+    @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
+    public AjaxResult groupsave(@RequestBody GoodsGroupSetDetailResult param, HttpServletRequest request) {
+        return iGoodsSetUpService.groupsave(param, request);
+    }
+
+    @ApiOperation("交易市场管理-->商品管理--> 商品设置--> 获取列表")
+    @RequestMapping(method = RequestMethod.GET, value = "/goodsQuery")
+    @ApiResponse(code = 200, message = "成功", response = PageResult.class)
+    public PageResult<GoodsQueryResult> goodsQuery(GoodsQueryParam param, HttpServletRequest request) {
+        return iGoodsSetUpService.goodsQuery(param, request);
+    }
+
+    @ApiOperation("交易市场管理-->商品管理--> 商品设置--> 详情")
+    @RequestMapping(method = RequestMethod.GET, value = "/goodsview")
+    @ApiResponse(code = 200, message = "成功", response = PageResult.class)
+    public AjaxResult<GoodsQueryDetailResult> goodsview(Long goodsid, HttpServletRequest request) {
+        return iGoodsSetUpService.goodsview(goodsid, request);
+    }
 }

+ 10 - 6
mtp3-century/src/main/java/com/muchinfo/mtp3century/controller/SystemSetUpController.java

@@ -95,17 +95,22 @@ public class SystemSetUpController {
     @ResponseBody
     @RequestMapping(method = RequestMethod.GET, value = "/querytrademodes")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
-    private AjaxResult<Market> querytrademodes(HttpServletRequest request) {
-        return iSystemSetUpService.querytrademodes(request);
+    private AjaxResult<SystemMarketSetResult> querytrademodes(Integer editmarketsectionid, String selectedmarketids, HttpServletRequest request) {
+        return iSystemSetUpService.querytrademodes(request,editmarketsectionid,selectedmarketids);
     }
 
-
     @ApiOperation("基础数据管理-->市场板块设置-->新增,修改")
     @ResponseBody
     @RequestMapping(method = RequestMethod.POST, value = "/delmarket")
     @ApiResponse(code = 200, message = "成功", response = AjaxResult.class)
-    private AjaxResult delmarket(@RequestBody SystemMarketSectionAddParam param, HttpServletRequest request) {
-        return iSystemSetUpService.delmarket(param, request);
+    private AjaxResult delmarket(@RequestBody String param, HttpServletRequest request) {
+        try {
+            SystemMarketSectionAddParam current = JsonUtils.toBean(CenturyDecryptUtil.decryptForJson(param, request), SystemMarketSectionAddParam.class);
+            return iSystemSetUpService.delmarket(current, request);
+        } catch (Exception e) {
+            log.error("新增,修改失败原因:" + Arrays.toString(e.getStackTrace()));
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
+        }
     }
 
     @ApiOperation("基础数据管理-->终端图片管理-->获取列表")
@@ -160,7 +165,6 @@ public class SystemSetUpController {
             log.error("网上开户配置,保存失败原因:" + Arrays.toString(e.getStackTrace()));
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM002.getCode(), request.getHeader("Accept-Language"));
         }
-
     }
 
     @ApiOperation("基础数据管理-->行政区域管理-->获取菜单树")

+ 0 - 16
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IGoodsService.java

@@ -1,16 +0,0 @@
-package com.muchinfo.mtp3century.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.muchinfo.mtp3pojos.entity.Goods;
-
-/**
- * <p>
- * 商品表\期货合约表 服务类
- * </p>
- *
- * @author XKF
- * @since 2024-07-02
- */
-public interface IGoodsService extends IService<Goods> {
-
-}

+ 21 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/IGoodsSetUpService.java

@@ -1,4 +1,25 @@
 package com.muchinfo.mtp3century.service;
 
+import com.muchinfo.mtp3century.utils.AjaxResult;
+import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3pojos.entity.Market;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.*;
+
+import javax.servlet.http.HttpServletRequest;
+
 public interface IGoodsSetUpService {
+
+    PageResult<GoodsGroupSetQueryResult> groupSetQuery(GoodsGroupSetQueryParam dealerQueryParam, HttpServletRequest request);
+
+    AjaxResult<GoodsGroupSetDetailResult> groupSetDetail(Long goodsgroupid, HttpServletRequest request);
+
+    AjaxResult groupDel(Long goodsgroupid, HttpServletRequest request);
+
+    AjaxResult groupsave(GoodsGroupSetDetailResult param, HttpServletRequest request);
+
+    AjaxResult<Market> listAllInit(HttpServletRequest request, String orgztypes);
+
+    PageResult<GoodsQueryResult> goodsQuery(GoodsQueryParam param, HttpServletRequest request);
+
+    AjaxResult<GoodsQueryDetailResult> goodsview(Long goodsid, HttpServletRequest request);
 }

+ 2 - 2
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/ISystemSetUpService.java

@@ -20,11 +20,11 @@ public interface ISystemSetUpService {
 
     PageResult<SystemMarketSectionResult> queryMarketSet(SystemMarketSectionParam param, HttpServletRequest request);
 
-    AjaxResult<SystemMarketSetDetail> marketSetDetail(Integer marketsectionid,  HttpServletRequest request);
+    AjaxResult<SystemMarketSetDetail> marketSetDetail(Integer marketsectionid, HttpServletRequest request);
 
     AjaxResult deletemarketSet(Integer marketsectionid, HttpServletRequest request);
 
-    AjaxResult<Market> querytrademodes(HttpServletRequest request);
+    AjaxResult<SystemMarketSetResult> querytrademodes(HttpServletRequest request, Integer editmarketsectionid, String selectedmarketids);
 
     AjaxResult delmarket(SystemMarketSectionAddParam param, HttpServletRequest request);
 

+ 0 - 20
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/GoodsServiceImpl.java

@@ -1,20 +0,0 @@
-package com.muchinfo.mtp3century.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.muchinfo.mtp3century.service.IGoodsService;
-import com.muchinfo.mtp3interface.mapper.IGoodsMapper;
-import com.muchinfo.mtp3pojos.entity.Goods;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 商品表\期货合约表 服务实现类
- * </p>
- *
- * @author XKF
- * @since 2024-07-02
- */
-@Service
-public class GoodsServiceImpl extends ServiceImpl<IGoodsMapper, Goods> implements IGoodsService {
-
-}

+ 588 - 0
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/GoodsSetUpServiceImpl.java

@@ -1,9 +1,597 @@
 package com.muchinfo.mtp3century.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.muchinfo.mtp3century.service.ICommonService;
 import com.muchinfo.mtp3century.service.IGoodsSetUpService;
+import com.muchinfo.mtp3century.utils.AjaxResult;
+import com.muchinfo.mtp3century.utils.RedisServiceUtil;
+import com.muchinfo.mtp3common.enumtype.Constants;
+import com.muchinfo.mtp3common.enumtype.MessageType;
+import com.muchinfo.mtp3common.enumtype.SysConstants;
+import com.muchinfo.mtp3common.enumtype.SysEnums;
+import com.muchinfo.mtp3common.vo.PageResult;
+import com.muchinfo.mtp3interface.mapper.*;
+import com.muchinfo.mtp3pojos.entity.*;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.*;
+import org.apache.catalina.User;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+
 @Service
 public class GoodsSetUpServiceImpl implements IGoodsSetUpService {
 
+    @Resource
+    private ISystemmanagerMapper iSystemmanagerMapper;
+    @Resource
+    private ICommonService iCommonService;
+    @Resource
+    private IGoodsMapper iGoodsMapper;
+    @Resource
+    private IGoodsgroupMapper iGoodsgroupMapper;
+    @Resource
+    private IQuotesourcegroupMapper iQuotesourcegroupMapper;
+    @Resource
+    private IMarketMapper iMarketMapper;
+    @Resource
+    private RedisServiceUtil redisServiceUtil;
+    @Resource
+    private IEnumdicitemMapper iEnumdicitemMapper;
+    @Resource
+    private IGoodsgrouptradefeeMapper iGoodsgrouptradefeeMapper;
+    @Resource
+    private IGoodsgrouptraderuleMapper iGoodsgrouptraderuleMapper;
+    @Resource
+    private IWrstandardMapper iWrstandardMapper;
+    @Resource
+    private IDeliverygoodsMapper iDeliverygoodsMapper;
+    @Resource
+    private IErms2WrsconvertdetailMapper iErms2WrsconvertdetailMapper;
+    @Resource
+    private IErmsMiddlegoodsMapper iErmsMiddlegoodsMapper;
+    @Resource
+    private IErmcpGgconvertconfigMapper iErmcpGgconvertconfigMapper;
+    @Resource
+    private IUseraccountMapper iUseraccountMapper;
+    @Resource
+    private IArearoleMapper iArearoleMapper;
+    @Resource
+    private IArearolemarketMapper iArearolemarketMapper;
+
+
+    @Override
+    public PageResult<GoodsGroupSetQueryResult> groupSetQuery(GoodsGroupSetQueryParam param, HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        //如果不是平台管理员
+        if (!SysConstants.SYS_TYPE_MANAGE.equals(systemmanager.getReletype())) {
+            param.setExchareaid(systemmanager.getAreauserid());
+        }
+
+        List<Integer> filterTrademodeList = new ArrayList<>();
+        filterTrademodeList.add(SysEnums.TradeMode.BJB.getCode());
+        param.setFilterTrademodeList(filterTrademodeList);
+
+        PageResult<GoodsGroupSetQueryResult> pageResult = new PageResult<>();
+        IPage<GoodsGroupSetQueryResult> page = new Page<>(param.getPageNum(), param.getPageSize());
+        IPage<GoodsGroupSetQueryResult> resultIPage = iGoodsMapper.groupSetQuery(page, param);
+        pageResult.setCode(Constants.Success_Code_Design);
+        pageResult.setMessage(AjaxResult.dealMsg(MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language")));
+        pageResult.setPages(resultIPage.getPages());
+        pageResult.setCurrent(resultIPage.getCurrent());
+        pageResult.setTotal(resultIPage.getTotal());
+        pageResult.setPageSize(resultIPage.getSize());
+        pageResult.setData(resultIPage.getRecords());
+        return pageResult;
+    }
+
+    @Override
+    public AjaxResult<GoodsGroupSetDetailResult> groupSetDetail(Long goodsgroupid, HttpServletRequest request) {
+        GoodsGroupSetDetailResult result = new GoodsGroupSetDetailResult();
+        Goodsgroup goodsGroup = iGoodsgroupMapper.selectOne(new QueryWrapper<Goodsgroup>().eq("goodsgroupid", goodsgroupid));
+        Market m = iMarketMapper.selectOne(new QueryWrapper<Market>().eq("marketid", goodsGroup.getMarketid()));
+        result.setGoodsgroup(goodsGroup);
+        result.setMarketName(m.getMarketname());
+        result.setTradeMode(m.getTrademode());
+        result.setCreatorName(iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("autoid", goodsGroup.getCreatorid())).getUsername());
+        if (goodsGroup.getCreatorid() != null && goodsGroup.getCreatorid().equals(goodsGroup.getModifierid())) {
+            result.setModifierName(result.getCreatorName());
+        } else {
+            result.setModifierName(iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("autoid", goodsGroup.getModifierid())).getUsername());
+        }
+        if (goodsGroup.getQuotesourcegroupid() != null) {
+            Quotesourcegroup qsg = iQuotesourcegroupMapper.selectOne(new QueryWrapper<Quotesourcegroup>()
+                    .eq("autoid", goodsGroup.getQuotesourcegroupid()));
+            if (qsg != null) {
+                result.setQuoteSourceGroupName(qsg.getGroupcode() + "(" + qsg.getGroupname() + ")");
+            }
+        }
+
+        // get rule and fee
+        Object o = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "007");
+        Integer de = null;
+        BigDecimal Cude = null;
+        if (o != null && "1".equals(o.toString())) {
+            Enumdicitem item = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
+                    .eq("enumdiccode", "currency")
+                    .eq("enumitemname", goodsGroup.getCurrencyid()));
+            if (item != null && StringUtils.isNotBlank(item.getParam1())) {
+                de = Integer.valueOf(item.getParam1());
+                Cude = BigDecimal.valueOf(Math.pow(10, de));
+            }
+        }
+        List<Goodsgrouptraderule> rulelist = iGoodsMapper.getTradeRuleByGroupid(goodsGroup.getGoodsgroupid());
+        for (Goodsgrouptraderule rule : rulelist) {
+            if (rule.getRuleid() == 107 || rule.getRuleid() == 108 || rule.getRuleid() == 110 || rule.getRuleid() == 111) {
+                rule.setParamvalue(rule.getParamvalue().multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP));
+            }
+
+            if (rule.getRuleid() >= 101 && rule.getRuleid() <= 104 && o != null && "1".equals(o.toString())) {
+                rule.setParamvalue(rule.getParamvalue().divide(BigDecimal.valueOf(Math.pow(10, goodsGroup.getQtydecimalplace()))));
+            }
+        }
+        result.setGroupTradeRule(rulelist);
+
+        // 20250703:52, 54无手续费
+        if (m.getTrademode() != 52 && m.getTrademode() != 54) {
+            List<Goodsgrouptradefee> feelist = iGoodsMapper.getTradeFeeByGroupid(goodsGroup.getGoodsgroupid());
+            //如果费用算法是比率,则值需要乘以10000再展示(同时将积的标度设为0)
+            for (Goodsgrouptradefee fee : feelist) {
+                if (fee.getFeealgorithm() == 1) {
+                    // #6388 商品组、商品:费用比率时支持2位小数
+                    fee.setExchangevalue(fee.getExchangevalue().multiply(new BigDecimal(10000)).setScale(2));
+                    fee.setMemberdefaultvalue(fee.getMemberdefaultvalue().multiply(new BigDecimal(10000)).setScale(2));
+                    fee.setMembermaxvalue(fee.getMembermaxvalue().multiply(new BigDecimal(10000)).setScale(2));
+                    fee.setMemberminvalue(fee.getMemberminvalue().multiply(new BigDecimal(10000)).setScale(2));
+                } else if (fee.getFeealgorithm() == 2 && de != null) {
+                    //根据报价货币小数位放大
+                    fee.setExchangevalue(fee.getExchangevalue().divide(Cude));
+                    fee.setMemberdefaultvalue(fee.getMemberdefaultvalue().divide(Cude));
+                    fee.setMembermaxvalue(fee.getMembermaxvalue().divide(Cude));
+                    fee.setMemberminvalue(fee.getMemberminvalue().divide(Cude));
+                }
+            }
+            result.setGroupTradeFee(feelist);
+        }
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), result);
+    }
+
+    @Override
+    public AjaxResult groupDel(Long goodsgroupid, HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        // 判断是否商品正在运行
+        List<Goods> goodsList = iGoodsMapper.selectList(new QueryWrapper<Goods>().eq("goodsgroupid", goodsgroupid));
+        for (Goods g : goodsList) {
+            if (SysEnums.GoodsStatus.WORK.getCode().equals(g.getGoodsstatus()) ||
+                    SysEnums.GoodsStatus.PENDING_OUT.getCode().equals(g.getGoodsstatus())) {
+                return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM068.getCode(), request.getHeader("Accept-Language"));
+            }
+        }
+        Goodsgroup gg = iGoodsgroupMapper.selectOne(new QueryWrapper<Goodsgroup>().eq("goodsgroupid", goodsgroupid));
+        gg.setGoodsgroupstatus(SysEnums.CommonStatus.DEL.getCode());
+        gg.setModifierid(systemmanager.getAutoid());
+        gg.setModifytime(new Date());
+        iGoodsgroupMapper.updateById(gg);
+
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
+    }
+
+    @Override
+    public AjaxResult groupsave(GoodsGroupSetDetailResult param, HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+
+        if (param.getGoodsgroup().getMarketid() == null) {
+            return AjaxResult.error(Constants.Error_Code_Design, MessageType.QUERY_ERROR_CODE_001.getCode(), request.getHeader("Accept-Language"));
+        }
+
+        if (param.getGoodsgroup().getGoodsgroupid() != null && param.getGoodsgroup().getGoodsgroupid() > 0) {
+            return groupupdate(param, systemmanager, request);
+        } else {
+            return groupadd(param, systemmanager, request);
+        }
+    }
+
+    @Override
+    public AjaxResult<Market> listAllInit(HttpServletRequest request, String orgztypes) {
+        //如果即运营机构又是经纪会员会或者金融机构  确实是没办法在一个方法里处理
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        List<Long> markets = null;
+        if (!SysConstants.SYS_TYPE_MANAGE.equals(systemmanager.getReletype())) {
+            String[] roletyes;
+            //如果是子机构登陆,查找其父机构角色,查询市场
+            if (SysConstants.SYS_TYPE_MEMBER.equals(systemmanager.getReletype())) {
+                Useraccount ua = iUseraccountMapper.selectOne(new QueryWrapper<Useraccount>()
+                        .eq("userid", systemmanager.getAreauserid()));
+                String roleids = iArearoleMapper.getRolesByAreaid(ua.getMemberuserid());
+                roletyes = roleids.split(",");
+            } else {
+                roletyes = orgztypes.split(",");
+            }
+            for (String role : roletyes) {
+                if (SysEnums.OrganRole.broker.getCode().equals(Integer.parseInt(role)) || SysEnums.OrganRole.selfsupport.getCode().equals(Integer.parseInt(role))) {
+                    //如果是自营会员,经纪会员,自身权限的市场
+                    //获取市场id,
+                    Integer[] types = (Integer[]) ConvertUtils.convert(roletyes, Integer.class);
+                    markets = iArearolemarketMapper.getMarketsNameByUseridAndrole(systemmanager.getAreauserid(), types);
+                    //为了界面不出错,取id把市场完整信息查出
+                }
+            }
+        }
+        //根据市场id查询市场
+        if (markets != null && !markets.isEmpty()) {
+            List<Market> marketList = iMarketMapper.selectList(new QueryWrapper<Market>()
+                    .in("marketid", markets));
+            return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), marketList);
+        }
+
+        List<Integer> tradeModes = new ArrayList<>();
+        tradeModes.add(SysEnums.TradeMode.MAKER.getCode());
+        tradeModes.add(SysEnums.TradeMode.Quoter.getCode());
+        tradeModes.add(SysEnums.TradeMode.GPDX.getCode());
+        tradeModes.add(SysEnums.TradeMode.DQ.getCode());
+        tradeModes.add(SysEnums.TradeMode.QQJY.getCode());
+        tradeModes.add(SysEnums.TradeMode.STJJ.getCode());
+        tradeModes.add(SysEnums.TradeMode.GPQQ.getCode());
+        tradeModes.add(SysEnums.TradeMode.CKHQ.getCode());
+        tradeModes.add(SysEnums.TradeMode.BBDH.getCode());
+        tradeModes.add(SysEnums.TradeMode.YSYKJ.getCode());
+        tradeModes.add(SysEnums.TradeMode.YSJP.getCode());
+        tradeModes.add(SysEnums.TradeMode.GPYS.getCode());
+        tradeModes.add(SysEnums.TradeMode.SCSC.getCode());
+        tradeModes.add(SysEnums.TradeMode.BJB.getCode());
+        tradeModes.add(SysEnums.TradeMode.FJYSC.getCode());
+        tradeModes.add(SysEnums.TradeMode.DJYSB.getCode());
+        tradeModes.add(SysEnums.TradeMode.DJZR.getCode());
+        tradeModes.add(SysEnums.TradeMode.DDGP.getCode());
+        tradeModes.add(SysEnums.TradeMode.DDZS.getCode());
+        tradeModes.add(SysEnums.TradeMode.DJYSZQ.getCode());
+        tradeModes.add(SysEnums.TradeMode.DJSC.getCode());
+        tradeModes.add(SysEnums.TradeMode.JFSC.getCode());
+
+        List<Market> marketList = iMarketMapper.selectList(new QueryWrapper<Market>()
+                .eq("markettype",2)
+                .eq("marketStatus",SysEnums.EnumMarketStatus.NORMAL.getType())
+                .in("tradeMode",tradeModes));
+
+        //排除交易模式
+        List<Integer> filterTrademodeList = new ArrayList<>();
+        filterTrademodeList.add(69);
+        filterTrademodeList.add(40);
+        filterTrademodeList.add(41);
+        filterTrademodeList.add(71);
+        filterTrademodeList.add(48);
+        filterTrademodeList.add(51);
+
+        for (Iterator<Market> it = marketList.iterator(); it.hasNext(); ) {
+            Market market = it.next();
+            if (filterTrademodeList.contains(market.getTrademode())) {
+                it.remove();
+            }
+        }
+
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), marketList);
+    }
+
+    @Override
+    public PageResult<GoodsQueryResult> goodsQuery(GoodsQueryParam param, HttpServletRequest request) {
+        Systemmanager systemmanager = iSystemmanagerMapper.selectOne(new QueryWrapper<Systemmanager>().eq("LOGINCODE", iCommonService.getUserLoginCode(request)));
+        if (!SysConstants.SYS_TYPE_MANAGE.equals(systemmanager.getReletype())) {    //如果不是平台管理员
+            param.setExchareaid(systemmanager.getAreauserid());
+        }
+        List<Integer> filterTrademodeList = new ArrayList<>();
+        filterTrademodeList.add(SysEnums.TradeMode.BJB.getCode());
+        filterTrademodeList.add(SysEnums.TradeMode.YSYKJ.getCode());
+        filterTrademodeList.add(SysEnums.TradeMode.YSJP.getCode());
+        filterTrademodeList.add(SysEnums.TradeMode.GPYS.getCode());
+        filterTrademodeList.add(SysEnums.TradeMode.DJYSB.getCode());
+        filterTrademodeList.add(SysEnums.TradeMode.DJYSZQ.getCode());
+        param.setFilterTrademodeList(filterTrademodeList);
+
+        if (!"".equals(param.getGoodscode())) {
+            param.setGoodscode(param.getGoodscode().trim());
+        }
+        if (!"".equals(param.getGoodsname())) {
+            param.setGoodsname(param.getGoodsname().trim());
+        }
+
+        PageResult<GoodsQueryResult> pageResult = new PageResult<>();
+        IPage<GoodsQueryResult> page = new Page<>(param.getPageNum(), param.getPageSize());
+        IPage<GoodsQueryResult> resultIPage = iGoodsMapper.goodsQuery(page, param);
+        pageResult.setCode(Constants.Success_Code_Design);
+        pageResult.setMessage(AjaxResult.dealMsg(MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language")));
+        pageResult.setPages(resultIPage.getPages());
+        pageResult.setCurrent(resultIPage.getCurrent());
+        pageResult.setTotal(resultIPage.getTotal());
+        pageResult.setPageSize(resultIPage.getSize());
+        pageResult.setData(resultIPage.getRecords());
+        return pageResult;
+    }
+
+    @Override
+    public AjaxResult<GoodsQueryDetailResult> goodsview(Long goodsid, HttpServletRequest request) {
+
+        return null;
+    }
+
+    private AjaxResult groupadd(GoodsGroupSetDetailResult param, Systemmanager systemmanager, HttpServletRequest request) {
+        Goodsgroup goodsGroup = new Goodsgroup();
+        BeanUtils.copyProperties(param.getGoodsgroup(), goodsGroup);
+        // 判断商品组代码,同一市场下商品组名称是否唯一
+        Goodsgroup nameg = iGoodsgroupMapper.selectOne(new QueryWrapper<Goodsgroup>()
+                .eq("marketid", param.getGoodsgroup().getMarketid())
+                .eq("goodsgroupname", param.getGoodsgroupname()));
+        // 新增时
+        if (param.getGoodsgroup().getGoodsgroupid() == null || param.getGoodsgroup().getGoodsgroupid() <= 0) {
+            if (nameg != null) {
+                return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM068.getCode(), request.getHeader("Accept-Language"));
+            }
+        } else {
+            // 修改时 如果code不能修改就不必比较了
+            if (nameg != null && !nameg.getGoodsgroupid().equals(param.getGoodsgroup().getGoodsgroupid())) {
+                return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM068.getCode(), request.getHeader("Accept-Language"));
+            }
+        }
+
+        goodsGroup.setGoodsgroupstatus(SysEnums.CommonStatus.WORK.getCode());
+        // 是否数据库时间?
+        goodsGroup.setCreatetime(new Date());
+        // 新增要不要 修改人就是 添加人呢?
+        goodsGroup.setModifytime(goodsGroup.getCreatetime());
+        goodsGroup.setCreatorid(systemmanager.getAutoid());
+        goodsGroup.setModifierid(systemmanager.getAutoid());
+        iGoodsgroupMapper.insert(goodsGroup);
+        // 是否需要验证必填规则?
+        Object o = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "007");
+        if (param.getGroupTradeRule() != null) {
+            for (Goodsgrouptraderule gtrp : param.getGroupTradeRule()) {
+                if (gtrp == null || gtrp.getRuleid() == null && gtrp.getParamvalue() == null) {
+                    continue;
+                }
+
+                Goodsgrouptraderule gtr = new Goodsgrouptraderule();
+                BeanUtils.copyProperties(gtrp, gtr);
+                gtr.setGoodsgroupid(goodsGroup.getGoodsgroupid());
+                if (gtr.getRuleid() == 107 || gtr.getRuleid() == 108 || gtr.getRuleid() == 110 || gtr.getRuleid() == 111) {
+                    gtr.setParamvalue(gtr.getParamvalue().divide(new BigDecimal(100)));
+                }
+
+                if (gtr.getRuleid() >= 101 && gtr.getRuleid() <= 104 && o != null && "1".equals(o.toString())) {
+                    gtr.setParamvalue(gtr.getParamvalue().multiply(new BigDecimal(Math.pow(10, goodsGroup.getQtydecimalplace()))));
+                }
+                gtr.setMarketid(param.getGoodsgroup().getMarketid());
+                iGoodsgrouptraderuleMapper.insert(gtr);
+            }
+        }
+        if (param.getGroupTradeFee() != null) {
+            Integer de = null;
+            BigDecimal Cude = null;
+            if (o != null && "1".equals(o.toString())) {
+                Enumdicitem item = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
+                        .eq("enumdiccode", "currency")
+                        .eq("enumitemname", param.getGoodsgroup().getCurrencyid()));
+                if (item != null && StringUtils.isNotBlank(item.getParam1())) {
+                    de = Integer.valueOf(item.getParam1());
+                    Cude = BigDecimal.valueOf(Math.pow(10, de));
+                }
+            }
+            for (Goodsgrouptradefee gtfp : param.getGroupTradeFee()) {
+                if (gtfp == null || gtfp.getTradefeeid() == null) {
+                    continue;
+                }
+                Goodsgrouptradefee gtf = new Goodsgrouptradefee();
+                BeanUtils.copyProperties(gtfp, gtf);
+                gtf.setGoodsgroupid(goodsGroup.getGoodsgroupid());
+                //如果费用算法是比率,则值需要除以10000再存数据库
+                if (gtf.getFeealgorithm() == 1) {
+                    gtf.setExchangevalue(gtf.getExchangevalue().divide(new BigDecimal(10000)));
+                    gtf.setMemberdefaultvalue(gtf.getMemberdefaultvalue().divide(new BigDecimal(10000)));
+                    gtf.setMembermaxvalue(gtf.getMembermaxvalue().divide(new BigDecimal(10000)));
+                    gtf.setMemberminvalue(gtf.getMemberminvalue().divide(new BigDecimal(10000)));
+                } else if (gtf.getFeealgorithm() == 2 && de != null) {
+                    //根据报价货币小数位放大
+                    gtf.setExchangevalue(gtf.getExchangevalue().multiply(Cude));
+                    gtf.setMemberdefaultvalue(gtf.getMemberdefaultvalue().multiply(Cude));
+                    gtf.setMembermaxvalue(gtf.getMembermaxvalue().multiply(Cude));
+                    gtf.setMemberminvalue(gtf.getMemberminvalue().multiply(Cude));
+                }
+                gtf.setMarketid(param.getGoodsgroup().getMarketid());
+                iGoodsgrouptradefeeMapper.insert(gtf);
+            }
+        }
+
+        String sp = iCommonService.getSysparmById(SysConstants.SYSPAMA_CODE_GOODSGROUP);
+        if ("1".equals(sp)) {
+            //保存ERMS_MiddleGoods
+            ErmsMiddlegoods middleGoods = new ErmsMiddlegoods();
+            middleGoods.setMiddlegoodsname(goodsGroup.getGoodsgroupname());
+            middleGoods.setMiddlegoodscode(goodsGroup.getOutergroupcode());
+            middleGoods.setGoodsunitid(goodsGroup.getGoodunitid().intValue());
+            middleGoods.setGoodsgroupid(goodsGroup.getGoodsgroupid());
+            middleGoods.setIsvalid(1);
+            middleGoods.setQtydecimalplace(0);
+            middleGoods.setCreatorid(systemmanager.getAutoid());
+            middleGoods.setCreatetime(new Date());
+            middleGoods.setModifierid(systemmanager.getAutoid());
+            middleGoods.setModifytime(new Date());
+            middleGoods.setRelatedgoodstype(1);
+            middleGoods.setNeedhedgeratio(BigDecimal.ONE);
+            middleGoods.setAreauserid(1L);
+            middleGoods.setNeedarbitrageratio(BigDecimal.ONE);
+            iErmsMiddlegoodsMapper.insert(middleGoods);
+            //保存ERMCP_GGConvertConfig
+            ErmcpGgconvertconfig gGConvertConfig = new ErmcpGgconvertconfig();
+            gGConvertConfig.setSrcgoodsgroupid(goodsGroup.getGoodsgroupid());
+            gGConvertConfig.setDestgoodsgroupid(goodsGroup.getGoodsgroupid());
+            gGConvertConfig.setConvertratio(BigDecimal.ONE);
+            gGConvertConfig.setModifierid(systemmanager.getAutoid());
+            gGConvertConfig.setModifytime(new Date());
+            iErmcpGgconvertconfigMapper.insert(gGConvertConfig);
+            //保存DeliveryGoods
+            Deliverygoods deliveryGoods = new Deliverygoods();
+            deliveryGoods.setDeliverygoodscode(goodsGroup.getOutergroupcode());
+            deliveryGoods.setDeliverygoodsname(goodsGroup.getGoodsgroupname());
+            deliveryGoods.setGoodsunitid(Math.toIntExact(goodsGroup.getGoodunitid()));
+            deliveryGoods.setDeliverygoodstype(4);
+            deliveryGoods.setAuditflag(0);
+            deliveryGoods.setIsvalid(1);
+            deliveryGoods.setIssplit(0);
+            deliveryGoods.setAgreeunit(1L);
+            deliveryGoods.setQtydecimalplace(0);
+            deliveryGoods.setDgstatus(0);
+            deliveryGoods.setAreauserid(1L);
+            iDeliverygoodsMapper.insert(deliveryGoods);
+            //保存WRStandard
+            Wrstandard wRStandard = new Wrstandard();
+            wRStandard.setWrstandardcode(goodsGroup.getOutergroupcode());
+            wRStandard.setWrstandardname(goodsGroup.getGoodsgroupname());
+            wRStandard.setDeliverygoodsid(deliveryGoods.getDeliverygoodsid());
+            wRStandard.setUnitid(deliveryGoods.getGoodsunitid());
+            wRStandard.setVatrate(BigDecimal.ZERO);
+            wRStandard.setMinivalue(1L);
+            wRStandard.setMinivaluedp(0L);
+            wRStandard.setRealminivalue(1L);
+            wRStandard.setRealminivaluedp(0L);
+            wRStandard.setWrsstatus(0);
+            wRStandard.setCreatorid(systemmanager.getAutoid());
+            wRStandard.setCreatetime(new Date());
+            wRStandard.setUpdatorid(systemmanager.getAutoid());
+            wRStandard.setUpdatetime(new Date());
+            wRStandard.setIsvalid(1);
+            wRStandard.setAreauserid(1L);
+            wRStandard.setConvertfactor(BigDecimal.ONE);
+            wRStandard.setVatrate(BigDecimal.ZERO);
+            iWrstandardMapper.insert(wRStandard);
+            //保存ERMS2_WRSConvertDetail
+            Erms2Wrsconvertdetail wRSConvertDetail = new Erms2Wrsconvertdetail();
+            wRSConvertDetail.setWrstandardid(wRStandard.getWrstandardid());
+            wRSConvertDetail.setDeliverygoodsid(deliveryGoods.getDeliverygoodsid());
+            wRSConvertDetail.setMiddlegoodsid(middleGoods.getMiddlegoodsid());
+            wRSConvertDetail.setConvertratio(BigDecimal.ONE);
+            wRSConvertDetail.setShareratio(BigDecimal.ONE);
+            wRSConvertDetail.setCostratio(BigDecimal.ONE);
+            wRSConvertDetail.setModifierid(systemmanager.getAutoid());
+            wRSConvertDetail.setModifytime(new Date());
+            iErms2WrsconvertdetailMapper.insert(wRSConvertDetail);
+        }
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
+    }
+
+    private AjaxResult groupupdate(GoodsGroupSetDetailResult param, Systemmanager systemmanager, HttpServletRequest request) {
+        // 判断商品组代码,同一市场下商品组名称是否唯一
+        Goodsgroup nameg = iGoodsgroupMapper.selectOne(new QueryWrapper<Goodsgroup>()
+                .eq("marketid", param.getGoodsgroup().getMarketid())
+                .eq("goodsgroupname", param.getGoodsgroupname()));
+        // 新增时
+        if (param.getGoodsgroup().getGoodsgroupid() == null || param.getGoodsgroup().getGoodsgroupid() <= 0) {
+            if (nameg != null) {
+                return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM068.getCode(), request.getHeader("Accept-Language"));
+            }
+        } else {
+            // 修改时 如果code不能修改就不必比较了
+            if (nameg != null && !nameg.getGoodsgroupid().equals(param.getGoodsgroup().getGoodsgroupid())) {
+                return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM068.getCode(), request.getHeader("Accept-Language"));
+            }
+        }
+
+        Goodsgroup ggroup = iGoodsgroupMapper.selectOne(new QueryWrapper<Goodsgroup>()
+                .eq("goodsgroupid", param.getGoodsgroup().getGoodsgroupid()));
+        ggroup.setQtydecimalplace(param.getGoodsgroup().getQtydecimalplace());
+        ggroup.setGoodsgroupname(param.getGoodsgroupname());
+        ggroup.setCurrencyid(param.getGoodsgroup().getCurrencyid());
+        // ggroup.setMarketid(goodsGroup.getMarketid());
+        // //市场应该不能改,不然商品的所属市场就不对了
+        ggroup.setModifierid(systemmanager.getAutoid());
+        if (param.getGoodsgroup().getQuotesourcegroupid() != null) {
+            ggroup.setQuotesourcegroupid(param.getGoodsgroup().getQuotesourcegroupid());
+        }
+        ggroup.setQuotegear(param.getGoodsgroup().getQuotegear());
+        ggroup.setModifytime(new Date());
+
+        ggroup.setOutergroupcode(param.getGoodsgroup().getOutergroupcode());
+        ggroup.setCurrencyid(param.getGoodsgroup().getCurrencyid());
+        ggroup.setDecimalplace(param.getGoodsgroup().getDecimalplace());
+        ggroup.setAgreeunit(param.getGoodsgroup().getAgreeunit());
+        ggroup.setQuoteminunit(param.getGoodsgroup().getQuoteminunit());
+        ggroup.setSyncgoodsqty(param.getGoodsgroup().getSyncgoodsqty());
+        ggroup.setExercisetype(param.getGoodsgroup().getExercisetype());
+        ggroup.setPremiumdecimalplace(param.getGoodsgroup().getPremiumdecimalplace());
+        ggroup.setPremiumspreadalgorithm(param.getGoodsgroup().getPremiumspreadalgorithm());
+        ggroup.setPremiumspreadvalue(param.getGoodsgroup().getPremiumspreadvalue());
+        ggroup.setIsbuylimited(param.getGoodsgroup().getIsbuylimited());
+        ggroup.setInnerdealmode(param.getGoodsgroup().getInnerdealmode());
+        ggroup.setOuterdealmode(param.getGoodsgroup().getOuterdealmode());
+        // 添加缩略图
+        ggroup.setThumurls(param.getGoodsgroup().getThumurls());
+        // 添加分类 20241009 (TCE)
+        ggroup.setGroupcategroyid(param.getGoodsgroup().getGroupcategroyid());
+        iGoodsgroupMapper.updateById(ggroup);
+        // 是否需要验证必填规则?
+        Map<String, Object> params = new HashMap<String, Object>();
+
+        //109 小数位放大
+        Object o = redisServiceUtil.getCacheMapValue(Constants.REDIS_HEADER_SYSPARAM, "007");
+        Integer de = null;
+        BigDecimal Cude = null;
+        BigDecimal Qtyde = null;
+        if (o != null && "1".equals(o.toString())) {
+            Qtyde = BigDecimal.valueOf(Math.pow(10, param.getGoodsgroup().getQtydecimalplace()));
+            Enumdicitem item = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
+                    .eq("enumdiccode", "currency")
+                    .eq("enumitemname", param.getGoodsgroup().getCurrencyid()));
+            if (item != null && StringUtils.isNotBlank(item.getParam1())) {
+                de = Integer.valueOf(item.getParam1());
+                Cude = BigDecimal.valueOf(Math.pow(10, de));
+            }
+        }
+
+        if (param.getGroupTradeRule() != null) {
+            iGoodsgrouptraderuleMapper.delete(new QueryWrapper<Goodsgrouptraderule>().eq("goodsgroupid", param.getGoodsgroup().getGoodsgroupid())); // 全部删了重加
+            for (Goodsgrouptraderule gtrp : param.getGroupTradeRule()) {
+                Goodsgrouptraderule gtr = new Goodsgrouptraderule();
+                BeanUtils.copyProperties(gtrp, gtr);
+                gtr.setGoodsgroupid(param.getGoodsgroup().getGoodsgroupid());
+                gtr.setMarketid(param.getGoodsgroup().getMarketid());
+                if (gtr.getRuleid() == 107 || gtr.getRuleid() == 108 || gtr.getRuleid() == 110 || gtr.getRuleid() == 111) {
+                    gtr.setParamvalue(gtr.getParamvalue().divide(new BigDecimal(100)));
+                }
+
+                if (gtr.getRuleid() >= 101 && gtr.getRuleid() <= 104 && Qtyde != null) {
+                    gtr.setParamvalue(gtr.getParamvalue().multiply(Qtyde));
+                }
+                iGoodsgrouptraderuleMapper.insert(gtr);
+            }
+        }
+        if (param.getGroupTradeFee() != null) {
+            iGoodsgrouptradefeeMapper.delete(new QueryWrapper<Goodsgrouptradefee>().eq("goodsgroupid", param.getGoodsgroup().getGoodsgroupid())); // 全部删了重加
+            for (Goodsgrouptradefee gtfp : param.getGroupTradeFee()) {
+                Goodsgrouptradefee gtf = new Goodsgrouptradefee();
+                BeanUtils.copyProperties(gtfp, gtf);
+                gtf.setGoodsgroupid(param.getGoodsgroup().getGoodsgroupid());
+                gtf.setMarketid(param.getGoodsgroup().getMarketid());
+                //如果是比率,则值需要除以10000再存数据库
+                if (gtf.getFeealgorithm() == 1) {
+                    gtf.setExchangevalue(gtf.getExchangevalue().divide(new BigDecimal(10000)));
+                    gtf.setMemberdefaultvalue(gtf.getMemberdefaultvalue().divide(new BigDecimal(10000)));
+                    gtf.setMembermaxvalue(gtf.getMembermaxvalue().divide(new BigDecimal(10000)));
+                    gtf.setMemberminvalue(gtf.getMemberminvalue().divide(new BigDecimal(10000)));
+                } else if (gtf.getFeealgorithm() == 2 && de != null) {
+                    //根据报价货币小数位放大
+                    gtf.setExchangevalue(gtf.getExchangevalue().multiply(Cude));
+                    gtf.setMemberdefaultvalue(gtf.getMemberdefaultvalue().multiply(Cude));
+                    gtf.setMembermaxvalue(gtf.getMembermaxvalue().multiply(Cude));
+                    gtf.setMemberminvalue(gtf.getMemberminvalue().multiply(Cude));
+                }
+                iGoodsgrouptradefeeMapper.insert(gtf);
+            }
+        }
+        return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
+    }
 }

+ 34 - 28
mtp3-century/src/main/java/com/muchinfo/mtp3century/service/impl/SystemSetUpServiceImpl.java

@@ -187,8 +187,17 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     }
 
     @Override
-    public AjaxResult<Market> querytrademodes(HttpServletRequest request) {
-        List<Market> markets = iMarketMapper.queryTradeModeListNew();
+    public AjaxResult<SystemMarketSetResult> querytrademodes(HttpServletRequest request, Integer editmarketsectionid, String selectedmarketids) {
+        String[] splits = null;
+        if (StringUtils.isNotBlank(selectedmarketids)) {
+            splits = selectedmarketids.split(",");
+        }
+        List<SystemMarketSetResult> markets = iMarketMapper.queryTradeModeListNew(editmarketsectionid, splits);
+
+        for (SystemMarketSetResult market : markets) {
+            List<SystemMarketNameResult> results = iMarketMapper.querymarkets(market.getTrademode(), splits);
+            market.setResults(results);
+        }
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), markets);
     }
 
@@ -246,9 +255,7 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
             addConfigNew(m.getMarketsectionid(), param);
 
             systemmanagerService.writeOperateLog(SysConstants.PART_CODE_ORGZ, "新增版块, id=" + systemmanager.getLogincode(), systemmanager, null, null, null);
-
         }
-
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
     }
 
@@ -583,13 +590,13 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     public PageResult<EnumDicsPageResult> queryEnumDicItemByPage(EnumDicsPageParam param, HttpServletRequest request) {
         IPage<EnumDicsPageResult> queryResultIPage;
         IPage<EnumDicsPageResult> page = new Page<>(param.getPageNum(), param.getPageSize());
-        if(param.getEnumdiccode() == null || param.getIsmappingtobank() == null){
+        if (param.getEnumdiccode() == null || param.getIsmappingtobank() == null) {
             param.setModifyflag(1);
             param.setShowflag(1);
-            queryResultIPage = iEnumdicMapper.queryEnumDicByPage(page,param);
-        }else{
+            queryResultIPage = iEnumdicMapper.queryEnumDicByPage(page, param);
+        } else {
             param.setEnumitemstatus(1);
-            queryResultIPage = iEnumdicMapper.queryEnumDicItemByPage(page,param);
+            queryResultIPage = iEnumdicMapper.queryEnumDicItemByPage(page, param);
         }
         PageResult<EnumDicsPageResult> result = new PageResult<>();
         result.setCode(Constants.Success_Code_Design);
@@ -605,7 +612,7 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     @Override
     public AjaxResult<Enumdic> editEnumDic(Long autoid, Long enumgroupid, HttpServletRequest request) {
         if (autoid != null && autoid > 0) {
-            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("AUTOID",autoid));
+            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("AUTOID", autoid));
             return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), enumDic);
         } else {
             Enumdic enumDic = new Enumdic();
@@ -619,12 +626,12 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     public AjaxResult<EnumdicitemVoResult> editEnumDicItem(Long autoid, String enumdiccode, Integer ismappingtobank, HttpServletRequest request) {
         EnumdicitemVoResult result = new EnumdicitemVoResult();
         if (autoid != null) {
-            Enumdicitem enumdicitem =  iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("autoid",autoid));
+            Enumdicitem enumdicitem = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("autoid", autoid));
             result.setEnumdicitem(enumdicitem);
         }
         if (("certificatetype".equals(enumdiccode)) && autoid != null) {
             Certificatetypeconfig certificateTypeConfig = iCertificatetypeconfigMapper.selectOne(new QueryWrapper<Certificatetypeconfig>()
-                    .eq("enumdicitemid",autoid));
+                    .eq("enumdicitemid", autoid));
             result.setConfig(certificateTypeConfig);
         }
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"), result);
@@ -632,7 +639,7 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
 
     @Override
     public AjaxResult saveEnumDic(Enumdic enumdic, HttpServletRequest request) {
-        Enumdic current = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("enumdiccode",enumdic.getEnumdiccode()));
+        Enumdic current = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("enumdiccode", enumdic.getEnumdiccode()));
         if (current != null) {
             return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM026.getCode(), request.getHeader("Accept-Language"));
         }
@@ -650,16 +657,16 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     @Override
     public AjaxResult updateOrSave(EnumDicItemSave param, HttpServletRequest request) {
         if (param.getAutoid() != null) {
-            Enumdicitem enumDicItem = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("autoid",param.getAutoid()));
+            Enumdicitem enumDicItem = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("autoid", param.getAutoid()));
             Enumdicitem enumDicItemExit = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
                     .eq("enumdicname", param.getEnumdicname())
-                    .eq("enumdiccode",param.getEnumdiccode()));
+                    .eq("enumdiccode", param.getEnumdiccode()));
             if (enumDicItemExit != null && !param.getEnumdicname().equals(enumDicItem.getEnumdicname())) {
                 return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM027.getCode(), request.getHeader("Accept-Language"));
             }
             Enumdicitem enumDicItemExit2 = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
                     .eq("enumitemname", param.getEnumitemname())
-                    .eq("enumdiccode",param.getEnumdiccode()));
+                    .eq("enumdiccode", param.getEnumdiccode()));
             if (enumDicItemExit2 != null && !param.getEnumitemname().equals(enumDicItem.getEnumitemname())) {
                 return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM028.getCode(), request.getHeader("Accept-Language"));
             }
@@ -671,7 +678,7 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
             iEnumdicitemMapper.updateById(enumDicItem);
             if (("certificatetype".equals(param.getEnumdiccode()))) {
                 Certificatetypeconfig certificateTypeConfig = iCertificatetypeconfigMapper.selectOne(new QueryWrapper<Certificatetypeconfig>()
-                        .eq("enumdicitemid",param.getAutoid()));
+                        .eq("enumdicitemid", param.getAutoid()));
                 if (certificateTypeConfig == null) {
                     certificateTypeConfig = new Certificatetypeconfig();
                     certificateTypeConfig.setEnumdicitemid(param.getAutoid());
@@ -679,28 +686,28 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
                 certificateTypeConfig.setCardlength(param.getCardlength());
                 certificateTypeConfig.setIsperson(param.getIsperson());
                 certificateTypeConfig.setRegexpress(param.getRegexpress());
-                iCertificatetypeconfigMapper.update(certificateTypeConfig,new QueryWrapper<Certificatetypeconfig>()
-                        .eq("enumdicitemid",param.getAutoid()));
+                iCertificatetypeconfigMapper.update(certificateTypeConfig, new QueryWrapper<Certificatetypeconfig>()
+                        .eq("enumdicitemid", param.getAutoid()));
             }
             redisServiceUtil.updateHash(Constants.REDIS_HEADER_DICT + enumDicItem.getEnumdiccode(),
                     enumDicItem.getEnumitemname().toString(), enumDicItem.getEnumdicname());
             return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
         } else {
             Enumdicitem enumDicItem = new Enumdicitem();
-            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("enumdiccode",param.getEnumdiccode()));
+            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("enumdiccode", param.getEnumdiccode()));
             if (param.getEnumitemname() == null) {
-                List<Enumdicitem> enumDicItems = iEnumdicitemMapper.selectList(new QueryWrapper<Enumdicitem>().eq("enumdiccode",param.getEnumdiccode()));
+                List<Enumdicitem> enumDicItems = iEnumdicitemMapper.selectList(new QueryWrapper<Enumdicitem>().eq("enumdiccode", param.getEnumdiccode()));
                 enumDicItem.setEnumitemname(enumDicItems.size() + 1);
             } else {
                 Enumdicitem enumDicItemExit = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
                         .eq("enumdicname", param.getEnumdicname())
-                        .eq("enumdiccode",param.getEnumdiccode()));
+                        .eq("enumdiccode", param.getEnumdiccode()));
                 if (enumDicItemExit != null) {
                     return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM027.getCode(), request.getHeader("Accept-Language"));
                 }
                 Enumdicitem enumDicItemExit2 = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>()
                         .eq("enumitemname", param.getEnumitemname())
-                        .eq("enumdiccode",param.getEnumdiccode()));
+                        .eq("enumdiccode", param.getEnumdiccode()));
                 if (enumDicItemExit2 != null) {
                     return AjaxResult.error(Constants.Error_Code_Design, MessageType.MESSAGE_ERROR_CODE_SYSTEM028.getCode(), request.getHeader("Accept-Language"));
                 }
@@ -731,21 +738,21 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     @Override
     public AjaxResult delEnumdicItem(Long autoid, Integer flag, HttpServletRequest request) {
         if (flag == 1) {
-            Enumdicitem enumDicItem = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("AUTOID",autoid));
+            Enumdicitem enumDicItem = iEnumdicitemMapper.selectOne(new QueryWrapper<Enumdicitem>().eq("AUTOID", autoid));
             String enumdiccode = enumDicItem.getEnumdiccode();
             if (("certificatetype".equals(enumdiccode))) {
                 iCertificatetypeconfigMapper.delete(new QueryWrapper<Certificatetypeconfig>()
-                        .eq("enumdicitemid",autoid));
+                        .eq("enumdicitemid", autoid));
             }
             redisServiceUtil.delHash(Constants.REDIS_HEADER_DICT + enumDicItem.getEnumdiccode(), enumDicItem.getEnumitemname().toString());
             iEnumdicitemMapper.deleteById(enumDicItem);
         }
         if (flag == 0) {
-            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("AUTOID",autoid));
+            Enumdic enumDic = iEnumdicMapper.selectOne(new QueryWrapper<Enumdic>().eq("AUTOID", autoid));
             String enumdiccode = enumDic.getEnumdiccode();
             if (("certificatetype".equals(enumdiccode))) {
                 iCertificatetypeconfigMapper.delete(new QueryWrapper<Certificatetypeconfig>()
-                        .eq("enumdicitemid",autoid));
+                        .eq("enumdicitemid", autoid));
             }
             redisServiceUtil.delHash(Constants.REDIS_HEADER_DICT + enumDic.getEnumdiccode(), enumDic.getEnumdicname());
             iEnumdicMapper.deleteById(enumDic);
@@ -759,7 +766,6 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
         return AjaxResult.success(Constants.Success_Code_Design, MessageType.MESSAGE_CODE_SYSTEM001.getCode(), request.getHeader("Accept-Language"));
     }
 
-
     private void updateSystem(String code, String openMarket, String logincode, Long value) {
         try {
             Systemparam systemparam = iSystemparamMapper.selectOne(new QueryWrapper<Systemparam>().eq("PARAMCODE", code));
@@ -925,7 +931,7 @@ public class SystemSetUpServiceImpl implements ISystemSetUpService {
     }
 
     private void addConfigNew(Long marketsectionid, SystemMarketSectionAddParam param) {
-// 添加“MarketSectionConfigNew”表相关记录
+        // 添加“MarketSectionConfigNew”表相关记录
         if (CollectionUtils.isNotEmpty(param.getList())) {
             for (SystemMarketSectionAddMarket c : param.getList()) {
                 Marketsectionconfignew ms = new Marketsectionconfignew();

+ 145 - 0
mtp3-century/src/main/resources/mapper/GoodsMapper.xml

@@ -242,4 +242,149 @@
         </choose>
         )
     </select>
+    <select id="groupSetQuery" resultType="com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsGroupSetQueryResult">
+        select g.goodsgroupid,
+        g.outergroupcode,
+        g.goodsgroupname,
+        g.goodsgroupstatus,
+        g.marketid,
+        g.exexchangeid,
+        g.quotesourcegroupid,
+        g.currencyid,
+        g.goodunitid,
+        g.createtime,
+        g.creatorid,
+        g.modifytime,
+        g.modifierid,
+        gc.categoryname
+        from goodsgroup g
+        join market m on g.marketid = m.marketid
+        left join groupcategory gc on g.groupcategroyid = gc.categoryid
+        <where>
+            <choose>
+                <when test="vo.tradeMode!=null and vo.tradeMode==15">
+                    and m.trademode = 15
+                </when>
+                <otherwise>
+                    and m.trademode != 15
+                </otherwise>
+            </choose>
+            <if test="vo.marketid != null and vo.marketid != '' ">
+                and g.marketid = #{vo.marketid,jdbcType=DECIMAL}
+            </if>
+            <if test="vo.filterTrademodeList!=null and vo.filterTrademodeList.size>0">
+                <foreach collection="vo.filterTrademodeList" item="item" open="and m.trademode not in (" close=")" separator=",">
+                    ${item}
+                </foreach>
+            </if>
+            <if test="vo.goodsgroupname != null and vo.goodsgroupname != '' ">
+                and g.goodsgroupname like '%'||#{vo.goodsgroupname,jdbcType=VARCHAR}||'%'
+            </if>
+            <if test="vo.goodsgroupstatus != null and vo.goodsgroupstatus != -1 ">
+                and g.goodsgroupstatus = #{vo.goodsgroupstatus,jdbcType=DECIMAL}
+            </if>
+            <if test="vo.exchareaid != null and vo.exchareaid != ''">
+                AND m.exchareaid = #{vo.exchareaid,jdbcType=DECIMAL}
+            </if>
+        </where>
+        order by g.goodsgroupname
+    </select>
+    <select id="getTradeRuleByGroupid"
+            resultType="com.muchinfo.mtp3pojos.entity.Goodsgrouptraderule"
+            parameterType="java.lang.Long">
+        select g.ruleid,g.paramvalue,t.ismandatory,t.ispersonalized
+        from goodsgrouptraderule g,goodsgroup gg,traderuleconfig t,market m
+        where g.goodsgroupid = #{goodsgroupid}
+          and t.ruleid = g.ruleid
+          and g.goodsgroupid = gg.goodsgroupid
+          and gg.marketid = m.marketid
+          and t.trademodeid = m.trademode
+        order by t.ismandatory desc,g.ruleid
+    </select>
+    <select id="getTradeFeeByGroupid" resultType="com.muchinfo.mtp3pojos.entity.Goodsgrouptradefee"
+            parameterType="java.lang.Long">
+        select
+            g.*,
+            t.tradefeedescriptionid,
+            t.ismandatory,
+            t.ispersonalized
+        from goodsgrouptradefee g,tradefeeconfig t,goodsgroup gg,market m,tradefeedescription td
+        where td.tradefeeid = g.tradefeeid
+          and td.tradefeedescriptionid = t.tradefeedescriptionid
+          and g.goodsgroupid = gg.goodsgroupid
+          and gg.marketid = m.marketid
+          and m.tradeproperty = t.tradepropertyid
+          and g.goodsgroupid = #{goodsgroupid}
+        order by t.ismandatory desc, g.tradefeeid
+    </select>
+    <select id="goodsQuery" resultType="com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsQueryResult">
+        select
+        g.goodsid,
+        g.goodscode,
+        g.goodsname,
+        g.marketid,
+        g.goodsgroupid,
+        g.goodsstatus,
+        g.modifystatus,
+        g.LISTINGDATE,
+        g.DELISTINGDATE,
+        g.remark,
+        g.hasquoter,
+        m.trademode,
+        g.provideruserid,
+        g.provideraccountid,
+        g.transferdepositratio,
+        g.presaleflag,
+        gx.drauditflag,
+        gx.tmptransferdepositratio,
+        gx.goodsnameen,
+        gx.goodsnametw,
+        gx.goodsnameth,
+        gx.goodsnamevi,
+        m.riskcontrolmode
+        from goods g
+        inner join market m on m.marketid = g.marketid
+        left join goodsex gx on gx.goodsid = g.goodsid
+        where m.trademode != 15
+        <if test="vo.type != null and vo.type != '' ">
+            <choose>
+                <when test="type==9">
+                    and g.goodsstatus = 1
+                </when>
+                <when test="type==8">
+                    and g.modifystatus = 3
+                </when>
+            </choose>
+        </if>
+
+        <if test="vo.marketid != null and vo.marketid != '' ">
+            and g.marketid = #{vo.marketid,jdbcType=DECIMAL}
+        </if>
+        <if test="vo.filterTrademodeList!=null and vo.filterTrademodeList.size>0">
+            <foreach collection="vo.filterTrademodeList" item="item" open="and m.trademode not in (" close=")"
+                     separator=",">
+                ${item}
+            </foreach>
+        </if>
+        <if test="vo.goodsgroupid != null and vo.goodsgroupid != '' ">
+            and g.goodsgroupid = #{vo.goodsgroupid,jdbcType=DECIMAL}
+        </if>
+        <if test="vo.goodscode != null and vo.goodscode != '' ">
+            and g.goodscode like
+            '%'||#{vo.goodscode,jdbcType=VARCHAR}||'%'
+        </if>
+        <if test="vo.goodsname != null and vo.goodsname != '' ">
+            and g.goodsname like
+            '%'||#{vo.goodsname,jdbcType=VARCHAR}||'%'
+        </if>
+        <if test="vo.exchareaid != null and vo.exchareaid != ''">
+            AND m.exchareaid = #{vo.exchareaid,jdbcType=DECIMAL}
+        </if>
+        <choose>
+            <when test="vo.goodsstatus != null and vo.goodsstatus != -1">
+                and g.goodsstatus = #{vo.goodsstatus}
+            </when>
+        </choose>
+        order by g.goodsstatus,g.goodscode
+    </select>
 </mapper>

+ 30 - 2
mtp3-century/src/main/resources/mapper/MarketMapper.xml

@@ -166,16 +166,27 @@
         </if>
         order by m.marketid
     </select>
-    <select id="queryTradeModeListNew" resultType="com.muchinfo.mtp3pojos.entity.Market">
-        select distinct m.marketid,m.marketname,m.trademode
+    <select id="queryTradeModeListNew" resultType="com.muchinfo.mtp3pojos.vo.systemsetup.SystemMarketSetResult">
+        select distinct m.trademode, en.enumdicname trademodename
         from  market m
+        left join enumdicitem en on en.enumdiccode='trademode' and en.enumitemname = m.trademode
         where m.markettype = 2
         and m.marketstatus =2
         and m.trademode not in(15, 45)
         and m.marketid not in(
         SELECT distinct REGEXP_SUBSTR(mscn.marketids, '[^,]+', 1, LEVEL) AS marketid
         FROM MarketSectionConfignew mscn
+        <where>
+            <if test="editmarketsectionid!=null and editmarketsectionid!=''">
+                and  mscn.marketsectionid != #{editmarketsectionid}
+            </if>
+        </where>
         CONNECT BY REGEXP_SUBSTR(mscn.marketids, '[^,]+', 1, LEVEL) IS NOT NULL)
+        <if test="selectedmarketids!=null and selectedmarketids.length>0">
+            <foreach collection="selectedmarketids" item="item" open="and m.marketid not in (" close=")" separator=",">
+                ${item}
+            </foreach>
+        </if>
         order by m.trademode
     </select>
     <select id="getMarketsByTradeMode" resultType="com.muchinfo.mtp3pojos.entity.Market">
@@ -281,4 +292,21 @@
                  left join SystemManager s on t.DEFAULFCUSERID = s.areauserid
         where t.MARKETID = #{marketid}
     </select>
+    <select id="querymarkets" resultType="com.muchinfo.mtp3pojos.vo.systemsetup.SystemMarketNameResult">
+        select m.marketid,m.marketname
+        from market m
+        where m.markettype = 2
+        and m.marketstatus =2
+        and m.marketid not in(
+        SELECT distinct REGEXP_SUBSTR(mscn.marketids, '[^,]+', 1, LEVEL) AS marketid
+        FROM MarketSectionConfignew mscn
+        CONNECT BY REGEXP_SUBSTR(mscn.marketids, '[^,]+', 1, LEVEL) IS NOT NULL)
+        and m.trademode = #{ trademode }
+        <if test="selectedmarketids!=null and selectedmarketids.length>0">
+            <foreach collection="selectedmarketids" item="item" open="and m.marketid not in (" close=")" separator=",">
+                ${item}
+            </foreach>
+        </if>
+        order by m.marketid
+    </select>
 </mapper>

+ 3 - 3
mtp3-century/src/main/resources/mapper/SystemmanagerMapper.xml

@@ -333,7 +333,7 @@
             parameterType="java.lang.Integer">
         select
             m.marketsectionid,m.marketsectionname,m.pictureurl,
-            m.marketsectionnameen,m.marketsectionnamezh_tw,m.marketsectionnameth,m.marketsectionnamevi
+            m.marketsectionnameen,m.marketsectionnamezh_tw as marketsectionnamezhtw,m.marketsectionnameth,m.marketsectionnamevi,
             m.orderindex,to_char(m.modifytime,'yyyy-MM-dd hh24:mi:ss') modifytimestr,
             decode(m.modifiersrc,1,s.username,ui.customername) modifiername
         from MarketSection m
@@ -354,9 +354,9 @@
                ms.orderindex, ms.trademode,
                (select LISTAGG(m.marketname, ',')   within group (order by marketid) as marketnames
         from market m where ',' || ms.marketids || ',' like '%,' ||  m.marketid || ',%') as marketnames,
-            ms.displaynameen, ms.displaynamezh_tw, ms.displaynameth, ms.displaynamevi
+            ms.displaynameen, ms.displaynamezh_tw as displaynamezhtw, ms.displaynameth, ms.displaynamevi
         from MarketSectionConfigNew ms
-        where ms.marketsectionid = #{marketsectionid }
+        where ms.marketsectionid = #{marketsectionid}
         order by ms.orderindex
     </select>
     <select id="queryI18nConfigs" resultType="com.muchinfo.mtp3pojos.vo.I18nconfig">

+ 2 - 0
mtp3-century/src/main/resources/message_en.properties

@@ -96,6 +96,8 @@ message_error_code_system064=After the end of day market processing begins, holi
 message_error_code_system065=There are valid products in this market, and this market cannot be cancelled
 message_error_code_system066=There is a commission order in this market, and it cannot be cancelled
 message_error_code_system067=The risk rule already exists
+message_error_code_system068=There are products in use in this product group
+message_error_code_system069=Duplicate product group names
 login_error_code_001=Account or password error
 login_error_code_002=Unauthorized access is not allowed! Please contact the administrator to handle it!
 login_error_code_003=Login locked!

+ 2 - 0
mtp3-century/src/main/resources/message_th.properties

@@ -96,6 +96,8 @@ message_error_code_system064=\u0E27\u0E31\u0E19\u0E2B\u0E22\u0E38\u0E14\u0E44\u0
 message_error_code_system065=\u0E21\u0E35\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E17\u0E35\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E20\u0E32\u0E22\u0E43\u0E15\u0E49\u0E15\u0E25\u0E32\u0E14\u0E19\u0E35\u0E49\u0E41\u0E25\u0E30\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E23\u0E30\u0E1A\u0E1A\u0E15\u0E25\u0E32\u0E14\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49
 message_error_code_system066=\u0E21\u0E35\u0E15\u0E25\u0E32\u0E14\u0E19\u0E35\u0E49\u0E21\u0E35\u0E43\u0E1A\u0E21\u0E2D\u0E1A\u0E2D\u0E33\u0E19\u0E32\u0E08\u0E20\u0E32\u0E22\u0E43\u0E15\u0E49\u0E15\u0E25\u0E32\u0E14\u0E41\u0E25\u0E30\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E15\u0E25\u0E32\u0E14\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49
 message_error_code_system067=\u0E01\u0E0E\u0E04\u0E27\u0E32\u0E21\u0E40\u0E2A\u0E35\u0E48\u0E22\u0E07\u0E19\u0E35\u0E49\u0E21\u0E35\u0E2D\u0E22\u0E39\u0E48\u0E41\u0E25\u0E49\u0E27
+message_error_code_system068=\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E01\u0E25\u0E38\u0E48\u0E21\u0E19\u0E35\u0E49\u0E21\u0E35\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32\u0E20\u0E32\u0E22\u0E43\u0E15\u0E49\u0E01\u0E32\u0E23\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19
+message_error_code_system069=\u0E0A\u0E37\u0E48\u0E2D\u0E01\u0E25\u0E38\u0E48\u0E21\u0E2A\u0E34\u0E19\u0E04\u0E49\u0E32 \u0E0B\u0E49\u0E33\u0E01\u0E31\u0E19
 login_error_code_001=\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E2B\u0E23\u0E37\u0E2D\u0E23\u0E2B\u0E31\u0E2A\u0E1C\u0E48\u0E32\u0E19\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07
 login_error_code_002=\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07\u0E44\u0E14\u0E49\u0E42\u0E14\u0E22\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A\u0E2D\u0E19\u0E38\u0E0D\u0E32\u0E15! \u0E01\u0E23\u0E38\u0E13\u0E32\u0E15\u0E34\u0E14\u0E15\u0E48\u0E2D\u0E1C\u0E39\u0E49\u0E14\u0E39\u0E41\u0E25\u0E23\u0E30\u0E1A\u0E1A\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23!
 login_error_code_003=\u0E25\u0E47\u0E2D\u0E01\u0E2D\u0E34\u0E19!

+ 2 - 0
mtp3-century/src/main/resources/message_vi.properties

@@ -96,6 +96,8 @@ message_error_code_system064=Kh\u00F4ng th\u1EC3 s\u1EEDa \u0111\u1ED5i ng\u00E0
 message_error_code_system065=C\u00F3 nh\u1EEFng s\u1EA3n ph\u1EA9m c\u00F3 gi\u00E1 tr\u1ECB trong th\u1ECB tr\u01B0\u1EDDng n\u00E0y v\u00E0 kh\u00F4ng th\u1EC3 \u0111\u0103ng xu\u1EA5t kh\u1ECFi th\u1ECB tr\u01B0\u1EDDng n\u00E0y
 message_error_code_system066=C\u00F3 gi\u1EA5y \u1EE7y th\u00E1c trong th\u1ECB tr\u01B0\u1EDDng n\u00E0y, kh\u00F4ng th\u1EC3 h\u1EE7y b\u1ECF th\u1ECB tr\u01B0\u1EDDng n\u00E0y
 message_error_code_system067=Quy t\u1EAFc r\u1EE7i ro \u0111\u00E3 t\u1ED3n t\u1EA1i
+message_error_code_system068=Nh\u00F3m s\u1EA3n ph\u1EA9m n\u00E0y c\u00F3 c\u00E1c s\u1EA3n ph\u1EA9m \u0111ang \u0111\u01B0\u1EE3c s\u1EED d\u1EE5ng.
+message_error_code_system069=T\u00EAn nh\u00F3m s\u1EA3n ph\u1EA9m tr\u00F9ng l\u1EB7p
 login_error_code_001=L\u1ED7i t\u00E0i kho\u1EA3n ho\u1EB7c m\u1EADt kh\u1EA9u
 login_error_code_002=Kh\u00F4ng \u0111\u01B0\u1EE3c ph\u00E9p, kh\u00F4ng th\u1EC3 truy c\u1EADp! Vui l\u00F2ng li\u00EAn h\u1EC7 v\u1EDBi qu\u1EA3n tr\u1ECB vi\u00EAn \u0111\u1EC3 x\u1EED l\u00FD!
 login_error_code_003=Kh\u00F3a \u0111\u0103ng nh\u1EADp!

+ 2 - 0
mtp3-century/src/main/resources/message_zh-cn.properties

@@ -96,6 +96,8 @@ message_error_code_system064=\u5E02\u573A\u65E5\u7EC8\u5904\u7406\u5F00\u59CB\u5
 message_error_code_system065=\u6709\u6B64\u5E02\u573A\u4E0B\u6709\u6709\u6548\u5546\u54C1\uFF0C\u4E0D\u80FD\u6CE8\u9500\u6B64\u5E02\u573A
 message_error_code_system066=\u6709\u6B64\u5E02\u573A\u4E0B\u6709\u59D4\u6258\u5355\uFF0C\u4E0D\u80FD\u6CE8\u9500\u6B64\u5E02\u573A
 message_error_code_system067=\u8BE5\u98CE\u9669\u89C4\u5219\u5DF2\u5B58\u5728
+message_error_code_system068=\u6B64\u5546\u54C1\u7EC4\u6709\u5546\u54C1\u6B63\u5728\u4F7F\u7528\u4E2D
+message_error_code_system069=\u5546\u54C1\u7EC4\u540D\u79F0\u91CD\u590D
 login_error_code_001=\u8D26\u6237\u6216\u5BC6\u7801\u9519\u8BEF
 login_error_code_002=\u672A\u7ECF\u5141\u8BB8\uFF0C\u4E0D\u53EF\u8BBF\u95EE\uFF01\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u5904\u7406\uFF01
 login_error_code_003=\u767B\u5F55\u9501\u5B9A\uFF01

+ 2 - 0
mtp3-century/src/main/resources/message_zh-hk.properties

@@ -96,6 +96,8 @@ message_error_code_system064=\u5E02\u5834\u65E5\u7D42\u8655\u7406\u958B\u59CB\u5
 message_error_code_system065=\u6709\u6B64\u5E02\u5834\u4E0B\u6709\u6709\u6548\u5546\u54C1\uFF0C\u4E0D\u80FD\u8A3B\u92B7\u6B64\u5E02\u5834
 message_error_code_system066=\u6709\u6B64\u5E02\u5834\u4E0B\u6709\u59D4\u8A17\u55AE\uFF0C\u4E0D\u80FD\u8A3B\u92B7\u6B64\u5E02\u5834
 message_error_code_system067=\u8A72\u98A8\u96AA\u898F\u5247\u5DF2\u5B58\u5728
+message_error_code_system068=\u6B64\u5546\u54C1\u7D44\u6709\u5546\u54C1\u6B63\u5728\u4F7F\u7528\u4E2D
+message_error_code_system069=\u5546\u54C1\u7D44\u540D\u7A31\u91CD\u8907
 login_error_code_001=\u5E33\u6236\u6216\u5BC6\u78BC\u932F\u8AA4
 login_error_code_002=\u672A\u7D93\u5141\u8A31\uFF0C\u4E0D\u53EF\u8A2A\u554F\uFF01 \u8ACB\u806F\u7CFB\u7BA1\u7406\u54E1\u8655\u7406\uFF01
 login_error_code_003=\u767B\u5165\u9396\u5B9A\uFF01

+ 2 - 0
mtp3-century/src/main/resources/message_zh-tw.properties

@@ -96,6 +96,8 @@ message_error_code_system064=\u5E02\u5834\u65E5\u7D42\u8655\u7406\u958B\u59CB\u5
 message_error_code_system065=\u6709\u6B64\u5E02\u5834\u4E0B\u6709\u6709\u6548\u5546\u54C1\uFF0C\u4E0D\u80FD\u8A3B\u92B7\u6B64\u5E02\u5834
 message_error_code_system066=\u6709\u6B64\u5E02\u5834\u4E0B\u6709\u59D4\u8A17\u55AE\uFF0C\u4E0D\u80FD\u8A3B\u92B7\u6B64\u5E02\u5834
 message_error_code_system067=\u8A72\u98A8\u96AA\u898F\u5247\u5DF2\u5B58\u5728
+message_error_code_system068=\u6B64\u5546\u54C1\u7D44\u6709\u5546\u54C1\u6B63\u5728\u4F7F\u7528\u4E2D
+message_error_code_system069=\u5546\u54C1\u7D44\u540D\u7A31\u91CD\u8907
 login_error_code_001=\u5E33\u6236\u6216\u5BC6\u78BC\u932F\u8AA4
 login_error_code_002=\u672A\u7D93\u5141\u8A31\uFF0C\u4E0D\u53EF\u8A2A\u554F\uFF01 \u8ACB\u806F\u7CFB\u7BA1\u7406\u54E1\u8655\u7406\uFF01
 login_error_code_003=\u767B\u5165\u9396\u5B9A\uFF01

+ 2 - 0
mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/MessageType.java

@@ -104,6 +104,8 @@ public enum MessageType {
     MESSAGE_ERROR_CODE_SYSTEM065("message_error_code_system065", "有此市场下有有效商品,不能注销此市场"),
     MESSAGE_ERROR_CODE_SYSTEM066("message_error_code_system066", "有此市场下有委托单,不能注销此市场"),
     MESSAGE_ERROR_CODE_SYSTEM067("message_error_code_system067", "该风险规则已存在"),
+    MESSAGE_ERROR_CODE_SYSTEM068("message_error_code_system068", "此商品组有商品正在使用中"),
+    MESSAGE_ERROR_CODE_SYSTEM069("message_error_code_system069", "商品组名称重复"),
 
     LOGIN_ERROR_CODE_001("login_error_code_001", "账户或密码错误"),
     LOGIN_ERROR_CODE_002("login_error_code_002", "未经允许,不可访问!请联系管理员处理"),

+ 1 - 1
mtp3-common/src/main/java/com/muchinfo/mtp3common/enumtype/SysEnums.java

@@ -689,7 +689,7 @@ public class SysEnums {
         DDGP(50, "订单挂牌"),
         DDZS(52, "订单做市"),
         DJSC(53, "点价商城"),
-
+        JFSC(54, "积分商城"),
         GZ62(62, "集采交易"),
         GZ63(63, "预售交易"),
 

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErmcpGgconvertconfigMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.ErmcpGgconvertconfig;
+
+/**
+ * <p>
+ * 期货品种系数表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+public interface IErmcpGgconvertconfigMapper extends BaseMapper<ErmcpGgconvertconfig> {
+
+}

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErms2WrsconvertdetailMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.Erms2Wrsconvertdetail;
+
+/**
+ * <p>
+ * 现货商品折算配置明细表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+public interface IErms2WrsconvertdetailMapper extends BaseMapper<Erms2Wrsconvertdetail> {
+
+}

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IErmsMiddlegoodsMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.ErmsMiddlegoods;
+
+/**
+ * <p>
+ * 套保品种表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+public interface IErmsMiddlegoodsMapper extends BaseMapper<ErmsMiddlegoods> {
+
+}

+ 15 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsMapper.java

@@ -1,13 +1,20 @@
 package com.muchinfo.mtp3interface.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.muchinfo.mtp3pojos.entity.Goods;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptradefee;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptraderule;
 import com.muchinfo.mtp3pojos.vo.common.GoodsSelectParam;
 import com.muchinfo.mtp3pojos.vo.common.GoodsSelectResult;
 import com.muchinfo.mtp3pojos.vo.investor.PersonalizationDelParam;
 import com.muchinfo.mtp3pojos.vo.organ.GoodsForRoleVo;
 import com.muchinfo.mtp3pojos.vo.reportform.GoodsReportParam;
 import com.muchinfo.mtp3pojos.vo.reportform.GoodsReportResult;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsGroupSetQueryParam;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsGroupSetQueryResult;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsQueryParam;
+import com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup.GoodsQueryResult;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -35,4 +42,12 @@ public interface IGoodsMapper extends BaseMapper<Goods> {
     List<GoodsForRoleVo> queryAreaGoodsConfig(@Param("userid") Long userid);
 
     List<Goods> getNoTradeConfigGoodsForAccount(@Param("vo") PersonalizationDelParam param);
+
+    IPage<GoodsGroupSetQueryResult> groupSetQuery(IPage<GoodsGroupSetQueryResult> page, @Param("vo") GoodsGroupSetQueryParam param);
+
+    List<Goodsgrouptraderule> getTradeRuleByGroupid(Long goodsgroupid);
+
+    List<Goodsgrouptradefee> getTradeFeeByGroupid(Long goodsgroupid);
+
+    IPage<GoodsQueryResult> goodsQuery(IPage<GoodsQueryResult> page,  @Param("vo") GoodsQueryParam param);
 }

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsgrouptradefeeMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptradefee;
+
+/**
+ * <p>
+ * 商品组交易费用表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-11
+ */
+public interface IGoodsgrouptradefeeMapper extends BaseMapper<Goodsgrouptradefee> {
+
+}

+ 16 - 0
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IGoodsgrouptraderuleMapper.java

@@ -0,0 +1,16 @@
+package com.muchinfo.mtp3interface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptraderule;
+
+/**
+ * <p>
+ * 商品组交易规则表 Mapper 接口
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-11
+ */
+public interface IGoodsgrouptraderuleMapper extends BaseMapper<Goodsgrouptraderule> {
+
+}

+ 5 - 1
mtp3-interface/src/main/java/com/muchinfo/mtp3interface/mapper/IMarketMapper.java

@@ -7,6 +7,8 @@ import com.muchinfo.mtp3pojos.entity.Marketcalendar;
 import com.muchinfo.mtp3pojos.entity.Usergroup;
 import com.muchinfo.mtp3pojos.vo.MarketDto;
 import com.muchinfo.mtp3pojos.vo.investor.PersonalizationDelParam;
+import com.muchinfo.mtp3pojos.vo.systemsetup.SystemMarketNameResult;
+import com.muchinfo.mtp3pojos.vo.systemsetup.SystemMarketSetResult;
 import com.muchinfo.mtp3pojos.vo.tradingmarket.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -41,7 +43,7 @@ public interface IMarketMapper extends BaseMapper<Market> {
 
     List<Market> queryoperatemarkets(@Param("areauserid") Long areauserid);
 
-    List<Market> queryTradeModeListNew();
+    List<SystemMarketSetResult> queryTradeModeListNew(@Param("editmarketsectionid") Integer editmarketsectionid, @Param("selectedmarketids") String[] strings);
 
     List<Market> getMarketsByTradeMode(@Param("exchareaid") Long exchareaid, @Param("status") List<Integer> status);
 
@@ -56,4 +58,6 @@ public interface IMarketMapper extends BaseMapper<Market> {
     IPage<MarketManageResult> querymarketmanage(IPage<MarketManageResult> page, @Param("vo") MarketManageParam param);
 
     MarketDto queryMarketExtension(Long marketid);
+
+    List<SystemMarketNameResult> querymarkets(@Param("trademode") Long trademode, @Param("selectedmarketids") String[] splits);
 }

+ 65 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/ErmcpGgconvertconfig.java

@@ -0,0 +1,65 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 期货品种系数表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ERMCP_GGCONVERTCONFIG")
+@ApiModel(value="ErmcpGgconvertconfig对象", description="期货品种系数表")
+public class ErmcpGgconvertconfig extends Model<ErmcpGgconvertconfig> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "ConfigID(SEQ_ERMCP_GGCONVERTCONFIG)")
+    @TableId(value = "CONFIGID", type = IdType.INPUT)
+    private Long configid;
+
+    @ApiModelProperty(value = "源期货品种ID(商品组)")
+    @TableField("SRCGOODSGROUPID")
+    private Long srcgoodsgroupid;
+
+    @ApiModelProperty(value = "目标期货品种ID(商品组)")
+    @TableField("DESTGOODSGROUPID")
+    private Long destgoodsgroupid;
+
+    @ApiModelProperty(value = "期货品种系数")
+    @TableField("CONVERTRATIO")
+    private BigDecimal convertratio;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("MODIFIERID")
+    private Long modifierid;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField("MODIFYTIME")
+    private Date modifytime;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.configid;
+    }
+
+}

+ 72 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Erms2Wrsconvertdetail.java

@@ -0,0 +1,72 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 现货商品折算配置明细表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ERMS2_WRSCONVERTDETAIL")
+@ApiModel(value="Erms2Wrsconvertdetail对象", description="现货商品折算配置明细表")
+public class Erms2Wrsconvertdetail extends Model<Erms2Wrsconvertdetail> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "现货商品ID")
+    private Long wrstandardid;
+
+    @ApiModelProperty(value = "现货品种ID")
+    @TableField("DELIVERYGOODSID")
+    private Long deliverygoodsid;
+
+    @ApiModelProperty(value = "套保品种ID")
+    @TableField("MIDDLEGOODSID")
+    private Long middlegoodsid;
+
+    @ApiModelProperty(value = "现货折算系数")
+    @TableField("CONVERTRATIO")
+    private BigDecimal convertratio;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("MODIFIERID")
+    private Long modifierid;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField("MODIFYTIME")
+    private Date modifytime;
+
+    @ApiModelProperty(value = "成本占比")
+    @TableField("SHARERATIO")
+    private BigDecimal shareratio;
+
+    @ApiModelProperty(value = "成本权重")
+    @TableField("COSTRATIO")
+    private BigDecimal costratio;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.wrstandardid;
+    }
+
+}

+ 123 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/ErmsMiddlegoods.java

@@ -0,0 +1,123 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 套保品种表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ERMS_MIDDLEGOODS")
+@ApiModel(value="ErmsMiddlegoods对象", description="套保品种表")
+@KeySequence(value = "SEQ_ERMS_MIDDLEGOODS")
+public class ErmsMiddlegoods extends Model<ErmsMiddlegoods> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "套保品种ID(SEQ_ERMS_MIDDLEGOODS)")
+    @TableId(value = "CONFIGID", type = IdType.INPUT)
+    private Long middlegoodsid;
+
+    @ApiModelProperty(value = "套保品种名称")
+    @TableField("MIDDLEGOODSNAME")
+    private String middlegoodsname;
+
+    @ApiModelProperty(value = "套保品种代码")
+    @TableField("MIDDLEGOODSCODE")
+    private String middlegoodscode;
+
+    @ApiModelProperty(value = "套保品种单位ID")
+    @TableField("GOODSUNITID")
+    private Integer goodsunitid;
+
+    @ApiModelProperty(value = "关联交易商品ID")
+    @TableField("RELATEDGOODSID")
+    private Long relatedgoodsid;
+
+    @ApiModelProperty(value = "估价系数")
+    @TableField("EVALUATERATIO")
+    private BigDecimal evaluateratio;
+
+    @ApiModelProperty(value = "是否有效 - 0:无效 1:有效")
+    @TableField("ISVALID")
+    private Integer isvalid;
+
+    @ApiModelProperty(value = "数量小数位")
+    @TableField("QTYDECIMALPLACE")
+    private Integer qtydecimalplace;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("CREATORID")
+    private Long creatorid;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("CREATETIME")
+    private Date createtime;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("MODIFIERID")
+    private Long modifierid;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField("MODIFYTIME")
+    private Date modifytime;
+
+    @ApiModelProperty(value = "关联商品类型 - 1:期货合约 2:现货品种")
+    @TableField("RELATEDGOODSTYPE")
+    private Integer relatedgoodstype;
+
+    @ApiModelProperty(value = "套保比率")
+    @TableField("NEEDHEDGERATIO")
+    private BigDecimal needhedgeratio;
+
+    @ApiModelProperty(value = "机构用户ID")
+    @TableField("AREAUSERID")
+    private Long areauserid;
+
+    @ApiModelProperty(value = "关联期货品种ID")
+    @TableField("GOODSGROUPID")
+    private Long goodsgroupid;
+
+    @ApiModelProperty(value = "备注")
+    @TableField("REMARK")
+    private String remark;
+
+    @ApiModelProperty(value = "套利比率")
+    @TableField("NEEDARBITRAGERATIO")
+    private BigDecimal needarbitrageratio;
+
+    @ApiModelProperty(value = "现货暂定价")
+    @TableField("SPOTTMPPRICE")
+    private BigDecimal spottmpprice;
+
+    @ApiModelProperty(value = "期货暂定价")
+    @TableField("FUTURETMPPRICE")
+    private BigDecimal futuretmpprice;
+
+    @ApiModelProperty(value = "净敞口告警值")
+    @TableField("NETEXPOSUREALARMVALUE")
+    private BigDecimal netexposurealarmvalue;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.middlegoodsid;
+    }
+
+}

+ 71 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Goodsgrouptradefee.java

@@ -0,0 +1,71 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 商品组交易费用表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("GOODSGROUPTRADEFEE")
+@ApiModel(value="Goodsgrouptradefee对象", description="商品组交易费用表")
+public class Goodsgrouptradefee extends Model<Goodsgrouptradefee> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "商品组ID")
+    @TableField("GOODSGROUPID")
+    private Long goodsgroupid;
+
+    @ApiModelProperty(value = "交易费用ID - 101建仓(买)手续费 102平仓(卖)手续费 103买递延费(仓储费) 103卖递延费 104买交割手续费 105卖交割手续费")
+    private Integer tradefeeid;
+
+    @ApiModelProperty(value = "费用算法 - 1:比率 2:固定")
+    @TableField("FEEALGORITHM")
+    private Integer feealgorithm;
+
+    @ApiModelProperty(value = "交易所费用值")
+    @TableField("EXCHANGEVALUE")
+    private BigDecimal exchangevalue;
+
+    @ApiModelProperty(value = "会员费用默认值")
+    @TableField("MEMBERDEFAULTVALUE")
+    private BigDecimal memberdefaultvalue;
+
+    @ApiModelProperty(value = "会员费用最小值")
+    @TableField("MEMBERMINVALUE")
+    private BigDecimal memberminvalue;
+
+    @ApiModelProperty(value = "会员费用最大值")
+    @TableField("MEMBERMAXVALUE")
+    private BigDecimal membermaxvalue;
+
+    @ApiModelProperty(value = "市场ID")
+    @TableField("MARKETID")
+    private Long marketid;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.tradefeeid;
+    }
+
+}

+ 55 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/entity/Goodsgrouptraderule.java

@@ -0,0 +1,55 @@
+package com.muchinfo.mtp3pojos.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 商品组交易规则表
+ * </p>
+ *
+ * @author XKF
+ * @since 2025-09-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("GOODSGROUPTRADERULE")
+@ApiModel(value="Goodsgrouptraderule对象", description="商品组交易规则表")
+public class Goodsgrouptraderule extends Model<Goodsgrouptraderule> {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "商品组ID")
+    private Long goodsgroupid;
+
+    @ApiModelProperty(value = "交易规则 - 101 最大买持仓量  102 最大卖持仓量 103 单笔最小建仓量 104 单笔最大建仓量 105 手续费收费规则 106 交易T+N 107 上市首日涨停 108 上市首日跌停 109 上市首日参考价 110 涨停 111 跌停 112 市价最大偏移范围 113 止损点差 114 止盈点差 115 单笔最小交割数量 116 单笔最大交割数量 ")
+    @TableField("RULEID")
+    private Long ruleid;
+
+    @ApiModelProperty(value = "参数值")
+    @TableField("PARAMVALUE")
+    private BigDecimal paramvalue;
+
+    @ApiModelProperty(value = "市场ID")
+    @TableField("MARKETID")
+    private Long marketid;
+
+
+    @Override
+    public Serializable pkVal() {
+        return this.goodsgroupid;
+    }
+
+}

+ 5 - 1
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/ListMarketSectionConfig.java

@@ -19,11 +19,15 @@ public class ListMarketSectionConfig {
 
     private String displaynameen;
 
-    private String displaynamezh_tw;
+    private String displaynamezhtw;
 
     private String displaynameth;
 
     private String displaynamevi;
 
     private String marketnames;
+
+    private Long trademode;
+
+    private String marketids;
 }

+ 19 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketNameResult.java

@@ -0,0 +1,19 @@
+package com.muchinfo.mtp3pojos.vo.systemsetup;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "SystemMarketNameResult对象", description = "")
+public class SystemMarketNameResult {
+
+    private Long marketid;
+
+    private String marketname;
+}

+ 1 - 1
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSectionAddParam.java

@@ -13,7 +13,7 @@ import java.util.List;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-@ApiModel(value = "SystemMarketSectionAddParam对象", description = "修改错误码")
+@ApiModel(value = "SystemMarketSectionAddParam对象", description = "市场板块设置新增")
 public class SystemMarketSectionAddParam {
 
     @ApiModelProperty(value = "名称(中文)")

+ 1 - 1
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSetDetail.java

@@ -22,7 +22,7 @@ public class SystemMarketSetDetail {
 
     private String marketsectionnameen;
 
-    private String marketsectionnamezh_tw;
+    private String marketsectionnamezhtw;
 
     private String marketsectionnameth;
 

+ 23 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/systemsetup/SystemMarketSetResult.java

@@ -0,0 +1,23 @@
+package com.muchinfo.mtp3pojos.vo.systemsetup;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value = "SystemMarketSetResult对象", description = "")
+public class SystemMarketSetResult {
+
+    private Long trademode;
+
+    private String trademodename;
+
+    List<SystemMarketNameResult> results;
+}

+ 43 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetDetailResult.java

@@ -0,0 +1,43 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import com.muchinfo.mtp3pojos.entity.Goodsgroup;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptradefee;
+import com.muchinfo.mtp3pojos.entity.Goodsgrouptraderule;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsGroupSetDetailResult对象", description="商品组设置详情")
+public class GoodsGroupSetDetailResult {
+
+    @ApiModelProperty(value = "所属市场")
+    private String marketName;
+
+    private Integer tradeMode;
+
+    private String goodsgroupname;
+
+    private String modifierName;
+
+    private String quoteSourceGroupName;
+
+    private String creatorName;
+
+    private Goodsgroup goodsgroup;
+
+    private List<Goodsgrouptraderule> groupTradeRule;
+
+    private List<Goodsgrouptradefee> groupTradeFee;
+
+    private Integer zorefee;
+
+}

+ 37 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetQueryParam.java

@@ -0,0 +1,37 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsGroupSetQueryParam对象", description="商品组设置请求")
+public class GoodsGroupSetQueryParam {
+
+    @ApiModelProperty(value = "所属市场")
+    private Long marketid;
+
+    @ApiModelProperty(value = "商品组名称")
+    private String goodsgroupname;
+
+    @ApiModelProperty(value = "状  态")
+    private Integer goodsgroupstatus;
+
+    private Integer pageNum;
+
+    private Integer pageSize;
+
+    private Long exchareaid;
+
+    private List<Integer> filterTrademodeList;
+
+    private Integer tradeMode;
+}

+ 33 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsGroupSetQueryResult.java

@@ -0,0 +1,33 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsGroupSetQueryResult对象", description="商品组设置响应")
+public class GoodsGroupSetQueryResult {
+
+    @ApiModelProperty(value = "商品组名称")
+    private String goodsgroupname;
+
+    @ApiModelProperty(value = "所属市场")
+    private String marketName;
+
+    @ApiModelProperty(value = "状态")
+    private Integer goodsgroupstatus;
+
+    @ApiModelProperty(value = "最后修改时间")
+    private Date modifytime;
+
+    @ApiModelProperty(value = "操作")
+    private Long goodsgroupid;
+}

+ 17 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryDetailResult.java

@@ -0,0 +1,17 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsQueryDetailResult对象", description="商品设置请求")
+public class GoodsQueryDetailResult {
+
+    private Long goodsid;
+}

+ 38 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryParam.java

@@ -0,0 +1,38 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsQueryParam对象", description="商品设置请求")
+public class GoodsQueryParam {
+
+    private Integer type;
+
+    private Long marketid;
+
+    private String goodscode;
+
+    private String goodsname;
+
+    private Long goodsgroupid;
+
+    private Integer goodsstatus;
+
+    private Integer pageNum;
+
+    private Integer pageSize;
+
+    private Long exchareaid;
+
+    //过滤交易模式
+    private List<Integer> filterTrademodeList ;
+}

+ 41 - 0
mtp3-pojos/src/main/java/com/muchinfo/mtp3pojos/vo/tradingmarket/goodssetup/GoodsQueryResult.java

@@ -0,0 +1,41 @@
+package com.muchinfo.mtp3pojos.vo.tradingmarket.goodssetup;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Builder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel(value="GoodsQueryResult对象", description="商品设置响应")
+public class GoodsQueryResult {
+
+    @ApiModelProperty(value = "商品代码")
+    private String goodscode;
+
+    @ApiModelProperty(value = "商品名称")
+    private String goodsname;
+
+    @ApiModelProperty(value = "所属商品组")
+    private String goodsgroupname;
+
+    @ApiModelProperty(value = "所属市场")
+    private String marketname;
+
+    @ApiModelProperty(value = "状态")
+    private Integer goodsstatus;
+
+    @ApiModelProperty(value = "变更审核说明")
+    private Integer modifystatus;
+
+    @ApiModelProperty(value = "上市时间")
+    private Date listingdate;
+
+    private Long goodsid;
+}