Forráskód Böngészése

修改班结信息展示

MS-QJVSRANLTYEO\Administrator 4 éve
szülő
commit
3d0e31bedb

+ 170 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/controller/StationClassStructureController.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -166,6 +167,7 @@ public class StationClassStructureController extends BaseController
             //获取上次班结时间
             PayOrder order=new PayOrder();
             order.setStationId(stationId);
+            order.setStatus("2");
             DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             beginTime= dateFormat.format(sss.getClassStructureDate());
             order.setBeginTime(beginTime);
@@ -300,4 +302,172 @@ public class StationClassStructureController extends BaseController
     {
         return toAjax(stationClassStructureService.deleteStationClassStructureByIds(ids));
     }
+
+    /**
+     * 查询上次班结数据
+     */
+    @PreAuthorize("@ss.hasPermi('station:structure:getAgeClassStructure')")
+    @GetMapping("/getAgeClassStructure")
+    public AjaxResult getAgeClassStructure(StationClassStructure stationClassStructure)
+    {
+        stationClassStructure.setStationId(Long.valueOf("1"));
+        return AjaxResult.success(stationClassStructureService.selectDistnctClassStructure(stationClassStructure));
+    }
+    //初始化数据 根据员工汇总
+    @PreAuthorize("@ss.hasPermi('station:structure:selectPersonnelStructure')")
+    @GetMapping("/selectPersonnelStructure")
+    public TableDataInfo selectPersonnelStructure(StationClassStructure stationClassStructure)
+    {
+        //根据油站查询出上次班结时间,
+        stationClassStructure.setStationId(Long.valueOf("1"));
+        StationClassStructure  structure=  stationClassStructureService.selectStationClassStructureMax(stationClassStructure);
+        List<StationClassStructure> list = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if(structure!=null){
+            System.out.println("日期:"+structure.getClassStructureDate());
+            PayOrder payOrder =new PayOrder();
+            payOrder.setStationId(structure.getStationId());
+            payOrder.setStatus("2");
+            payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
+            List<PayOrder> payOrderList =  payOrderService.selectPersonnelStructure(payOrder);
+            for(PayOrder order:payOrderList){
+                StationClassStructure classStructure =new StationClassStructure();
+                classStructure.setOilPersonnel(order.getOilPersonnel());
+                classStructure.setOilGun(order.getOilGun());
+                classStructure.setAmt(order.getAmt());
+                classStructure.setOrderLiters(order.getOrderLiters());
+                classStructure.setOrderNo(order.getOrderNo());
+                list.add(classStructure);
+            }
+        }else{
+           //根据上次班结时间,和油站去订单表中查询数据,并按照人员汇总数据
+            PayOrder payOrder =new PayOrder();
+            payOrder.setStatus("2");
+            List<PayOrder> payOrderList =  payOrderService.selectPersonnelStructure(payOrder);
+            for(PayOrder order:payOrderList){
+                StationClassStructure classStructure =new StationClassStructure();
+                classStructure.setOilPersonnel(order.getOilPersonnel());
+                classStructure.setOilGun(order.getOilGun());
+                classStructure.setAmt(order.getAmt());
+                classStructure.setOrderLiters(order.getOrderLiters());
+                classStructure.setOrderNo(order.getOrderNo());
+                list.add(classStructure);
+            }
+        }
+        return getTable(list);
+    }
+
+    /**
+     * 初始化数据班结数据,根据油品汇总
+     * @param stationClassStructure
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('station:structure:selectOilStructure')")
+    @GetMapping("/selectOilStructure")
+    public TableDataInfo selectOilStructure(StationClassStructure stationClassStructure)
+    {
+        //根据油站查询出上次班结时间,
+        stationClassStructure.setStationId(Long.valueOf("1"));
+        StationClassStructure  structure=  stationClassStructureService.selectStationClassStructureMax(stationClassStructure);
+        List<StationClassStructure> list = new ArrayList<>();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //根据上次班结时间,和油站去订单表中查询数据,并按照人员汇总数据
+       if(structure!=null){
+           PayOrder payOrder =new PayOrder();
+           payOrder.setStatus("2");
+           payOrder.setStationId(structure.getStationId());
+           System.out.println("日期:"+structure.getClassStructureDate());
+           payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
+           List<PayOrder> payOrderList =  payOrderService.selectOilStructure(payOrder);
+           for(PayOrder order:payOrderList){
+               StationClassStructure classStructure =new StationClassStructure();
+               classStructure.setOilName(order.getOilName());
+               classStructure.setOilGun(order.getOilGun());
+               classStructure.setAmt(order.getAmt());
+               classStructure.setOrderLiters(order.getOrderLiters());
+               classStructure.setOrderNo(order.getOrderNo());
+               list.add(classStructure);
+           }
+       }else{
+           PayOrder payOrder =new PayOrder();
+           payOrder.setStatus("2");
+           List<PayOrder> payOrderList =  payOrderService.selectOilStructure(payOrder);
+           for(PayOrder order:payOrderList){
+               StationClassStructure classStructure =new StationClassStructure();
+               classStructure.setOilName(order.getOilName());
+               classStructure.setOilGun(order.getOilGun());
+               classStructure.setAmt(order.getAmt());
+               classStructure.setOrderLiters(order.getOrderLiters());
+               classStructure.setOrderNo(order.getOrderNo());
+               list.add(classStructure);
+           }
+       }
+
+        return getTable(list);
+    }
+    /**
+     * 初始化数据班结数据,根据员工/支付方式汇总
+     * @param stationClassStructure
+     * @return
+     */
+    @PreAuthorize("@ss.hasPermi('station:structure:selectPersonnelPayStructure')")
+    @GetMapping("/selectPersonnelPayStructure")
+    public TableDataInfo selectPersonnelPayStructure(StationClassStructure stationClassStructure)
+    {
+        //根据油站查询出上次班结时间,
+        stationClassStructure.setStationId(Long.valueOf("1"));
+        StationClassStructure  structure=  stationClassStructureService.selectStationClassStructureMax(stationClassStructure);
+        List<StationClassStructure> list = new ArrayList<>();
+        //根据上次班结时间,和油站去订单表中查询数据,并按照人员汇总数据
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if(structure !=null){
+            PayOrder payOrder =new PayOrder();
+            payOrder.setStationId(structure.getStationId());
+            payOrder.setStatus("2");
+            System.out.println("日期:"+structure.getClassStructureDate());
+            payOrder.setBeginTime(sdf.format(structure.getClassStructureDate()));
+            List<PayOrder> payOrderList =  payOrderService.selectPersonnelPayStructure(payOrder);
+            for(PayOrder order:payOrderList){
+                StationClassStructure classStructure =new StationClassStructure();
+                classStructure.setOilPersonnel(order.getOilPersonnel());
+                classStructure.setOilGun(order.getOilGun());
+                classStructure.setWxNum(order.getWxNum());
+                classStructure.setZfbNum(order.getZfbNum());
+                classStructure.setXjNum(order.getXjNum());
+                classStructure.setDiscountAmt(order.getDiscountAmt());
+                classStructure.setDiscountCouponAmt(order.getDiscountCouponAmt());
+                classStructure.setWxAmt(order.getWxAmt());
+                classStructure.setZfbAmt(order.getZfbAmt());
+                classStructure.setXjAmt(order.getXjAmt());
+                classStructure.setMemberAmt(order.getMemberAmt());
+                classStructure.setOrderLiters(order.getOrderLiters());
+                classStructure.setOrderNo(order.getOrderNo());
+                list.add(classStructure);
+            }
+        }else{
+            PayOrder payOrder =new PayOrder();
+            payOrder.setStatus("2");
+            List<PayOrder> payOrderList =  payOrderService.selectPersonnelPayStructure(payOrder);
+            for(PayOrder order:payOrderList){
+                StationClassStructure classStructure =new StationClassStructure();
+                classStructure.setOilPersonnel(order.getOilPersonnel());
+                classStructure.setOilGun(order.getOilGun());
+                classStructure.setWxNum(order.getWxNum());
+                classStructure.setZfbNum(order.getZfbNum());
+                classStructure.setXjNum(order.getXjNum());
+                classStructure.setDiscountAmt(order.getDiscountAmt());
+                classStructure.setDiscountCouponAmt(order.getDiscountCouponAmt());
+                classStructure.setWxAmt(order.getWxAmt());
+                classStructure.setZfbAmt(order.getZfbAmt());
+                classStructure.setXjAmt(order.getXjAmt());
+                classStructure.setMemberAmt(order.getMemberAmt());
+                classStructure.setOrderLiters(order.getOrderLiters());
+                classStructure.setOrderNo(order.getOrderNo());
+                list.add(classStructure);
+            }
+        }
+        return getTable(list);
+    }
+
+
 }

+ 35 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/domain/PayOrder.java

@@ -165,6 +165,41 @@ public class PayOrder extends BaseEntity
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date likePayDate;
 
+    /**
+     * 展示信息别名
+     * @return
+     */
+    //微信数量
+    private Integer wxNum;
+    // 支付宝支付数量
+    private Integer zfbNum;
+    //现金支付数量
+    private Integer xjNum;
+
+    public Integer getWxNum() {
+        return wxNum;
+    }
+
+    public void setWxNum(Integer wxNum) {
+        this.wxNum = wxNum;
+    }
+
+    public Integer getZfbNum() {
+        return zfbNum;
+    }
+
+    public void setZfbNum(Integer zfbNum) {
+        this.zfbNum = zfbNum;
+    }
+
+    public Integer getXjNum() {
+        return xjNum;
+    }
+
+    public void setXjNum(Integer xjNum) {
+        this.xjNum = xjNum;
+    }
+
     public Date getLikePayDate() {
         return likePayDate;
     }

+ 3 - 4
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/domain/StationClassStructure.java

@@ -225,12 +225,11 @@ public class StationClassStructure extends BaseEntity
      * 出参
      * @param id
      */
-    @Excel(name = "微信数量")
+   //微信数量
     private Integer wxNum;
-    @Excel(name = "支付宝支付数量")
+   // 支付宝支付数量
     private Integer zfbNum;
-
-    @Excel(name = "现金支付数量")
+    //现金支付数量
     private Integer xjNum;
 
     public Integer getWxNum() {

+ 21 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/mapper/PayOrderMapper.java

@@ -105,4 +105,25 @@ public interface PayOrderMapper
      * @return
      */
     public List<PayOrder> selectPayOrderExport(PayOrder payOrder);
+
+    /**
+     * 查询数据,根据员工汇总数据
+     * @param payOrder
+     * @return
+     */
+    public List<PayOrder> selectPersonnelStructure(PayOrder payOrder);
+
+    /**
+     * 查询数据,根据员工汇总数据
+     * @param payOrder
+     * @return
+     */
+    public List<PayOrder> selectOilStructure(PayOrder payOrder);
+
+    /**
+     * 初始化数据班结数据,根据员工/支付方式汇总
+     * @param payOrder
+     * @return
+     */
+    public List<PayOrder> selectPersonnelPayStructure(PayOrder payOrder);
 }

+ 21 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/IPayOrderService.java

@@ -101,4 +101,25 @@ public interface IPayOrderService
      * @return
      */
     public List<PayOrder> selectPayOrderExport(PayOrder payOrder);
+
+    /**
+     * 查询数据,根据员工汇总数据
+     * @param payOrder
+     * @return
+     */
+    public  List<PayOrder> selectPersonnelStructure(PayOrder payOrder);
+
+    /**
+     * 查询数据, 根据油品汇总
+     * @param payOrder
+     * @return
+     */
+    public List<PayOrder> selectOilStructure(PayOrder payOrder);
+
+    /**
+     * 初始化数据班结数据,根据员工/支付方式汇总
+     * @param payOrder
+     * @return
+     */
+    public List<PayOrder> selectPersonnelPayStructure(PayOrder payOrder);
 }

+ 3 - 2
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/IStationClassStructureService.java

@@ -67,7 +67,7 @@ public interface IStationClassStructureService
     public List<StationClassStructure> listPersonnelStructure(StationClassStructure stationClassStructure);
 
     /**
-     * 查询该油站信息
+     * 查询该油站信息最后一次班结信息
      * @param classes
      * @return
      */
@@ -109,5 +109,6 @@ public interface IStationClassStructureService
      * @param stationClassStructure
      * @return
      */
-    List<StationClassStructure> selectStationClassStructureExport(StationClassStructure stationClassStructure);
+    public List<StationClassStructure> selectStationClassStructureExport(StationClassStructure stationClassStructure);
+
 }

+ 30 - 0
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/service/impl/PayOrderServiceImpl.java

@@ -160,4 +160,34 @@ public class PayOrderServiceImpl implements IPayOrderService
         return payOrderMapper.selectPayOrderExport(payOrder);
     }
 
+    /**
+     * 查询数据,根据员工汇总数据
+     * @param payOrder
+     * @return
+     */
+    @Override
+    public List<PayOrder> selectPersonnelStructure(PayOrder payOrder) {
+        return payOrderMapper.selectPersonnelStructure(payOrder);
+    }
+
+    /**
+     *初始化数据班结数据,根据油品汇总
+     * @param payOrder
+     * @return
+     */
+    @Override
+    public List<PayOrder> selectOilStructure(PayOrder payOrder) {
+        return payOrderMapper.selectOilStructure(payOrder);
+    }
+
+    /**
+     * 初始化数据班结数据,根据员工/支付方式汇总
+     * @param payOrder
+     * @return
+     */
+    @Override
+    public List<PayOrder> selectPersonnelPayStructure(PayOrder payOrder) {
+        return payOrderMapper.selectPersonnelPayStructure(payOrder);
+    }
+
 }

+ 38 - 38
Yijia-SaaS/yijia-station/src/main/java/com/yijia/station/task/SaticScheduleTask.java

@@ -29,42 +29,42 @@ public class SaticScheduleTask {
     //3.添加定时任务
    // @Scheduled(cron = "0/5 * * * * ?")
     //或直接指定时间间隔,例如:5秒 5000
-    @Scheduled(fixedRate=5000)
-    private void configureTasks() throws ParseException {
-        //获取当前时间 yyyy-MM-dd HH:mm:ss
-        String newdate = DateUtils.getTime();
-        System.err.println("执行静态定时任务时间: " + newdate);
-        //查询油品调价列表 查询出未调价的信息
-        StationOilPriceAdjust stationOilPriceAdjust =new StationOilPriceAdjust();
-        stationOilPriceAdjust.setStatus("1");
-        stationOilPriceAdjust.setTakeEffectStatus("2");
-        stationOilPriceAdjust.setEndTime(newdate);
-        List<StationOilPriceAdjust>  oilPriceAdjustList=stationOilPriceAdjustService.selectStationOilPriceAdjustList(stationOilPriceAdjust);
-        //循环查看 调价的生效时间是否和当前时间相符
-        for(StationOilPriceAdjust adjust: oilPriceAdjustList ){
-            //修改油品价格根据油品价格id
-            StationOilPrice oilPrice=new StationOilPrice();
-            oilPrice.setOilPriceId(adjust.getOilPriceId());
-            oilPrice.setOilPrice(adjust.getOilAdjustPrice());
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            Date sdate = sdf.parse(newdate);
-            oilPrice.setDate(sdate);
-            stationOilPriceService.updateStationOilPrice(oilPrice);
-            //修改油枪信息中的价格
-            StationOilGun gun =new StationOilGun();
-            gun.setStationId(adjust.getStationId());
-            gun.setOilName(adjust.getOilName());
-            List<StationOilGun> listGun = stationOilGunService.selectStationOilGunList(gun);
-            for(StationOilGun oilGun: listGun ){
-                StationOilGun stationOilGun =new StationOilGun();
-                stationOilGun.setOilPrice(adjust.getOilAdjustPrice());
-                stationOilGun.setOilGunId(oilGun.getOilGunId());
-                stationOilGunService.updateStationOilGun(stationOilGun);
-            }
-            StationOilPriceAdjust priceAdjust=new StationOilPriceAdjust();
-            priceAdjust.setStatus("2");
-            priceAdjust.setAdjustPriceId(adjust.getAdjustPriceId());
-            stationOilPriceAdjustService.updateStationOilPriceAdjust(priceAdjust);
-        }
-    }
+//    @Scheduled(fixedRate=5000)
+//    private void configureTasks() throws ParseException {
+//        //获取当前时间 yyyy-MM-dd HH:mm:ss
+//        String newdate = DateUtils.getTime();
+//        System.err.println("执行静态定时任务时间: " + newdate);
+//        //查询油品调价列表 查询出未调价的信息
+//        StationOilPriceAdjust stationOilPriceAdjust =new StationOilPriceAdjust();
+//        stationOilPriceAdjust.setStatus("1");
+//        stationOilPriceAdjust.setTakeEffectStatus("2");
+//        stationOilPriceAdjust.setEndTime(newdate);
+//        List<StationOilPriceAdjust>  oilPriceAdjustList=stationOilPriceAdjustService.selectStationOilPriceAdjustList(stationOilPriceAdjust);
+//        //循环查看 调价的生效时间是否和当前时间相符
+//        for(StationOilPriceAdjust adjust: oilPriceAdjustList ){
+//            //修改油品价格根据油品价格id
+//            StationOilPrice oilPrice=new StationOilPrice();
+//            oilPrice.setOilPriceId(adjust.getOilPriceId());
+//            oilPrice.setOilPrice(adjust.getOilAdjustPrice());
+//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//            Date sdate = sdf.parse(newdate);
+//            oilPrice.setDate(sdate);
+//            stationOilPriceService.updateStationOilPrice(oilPrice);
+//            //修改油枪信息中的价格
+//            StationOilGun gun =new StationOilGun();
+//            gun.setStationId(adjust.getStationId());
+//            gun.setOilName(adjust.getOilName());
+//            List<StationOilGun> listGun = stationOilGunService.selectStationOilGunList(gun);
+//            for(StationOilGun oilGun: listGun ){
+//                StationOilGun stationOilGun =new StationOilGun();
+//                stationOilGun.setOilPrice(adjust.getOilAdjustPrice());
+//                stationOilGun.setOilGunId(oilGun.getOilGunId());
+//                stationOilGunService.updateStationOilGun(stationOilGun);
+//            }
+//            StationOilPriceAdjust priceAdjust=new StationOilPriceAdjust();
+//            priceAdjust.setStatus("2");
+//            priceAdjust.setAdjustPriceId(adjust.getAdjustPriceId());
+//            stationOilPriceAdjustService.updateStationOilPriceAdjust(priceAdjust);
+//        }
+//    }
 }

+ 52 - 0
Yijia-SaaS/yijia-station/src/main/resources/mapper/station/PayOrderMapper.xml

@@ -44,6 +44,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="carNo"    column="car_no"    />
         <result property="customerPhone"    column="customer_phone"    />
         <result property="customerGrade"    column="customer_grade"    />
+        <result property="wxNum"    column="wx_num"    />
+        <result property="zfbNum"    column="zfb_num"    />
+        <result property="xjNum"    column="xj_num"  />
     </resultMap>
 
 
@@ -232,6 +235,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         GROUP BY date_format(created_date,'%Y-%m-%d')
     </select>
+
+    <!--查询数据,根据员工汇总数据-->
+    <select id="selectPersonnelStructure" parameterType="Long" resultMap="PayOrderResult">
+        SELECT a.oil_personnel,GROUP_CONCAT(DISTINCT a.oil_gun) as oil_gun,ROUND(SUM(a.amt),2) as amt,ROUND(SUM(order_liters),2) as order_liters,COUNT(order_no) as order_no
+        from pay_order a
+        <where>
+            <if test="stationId != null "> and a.station_id = #{stationId}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &gt;= date_format(#{beginTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+            <if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &lt;= date_format(#{endTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+        </where>
+        GROUP BY a.oil_personnel,a.oil_gun
+    </select>
+    <!--初始化数据班结数据,根据油品汇总 -->
+    <select id="selectOilStructure" parameterType="Long" resultMap="PayOrderResult">
+        SELECT  a.oil_name,GROUP_CONCAT(DISTINCT oil_gun) as oil_gun,ROUND(SUM(a.amt),2) as amt,ROUND(SUM(order_liters),2) as order_liters,COUNT(order_no) as order_no
+        from pay_order a
+        <where>
+            <if test="stationId != null "> and a.station_id = #{stationId}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &gt;= date_format(#{beginTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+            <if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &lt;= date_format(#{endTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+        </where>
+        GROUP BY a.oil_name
+    </select>
+    <!--初始化数据班结数据,根据员工/支付方式汇总 -->
+    <select id="selectPersonnelPayStructure" parameterType="Long" resultMap="PayOrderResult">
+        SELECT oil_personnel,GROUP_CONCAT(DISTINCT oil_gun) oil_gun,count(wx_amt) wx_num,count(zfb_amt) zfb_num,count(xj_amt) xj_num,sum(discount_amt) discount_amt,SUM(discount_coupon_amt) discount_coupon_amt,SUM(wx_amt) wx_amt,SUM(zfb_amt) zfb_amt,SUM(xj_amt) xj_amt,sum(member_amt) member_amt
+        from  pay_order a
+        <where>
+            <if test="stationId != null "> and a.station_id = #{stationId}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &gt;= date_format(#{beginTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+            <if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
+                AND date_format(created_date,'%Y-%m-%d %H:%i:%s') &lt;= date_format(#{endTime},'%Y-%m-%d %H:%i:%s')
+            </if>
+        </where>
+        GROUP BY a.oil_personnel
+    </select>
     <insert id="insertPayOrder" parameterType="PayOrder" useGeneratedKeys="true" keyProperty="orderId">
         insert into pay_order
         <trim prefix="(" suffix=")" suffixOverrides=",">