java110
2021-12-02 d91329bda26053d9189f345f023da4bd200d3dae
service-oa/src/main/java/com/java110/oa/bmo/oaWorkflowForm/impl/GetOaWorkflowFormBMOImpl.java
@@ -6,13 +6,17 @@
import com.java110.dto.oaWorkflowData.OaWorkflowDataDto;
import com.java110.dto.oaWorkflowForm.OaWorkflowFormDto;
import com.java110.dto.user.UserDto;
import com.java110.dto.workflowDataFile.WorkflowDataFileDto;
import com.java110.entity.audit.AuditUser;
import com.java110.intf.common.IOaWorkflowUserInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowDataInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowFormInnerServiceSMO;
import com.java110.intf.oa.IOaWorkflowInnerServiceSMO;
import com.java110.intf.oa.IWorkflowDataFileV1InnerServiceSMO;
import com.java110.intf.user.IUserInnerServiceSMO;
import com.java110.oa.bmo.oaWorkflowForm.IGetOaWorkflowFormBMO;
import com.java110.po.workflowDataFile.WorkflowDataFilePo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
@@ -23,7 +27,6 @@
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -46,6 +49,9 @@
    @Autowired
    private IOaWorkflowDataInnerServiceSMO oaWorkflowDataInnerServiceSMOImpl;
    @Autowired
    private IWorkflowDataFileV1InnerServiceSMO workflowDataFileV1InnerServiceSMOImpl;
    /**
@@ -104,15 +110,36 @@
        List<Map> datas = null;
        if (count > 0) {
            datas = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowFormDatas(paramIn);
        } else {
            datas = new ArrayList<>();
        }
        //查询file
        queryFilesFromData(datas);
        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (int) paramIn.get("row")), count, datas);
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
        return responseEntity;
    }
    private void queryFilesFromData(List<Map> datas) {
        if (datas.size() != 1) {
            return;
        }
        WorkflowDataFileDto workflowDataFileDto = new WorkflowDataFileDto();
        workflowDataFileDto.setId(datas.get(0).get("id").toString());
        workflowDataFileDto.setStoreId(datas.get(0).get("store_id").toString());
        List<WorkflowDataFileDto> workflowDataFileDtos = workflowDataFileV1InnerServiceSMOImpl.queryWorkflowDataFiles(workflowDataFileDto);
        if (workflowDataFileDtos == null || workflowDataFileDtos.size() < 1) {
            return;
        }
        datas.get(0).put("files",workflowDataFileDtos);
    }
    /**
@@ -165,10 +192,37 @@
            throw new IllegalArgumentException("保存失败");
        }
        //判断是否有附件
        saveOaWorkflowFile(reqJson);
        reqJson.put("processDefinitionKey", oaWorkflowDtos.get(0).getProcessDefinitionKey());
        oaWorkflowUserInnerServiceSMOImpl.startProcess(reqJson);
        return ResultVo.success();
    }
    private void saveOaWorkflowFile(JSONObject reqJson) {
        if (!reqJson.containsKey("fileName")) {
            return;
        }
        String fileName = reqJson.getString("fileName");
        if (StringUtil.isEmpty(fileName)) {
            return;
        }
        WorkflowDataFilePo workflowDataFilePo = new WorkflowDataFilePo();
        workflowDataFilePo.setCreateUserId(reqJson.getString("userId"));
        workflowDataFilePo.setCreateUserName(reqJson.getString("createUserName"));
        workflowDataFilePo.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
        workflowDataFilePo.setFileName(reqJson.getString("fileName"));
        workflowDataFilePo.setId(reqJson.getString("id"));
        workflowDataFilePo.setRealFileName(reqJson.getString("realFileName"));
        workflowDataFilePo.setStoreId(reqJson.getString("storeId"));
        int flag = workflowDataFileV1InnerServiceSMOImpl.saveWorkflowDataFile(workflowDataFilePo);
        if (flag < 1) {
            throw new CmdException("保存附件失败");
        }
    }
    /**
@@ -253,14 +307,14 @@
        long count = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatasCount(oaWorkflowDataDto);
        List<JSONObject> datas = null;
        List<JSONObject> datas = new ArrayList<>();
        if (count > 0) {
            datas = BeanConvertUtil.covertBeanList(oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto), JSONObject.class);
            List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
            for (OaWorkflowDataDto oaWorkflowDataDto1 : oaWorkflowDataDtos) {
                datas.add(BeanConvertUtil.beanCovertJson(oaWorkflowDataDto1));
            }
            //刷新 表单数据
            freshFormData(datas, paramIn, oaWorkflowFormDtos.get(0));
        } else {
            datas = new ArrayList<>();
        }
        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) paramIn.getInteger("row")), count, datas);
@@ -301,7 +355,8 @@
        reqJson.put("startUserId", formDatas.get(0).get("create_user_id"));
        //业务办理
        if ("1100".equals(reqJson.getString("auditCode"))) { //办理操作
        if ("1100".equals(reqJson.getString("auditCode"))
                || "1500".equals(reqJson.getString("auditCode"))) { //办理操作
            reqJson.put("nextUserId", reqJson.getString("staffId"));
            boolean isLastTask = oaWorkflowUserInnerServiceSMOImpl.completeTask(reqJson);
            if (isLastTask) {
@@ -335,6 +390,24 @@
    @Override
    public ResponseEntity<String> getNextTask(JSONObject reqJson) {
//流程表单是否存在
        OaWorkflowFormDto oaWorkflowFormDto = new OaWorkflowFormDto();
        oaWorkflowFormDto.setFlowId(reqJson.get("flowId").toString());
        oaWorkflowFormDto.setStoreId(reqJson.get("storeId").toString());
        oaWorkflowFormDto.setRow(1);
        oaWorkflowFormDto.setPage(1);
        List<OaWorkflowFormDto> oaWorkflowFormDtos = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowForms(oaWorkflowFormDto);
        Assert.listOnlyOne(oaWorkflowFormDtos, "未包含流程表单,请先设置表单");
        Map paramMap = new HashMap();
        paramMap.put("storeId", reqJson.getString("storeId"));
        paramMap.put("id", reqJson.getString("id"));
        paramMap.put("tableName", oaWorkflowFormDtos.get(0).getTableName());
        paramMap.put("page", 1);
        paramMap.put("row", 1);
        List<Map> formDatas = oaWorkflowFormInnerServiceSMOImpl.queryOaWorkflowFormDatas(paramMap);
        Assert.listOnlyOne(formDatas, "表单数据不存在");
        reqJson.put("startUserId", formDatas.get(0).get("create_user_id"));
        List<JSONObject> tasks = oaWorkflowUserInnerServiceSMOImpl.nextAllNodeTaskList(reqJson);
        return ResultVo.createResponseEntity(tasks);
    }
@@ -368,7 +441,7 @@
        if (count > 0) {
            List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto);
            for(OaWorkflowDataDto oaWorkflowDataDto1 : oaWorkflowDataDtos){
            for (OaWorkflowDataDto oaWorkflowDataDto1 : oaWorkflowDataDtos) {
                datas.add(BeanConvertUtil.beanCovertJson(oaWorkflowDataDto1));
            }
            //刷新 表单数据
@@ -388,8 +461,12 @@
     */
    private void freshFormData(List<JSONObject> datas, JSONObject paramIn, OaWorkflowFormDto oaWorkflowFormDto) {
        List<String> ids = new ArrayList<>();
        List<String> userIds = new ArrayList<>();
        for (JSONObject data : datas) {
            ids.add(data.getString("id"));
            if (!StringUtil.isEmpty(data.getString("staffId"))) {
                userIds.add(data.getString("staffId"));
            }
        }
        if (ids.size() < 1) {
            return;
@@ -424,6 +501,24 @@
                data.put("duration", getCostTime(duration));
            }
        }
        if (userIds.size() < 1) {
            return;
        }
        //刷入员工信息
        UserDto userDto = new UserDto();
        userDto.setUserIds(userIds.toArray(new String[userIds.size()]));
        List<UserDto> userDtos = userInnerServiceSMOImpl.getStaffs(userDto);
        for (JSONObject data : datas) {
            for (UserDto userDto1 : userDtos) {
                if (data.getString("staffId").equals(userDto1.getUserId())) {
                    data.put("orgName", userDto1.getOrgName());
                    data.put("staffName", userDto1.getUserName());
                }
            }
        }
    }
    public String getCostTime(Long time) {