Browse Source

feat:“增加远程操作权限"

soobin 5 months ago
parent
commit
9e6911a942

+ 12 - 11
src/main/java/com/szwl/controller/SysRoleMenuController.java

@@ -15,9 +15,11 @@ import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.dto.OptionDTO;
 import com.szwl.model.entity.SysRole;
+import com.szwl.model.entity.SysUserRole;
 import com.szwl.model.param.AddSysRoleParam;
 import com.szwl.model.param.UpdateSysRoleParam;
 import com.szwl.service.SysRoleService;
+import com.szwl.service.SysUserRoleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +37,9 @@ public class SysRoleMenuController {
     @Autowired
     SysRoleService sysRoleService;
 
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+
     @GetMapping("/listMenuOption")
     @ApiOperation("获取所有菜单下拉框")
     public ResponseModel<List<OptionDTO>> listMenuOption() {
@@ -75,19 +80,15 @@ public class SysRoleMenuController {
     @GetMapping("/deleteRoleOption")
     @ApiOperation("删除角色")
     public ResponseModel<?> deleteRoleOption(String roleId,String adminId) {
-        if(org.apache.commons.lang.StringUtils.isEmpty(roleId)){
-            return R.fail(ResponseCodesEnum.A0100);
-        }
-        LambdaQueryWrapper<SysRole> query = Wrappers.lambdaQuery();
-        query.eq(SysRole::getRoleId,roleId);
-        query.eq(SysRole::getAdminId,adminId);
-        List<SysRole> list = sysRoleService.list(query);
+        // 需要查询是否有账号在使用这个角色
+        LambdaQueryWrapper<SysUserRole> query = Wrappers.lambdaQuery();
+        query.eq(SysUserRole::getRoleId,roleId);
+        List<SysUserRole> list = sysUserRoleService.list(query);
         if(list.size()>0){
-            SysRole sysRole = list.get(0);
-            sysRoleService.removeById(sysRole.getRoleId());
-            return R.ok();
+            return R.fail(ResponseCodesEnum.A0001,"角色正在使用中,不能删除");
         }
-        return R.fail(ResponseCodesEnum.A0100);
+        sysRoleService.removeById(roleId);
+        return R.ok();
     }
     @PostMapping("/addSysRole")
     @ApiOperation("新增角色及权限菜单")

+ 62 - 37
src/main/java/com/szwl/controller/TAdminController.java

@@ -212,15 +212,25 @@ public class TAdminController {
             }
         }
 
-        log.debug("添加账号 id:{},TAdmin:{}", entity.getId(), entity);
-        // 保存用户角色关系
-        List<SysUserRole> userRoleList = param.getRoleList()
-                .stream()
-                .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(entity.getId())))
-                .collect(Collectors.toList());
-
-        if (CollUtil.isNotEmpty(userRoleList)) {
-            sysUserRoleService.saveBatch(userRoleList);
+//        log.debug("添加账号 id:{},TAdmin:{}", entity.getId(), entity);
+//        // 保存用户角色关系
+//        List<SysUserRole> userRoleList = param.getRoleList()
+//                .stream()
+//                .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(entity.getId())))
+//                .collect(Collectors.toList());
+//
+//        if (CollUtil.isNotEmpty(userRoleList)) {
+//            sysUserRoleService.saveBatch(userRoleList);
+//        }
+
+        List<String> roleList = param.getRoleList();
+        if (roleList.size() > 0) {
+            for (String role : roleList) {
+                SysUserRole sysUserRole = new SysUserRole();
+                sysUserRole.setRoleId(role);
+                sysUserRole.setUserId(String.valueOf(entity.getId()));
+                sysUserRoleService.save(sysUserRole);
+            }
         }
 
         return R.ok(entity);
@@ -267,22 +277,31 @@ public class TAdminController {
             }
             LambdaQueryWrapper<SysUserRole> query1 = Wrappers.lambdaQuery();
             query1.eq(SysUserRole::getUserId, admin.getId());
-            List<SysUserRole> list1 = sysUserRoleService.list(query1);
-            if (!list1.isEmpty()) {
-                for (SysUserRole sysUserRole : list1) {
-                    sysUserRoleService.removeById(sysUserRole.getId());
+            SysUserRole sysUserRole = sysUserRoleService.getOne(query1);
+            List<String> roleList = param.getRoleList();
+            if (roleList.size() > 0) {
+                for (String role : roleList) {
+                    sysUserRole.setRoleId(role);
+                    sysUserRoleService.updateById(sysUserRole);
                 }
-
             }
+//            List<SysUserRole> list1 = sysUserRoleService.list(query1);
+//            if (!list1.isEmpty()) {
+//                for (SysUserRole sysUserRole : list1) {
+//                    sysUserRoleService.removeById(sysUserRole.getId());
+//                }
+//
+//            }
             // 保存用户角色关系
-            List<SysUserRole> userRoleList = param.getRoleList()
-                    .stream()
-                    .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(admin.getId())))
-                    .collect(Collectors.toList());
+//            List<SysUserRole> userRoleList = param.getRoleList()
+//                    .stream()
+//                    .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(admin.getId())))
+//                    .collect(Collectors.toList());
+
+//            if (CollUtil.isNotEmpty(userRoleList)) {
+//                sysUserRoleService.saveBatch(userRoleList);
+//            }
 
-            if (CollUtil.isNotEmpty(userRoleList)) {
-                sysUserRoleService.saveBatch(userRoleList);
-            }
             admin.setIsEnabled(param.getIsEnabled());
             admin.setPhone(param.getPhone());
             admin.setEmail(param.getEmail());
@@ -331,11 +350,8 @@ public class TAdminController {
             // 用户角色关系
             LambdaQueryWrapper<SysUserRole> query2 = Wrappers.lambdaQuery();
             query2.eq(SysUserRole::getUserId, admin.getId());
-            List<SysUserRole> list2 = sysUserRoleService.list(query2);
-            if (list2.size() > 0) {
-                SysUserRole sysUserRole = list2.get(0);
-                sysUserRoleService.removeById(sysUserRole.getId());
-            }
+            SysUserRole sysUserRole = sysUserRoleService.getOne(query2);
+            sysUserRoleService.removeById(sysUserRole.getId());
             tAdminService.removeById(admin.getId());
             log.debug("删除账号 id:{},TAdmin:{}", admin.getId(), admin);
             return R.ok(admin);
@@ -354,7 +370,7 @@ public class TAdminController {
             query.eq(TAdmin::getUsername, userName);
         }
         if (StringUtils.isNotEmpty(name)) {
-            query.eq(TAdmin::getName, name);
+            query.like(TAdmin::getName, name);
         }
         if (StringUtils.isNotEmpty(adminId)) {
             if (adminId.equals("18")) {
@@ -596,6 +612,7 @@ public class TAdminController {
                     SysRole newSysRole = new SysRole();
                     newSysRole.setAdminId(admin.getId());
                     newSysRole.setMenuCodesJson(sysRole.getMenuCodesJson());
+                    newSysRole.setControlCodesJson(sysRole.getControlCodesJson());
                     newSysRole.setRoleName("商家");
                     sysRoleService.save(newSysRole);
                     SysUserRole sysUserRole = new SysUserRole();
@@ -609,16 +626,6 @@ public class TAdminController {
                     admin.setManagerId(managerId);
                     tAdminService.getById(admin);
 
-                    // 新建海外账户的时候创建一个 Airwallex 钱包账户
-                    try {
-                        if ("1".equals(registerParam.getIfForeign())) {
-                            TAirwallexWallet wallet = new TAirwallexWallet();
-                            wallet.setAdminId(admin.getId());
-                            payFeign.saveAirwallexWallet(wallet);
-                        }
-                    } catch (Exception e) {
-                        logger.error("发生异常》》》:" + e.getMessage(), e);
-                    }
                 }
             }
             return R.ok(b);
@@ -1303,5 +1310,23 @@ public class TAdminController {
         }
         return R.ok(companyType);
     }
+
+    @ApiOperation("获取权限")
+    @GetMapping("/getPermission")
+    public ResponseModel<?> getPermission(String adminId) {
+        LambdaQueryWrapper<SysUserRole> query = Wrappers.lambdaQuery();
+        query.eq(SysUserRole::getUserId, adminId);
+        SysUserRole sysUserRole = sysUserRoleService.getOne(query);
+        if (sysUserRole != null) {
+            String roleId = sysUserRole.getRoleId();
+            SysRole sysRole = sysRoleService.getById(roleId);
+            if (sysRole != null) {
+                return R.ok(sysRole);
+            }
+        }
+        return R.ok();
+    }
+
+
 }
 

+ 73 - 4
src/main/java/com/szwl/controller/TSugarDoController.java

@@ -1,29 +1,37 @@
 package com.szwl.controller;
 
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.com.crbank.ommo.bean.ResultMessage;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.model.bo.JsonMessage;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
-import com.szwl.model.entity.TEquipment;
-import com.szwl.model.entity.TNameDictionary;
-import com.szwl.model.entity.TProduct;
-import com.szwl.model.entity.TSugarDo;
+import com.szwl.model.dto.PromoCodeTargetEn;
+import com.szwl.model.dto.SugarDoTarget;
+import com.szwl.model.dto.SugarDoTargetEn;
+import com.szwl.model.entity.*;
 import com.szwl.model.param.SugarDoParam;
 import com.szwl.model.utils.PushUtils;
 import com.szwl.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -207,14 +215,75 @@ public class TSugarDoController {
             query.eq(TSugarDo::getStatus, param.getStatus());
         }
         if (StringUtils.isNotEmpty(param.getStartTime()) && StringUtils.isNotEmpty(param.getEndTime())) {
+            param.setStartTime(param.getStartTime() + " 00:00:00");
+            param.setEndTime(param.getEndTime() + " 23:59:59");
             query.between(TSugarDo::getCreateDate, param.getStartTime(), param.getEndTime());
         }
         if (StringUtils.isNotEmpty(param.getClientId())) {
             query.eq(TSugarDo::getClientId, param.getClientId());
         }
+        if (param.getAdminId() != null) {
+            query.eq(TSugarDo::getAdminId, param.getAdminId());
+        }
         query.orderByDesc(TSugarDo::getCreateDate);
         Page<TSugarDo> sugarDoPage = tSugarDoService.page(page, query);
         return R.ok(sugarDoPage);
     }
+
+    @ApiOperation(value = "导出制作记录")
+    @PostMapping("/exportSugarRecord")
+    public void exportSugarRecord(@RequestBody SugarDoParam param, HttpServletResponse response) {
+        String ifForeign = "";
+        LambdaQueryWrapper<TSugarDo> query = Wrappers.lambdaQuery();
+        if (StringUtils.isNotEmpty(param.getStatus())) {
+            query.eq(TSugarDo::getStatus, param.getStatus());
+        }
+        if (StringUtils.isNotEmpty(param.getStartTime()) && StringUtils.isNotEmpty(param.getEndTime())) {
+            param.setStartTime(param.getStartTime() + " 00:00:00");
+            param.setEndTime(param.getEndTime() + " 23:59:59");
+            query.between(TSugarDo::getCreateDate, param.getStartTime(), param.getEndTime());
+        }
+        if (StringUtils.isNotEmpty(param.getClientId())) {
+            query.eq(TSugarDo::getClientId, param.getClientId());
+        }
+        if (param.getAdminId() != null) {
+            query.eq(TSugarDo::getAdminId, param.getAdminId());
+            TAdmin admin = tAdminService.getById(param.getAdminId());
+            ifForeign = admin.getIfForeign();
+        }
+        query.orderByDesc(TSugarDo::getCreateDate);
+        List<TSugarDo> sugarDoList = tSugarDoService.list(query);
+        Workbook workbook = null;
+        String head = "远程制作记录-";
+        if (StringUtils.isNotEmpty(ifForeign) && ifForeign.equals("1")) {
+            List<SugarDoTargetEn> sugarDoTargets = tSugarDoService.exportSugarRecordEn(sugarDoList);
+            ExportParams exportParams = new ExportParams("Production record", "sheet1");
+            workbook = ExcelExportUtil.exportExcel(exportParams, SugarDoTargetEn.class, sugarDoTargets);
+            head = "Production record-";
+        } else {
+            List<SugarDoTarget> sugarDoTargets = tSugarDoService.exportSugarRecord(sugarDoList);
+            ExportParams exportParams = new ExportParams("远程制作记录", "sheet1");
+            workbook = ExcelExportUtil.exportExcel(exportParams, SugarDoTarget.class, sugarDoTargets);
+        }
+        if (workbook != null) {
+            OutputStream os = null;
+            try {
+                os = response.getOutputStream();
+                SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+                response.setContentType("application/vnd.ms-excel;charset=utf-8");
+                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(head + format.format(new Date()) + ".xls", "UTF-8"));
+                workbook.write(os);
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                try {
+                    os.close();
+                    workbook.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }
 

+ 1 - 1
src/main/java/com/szwl/mapper/SysRoleMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author wuhs
- * @since 2022-06-17
+ * @since 2025-03-22
  */
 public interface SysRoleMapper extends BaseMapper<SysRole> {
 

+ 20 - 0
src/main/java/com/szwl/mapper/xml/SysRoleMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.szwl.mapper.SysRoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.szwl.model.entity.SysRole">
+        <id column="ROLE_ID" property="roleId" />
+        <result column="ROLE_NAME" property="roleName" />
+        <result column="admin_id" property="adminId" />
+        <result column="MENU_CODES_JSON" property="menuCodesJson" />
+        <result column="CONTROL_CODES_JSON" property="controlCodesJson" />
+        <result column="REMARK" property="remark" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        ROLE_ID, ROLE_NAME, admin_id, MENU_CODES_JSON, CONTROL_CODES_JSON, REMARK
+    </sql>
+
+</mapper>

+ 41 - 0
src/main/java/com/szwl/model/dto/SugarDoTarget.java

@@ -0,0 +1,41 @@
+package com.szwl.model.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class SugarDoTarget {
+
+    /**
+     * 商品名称
+     */
+    @Excel(name = "商品名称", width = 20.0D)
+    private String productName;
+
+    /**
+     * 制作时间
+     */
+    @Excel(name = "制作时间", width = 20.0D)
+    private String createDate;
+
+
+    /**
+     * 设备编号
+     */
+    @Excel(name = "设备编号", width = 25.0D)
+    private String clientId;
+
+
+    /**
+     * 状态
+     */
+    @Excel(name = "状态", width = 20.0D)
+    private String status;
+
+    /**
+     * 状态
+     */
+    @Excel(name = "失败原因", width = 25.0D)
+    private String reason;
+
+}

+ 40 - 0
src/main/java/com/szwl/model/dto/SugarDoTargetEn.java

@@ -0,0 +1,40 @@
+package com.szwl.model.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class SugarDoTargetEn {
+
+    /**
+     * 商品名称
+     */
+    @Excel(name = "Goods name", width = 20.0D)
+    private String productName;
+
+    /**
+     * 制作时间
+     */
+    @Excel(name = "Production time", width = 20.0D)
+    private String createDate;
+
+
+    /**
+     * 设备编号
+     */
+    @Excel(name = "Machine number", width = 25.0D)
+    private String clientId;
+
+
+    /**
+     * 状态
+     */
+    @Excel(name = "Status", width = 20.0D)
+    private String status;
+
+    /**
+     * 状态
+     */
+    @Excel(name = "Cause of failure", width = 25.0D)
+    private String reason;
+}

+ 15 - 7
src/main/java/com/szwl/model/entity/SysRole.java

@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author wuhs
- * @since 2022-06-17
+ * @since 2025-03-22
  */
 @Accessors(chain = true)
 @Data
@@ -30,15 +30,23 @@ public class SysRole implements Serializable {
     @ApiModelProperty(value = "角色id")
     private String roleId;
 
-    @ApiModelProperty(value = "角色名称")
+    @ApiModelProperty(value = "角色权限名称,不能为商家")
+    @TableField("ROLE_NAME")
     private String roleName;
 
-    @ApiModelProperty(value = "备注")
-    private String remark;
-
-    @ApiModelProperty(value = "备注")
+    @ApiModelProperty(value = "所属用户ID")
     private Long adminId;
 
-    @ApiModelProperty(value = "权限菜单json")
+    @ApiModelProperty(value = "常用工具权限")
+    @TableField("MENU_CODES_JSON")
     private String menuCodesJson;
+
+    @ApiModelProperty(value = "远程操作权限")
+    @TableField("CONTROL_CODES_JSON")
+    private String controlCodesJson;
+
+    @TableField("REMARK")
+    private String remark;
+
+
 }

+ 3 - 0
src/main/java/com/szwl/model/param/AddSysRoleParam.java

@@ -26,4 +26,7 @@ public class AddSysRoleParam {
     @NotEmpty(message = "请选择权限菜单")
     @ApiModelProperty("菜单code list")
     List<String> menuCodeList;
+
+    @ApiModelProperty("远程操作权限")
+    List<String> controlCodeList;
 }

+ 3 - 0
src/main/java/com/szwl/model/param/UpdateSysRoleParam.java

@@ -25,4 +25,7 @@ public class UpdateSysRoleParam {
     @NotEmpty(message = "请选择权限菜单")
     @ApiModelProperty("菜单code list")
     List<String> menuCodeList;
+
+    @ApiModelProperty("远程操作权限")
+    List<String> controlCodeList;
 }

+ 1 - 1
src/main/java/com/szwl/service/SysRoleService.java

@@ -18,7 +18,7 @@ import java.util.Set;
  * </p>
  *
  * @author wuhs
- * @since 2022-06-17
+ * @since 2025-03-22
  */
 public interface SysRoleService extends IService<SysRole> {
 

+ 7 - 0
src/main/java/com/szwl/service/TSugarDoService.java

@@ -1,8 +1,12 @@
 package com.szwl.service;
 
+import com.szwl.model.dto.SugarDoTarget;
+import com.szwl.model.dto.SugarDoTargetEn;
 import com.szwl.model.entity.TSugarDo;
 import com.szwl.service.base.MyIService;
 
+import java.util.List;
+
 /**
  * <p>
  * 远程做糖列表 服务类
@@ -13,4 +17,7 @@ import com.szwl.service.base.MyIService;
  */
 public interface TSugarDoService extends MyIService<TSugarDo> {
 
+    List<SugarDoTarget> exportSugarRecord(List<TSugarDo> sugarDoList);
+
+    List<SugarDoTargetEn> exportSugarRecordEn(List<TSugarDo> sugarDoList);
 }

+ 10 - 1
src/main/java/com/szwl/service/impl/SysRoleServiceImpl.java

@@ -30,7 +30,7 @@ import java.util.stream.Collectors;
  * </p>
  *
  * @author wuhs
- * @since 2022-06-17
+ * @since 2025-03-22
  */
 @Service
 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
@@ -78,6 +78,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                 .setAdminId(param.getAdminId())
                 .setMenuCodesJson(JSON.toJSONString(param.getMenuCodeList()))
                 .setRemark(param.getRemark());
+
+        // 当 controlCodeList 非空且长度 > 0 时设置 ControlCodesJson
+        if (param.getControlCodeList() != null ) {
+            sysRole.setControlCodesJson(JSON.toJSONString(param.getControlCodeList()));
+        }
         save(sysRole);
     }
     @Override
@@ -87,6 +92,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                 .orElseThrow(() ->new BizException(ResponseCodesEnum.B0005,"无法根据id:"+param.getRoleId()+" 找到角色配置"));
         BeanUtil.copyProperties(param,sysRole);
         sysRole.setMenuCodesJson(JSON.toJSONString(param.getMenuCodeList()));
+        // 当 controlCodeList 非空且长度 > 0 时设置 ControlCodesJson
+        if (param.getControlCodeList() != null ) {
+            sysRole.setControlCodesJson(JSON.toJSONString(param.getControlCodeList()));
+        }
         updateById(sysRole);
     }
 }

+ 73 - 0
src/main/java/com/szwl/service/impl/TSugarDoServiceImpl.java

@@ -1,11 +1,21 @@
 package com.szwl.service.impl;
 
+import com.szwl.model.dto.PromoCodeTarget;
+import com.szwl.model.dto.SugarDoTarget;
+import com.szwl.model.dto.SugarDoTargetEn;
+import com.szwl.model.entity.TPromoCode;
 import com.szwl.model.entity.TSugarDo;
 import com.szwl.mapper.TSugarDoMapper;
+import com.szwl.model.utils.DateUtils;
 import com.szwl.service.TSugarDoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * <p>
  * 远程做糖列表 服务实现类
@@ -17,4 +27,67 @@ import org.springframework.stereotype.Service;
 @Service
 public class TSugarDoServiceImpl extends ServiceImpl<TSugarDoMapper, TSugarDo> implements TSugarDoService {
 
+    @Override
+    public List<SugarDoTarget> exportSugarRecord(List<TSugarDo> sugarDoList) {
+        List<SugarDoTarget> sugarDoTargets = new ArrayList<>();
+        for (TSugarDo sugarDo : sugarDoList) {
+            SugarDoTarget sugarDoTarget = new SugarDoTarget();
+            sugarDoTarget.setProductName(sugarDo.getProductName());
+            // 格式化时间
+            if(sugarDo.getCreateDate()!=null) {
+                String formatPayDate = DateUtils.formatDate(sugarDo.getCreateDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
+                sugarDoTarget.setCreateDate(formatPayDate);
+            }
+            sugarDoTarget.setClientId(sugarDo.getClientId());
+            switch (sugarDo.getStatus()) {
+                case "0":
+                    sugarDoTarget.setStatus("未制作");
+                    break;
+                case "1":
+                    sugarDoTarget.setStatus("已制作");
+                    break;
+                case "2":
+                    sugarDoTarget.setStatus("机器异常未做糖");
+                    break;
+                default:
+                    sugarDoTarget.setStatus("未知状态");
+                    break;
+            }
+            sugarDoTarget.setReason(sugarDo.getNote());
+            sugarDoTargets.add(sugarDoTarget);
+        }
+        return sugarDoTargets;
+    }
+
+    @Override
+    public List<SugarDoTargetEn> exportSugarRecordEn(List<TSugarDo> sugarDoList) {
+        List<SugarDoTargetEn> sugarDoTargets = new ArrayList<>();
+        for (TSugarDo sugarDo : sugarDoList) {
+            SugarDoTargetEn sugarDoTargetEn = new SugarDoTargetEn();
+            sugarDoTargetEn.setProductName(sugarDo.getProductName());
+            // 格式化时间
+            if(sugarDo.getCreateDate()!=null) {
+                String formatPayDate = DateUtils.formatDate(sugarDo.getCreateDate(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss);
+                sugarDoTargetEn.setCreateDate(formatPayDate);
+            }
+            sugarDoTargetEn.setClientId(sugarDo.getClientId());
+            switch (sugarDo.getStatus()) {
+                case "0":
+                    sugarDoTargetEn.setStatus("Not produced");
+                    break;
+                case "1":
+                    sugarDoTargetEn.setStatus("finished");
+                    break;
+                case "2":
+                    sugarDoTargetEn.setStatus("Machine exception");
+                    break;
+                default:
+                    sugarDoTargetEn.setStatus("Unknown state");
+                    break;
+            }
+            sugarDoTargetEn.setReason(sugarDo.getNote());
+            sugarDoTargets.add(sugarDoTargetEn);
+        }
+        return sugarDoTargets;
+    }
 }