From efd6a955d5fa558f9bd04005cf83118279cc10a1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期二, 22 七月 2025 09:37:07 +0800
Subject: [PATCH] art: 设备台账-设备选择接口

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java |  404 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 404 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
new file mode 100644
index 0000000..c9b3516
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
@@ -0,0 +1,404 @@
+package org.jeecg.modules.eam.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TranslateDictTextUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.eam.dto.EamEquipmentDto;
+import org.jeecg.modules.eam.entity.EamEquipment;
+import org.jeecg.modules.eam.entity.EamEquipmentExtend;
+import org.jeecg.modules.eam.request.EamEquipmentQuery;
+import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
+import org.jeecg.modules.eam.service.IEamEquipmentService;
+import org.jeecg.modules.eam.vo.EamEquipmentTree;
+import org.jeecg.modules.eam.vo.EquipmentSearchResult;
+import org.jeecg.modules.system.entity.BaseFactory;
+import org.jeecg.modules.system.entity.EamBaseRepairDepart;
+import org.jeecg.modules.system.service.IBaseFactoryService;
+import org.jeecg.modules.system.service.IEamBaseRepairDepartService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 璁惧鍙拌处
+ * @Author: jeecg-boot
+ * @Date: 2025-03-19
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags = "璁惧鍙拌处")
+@RestController
+@RequestMapping("/eam/equipment")
+public class EamEquipmentController extends JeecgController<EamEquipment, IEamEquipmentService> {
+    @Autowired
+    private IEamEquipmentService eamEquipmentService;
+
+    @Autowired
+    private IEamEquipmentExtendService eamEquipmentExtendService;
+
+//    @Autowired
+//    private IMdcEquipmentService mdcEquipmentService;
+
+    @Autowired
+    private ObjectMapper objectMapper;
+    @Autowired
+    private TranslateDictTextUtils translateDictTextUtils;
+    @Autowired
+    private IBaseFactoryService baseFactoryService;
+    @Autowired
+    private IEamBaseRepairDepartService eamBaseRepairDepartService;
+    /**
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param eamEquipment
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+//    @AutoLog(value = "璁惧鍙拌处-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "璁惧鍙拌处-鍒嗛〉鍒楄〃鏌ヨ", notes = "璁惧鍙拌处-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<?> queryPageList(EamEquipmentQuery eamEquipment,
+                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+//        QueryWrapper<EamEquipment> queryWrapper = QueryGenerator.initQueryWrapper(eamEquipment, req.getParameterMap());
+        IPage<EamEquipment> page = new Page<>(pageNo, pageSize);
+        IPage<EamEquipment> pageList = eamEquipmentService.queryPageList(page, eamEquipment);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 娣诲姞
+     *
+     * @param eamEquipment
+     * @return
+     */
+//    @AutoLog(value = "璁惧鍙拌处-娣诲姞")
+    @ApiOperation(value = "璁惧鍙拌处-娣诲姞", notes = "璁惧鍙拌处-娣诲姞")
+    @PostMapping(value = "/add")
+    public Result<?> add(@RequestBody EamEquipment eamEquipment) {
+        EamEquipment entity = eamEquipmentService.saveEquipment(eamEquipment);
+        if (entity == null) {
+            return Result.OK("娣诲姞澶辫触锛�");
+        }
+        //璋冪敤mdcEquipment鎻掑叆MDC璁惧
+//        if (CommonConstant.DEFAULT_1.equals(eamEquipment.getMdcFlag())) {
+            //鎻掑叆MDC璁惧
+//            MdcEquipment mdcEquipment = new MdcEquipment();
+//            mdcEquipment.setEquipmentId(entity.getEquipmentCode());
+//            mdcEquipment.setEquipmentType(entity.getDeviceType());
+//            mdcEquipment.setEquipmentName(entity.getEquipmentName());
+//            mdcEquipmentService.addNewEquipmentFromEam(mdcEquipment, eamEquipment.getOrgId());
+//        }
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
+     * 缂栬緫
+     *
+     * @param eamEquipment
+     * @return
+     */
+    @ApiOperation(value = "璁惧鍙拌处-缂栬緫", notes = "璁惧鍙拌处-缂栬緫")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<?> edit(@RequestBody EamEquipment eamEquipment) {
+        eamEquipmentService.updateEquipment(eamEquipment);
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "璁惧鍙拌处-閫氳繃id鍒犻櫎", notes = "璁惧鍙拌处-閫氳繃id鍒犻櫎")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        EamEquipment entity = eamEquipmentService.getById(id);
+        if (entity != null) {
+            entity.setDelFlag(CommonConstant.DEL_FLAG_1);
+            eamEquipmentService.updateById(entity);
+        }
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @ApiOperation(value = "璁惧鍙拌处-鎵归噺鍒犻櫎", notes = "璁惧鍙拌处-鎵归噺鍒犻櫎")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        List<String> list = Arrays.asList(ids.split(","));
+        list.forEach(id -> {
+            EamEquipment entity = eamEquipmentService.getById(id);
+            if (entity != null) {
+                entity.setDelFlag(CommonConstant.DEL_FLAG_1);
+                eamEquipmentService.updateById(entity);
+            }
+        });
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�");
+    }
+
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "璁惧鍙拌处-閫氳繃id鏌ヨ", notes = "璁惧鍙拌处-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
+        EamEquipment eamEquipment = eamEquipmentService.getById(id);
+        if (eamEquipment == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        EamEquipmentExtend extend = eamEquipmentExtendService.getById(id);
+        if(extend != null){
+            eamEquipment.setRepairStatus(extend.getRepairStatus());
+            eamEquipment.setMaintenanceStatus(extend.getMaintenanceStatus());
+        }
+        try {
+            String json = objectMapper.writeValueAsString(eamEquipment);
+            JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
+            translateDictTextUtils.translateField("createBy", eamEquipment.getCreateBy(), item, "sys_user,realname,username");
+            translateDictTextUtils.translateField("updateBy", eamEquipment.getUpdateBy(), item, "sys_user,realname,username");
+//            translateDictTextUtils.translateField("technologyStatus", eamEquipment.getTechnologyStatus(), item, "technology_status");
+//            translateDictTextUtils.translateField("orgId", eamEquipment.getOrgId(), item, "mdc_production,production_name,id");
+//            translateDictTextUtils.translateField("equipmentManager", eamEquipment.getEquipmentManager(), item, "sys_user,realname,username");
+            translateDictTextUtils.translateField("equipmentCategory", eamEquipment.getEquipmentCategory(), item, "equipment_category");
+            translateDictTextUtils.translateField("assetStatus", eamEquipment.getAssetStatus(), item, "asset_status");
+            translateDictTextUtils.translateField("repairStatus", eamEquipment.getRepairStatus(), item, "equipment_repair_status");
+            translateDictTextUtils.translateField("maintenanceStatus", eamEquipment.getMaintenanceStatus(), item, "equipment_maintenance_status");
+            return Result.OK(item);
+        } catch (JsonProcessingException e) {
+            return Result.error("鏁版嵁杞瘧澶辫触锛�");
+        }
+    }
+
+    /**
+     * 瀵煎嚭excel
+     * @param eamEquipment
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request,EamEquipmentQuery eamEquipment) {
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<EamEquipment> equipmentList=eamEquipmentService.exportList(eamEquipment);
+        List<EamEquipmentDto> eamEquipmentDtos=new ArrayList<>();
+        String selections = request.getParameter("selections");
+        if (oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            equipmentList = equipmentList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
+        }
+        equipmentList.forEach(item -> {
+            EamEquipmentDto eamEquipmentDto = new EamEquipmentDto();
+            BeanUtils.copyProperties(item,eamEquipmentDto);
+            if (eamEquipmentDto.getFactoryOrgCode().length()==12){
+                eamEquipmentDto.setFactoryOrgCode(
+                        baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode())
+                        +"/"+baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getGqfactoryOrgCode())+"/"+
+                                baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode()));
+            }else {
+                eamEquipmentDto.setFactoryOrgCode(
+                        baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode())
+                                +"/"+ baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode()));
+            }
+            if (eamEquipmentDto.getEquipmentWeight()!=null){
+                eamEquipmentDto.setEquipmentWeightStr(eamEquipmentDto.getEquipmentWeight().toEngineeringString());
+            }
+            eamEquipmentDtos.add(eamEquipmentDto);
+        });
+        // Step.3 AutoPoi 瀵煎嚭Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, "璁惧鍙拌处"); //姝ゅ璁剧疆鐨刦ilename鏃犳晥 ,鍓嶇浼氶噸鏇存柊璁剧疆涓�涓�
+        mv.addObject(NormalExcelConstants.CLASS, EamEquipmentDto.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("璁惧鍙拌处" + "鎶ヨ〃", "瀵煎嚭浜�:" + sysUser.getRealname(), "璁惧鍙拌处"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, eamEquipmentDtos);
+        return mv;
+
+    }
+
+    /**
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            // 鑾峰彇涓婁紶鏂囦欢瀵硅薄
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            params.setStartSheetIndex(0);
+            params.setSheetNum(1);
+            try {
+                List<EamEquipment> list = ExcelImportUtil.importExcel(file.getInputStream(), EamEquipment.class, params);
+                //update-begin-author:taoyan date:20190528 for:鎵归噺鎻掑叆鏁版嵁
+                long start = System.currentTimeMillis();
+//                service.saveBatch(list);
+                StringBuilder sb = new StringBuilder();
+                for (EamEquipment eamEquipment : list) {
+                    //蹇呭~瀛楁鏍¢獙
+                    if (StringUtils.isBlank(eamEquipment.getEquipmentCode()) || StringUtils.isBlank(eamEquipment.getEquipmentName())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]鎴栬澶囧悕绉癧%s]涓虹┖锛屾棤娉曞鍏n\n", eamEquipment.getEquipmentCode(), eamEquipment.getEquipmentName()));
+                        continue;
+                    }
+                    if (StringUtils.isBlank(eamEquipment.getEquipmentCategory())) {
+                        sb.append(String.format("璁惧缂栫爜[%s]璁惧鍒嗙被涓虹┖锛屾棤娉曞鍏n\n", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    EamEquipment one = eamEquipmentService.getOne(new LambdaQueryWrapper<EamEquipment>().eq(EamEquipment::getEquipmentCode, eamEquipment.getEquipmentCode()).eq(EamEquipment::getDelFlag, CommonConstant.DEL_FLAG_0));
+                    if (one != null) {
+                        sb.append(String.format("璁惧缂栫爜[%s]宸插瓨鍦紝鏃犳硶閲嶅瀵煎叆\n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    BaseFactory baseFactory=baseFactoryService.searchCenterByKeyWord(eamEquipment.getFactoryOrgCode());
+                    if(baseFactory==null){
+                        sb.append(String.format("EAM涓績淇℃伅[%s]涓嶅瓨鍦紝鏃犳硶瀵煎叆\n\r", eamEquipment.getFactoryOrgCode()));
+                        continue;
+                    }else {
+                        eamEquipment.setFactoryOrgCode(baseFactory.getOrgCode());
+                    }
+                    EamBaseRepairDepart eamBaseRepairDepart=eamBaseRepairDepartService.searchCenterByKeyWord(eamEquipment.getRepairDepartOrgCode());
+                    if(eamBaseRepairDepart==null){
+                        sb.append(String.format("缁翠慨鐝粍淇℃伅[%s]涓嶅瓨鍦紝鏃犳硶瀵煎叆\n\r", eamEquipment.getRepairDepartOrgCode()));
+                        continue;
+                    }else {
+                        eamEquipment.setRepairDepartOrgCode(eamBaseRepairDepart.getOrgCode());
+                    }
+                    EamEquipment equipment = eamEquipmentService.saveEquipment(eamEquipment);
+                    if (equipment == null) {
+                        //淇濆瓨澶辫触锛岃烦杩囨湰娆″惊鐜�
+                        sb.append(String.format("璁惧缂栫爜[%s]淇濆瓨澶辫触锛屾棤娉曞鍏n\r", eamEquipment.getEquipmentCode()));
+                        continue;
+                    }
+                    EamEquipmentExtend eamEquipmentExtend=new EamEquipmentExtend();
+                    BeanUtils.copyProperties(eamEquipmentExtend,equipment);
+                    eamEquipmentExtendService.save(eamEquipmentExtend);
+                }
+                log.info("娑堣�楁椂闂�" + (System.currentTimeMillis() - start) + "姣");
+                //update-end-author:taoyan date:20190528 for:鎵归噺鎻掑叆鏁版嵁
+                if (sb.length() > 0) {
+                    return Result.ok(sb.toString());
+                }
+                return Result.ok("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁帮細" + list.size());
+            } catch (Exception e) {
+                //update-begin-author:taoyan date:20211124 for: 瀵煎叆鏁版嵁閲嶅澧炲姞鎻愮ず
+                String msg = e.getMessage();
+                log.error(msg, e);
+                if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
+                    return Result.error("鏂囦欢瀵煎叆澶辫触:鏈夐噸澶嶆暟鎹紒");
+                } else {
+                    return Result.error("鏂囦欢瀵煎叆澶辫触:" + e.getMessage());
+                }
+                //update-end-author:taoyan date:20211124 for: 瀵煎叆鏁版嵁閲嶅澧炲姞鎻愮ず
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.error("鏂囦欢瀵煎叆澶辫触锛�");
+    }
+
+    @ApiOperation(value = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�", notes = "璁惧琛�-閫氳繃杞﹂棿ids鑾峰彇璁惧鏍�")
+    @GetMapping(value = "/loadTreeListByProductionIds")
+    public Result<List<EamEquipmentTree>> loadTreeListByProductionIds(@RequestParam(name = "ids", required = true) String ids) {
+        Result<List<EamEquipmentTree>> result = new Result<>();
+        try {
+            List<EamEquipmentTree> mdcEquipmentTreeList = eamEquipmentService.loadTreeListByProductionIds(ids);
+            result.setSuccess(true);
+            result.setResult(mdcEquipmentTreeList);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
+
+    @ApiOperation(value = "璁惧琛�-閫氳繃EAM涓績ids鑾峰彇璁惧鏍�", notes = "璁惧琛�-閫氳繃EAM涓績ids鑾峰彇璁惧鏍�")
+    @GetMapping(value = "/loadTreeListByEamCenterIds")
+    public Result<List<EamEquipmentTree>> loadTreeListByEamCenterIds(@RequestParam(name = "ids", required = true) String ids) {
+        Result<List<EamEquipmentTree>> result = new Result<>();
+        try {
+            List<EamEquipmentTree> mdcEquipmentTreeList = eamEquipmentService.loadTreeListByEamCenterIds(ids);
+            result.setSuccess(true);
+            result.setResult(mdcEquipmentTreeList);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return result;
+    }
+
+    /**
+     * 妫�绱㈣澶�
+     * @param keyword 鏌ヨ鍏抽敭璇� 璁惧缂栧彿锛岃澶囧悕绉版ā绯婂尮閰�
+     * @param pageSize 涓�娆¤繑鍥炲灏戣褰�
+     * @param id 璁惧涓婚敭
+     * @return
+     */
+    @ApiOperation(value = "璁惧琛�-寮傛鍔犺浇璁惧鍒楄〃", notes = "璁惧琛�-寮傛鍔犺浇璁惧鍒楄〃")
+    @GetMapping(value = "/asyncLoadEquipment")
+    public Result<?> asyncLoadEquipment(@RequestParam(name="keyword",required = false) String keyword,
+                                        @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize,
+                                        @RequestParam(name="id",required = false) String id,
+                                        @RequestParam(name="factoryOrgCode",required = false) String factoryOrgCode) {
+        List<EquipmentSearchResult> resultList = eamEquipmentService.asyncLoadEquipment(keyword, pageSize, id, factoryOrgCode);
+        List<JSONObject> items = new ArrayList<>();
+        try {
+            for(EquipmentSearchResult vo : resultList) {
+                String json = objectMapper.writeValueAsString(vo);
+                JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
+                translateDictTextUtils.translateField("factoryOrgCode", vo.getFactoryOrgCode(), item, "eam_base_factory,factory_name,org_code");
+                items.add(item);
+            }
+            return Result.OK(items);
+        }catch (Exception e) {
+            return Result.error("鏁版嵁杞瘧澶辫触锛�");
+        }
+    }
+
+}

--
Gitblit v1.9.3