yangys
2024-10-05 3a6f6d86d14284a665dc016914b39a1a6a82b29b
导出数据点ok
已添加21个文件
已修改14个文件
1215 ■■■■■ 文件已修改
smart-man-boot/pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/common/enums/MenuCategoryEnum.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/CollectTemplateController.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/MyTestController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/WorkstationController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/WorkstationDpController.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/CollectDeviceType.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/CollectTemplate.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/WorkstationDatapoints.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/CollectDeviceTypeMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/CollectTemplateMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/WorkstationDatapointsMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/CollectDeviceTypeService.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/CollectTemplateService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/IWorkstationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/WorkstationDatapointsService.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/CalendarServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/EmployeeServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/WorkstationServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/CollectDeviceTypeVO.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/CollectTemplateVO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/WorkstationDatapointsSubmitVO.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/WorkstationDatapointsVO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/wrapper/CollectTemplateWrapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/OutputStatisticsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/utils/FilterOffUtils.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/controller/DataScopeManagerController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/IDataScopeManagerService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/impl/DataScopeManagerServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/application.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/cps/mapper/CollectDeviceTypeMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/cps/mapper/CollectTemplateMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/dp/dpend.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/resources/dp/dpstart.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/pom.xml
@@ -551,6 +551,18 @@
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.qianwen.smartman.Application</mainClass>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
smart-man-boot/src/main/java/com/qianwen/smartman/common/enums/MenuCategoryEnum.java
@@ -2,7 +2,9 @@
import java.util.Arrays;
import java.util.List;
/**
 * èœå•分类
 */
public enum MenuCategoryEnum {
    APP(0, "app"),
    MENU(1, "菜单"),
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/CollectTemplateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package com.qianwen.smartman.modules.cps.controller;
import java.util.List;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.qianwen.core.log.annotation.ApiLog;
import com.qianwen.core.mp.support.Condition;
import com.qianwen.core.mp.support.Query;
import com.qianwen.core.scanner.modular.annotation.GetResource;
import com.qianwen.core.scanner.modular.annotation.PostResource;
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
import com.qianwen.core.secure.annotation.PreAuth;
import com.qianwen.core.tenant.annotation.NonDS;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.modules.cps.entity.CollectTemplate;
import com.qianwen.smartman.modules.cps.service.CollectDeviceTypeService;
import com.qianwen.smartman.modules.cps.service.CollectTemplateService;
import com.qianwen.smartman.modules.cps.vo.CollectDeviceTypeVO;
import com.qianwen.smartman.modules.cps.vo.CollectTemplateVO;
import com.qianwen.smartman.modules.cps.wrapper.CollectTemplateWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;
@Api(value = "采集模板", tags = {"采集模板"})
@RestController
@ApiResource({"smart-collect/tpl"})
@NonDS
public class CollectTemplateController {
    @Autowired
    private CollectTemplateService templateService;
    @Autowired
    private CollectDeviceTypeService collectDeviceTypeService;
    @ApiOperationSupport(order = 3)
    @ApiLog("设备采集类型列表")
    @GetResource({"/typelist"})
    @ApiOperation(value = "设备采集类型列表")
    public R<List<CollectDeviceTypeVO>> list() {
        return R.data(collectDeviceTypeService.typeList());
    }
    @ApiOperationSupport(order = 1)
    @ApiLog("采集模板详情")
    @ApiOperation(value = "采集模板详情", notes = "传入id")
    @GetResource({"/detail"})
    public R<CollectTemplateVO> detail(Long id) {
        return R.data(this.templateService.detail(id));
    }
    @ApiOperationSupport(order = 3)
    @ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称", paramType = "query", dataType = "string")})
    @ApiLog("查询采集模板列表")
    @GetResource({"/page"})
    @ApiOperation(value = "模板列表", notes = "传入name,type")
    public R<IPage<CollectTemplateVO>> page(@ApiIgnore CollectTemplate tpl, Query query) {
        IPage<CollectTemplate> pages = this.templateService.selectPage(Condition.getPage(query), tpl);
        //return R.data(UserWrapper.build().pageVO(pages));
        return R.data(CollectTemplateWrapper.build().pageVO(pages));
    }
    @ApiOperationSupport(order = 4)
    @PostResource({"/submit"})
    @ApiLog("新增或修改采集模板")
    @ApiOperation(value = "新增或修改", notes = "传入模板")
    @PreAuth
    public R<Void> submit(@Valid @RequestBody CollectTemplateVO tpl) {
        this.templateService.submit(tpl);
        return R.status(true);
    }
    @ApiOperationSupport(order = 6)
    @PostResource({"/remove"})
    @ApiLog("删除模板")
    @ApiOperation(value = "删除", notes = "传入id集合")
    @PreAuth
    public R<Boolean> remove(@RequestParam String ids) {
        return R.status(templateService.removeTemplate(ids));
    }
    /*
    @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL)
    @PostResource({"/update"})
    @ApiLog("修改用户")
    @ApiOperation(value = "修改", notes = "传入User")
    @PreAuth
    public R update(@Valid @RequestBody User user) {
        CacheUtil.clear("blade:user", ExtCacheConstant.TENANT_MODE);
        return R.status(this.userService.updateUser(user));
    }
    @ApiOperationSupport(order = 10)
    @PostResource({"/update-info"})
    @ApiLog("修改基本信息")
    @ApiOperation(value = "修改基本信息", notes = "传入User")
    public R updateInfo(@Valid @RequestBody User user) {
        CacheUtil.clear("blade:user", ExtCacheConstant.TENANT_MODE);
        return R.status(this.userService.updateUserInfo(user));
    }
    @ApiOperationSupport(order = 11)
    @ApiLog("用户列表")
    @GetResource({"/user-list"})
    @ApiOperation(value = "用户列表", notes = "传入user")
    public R<List<User>> userList(User user, BladeUser bladeUser) {
        QueryWrapper<User> queryWrapper = Condition.getQueryWrapper(user);
        List<User> list = this.userService.list(!AuthUtil.isAdministrator() ? queryWrapper.lambda().eq(User::getTenantId, bladeUser.getTenantId()) : queryWrapper);
        return R.data(list);
    }
    */
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/MyTestController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.qianwen.smartman.modules.cps.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.List;
import com.qianwen.core.boot.ctrl.BladeController;
import com.qianwen.core.datascope.props.DataScopeProperties;
import com.qianwen.core.mp.intercept.QueryInterceptor;
import com.qianwen.core.scanner.modular.annotation.GetResource;
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
import com.qianwen.core.secure.annotation.PreAuth;
import com.qianwen.core.tenant.annotation.NonDS;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.modules.cps.service.CollectDeviceTypeService;
import com.qianwen.smartman.modules.cps.service.ICommonGroupService;
import com.qianwen.smartman.modules.cps.service.WorkstationDatapointsService;
import com.qianwen.smartman.modules.cps.vo.CollectDeviceTypeVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationGroupVO;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Api(value = "test", tags = {"test"})
@RestController
@ApiResource({"blade-cps/test"})
public class MyTestController {// extends BladeController
    @Autowired
    private WorkstationDatapointsService workstationDatapointsService;
    @Autowired
    private CollectDeviceTypeService typeService;
    @Autowired
    DataScopeProperties dsp;
    @Autowired
    QueryInterceptor qi;
    @GetMapping({"/dsp"})
    @ApiOperation("dsp")
    public R<String> showdsp() {
        return R.data(dsp.toString()+qi);
    }
    @GetMapping({"/listDatapointsByWorkstationId"})
    @ApiOperation("根据工位id获取数据点")
    public R<String> listDatapointsByWorkstationId() {
        //InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("dp/dpstart.json");
        String str;
        try {
            str = IOUtils.resourceToString("/dp/dpstart.json",  Charset.forName("utf8"));
        } catch (IOException e) {
            str = "error";
            e.printStackTrace();
        }
        return R.data(str);
    }
    @GetMapping({"/typelist"})
    @ApiOperation("采集类型列表")
    public R<List<CollectDeviceTypeVO>> typelist() {
        return R.data(typeService.typeList());
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/WorkstationController.java
@@ -23,21 +23,26 @@
import com.qianwen.core.tenant.annotation.NonDS;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.modules.cps.dto.WorkstationRealTimeStatusDTO;
import com.qianwen.smartman.modules.cps.entity.WorkstationDatapoints;
import com.qianwen.smartman.modules.cps.excel.WorkstationImport;
import com.qianwen.smartman.modules.cps.service.IDmpVariablesService;
import com.qianwen.smartman.modules.cps.service.IWorkstationService;
import com.qianwen.smartman.modules.cps.service.WorkstationDatapointsService;
import com.qianwen.smartman.modules.cps.vo.DmpVariablesVO;
import com.qianwen.smartman.modules.cps.vo.FmsWorkstationGroupVO;
import com.qianwen.smartman.modules.cps.vo.FmsWorkstationQueryVO;
import com.qianwen.smartman.modules.cps.vo.MachineDmpVariablesVO;
import com.qianwen.smartman.modules.cps.vo.WorkMachineEasyVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationChangeCalendarVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationPageQueryVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationRealTimeStatusVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationSubmitVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationVO;
import com.qianwen.smartman.modules.resource.enums.TemplateEnum;
import com.qianwen.smartman.modules.resource.service.ISystemResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -52,15 +57,19 @@
@NonDS
@Validated
public class WorkstationController extends BladeController {
    private final IWorkstationService workstationService;
    private final IDmpVariablesService dmpVariablesService;
    private final ISystemResourceService systemResourceService;
    @Autowired
    private IWorkstationService workstationService;
    @Autowired
    private IDmpVariablesService dmpVariablesService;
    @Autowired
    private ISystemResourceService systemResourceService;
    /*
    public WorkstationController(final IWorkstationService workstationService, final IDmpVariablesService dmpVariablesService, final ISystemResourceService systemResourceService) {
        this.workstationService = workstationService;
        this.dmpVariablesService = dmpVariablesService;
        this.systemResourceService = systemResourceService;
    }
    }*/
    @PreAuth
    @PostResource({"/submit"})
@@ -82,6 +91,8 @@
        return R.data(this.dmpVariablesService.listByWorkstationId(workstationId));
    }
    @GetMapping({"/get"})
    @ApiOperation("获取工位信息")
    public R<WorkstationVO> get(@RequestParam Long workstationId) {
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/controller/WorkstationDpController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
package com.qianwen.smartman.modules.cps.controller;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.codec.Charsets;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.qianwen.core.boot.ctrl.BladeController;
import com.qianwen.core.excel.util.ExcelUtil;
import com.qianwen.core.mp.support.Condition;
import com.qianwen.core.mp.support.Query;
import com.qianwen.core.oss.model.BladeFile;
import com.qianwen.core.scanner.modular.annotation.GetResource;
import com.qianwen.core.scanner.modular.annotation.PostResource;
import com.qianwen.core.scanner.modular.annotation.PutResource;
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
import com.qianwen.core.secure.annotation.PreAuth;
import com.qianwen.core.tenant.annotation.NonDS;
import com.qianwen.core.tool.api.R;
import com.qianwen.core.tool.utils.DateUtil;
import com.qianwen.smartman.modules.cps.dto.EmployeeDTO;
import com.qianwen.smartman.modules.cps.entity.WorkstationDatapoints;
import com.qianwen.smartman.modules.cps.service.WorkstationDatapointsService;
import com.qianwen.smartman.modules.cps.vo.EmployeeSelectVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsSubmitVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsVO;
import com.qianwen.smartman.modules.cps.wrapper.EmployeeExcelWrapper;
import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Api(value = "工位管理", tags = {"工位管理"})
@RestController
@ApiResource({"blade-cps/workstation"})
@NonDS
@Validated
public class WorkstationDpController extends BladeController {
    @Autowired
    private WorkstationDatapointsService workstationDatapointsService;
    @Autowired
    private OssBuilder ossBuilder;
    //@PreAuth
    @GetResource({"/listDatapointsByWorkstationId"})
    @ApiOperation("根据工位id获取数据点")
    public R<WorkstationDatapointsVO> listDatapointsByWorkstationId(@RequestParam Long workstationId) {
        WorkstationDatapointsVO v = new WorkstationDatapointsVO();
        v.setDpHead("myhead");
        //return R.data(v);
        return R.data(workstationDatapointsService.getDatapoints(workstationId));
    }
    @PutResource({"/saveDatapoints"})
    @ApiOperation("保存工位数据点配置")
    public R<Boolean> saveDatapoints(@RequestBody WorkstationDatapointsSubmitVO datapoints) {
        //return R.data(true);
        try {
            workstationDatapointsService.submit(datapoints);
        }catch(Exception e) {
            return R.data(false);
        }
        return R.data(true);
    }
    @ApiOperationSupport(order = 7)
    @GetResource({"/export-dp"})
    @ApiOperation("导出工位数据点")
    @PreAuth
    public R<BladeFile> exportDatapoints(long workstationId) {
        //List<EmployeeExcel> list = EmployeeExcelWrapper.build().pageVO(pages).getRecords();
        String fileName = String.format("%s-%s.xlsx", "点位配置", DateUtil.time());
        WorkstationDatapointsVO dpVO = workstationDatapointsService.getDatapoints(workstationId);
        List<List<String>> head = new ArrayList<>();
        head.add(Arrays.asList("名称","别名"));
        List<List<Object>> data = new ArrayList<>();
        data.add(Arrays.asList("DeviceStatus","alias"));
        MultipartFile multipartFile = exportExcel("sheet1",fileName,head(dpVO.getDpHead()),data(dpVO.getDpHead(),dpVO.getDpConfig()));
        BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile);
        return R.data(bladeFile);
        //return null;
    }
    List<List<Object>> data(String dpHead,String dpConfig){
        List<List<Object>> result = new ArrayList<>();
        JSONArray headsJson = JSONArray.parseArray(dpHead);
        JSONArray dataJson = JSONArray.parseArray(dpConfig);
        JSONObject rowJson;
        JSONObject headOne ;
        String prop;
        List<Object> rowData;
        for(int i=0;i<dataJson.size();i++) {
            rowJson = dataJson.getJSONObject(i);
            rowData = new ArrayList<>();
            for(int j=0;j<headsJson.size();j++) {
                headOne = headsJson.getJSONObject(j);
                prop = headOne.getString("prop");
                if(rowJson.containsKey(prop)) {
                    rowData.add(rowJson.getString(prop));
                }else {
                    rowData.add("");
                }
            }
            result.add(rowData);
        }
        return result;
    }
    List<List<String>> head(String dpHeadFullJsonStr){
        List<List<String>> head = new ArrayList<>();
        JSONArray headsJson = JSONArray.parseArray(dpHeadFullJsonStr);
        JSONObject headOne ;
        boolean isRequired;
        String title;
        for(int i=0;i<headsJson.size();i++) {
            List<String> head0 = new ArrayList<>();
            headOne = headsJson.getJSONObject(i);
            if(headOne.containsKey("isRequired")) {
                isRequired = headOne.getBooleanValue("isRequired");
            }else {
                isRequired = false;
            }
            title = (isRequired?"*":"") + headOne.getString("label");
               head0.add(title);
               head.add(head0);
        }
        return head;
    }
    /**
     * åŠ¨æ€è¡¨å¤´å¯¼å‡º
     *
     * @param response HttpServletResponse
     * @param fileName æ–‡ä»¶å
     * @param Myhead   Excel表头信息
     * @param data     Excel数据
     */
    public MultipartFile exportExcel(String sheetName,String filename, List<List<String>> myhead, List<List<Object>> data) {
        try {
          DiskFileItemFactory factory = new DiskFileItemFactory();
            factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
          //factory.setRepository(new File("d:/"));
            FileItem fileItem = factory.createItem("excel", "application/vnd.ms-excel", true, filename);
            EasyExcel.write(fileItem.getOutputStream())
                    .head(myhead)
                    .sheet(sheetName)
                    .doWrite(data);
            return new CommonsMultipartFile(fileItem);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/CollectDeviceType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.qianwen.smartman.modules.cps.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qianwen.core.mp.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
/**
 * é‡‡é›†è®¾å¤‡ç±»åž‹,定义点位字段
 */
@TableName("collect_device_type")
public class CollectDeviceType extends BaseEntity {
    private static final long serialVersionUID = 1;
    @ApiModelProperty("类型名称")
    private String name;
    /**
     * æ¯ä¸ªå­—段信息格式:{"prop":"dpName","isRequired":true,"label":"数据点名称","describe":"数据点名称,同一应用下的数据点名称不允许重复。"}
     */
    @ApiModelProperty("字段信息,json数组")
    private String dpHead;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDpHead() {
        return dpHead;
    }
    public void setDpHead(String dpHead) {
        this.dpHead = dpHead;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/CollectTemplate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.qianwen.smartman.modules.cps.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qianwen.core.mp.base.BaseEntity;
import com.qianwen.core.tenant.mp.TenantEntity;
import io.swagger.annotations.ApiModelProperty;
/**
 * é‡‡é›†æ¨¡æ¿
 */
@TableName("collect_template")
public class CollectTemplate  extends BaseEntity {
    private static final long serialVersionUID = 1;
    @ApiModelProperty("模板名称")
    private String name;
    @ApiModelProperty("模板类型")
    private Integer type;
    @ApiModelProperty("点位配置(json数组)")
    private String dpConfig;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDpConfig() {
        return dpConfig;
    }
    public void setDpConfig(String dpConfig) {
        this.dpConfig = dpConfig;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/entity/WorkstationDatapoints.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.qianwen.smartman.modules.cps.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qianwen.core.mp.base.BaseEntity;
import com.qianwen.core.tenant.mp.TenantEntity;
import io.swagger.annotations.ApiModelProperty;
/**
 * å·¥ä½é‡‡é›†æ•°æ®ç‚¹
 */
@TableName("workstation_datapoints")
public class WorkstationDatapoints  extends BaseEntity {
    private static final long serialVersionUID = 1;
    @ApiModelProperty("模板类型")
    private Integer type;
    @ApiModelProperty("点位配置(json数组)")
    private String dpConfig;
    /**
     * å·¥ä½id
     */
    private long workstationId;
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDpConfig() {
        return dpConfig;
    }
    public void setDpConfig(String dpConfig) {
        this.dpConfig = dpConfig;
    }
    public long getWorkstationId() {
        return workstationId;
    }
    public void setWorkstationId(long workstationId) {
        this.workstationId = workstationId;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/CollectDeviceTypeMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.qianwen.smartman.modules.cps.mapper;
import com.qianwen.core.mp.mapper.BladeMapper;
import com.qianwen.smartman.modules.cps.entity.CollectDeviceType;
public interface CollectDeviceTypeMapper extends BladeMapper<CollectDeviceType> {
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/CollectTemplateMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.qianwen.smartman.modules.cps.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qianwen.core.mp.mapper.BladeMapper;
import com.qianwen.smartman.modules.cps.entity.CollectDeviceType;
import com.qianwen.smartman.modules.cps.entity.CollectTemplate;
import com.qianwen.smartman.modules.system.entity.User;
public interface CollectTemplateMapper extends BladeMapper<CollectTemplate> {
    List<CollectTemplate> selectPage(@Param("page")IPage<CollectTemplate> page,@Param("template") CollectTemplate tpl);
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/mapper/WorkstationDatapointsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.qianwen.smartman.modules.cps.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qianwen.core.mp.mapper.BladeMapper;
import com.qianwen.smartman.modules.cps.entity.CollectDeviceType;
import com.qianwen.smartman.modules.cps.entity.CollectTemplate;
import com.qianwen.smartman.modules.cps.entity.WorkstationDatapoints;
import com.qianwen.smartman.modules.system.entity.User;
public interface WorkstationDatapointsMapper extends BladeMapper<WorkstationDatapoints> {
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/CollectDeviceTypeService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.qianwen.smartman.modules.cps.service;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qianwen.core.mp.base.BaseServiceImpl;
import com.qianwen.smartman.modules.cps.entity.CollectDeviceType;
import com.qianwen.smartman.modules.cps.mapper.CollectDeviceTypeMapper;
import com.qianwen.smartman.modules.cps.vo.CollectDeviceTypeVO;
@Service
public class CollectDeviceTypeService extends BaseServiceImpl<CollectDeviceTypeMapper, CollectDeviceType> {
    /**
     * æ–°å¢žæˆ–者更新模板
     * @param tpl
     */
    public List<CollectDeviceTypeVO> typeList() {
        List<CollectDeviceType> list = this.baseMapper.selectList(Wrappers.emptyWrapper());
        Charset utf8charset = Charset.forName("utf8");
        String startJsonStr= "[]";
        String endJsonStr = "[]";
        try {
            startJsonStr = IOUtils.resourceToString("/dp/dpstart.json",  utf8charset);
            endJsonStr = IOUtils.resourceToString("/dp/dpend.json",  utf8charset);
        } catch (IOException e) {
            log.error("读取默认dpHead异常",e);
        }
        final String startStr = startJsonStr;
        final String endStr = endJsonStr;
        List<CollectDeviceTypeVO> voList =  list.stream().map(t -> {
            CollectDeviceTypeVO vo = new CollectDeviceTypeVO();
            vo.setId(t.getId());
            vo.setDpHead(t.getDpHead());
            vo.setName(t.getName());
            vo.setDpHeadFull(mergeJson(startStr,t.getDpHead(),endStr));
            return vo;
        }).collect(Collectors.toList());
        return voList;
    }
    public static String mergeJson(String start,String dpHead,String end) {
        JSONArray s = JSONArray.parseArray(start);
        JSONArray h = JSONArray.parseArray(dpHead);
        JSONArray e = JSONArray.parseArray(end);
        s.addAll(h);
        s.addAll(e);
        return s.toJSONString();
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/CollectTemplateService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.qianwen.smartman.modules.cps.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qianwen.core.log.exception.ServiceException;
import com.qianwen.core.mp.base.BaseServiceImpl;
import com.qianwen.core.tool.utils.Func;
import com.qianwen.core.tool.utils.StringUtil;
import com.qianwen.smartman.modules.cps.entity.CollectTemplate;
import com.qianwen.smartman.modules.cps.mapper.CollectTemplateMapper;
import com.qianwen.smartman.modules.cps.vo.CollectTemplateVO;
import com.qianwen.smartman.modules.cps.wrapper.CollectTemplateWrapper;
import cn.hutool.core.util.ObjectUtil;
@Service
public class CollectTemplateService extends BaseServiceImpl<CollectTemplateMapper, CollectTemplate> {
    /**
     * æ–°å¢žæˆ–者更新模板
     * @param tpl
     */
    @Transactional(rollbackFor = {Exception.class})
    public void submit(CollectTemplateVO tplVO) {
        Long userCount = this.baseMapper.selectCount(Wrappers.<CollectTemplate>query().lambda().eq(CollectTemplate::getName, tplVO.getName()));
        if (userCount > 0 && ObjectUtil.isEmpty(tplVO.getId())) {
            throw new ServiceException(StringUtil.format("模板名称 [{}] å·²å­˜åœ¨!", new Object[]{tplVO.getName()}));
        }
        CollectTemplate tpl = new CollectTemplate();
        tpl.setId(tplVO.getId());
        tpl.setDpConfig(tplVO.getDpConfig());
        tpl.setName(tplVO.getName());
        tpl.setType(tplVO.getType());
        tpl.setIsDeleted(0);
        saveOrUpdate(tpl);
    }
    /**
     * åˆ é™¤æ¨¡æ¿ï¼ˆé€»è¾‘删除)
     * @param ids
     * @return
     */
    @Transactional(rollbackFor = {Exception.class})
    public boolean removeTemplate(String ids) {
        return deleteLogic(Func.toLongList(ids));
    }
    public CollectTemplateVO detail(long id) {
        CollectTemplate tpl = this.getById(id);
        CollectTemplateVO result = CollectTemplateWrapper.build().entityVO(tpl);
        return result;
    }
    public IPage<CollectTemplate> selectPage(IPage<CollectTemplate> page, CollectTemplate tpl) {
        return page.setRecords(this.baseMapper.selectPage(page, tpl));
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/IWorkstationService.java
@@ -36,6 +36,11 @@
    List<DmpVariablesVO> queryDmpList(String workstationId);
    /**
     * æ–°å¢žæˆ–更改工位信息
     * @param workstationSubmitVO
     * @return
     */
    WorkstationVO submit(WorkstationSubmitVO workstationSubmitVO);
    Boolean changeCollectSwitch(Long workstationId, Integer collectSwitch);
@@ -50,6 +55,9 @@
    Boolean changeCalendarCode(WorkstationChangeCalendarVO workstationChangeCalendarVO);
    /**
     * æ›´æ–°æ‰€æœ‰å·¥ä½çš„生产日历字段,用calendarCodeWaiting更新calendarCode。在定时任务时调用
     */
    void updateWorkstationCalendar();
    Boolean changeWorkstationGroup(Long groupId, List<Long> workstationIdList);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/WorkstationDatapointsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.qianwen.smartman.modules.cps.service;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qianwen.core.mp.base.BaseServiceImpl;
import com.qianwen.smartman.modules.cps.entity.CollectDeviceType;
import com.qianwen.smartman.modules.cps.entity.WorkstationDatapoints;
import com.qianwen.smartman.modules.cps.mapper.CollectDeviceTypeMapper;
import com.qianwen.smartman.modules.cps.mapper.WorkstationDatapointsMapper;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsSubmitVO;
import com.qianwen.smartman.modules.cps.vo.WorkstationDatapointsVO;
@Service
public class WorkstationDatapointsService extends BaseServiceImpl<WorkstationDatapointsMapper, WorkstationDatapoints> {
    private Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    private CollectDeviceTypeMapper typeMapper;
    /**
     * æ–°å¢žæˆ–者修改工位点位配置
     * @param tplVO
     */
    @Transactional
    public void submit(WorkstationDatapointsSubmitVO dpVO) {
        WorkstationDatapoints dp = this.baseMapper.selectOne(Wrappers.<WorkstationDatapoints>lambdaQuery().eq(WorkstationDatapoints::getWorkstationId, dpVO.getWorkstationId()));
        if (dp == null) {
            //新增
            //throw new ServiceException(StringUtil.format("模板名称 [{}] å·²å­˜åœ¨!", new Object[]{tplVO.getName()}));
            dp = new WorkstationDatapoints();
            dp.setDpConfig(dpVO.getDpConfig());
            dp.setIsDeleted(0);
            dp.setWorkstationId(dpVO.getWorkstationId());
            dp.setType(dpVO.getType());
        }else {
            dp.setDpConfig(dpVO.getDpConfig());
            dp.setIsDeleted(0);
            dp.setWorkstationId(dpVO.getWorkstationId());
            dp.setType(dpVO.getType());
        }
        saveOrUpdate(dp);
    }
    /**
     * èŽ·å–å·¥ä½æ•°æ®ç‚¹é…ç½®
     * @param workstationId
     * @return
     */
    public WorkstationDatapointsVO getDatapoints(Long workstationId) {
        log.info("woid={}",workstationId);
        WorkstationDatapoints dp = baseMapper.selectOne(Wrappers.<WorkstationDatapoints>lambdaQuery().eq(WorkstationDatapoints::getWorkstationId, workstationId));
        log.info("dp={}",dp);
        WorkstationDatapointsVO dpVO = new WorkstationDatapointsVO();
        dpVO.setWorkstationId(workstationId);
        if(dp != null) {
            dpVO.setDpConfig(dp.getDpConfig());
            dpVO.setType(dp.getType());
            Charset utf8charset = Charset.forName("utf8");
            String startJsonStr= "[]";
            String endJsonStr = "[]";
            try {
                startJsonStr = IOUtils.resourceToString("/dp/dpstart.json",  utf8charset);
                endJsonStr = IOUtils.resourceToString("/dp/dpend.json",  utf8charset);
            } catch (IOException e) {
                log.error("读取默认dpHead异常",e);
            }
            CollectDeviceType collectType = typeMapper.selectById(dp.getType());
            String fullHead = CollectDeviceTypeService.mergeJson(startJsonStr,collectType.getDpHead(),endJsonStr);
            dpVO.setDpHead(fullHead);
        }
        return dpVO;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/CalendarServiceImpl.java
@@ -134,7 +134,7 @@
    public ProductionCalendar updateCalendar(CalendarUpdateVO calendarUpdateVO) {
        this.calendarDayService.deleteByCalendarId(calendarUpdateVO.getId());
        this.calendarDaytimeService.deleteByCalendarId(calendarUpdateVO.getId());
        ProductionCalendar calendar = (ProductionCalendar) getById(calendarUpdateVO.getId());
        ProductionCalendar calendar = getById(calendarUpdateVO.getId());
        updateCalendarDayTime(calendarUpdateVO.getDateDTOList(), calendar);
        return calendar;
    }
@@ -267,14 +267,7 @@
                .eq(ProductionCalendarDaytime::getCalendarId, calendarId)
                .orderByAsc(ProductionCalendarDaytime::getStartTime));
        
        /*
        List<ProductionCalendarDaytime> todayDateTimeList = this.calendarDaytimeService.list((Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) new QueryWrapper().lambda().eq((v0) -> {
            return v0.getCalendarDate();
        }, LocalDate.now())).eq((v0) -> {
            return v0.getCalendarId();
        }, calendarId)).orderByAsc((v0) -> {
            return v0.getStartTime();
        }));*/
        List<ProductionCalendarDaytime> curProductionCalendarDayTimeList = new ArrayList<>();
        LocalDate lastDayOfYear = LocalDateTimeUtils.getLastDayOfYear(LocalDate.now());
        long difference = year.intValue() == LocalDate.now().getYear() ? LocalDateTimeUtils.getDifference(LocalDate.now(), lastDayOfYear).intValue() : LocalDateTimeUtils.getDayOfYear(year).intValue() - 1;
@@ -1283,10 +1276,13 @@
    }
    @Override
    @Transactional
    public Boolean associateWorkstation(CalendarAssociateWorkstationVO calendarAssociateWorkstationVO) {
        return this.workstationService.update(Wrappers.<Workstation>lambdaUpdate()
        boolean result = this.workstationService.update(Wrappers.<Workstation>lambdaUpdate()
                  .set(Workstation::getCalendarCodeWaiting, calendarAssociateWorkstationVO.getCalendarCode())
                  .in(Workstation::getId, calendarAssociateWorkstationVO.getWorkstationIdList()));
        return result;
        /*
        return Boolean.valueOf(this.workstationService.update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set((v0) -> {
            return v0.getCalendarCodeWaiting();
@@ -1295,6 +1291,7 @@
        }, calendarAssociateWorkstationVO.getWorkstationIdList())));*/
    }
    @Override
    public List<ShiftIndexNameDTO> queryShiftIndexName(String calendarCode, Integer year, String day) {
        Integer maxShiftIndex;
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/EmployeeServiceImpl.java
@@ -468,6 +468,12 @@
        }
    }
    /**
     * æ›´æ–°å‘˜å·¥ä¸Žå²—位对应关系表
     * @param update
     * @param employeeId
     * @param postId
     */
    private void submitEmployeePost(Boolean update, Long employeeId, String postId) {
        if (update.booleanValue()) {
            this.employeePostService.remove(Wrappers.<EmployeePost>lambdaQuery().eq(EmployeePost::getEmployeeId, employeeId)); 
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/WorkstationServiceImpl.java
@@ -476,7 +476,7 @@
    @Override 
    public Boolean changeCalendarCode(WorkstationChangeCalendarVO workstationChangeCalendarVO) {
        Workstation workstation = (Workstation) getById(workstationChangeCalendarVO.getWorkstationId());
        Workstation workstation = getById(workstationChangeCalendarVO.getWorkstationId());
        workstation.setCalendarCodeWaiting(workstationChangeCalendarVO.getCalendarCodeWaiting());
        return Boolean.valueOf(updateById(workstation));
    }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/CollectDeviceTypeVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.qianwen.smartman.modules.cps.vo;
import io.swagger.annotations.ApiModelProperty;
/**
 * é‡‡é›†è®¾å¤‡ç±»åž‹,定义点位字段
 */
public class CollectDeviceTypeVO{
    private long id;
    @ApiModelProperty("类型名称")
    private String name;
    /**
     * æ¯ä¸ªå­—段信息格式:{"prop":"dpName","isRequired":true,"label":"数据点名称","describe":"数据点名称,同一应用下的数据点名称不允许重复。"}
     */
    @ApiModelProperty("字段信息,json数组")
    private String dpHead;
    @ApiModelProperty("全部字段信息,json数组")
    private String dpHeadFull;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDpHead() {
        return dpHead;
    }
    public void setDpHead(String dpHead) {
        this.dpHead = dpHead;
    }
    public String getDpHeadFull() {
        return dpHeadFull;
    }
    public void setDpHeadFull(String dpHeadFull) {
        this.dpHeadFull = dpHeadFull;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/CollectTemplateVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package com.qianwen.smartman.modules.cps.vo;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qianwen.core.tenant.mp.TenantEntity;
import com.qianwen.core.tool.utils.ObjectUtil;
import io.swagger.annotations.ApiModelProperty;
/**
 * é‡‡é›†æ¨¡æ¿
 */
public class CollectTemplateVO {
    private static final long serialVersionUID = 1;
    private long id;
    @ApiModelProperty("模板名称")
    private String name;
    @ApiModelProperty("模板类型")
    private Integer type;
    @ApiModelProperty("点位配置(json数组)")
    private String dpConfig;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDpConfig() {
        return dpConfig;
    }
    public void setDpConfig(String dpConfig) {
        this.dpConfig = dpConfig;
    }
    public JSONArray getDpConfigJson() {
        //JSONValidator
        if(ObjectUtil.isNotEmpty(this.dpConfig)) {
            return JSONArray.parseArray(dpConfig);
        }else {
            return JSONArray.parseArray("[]");
        }
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/WorkstationDatapointsSubmitVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.qianwen.smartman.modules.cps.vo;
import io.swagger.annotations.ApiModelProperty;
/**
 * å·¥ä½é‡‡é›†æ•°æ®ç‚¹ä¿å­˜VO
 */
public class WorkstationDatapointsSubmitVO {
    private static final long serialVersionUID = 1;
    @ApiModelProperty("模板类型")
    private Integer type;
    @ApiModelProperty("点位配置(json数组)")
    private String dpConfig;
    /**
     * å·¥ä½id
     */
    private long workstationId;
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDpConfig() {
        return dpConfig;
    }
    public void setDpConfig(String dpConfig) {
        this.dpConfig = dpConfig;
    }
    public long getWorkstationId() {
        return workstationId;
    }
    public void setWorkstationId(long workstationId) {
        this.workstationId = workstationId;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/vo/WorkstationDatapointsVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.qianwen.smartman.modules.cps.vo;
import io.swagger.annotations.ApiModelProperty;
/**
 * å·¥ä½é‡‡é›†æ•°æ®ç‚¹VO
 */
public class WorkstationDatapointsVO {
    private static final long serialVersionUID = 1;
    @ApiModelProperty("模板类型")
    private Integer type;
    @ApiModelProperty("点位表头(json数组)")
    private String dpHead;
    @ApiModelProperty("点位配置(json数组)")
    private String dpConfig;
    /**
     * å·¥ä½id
     */
    private long workstationId;
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDpConfig() {
        return dpConfig;
    }
    public void setDpConfig(String dpConfig) {
        this.dpConfig = dpConfig;
    }
    public long getWorkstationId() {
        return workstationId;
    }
    public void setWorkstationId(long workstationId) {
        this.workstationId = workstationId;
    }
    public String getDpHead() {
        return dpHead;
    }
    public void setDpHead(String dpHead) {
        this.dpHead = dpHead;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/wrapper/CollectTemplateWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.qianwen.smartman.modules.cps.wrapper;
import java.util.Objects;
import com.qianwen.core.mp.support.BaseEntityWrapper;
import com.qianwen.core.tool.utils.BeanUtil;
import com.qianwen.smartman.modules.cps.entity.CollectTemplate;
import com.qianwen.smartman.modules.cps.vo.CollectTemplateVO;
public class CollectTemplateWrapper extends BaseEntityWrapper<CollectTemplate, CollectTemplateVO> {
    public static CollectTemplateWrapper build() {
        return new CollectTemplateWrapper();
    }
    /**
     * å®žä½“转换为VO
     */
    public CollectTemplateVO entityVO(CollectTemplate tpl) {
        CollectTemplateVO tplVO = Objects.requireNonNull(BeanUtil.copy(tpl, CollectTemplateVO.class));
        return tplVO;
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/service/impl/OutputStatisticsServiceImpl.java
@@ -103,6 +103,7 @@
        }).collect(Collectors.toList());
        List<IntervalDateDto> intervalDates = LocalDateTimeUtils.getIntervalDate(statisticsAnalysisQueryVO.getStartDate(), statisticsAnalysisQueryVO.getEndDate());
        List<SuperAggregateOutput> superAggregateOutputByNaturalDate = this.superAggregateOutputService.getOutputData(workstationIds, statisticsAnalysisQueryVO.getStatisticalMethod(), statisticsAnalysisQueryVO.getStartDate(), statisticsAnalysisQueryVO.getEndDate());
        List<SuperAggregateOutput> superAggregateList = FilterOffUtils.filterOffDay(superAggregateOutputByNaturalDate, OpenTypeEnums.OUT_PUT);
        StatisticsWrapperDto statisticsWrapperDto = new StatisticsWrapperDto(superAggregateList, statisticsAnalysisQueryVO, intervalDates, workstationPage, MdcConstant.OUTPUT);
        return this.wrapper.entityVO(statisticsWrapperDto);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/mdc/utils/FilterOffUtils.java
@@ -22,11 +22,11 @@
        if (Func.isEmpty(data)) {
            return data;
        }
        //boolean filterType = whetherToFilter(OpenTypeEnums.PARAM_KEY_TYPE, openTypeEnums);//mdc_open_type,是否过滤该类型
        //boolean filterShift = whetherToFilter(OpenTypeEnums.PARAM_KEY_SHIFT, openTypeEnums);//mdc_open_shift,是否过滤班制
        boolean filterType = whetherToFilter(OpenTypeEnums.PARAM_KEY_TYPE, openTypeEnums);//mdc_open_type,是否过滤该类型
        boolean filterShift = whetherToFilter(OpenTypeEnums.PARAM_KEY_SHIFT, openTypeEnums);//mdc_open_shift,是否过滤班制
        //这里简化,不过滤了,数据在win服务器有,blade_boot_blade_param-0418bak.sql有,是个json数组
        boolean filterType = false;
        boolean filterShift = false;
        //boolean filterType = false;
       // boolean filterShift = false;
        if (!filterType && !filterShift) {
            return data;
        }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/controller/DataScopeManagerController.java
@@ -152,10 +152,7 @@
    @PreAuth("permitAll()")
    public R<List<Dept>> select(String deptId) {
        List<Dept> list = this.dataScopeManagerService.list(Wrappers.<Dept>lambdaQuery().in(Dept::getId, Func.toLongList(deptId)));
        /*
        List<Dept> list = this.dataScopeManagerService.list((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
            return v0.getId();
        }, Func.toLongList(deptId)));*/
        return R.data(list);
    }
@@ -170,7 +167,6 @@
    public R<Boolean> grant(@RequestBody DataScopeGrantVO grantVO) {
        CacheUtil.clear("blade:sys");
        CacheUtil.clear("blade:sys", Boolean.FALSE);
        this.dataScopeManagerService.grant(grantVO);
        return R.status(true);
        return R.status(this.dataScopeManagerService.grant(grantVO));
    }
}
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/IDataScopeManagerService.java
@@ -28,6 +28,11 @@
    List<DeptVO> search(String deptName, Long parentId);
    /**
     * æ•°æ®æƒé™æŽˆæƒ
     * @param grantVO
     * @return
     */
    boolean grant(DataScopeGrantVO grantVO);
    List<String> grantSelect(String deptId);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/system/service/impl/DataScopeManagerServiceImpl.java
@@ -229,9 +229,8 @@
    @Override
    @Transactional
    public boolean grant(final DataScopeGrantVO grantVO) {
        this.deptScopeService.remove(Lambda.eq((v0) -> {
            return v0.getDeptId();
        }, grantVO.getDeptId()));
        this.deptScopeService.remove(Lambda.eq(DeptScope::getDeptId, grantVO.getDeptId()));
        List<DeptScope> deptScopeList = grantVO.getDataScopeIds().stream().map(scopeId -> {
            DeptScope scope = new DeptScope();
            scope.setScopeId(scopeId);
smart-man-boot/src/main/resources/application-dev.yml
@@ -45,7 +45,7 @@
iotdb:
  driver: org.apache.iotdb.jdbc.IoTDBDriver
  host: localhost
  host: 120.46.212.231
  port: 6667
  maxSize: 10
  username: root
smart-man-boot/src/main/resources/application.yml
@@ -272,6 +272,7 @@
      - /blade-cps/workstation/page
      - /blade-cps/group/groupWorkstation/jimu
      - /blade-fms/order/process/issued
      - /blade-cps/test/**
    #授权认证配置
    auth:
      - method: ALL
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/cps/mapper/CollectDeviceTypeMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<?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.qianwen.smartman.modules.cps.mapper.CollectDeviceTypeMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.qianwen.smartman.modules.cps.entity.CollectDeviceType">
        <result column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="dp_head" property="dpHead"/>
    </resultMap>
</mapper>
smart-man-boot/src/main/resources/com/qianwen/smartman/modules/cps/mapper/CollectTemplateMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
<?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.qianwen.smartman.modules.cps.mapper.CollectTemplateMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.qianwen.smartman.modules.cps.entity.CollectTemplate">
        <result column="id" property="id"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="type" property="type"/>
        <result column="dp_config" property="dpConfig"/>
    </resultMap>
    <select id="selectPage" resultMap="BaseResultMap">
        select * from collect_template where is_deleted=0
        <if test="template.name!=null and template.name != ''">
            and (name like CONCAT(#{template.name},'%') OR name like CONCAT(#{template.name},'%'))
        </if>
        <if test="template.type!=null and template.type != ''">
            and type = #{user.type}
        </if>
        ORDER BY id
    </select>
</mapper>
smart-man-boot/src/main/resources/dp/dpend.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
[{"prop":"dpUnit","label":"单位"},{"prop":"ruleContent","label":"计算规则","describe":"计算规则来源于[规则管理-计算规则],通过lua脚本编写计算规则,对数据点的原始数据进行计算,生成新的数据点及数据点值。","sendCode":1,"isReqOptions":true,"type":"option","options":[]},{"prop":"ruleArgs","label":"计算参数","describe":"根据计算规则,填写计算参数,多个计算参数用英文“,”隔开;注意:dpValue为采集到的值不需要填写。","sendCode":1},{"prop":"access","isRequired":true,"sendCode":1,"label":"权限","describe":"读写权限\\n RO(只读):只允许读取点位数据、\\nRW(读/写):既能读取数据也能写入数据。","default":"RO","type":"option","options":["RO","RW"]},{"prop":"pollingInterval","isRequired":true,"label":"轮询间隔(ms)","describe":"轮询间隔(ms)","default":1000},{"prop":"keepOriginalValue","isRequired":true,"sendCode":1,"label":"保留原始值","describe":"保留原始值","default":true,"type":"boolean"},{"prop":"isSave","isRequired":true,"sendCode":1,"label":"是否存储","describe":"是否存储","default":true,"type":"boolean"}]
smart-man-boot/src/main/resources/dp/dpstart.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
[{"prop":"dpName","isRequired":true,"label":"数据点名称","describe":"数据点名称,同一应用下的数据点名称不允许重复。"},{"prop":"dpAlias","label":"数据点别名","describe":"数据点别名。"}]