4f3a98f19143865cdc1de4791e8a95d96bd40c65..2bbd50fb56275986e2a8658c373686d56804b99b
6 天以前 zss
yml配置
2bbd50 对比 | 目录
6 天以前 zss
去除与其他系统的对接配置
23d35c 对比 | 目录
已删除38个文件
已修改12个文件
4498 ■■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQBean.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQConfig.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQPublic.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQSubscribe.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 163 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/MqttApplicationRunner.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-prod.yml 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-test.yml 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-ztzb.yml 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/config/SsoBean.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflow.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflowResponse.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableField.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableRecord.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowTable.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequest.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequestResponse.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAResult.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequest.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpGet.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpPost.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestSoap.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestInfo.java 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableField.java 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableRecord.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowTable.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/ObjectFactory.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflow.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflowResponse.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/package-info.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQBean.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQCallback.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQClient.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQConfig.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQPublic.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/mqtt/MQSubscribe.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -6,7 +6,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.oa.OAProcess;
import com.ruoyi.inspect.dto.PushOADto;
import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
@@ -21,7 +20,6 @@
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@RestController
@Api("不合格处理管理")
@@ -36,21 +34,18 @@
    private static final String CHECKRESULT = "CHECKRESULT";
    @ApiOperation(value = "提交OA")
    @PostMapping("/pushOA")
    public Result pushOA(@RequestBody PushOADto pushOADto){
    public Result pushOA(@RequestBody PushOADto pushOADto) {
        return unqualifiedHandlerService.pushOA(pushOADto);
    }
    @ApiOperation(value = "查询")
    @GetMapping("/page")
    public Result pageByUnqualified(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto){
    public Result pageByUnqualified(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto) {
        return Result.success(unqualifiedHandlerService.pageList(page, unqualifiedHandlerDto));
    }
    @ApiOperation(value = "附件上传")
@@ -63,60 +58,46 @@
    @Anonymous
    @ApiOperation(value = "不合格处理OA回调")
    @RequestMapping(value = "/callback", produces = "text/plain")
    public String unqualifiedHandlerOACallback(String data){
        String msg = OAProcess.oaReturnMsg(0, "success");
        JSONObject json = JSONObject.parseObject(data);
        log.info("oa回调参数========>" + json);
        try {
            Long oaWorkId = json.getLong(REQUESTID);
            String checkResult = json.getString(CHECKRESULT);
            Object o = json.get("workflowRequestLogs");
            JSONArray objects = JSONArray.parseArray(JSONObject.toJSONString(o));
            unqualifiedHandlerService.unqualifiedHandlerOACallback(oaWorkId, checkResult,objects);
        } catch (Exception e) {
            log.error("oa回调失败: " + e.getMessage());
            msg = OAProcess.oaReturnMsg(1, "oa回调失败: " + e.getMessage());
        }
        log.info("oa回调返回结果========>" + msg);
        return msg;
    public String unqualifiedHandlerOACallback(String data) {
        return null;
    }
    /**
     * ä¸‹è½½oa附件
     *
     * @param handlerFileId
     * @param response
     */
    @GetMapping("/downloadOAFile/{handlerFileId}")
    public void downloadOAFile(@PathVariable("handlerFileId") Long handlerFileId, HttpServletResponse response){
        unqualifiedHandlerFileService.downloadOAFile(handlerFileId,response);
    public void downloadOAFile(@PathVariable("handlerFileId") Long handlerFileId, HttpServletResponse response) {
        unqualifiedHandlerFileService.downloadOAFile(handlerFileId, response);
    }
    @ApiOperation(value = "新增不合格处理")
    @PostMapping("/addUnqualifiedHandler")
    public Result addUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto){
    public Result addUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto) {
        return Result.success(unqualifiedHandlerService.addUnqualifiedHandler(unqualifiedHandlerDto));
    }
    @ApiOperation(value = "编辑不合格处理")
    @PostMapping("/updateUnqualifiedHandler")
    public Result updateUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto){
    public Result updateUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto) {
        return Result.success(unqualifiedHandlerService.updateUnqualifiedHandler(unqualifiedHandlerDto));
    }
    @ApiOperation(value = "查看oa流程")
    @GetMapping("/getOaFlow")
    public Result getOaFlow(Integer id){
    public Result getOaFlow(Integer id) {
        return Result.success(unqualifiedHandlerService.getOaFlow(id));
    }
    @ApiOperation(value = "查看不合格处理界面")
    @GetMapping("/getUnqualifiedHandler")
    public Result getUnqualifiedHandler(Integer id){
    public Result getUnqualifiedHandler(Integer id) {
        return Result.success(unqualifiedHandlerService.getUnqualifiedHandler(id));
    }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -16,7 +16,6 @@
import com.deepoove.poi.data.Pictures;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.DateImageUtil;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.IfsStockQueryDTO;
@@ -57,8 +56,7 @@
@Transactional(rollbackFor = Exception.class)
public class FinishProductSpotCheckServiceImpl implements FinishProductSpotCheckService {
    @Resource
    private IfsApiUtils ifsApiUtils;
    @Resource
    private SpotCheckQuarterMapper spotCheckQuarterMapper;
    @Resource
@@ -76,146 +74,9 @@
    public Result getIfsStockReport(IfsStockQueryDTO ifsStockQueryDTO) {
        JSONObject jresult = new JSONObject();
        jresult.put("total", 0);
        jresult.put("count", 0);
        jresult.put("data", new JSONArray());
        JSONObject jsonObject = new JSONObject();
        generateIfsStockQueryParams(jsonObject, ifsStockQueryDTO, ifsStockQueryDTO.getPage(), ifsStockQueryDTO.getLimit());
        Result result = ifsApiUtils.getIfsStock(jsonObject.toJSONString());
        if (result.getCode() == 200) {
            JSONObject data = (JSONObject) JSON.toJSON(result.getData());
            JSONArray array = new JSONArray();
            for (int i = 0; i < data.getJSONArray("LIST_INFO").size(); i++) {
                JSONObject listInfo = data.getJSONArray("LIST_INFO").getJSONObject(i);
                array.add(listInfo);
            }
            //获取总数量
            int count = data.getIntValue("TOTAL_RECORD");
            //获取页数
            int total = (int) Math.ceil((double) count / (double) ifsStockQueryDTO.getLimit());
            jresult.put("total", total);
            jresult.put("count", count);
            jresult.put("data", array);
        }
        return Result.success(jresult);
        return Result.success();
    }
    public void generateIfsStockQueryParams(JSONObject result, IfsStockQueryDTO ifsStockQueryDTO, Long pageNo, Long pageSize) {
        result.put("PAGE", pageNo);
        result.put("LIMIT", pageSize);
        result.put("WAREHOUSE", "成品仓库");
        result.put("QUANTITY_FLAG", ">0");
        //表里面的OTC行号
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getCotcOrderNo())) {
            result.put("C_OTC_ORDER_NO", ifsStockQueryDTO.getCotcOrderNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getCotcLineNo())) {
            result.put("C_OTC_LINE_NO", ifsStockQueryDTO.getCotcLineNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getPartNo())) {
            result.put("PART_NO", ifsStockQueryDTO.getPartNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getPartDescription())) {
            result.put("PART_DESC", "%" + ifsStockQueryDTO.getPartDescription() + "%");
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocNo())) {
            result.put("LOCATION_NO", ifsStockQueryDTO.getLocNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocDesc())) {
            result.put("LOCATION_DESC", ifsStockQueryDTO.getLocDesc());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLotBatchNo())) {
            result.put("LOT_BATCH_NO", ifsStockQueryDTO.getLotBatchNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getWdrNo())) {
            result.put("WDR_NO", ifsStockQueryDTO.getWdrNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getWarehouse())) {
            result.put("WAREHOUSE", ifsStockQueryDTO.getWarehouse());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocationGroup())) {
            result.put("LOCATION_GROUP", ifsStockQueryDTO.getLocationGroup());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocationGroupDesc())) {
            result.put("LOCATION_GROUP_DESC", ifsStockQueryDTO.getLocationGroupDesc());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getReelNumber())) {
            result.put("ATTR1", ifsStockQueryDTO.getReelNumber());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getStartMeter())) {
            result.put("ATTR2", ifsStockQueryDTO.getStartMeter());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getEndMeter())) {
            result.put("ATTR3", ifsStockQueryDTO.getEndMeter());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getOuterColor())) {
            result.put("ATTR4", ifsStockQueryDTO.getOuterColor());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getInsulationColor())) {
            result.put("ATTR5", ifsStockQueryDTO.getInsulationColor());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getOtcOrderNo())) {
            result.put("ATTR6", ifsStockQueryDTO.getOtcOrderNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getMpsNo())) {
            result.put("ATTR7", ifsStockQueryDTO.getMpsNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLetteringInfo())) {
            result.put("ATTR8", ifsStockQueryDTO.getLetteringInfo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getSStockQuantity())) {
            result.put("ATTR9", ifsStockQueryDTO.getSStockQuantity());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getSAvailableStockQuantity())) {
            result.put("ATTR10", ifsStockQueryDTO.getSAvailableStockQuantity());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getSunit())) {
            result.put("ATTR11", ifsStockQueryDTO.getSunit());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getStockSource())) {
            result.put("ATTR12", ifsStockQueryDTO.getStockSource());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getInspInstorageTime())) {
            result.put("ATTR13", ifsStockQueryDTO.getInspInstorageTime());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getTestRemark())) {
            result.put("ATTR14", ifsStockQueryDTO.getTestRemark());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getGrossWeight())) {
            result.put("ATTR15", ifsStockQueryDTO.getGrossWeight());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getNetWeight())) {
            result.put("ATTR16", ifsStockQueryDTO.getNetWeight());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getPackingManner())) {
            result.put("ATTR17", ifsStockQueryDTO.getPackingManner());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getCylinderNumber())) {
            result.put("ATTR18", ifsStockQueryDTO.getCylinderNumber());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getRemark())) {
            result.put("ATTR19", ifsStockQueryDTO.getRemark());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getLengthRequirement())) {
            result.put("ATTR20", ifsStockQueryDTO.getLengthRequirement());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getCustomerName())) {
            result.put("ATTR21", ifsStockQueryDTO.getCustomerName());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getSystemNo())) {
            result.put("ATTR22", ifsStockQueryDTO.getSystemNo());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getInSource())) {
            result.put("ATTR23", ifsStockQueryDTO.getInSource());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getSplitQuality())) {
            result.put("ATTR24", ifsStockQueryDTO.getSplitQuality());
        }
        if (StrUtil.isNotBlank(ifsStockQueryDTO.getReserveQuantity())) {
            result.put("QTY_RESERVED", ifsStockQueryDTO.getReserveQuantity());
        }
    }
    /************************************************* å­£åº¦æŠ½æ · ***********************************************************/
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -28,7 +28,6 @@
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.*;
import com.ruoyi.inspect.mapper.*;
@@ -80,7 +79,6 @@
    private final NumberGenerator<InsOrder> numberGenerator;
    private InsReportMapper insReportMapper;
    private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper;
    private IfsApiUtils ifsApiUtils;
    private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper;
    private StandardProductListMapper standardProductListMapper;
    private StructureItemParameterMapper structureItemParameterMapper;
@@ -548,104 +546,7 @@
     */
    @Override
    public void getIfsOrder() {
        HashMap<String, Object> map = new HashMap<>();
        map.put("LOCATION_NO","1302");
        map.put("STATE_DB","To be Inspected");
        List<Map<String, Object>> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map));
        if(inventory.size() == 0) {
            return;
        }
        // è¿›è¡Œä¿å­˜
        for (Map<String, Object> map1 : inventory) {
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // æ—¶é—´æ ¼å¼åŒ–
            IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity();
            ifsInventoryQuantity.setContract(map1.get("CONTRACT") == null ? "" : map1.get("CONTRACT").toString()); // åŸŸ
            ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString() ); // é›¶ä»¶å·
            ifsInventoryQuantity.setPartDesc(map1.get("PART_DESC") == null ? "" : map1.get("PART_DESC").toString()); // é›¶ä»¶æè¿°
            ifsInventoryQuantity.setOrderNo(map1.get("ORDER_NO") == null ? "" : map1.get("ORDER_NO").toString()); // è®¢å•号
            ifsInventoryQuantity.setLineNo(map1.get("LINE_NO") == null ? "" : map1.get("LINE_NO").toString()); // è¡Œå·
            ifsInventoryQuantity.setReleaseNo(map1.get("RELEASE_NO") == null ? "" : map1.get("RELEASE_NO").toString()); // ä¸‹è¾¾å·
            ifsInventoryQuantity.setReceiptNo(Integer.parseInt(map1.get("RECEIPT_NO") == null ? "" : map1.get("RECEIPT_NO").toString())); // æŽ¥æ”¶å·
            ifsInventoryQuantity.setStatus(map1.get("STATE") == null ? "" : map1.get("STATE").toString()); // çŠ¶æ€æè¿°
            ifsInventoryQuantity.setStatusDb(map1.get("STATE_DB") == null ? "" : map1.get("STATE_DB").toString()); // çŠ¶æ€
            if(map1.get("QTY_ARRIVED") != null) {
                ifsInventoryQuantity.setQtyArrived(new BigDecimal(map1.get("QTY_ARRIVED").toString())); // æŠµè¾¾çš„采购数量
            }
            if(map1.get("QTY_INSPECTED") != null) {
                ifsInventoryQuantity.setQtyInspected(new BigDecimal(map1.get("QTY_INSPECTED").toString())); // å·²æ£€éªŒçš„购买数量
            }
            if(map1.get("QTY_TO_INSPECT") != null) {
                ifsInventoryQuantity.setQtyToInspect(new BigDecimal(map1.get("QTY_TO_INSPECT").toString())); // è¦æ£€éªŒçš„采购数量
            }
            if(map1.get("INV_QTY_IN_STORE") != null) {
                ifsInventoryQuantity.setInvQtyInStore(new BigDecimal(map1.get("INV_QTY_IN_STORE").toString())); // æŠµè¾¾çš„库存数量
            }
            if(map1.get("PUR_QTY_IN_STORE") != null) {
                ifsInventoryQuantity.setPurQtyInStore(new BigDecimal( map1.get("PUR_QTY_IN_STORE").toString())); // æŠµè¾¾çš„采购数量
            }
            ifsInventoryQuantity.setSupplierId(map1.get("SUPPLIER_ID") == null ? "" : map1.get("SUPPLIER_ID").toString()); // ä¾›åº”商ID
            ifsInventoryQuantity.setSupplierName(map1.get("SUPPLIER_NAME") == null ? "" : map1.get("SUPPLIER_NAME").toString()); // ä¾›åº”商名称
            ifsInventoryQuantity.setConfigurationId(map1.get("CONFIGURATION_ID") == null ? "" : map1.get("CONFIGURATION_ID").toString()); // é…ç½®æ ‡è¯†
            ifsInventoryQuantity.setLotBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // æ‰¹æ¬¡å·
            ifsInventoryQuantity.setUpdateBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // æ‰¹æ¬¡å·
            ifsInventoryQuantity.setWaivDevRejNo(map1.get("WAIV_DEV_REJ_NO") == null ? "" : map1.get("WAIV_DEV_REJ_NO").toString()); // WDR号
            ifsInventoryQuantity.setActivitySeq(map1.get("ACTIVITY_SEQ") == null ? null : Integer.parseInt(map1.get("ACTIVITY_SEQ").toString())); // æ´»åŠ¨åºåˆ—
            ifsInventoryQuantity.setSerialNo(map1.get("SERIAL_NO") == null ? "" : map1.get("SERIAL_NO").toString()); // åºåˆ—号
            ifsInventoryQuantity.setLocationNo(map1.get("LOCATION_NO") == null ? "" : map1.get("LOCATION_NO").toString()); // åº“位号
            ifsInventoryQuantity.setEngChgLevel(map1.get("ENG_CHG_LEVEL") == null ? "" : map1.get("ENG_CHG_LEVEL").toString()); // ç‰ˆæœ¬å·
            ifsInventoryQuantity.setReceiver(map1.get("RECEIVER") == null ? "" : map1.get("RECEIVER").toString()); // æŽ¥æ”¶äºº
            ifsInventoryQuantity.setReceiverName(map1.get("RECEIVER_NAME") == null ? "" : map1.get("RECEIVER_NAME").toString()); // æŽ¥æ”¶äººåç§°
            ifsInventoryQuantity.setBuyerCode(map1.get("BUYER_CODE") == null ? "" : map1.get("BUYER_CODE").toString()); // é‡‡è´­å‘˜
            ifsInventoryQuantity.setBuyerName(map1.get("BUYER_NAME") == null ? "" : map1.get("BUYER_NAME").toString()); // é‡‡è´­å‘˜åç§°
            if(map1.get("ARRIVE_DATE") != null) {
                ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(),dateTimeFormatter)); // å®žé™…到货日期
            }
            if(map1.get("DELIVERY_DATE") != null) {
                ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(),dateTimeFormatter)); // å®žé™…交货日期
            }
            if(map1.get("PRODUCT_DATE") != null) {
                ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(),dateTimeFormatter)); // ç”Ÿäº§æ—¥æœŸ
            }
            if(map1.get("INVALID_DATE") != null) {
                ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(),dateTimeFormatter)); // å¤±æ•ˆæ—¥æœŸ
            }
            if(map1.get("APPROVED_DATE") != null) {
                ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(),dateTimeFormatter)); // å®¡æ‰¹æ—¥æœŸ
            }
            ifsInventoryQuantity.setReqCeater(map1.get("REQ_CEATER") == null ? "" : map1.get("REQ_CEATER").toString()); // é‡‡è´­ç”³è¯·åˆ›å»ºäºº
            ifsInventoryQuantity.setReqCeaterName(map1.get("REQ_CEATER_NAME") == null ? "" : map1.get("REQ_CEATER_NAME").toString()); // é‡‡è´­ç”³è¯·åˆ›å»ºäººåç§°
            ifsInventoryQuantity.setLineRemarks(map1.get("LINE_REMARKS") == null ? "" : map1.get("LINE_REMARKS").toString()); // é‡‡è´­è®¢å•行备注
            ifsInventoryQuantity.setBuyUnitMeas(map1.get("BUY_UNIT_MEAS") == null ? "" : map1.get("BUY_UNIT_MEAS").toString()); // é‡‡è´­å•位
            ifsInventoryQuantity.setReceiverDate(LocalDateTime.now()); // æŽ¥æ”¶æ—¥æœŸ
            ifsInventoryQuantity.setIsSource(1);
            ifsInventoryQuantity.setState(0);
            Long count = ifsInventoryQuantityMapper.selectCount(new LambdaQueryWrapper<IfsInventoryQuantity>()
                    .eq(IfsInventoryQuantity::getOrderNo, ifsInventoryQuantity.getOrderNo())
                    .eq(IfsInventoryQuantity::getLineNo, ifsInventoryQuantity.getLineNo())
                    .eq(IfsInventoryQuantity::getReleaseNo, ifsInventoryQuantity.getReleaseNo())
                    .eq(IfsInventoryQuantity::getReceiptNo, ifsInventoryQuantity.getReceiptNo())
                    .eq(IfsInventoryQuantity::getLocationNo, ifsInventoryQuantity.getLocationNo())
                    .eq(IfsInventoryQuantity::getLotBatchNo, ifsInventoryQuantity.getLotBatchNo())
                    .eq(IfsInventoryQuantity::getSerialNo, ifsInventoryQuantity.getSerialNo())
                    .eq(IfsInventoryQuantity::getEngChgLevel, ifsInventoryQuantity.getEngChgLevel())
                    .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo())
                    .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq())
            );
            if(count == 0) {
                ifsInventoryQuantity.setIsFirst(0);
                // æŸ¥è¯¢äº§ä¸šé“¾æ£€æµ‹æ•°æ®
                String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
                        ifsInventoryQuantity.getLineNo(),
                        ifsInventoryQuantity.getReleaseNo());
                ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
                ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
            }
        }
        return;
    }
    /**
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -34,7 +34,6 @@
import com.ruoyi.common.core.domain.entity.InformationNotification;
import com.ruoyi.common.config.WechatProperty;
import com.ruoyi.common.utils.*;
import com.ruoyi.common.utils.api.IfsApiUtils;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.InsReportExport;
import com.ruoyi.inspect.dto.ReportPageDto;
@@ -108,12 +107,10 @@
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    @Resource
    private InsOrderService insOrderService;
    @Resource
    private WechatProperty wechatProperty;
//    @Resource
//    private WechatProperty wechatProperty;
    @Resource
    private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper;
    @Resource
    private IfsApiUtils ifsApiUtils;
    @Resource
    private InsSampleUserMapper insSampleUserMapper;
@@ -836,23 +833,23 @@
                        .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()));
            }
            threadPoolTaskExecutor.execute(() -> {
                // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
                String message = "";
                message += "检测结果提交通知";
                message += "\n批次号: " + one.getUpdateBatchNo();
                message += "\n零件号: " + one.getPartNo();
                message += "\n零件描述: " + one.getPartDesc();
                message += "\n供应商名称: " + one.getSupplierName();
                message += "\n抵达数量: " + one.getQtyArrived().stripTrailingZeros().toPlainString() + one.getBuyUnitMeas();
                // å‘送企业inspectStatus信通知
                if (inspectStatus == 1) {
                    message += "\n检测结果: åˆæ ¼";
                } else {
                    message += "\n检测结果: ä¸åˆæ ¼";
                }
                WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
            });
//            threadPoolTaskExecutor.execute(() -> {
//                // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
//                String message = "";
//                message += "检测结果提交通知";
//                message += "\n批次号: " + one.getUpdateBatchNo();
//                message += "\n零件号: " + one.getPartNo();
//                message += "\n零件描述: " + one.getPartDesc();
//                message += "\n供应商名称: " + one.getSupplierName();
//                message += "\n抵达数量: " + one.getQtyArrived().stripTrailingZeros().toPlainString() + one.getBuyUnitMeas();
//                // å‘送企业inspectStatus信通知
//                if (inspectStatus == 1) {
//                    message += "\n检测结果: åˆæ ¼";
//                } else {
//                    message += "\n检测结果: ä¸åˆæ ¼";
//                }
//                WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
//            });
        }
@@ -904,66 +901,7 @@
     */
    @Override
    public String moveRawMaterial(IfsInventoryQuantity one) {
        String toLocation;
        // ç™»è®°é‡‡è´­æ£€éªŒç»“æžœSTD
        if (one.getIsRegister().equals(0)) {
            Map<String, Object> resultMap = new HashMap<>();
            List<Map<String, Object>> resultList = new ArrayList<>();
            Map<String, Object> map = new HashMap<>();
            map.put("ORDER_NO", one.getOrderNo()); // é‡‡è´­è®¢å•号
            map.put("LINE_NO", one.getLineNo()); // è¡Œå·
            map.put("RELEASE_NO", one.getReleaseNo()); // ä¸‹è¾¾å·
            map.put("RECEIPT_NO", one.getReceiptNo()); // æŽ¥æ”¶å·
            map.put("PURCH_QTY", one.getQtyToInspect()); // è¦æ£€éªŒçš„采购数量
            resultList.add(map);
            resultMap.put("RECORD_ID", UUID.randomUUID().toString());
            resultMap.put("SYSCODE", "LIMS");
            resultMap.put("SYSMODEL", "登记采购检验结果");
            resultMap.put("BATCH_INFO", resultList);
            Result result = ifsApiUtils.getProcurementResults(JSONUtil.toJsonStr(resultMap));
            if (result.getCode() != 200) {
                throw new ErrorException("IFS登记采购检验结果失败: " + result.getMessage());
            }
        }
        insOrderService.updateIfsInventoryQuantity(one.getId());
        /**
         * TODO åŽç»­éœ€è¦è°ƒç”¨IFS的接口 ç§»å…¥çš„库位号 toLocation
         */
        // æ£€éªŒåŽç§»åº“
        toLocation = "1301";
        Map<String, Object> moveResultMap = new HashMap<>();
        List<Map<String, Object>> moveResultList = new ArrayList<>();
        Map<String, Object> moveMap = new HashMap<>();
        moveMap.put("ORDER_NO", one.getOrderNo()); // é‡‡è´­è®¢å•号
        moveMap.put("LINE_NO", one.getLineNo());
        moveMap.put("RELEASE_NO", one.getReleaseNo());
        moveMap.put("RECEIPT_NO", one.getReceiptNo());
        moveMap.put("PART_NO", one.getPartNo());
        moveMap.put("QTY", one.getQtyArrived());
        moveMap.put("LOCATION_NO", one.getLocationNo());
        moveMap.put("TO_LOCATION_NO", toLocation);
        moveMap.put("LOT_BATCH_NO", one.getLotBatchNo());
        moveMap.put("SERIAL_NO", one.getSerialNo());
        moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
        moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
        moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
        moveResultList.add(moveMap);
        moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
        moveResultMap.put("SYSCODE", "LIMS");
        moveResultMap.put("SYSMODEL", "检验后移库");
        moveResultMap.put("BATCH_INFO", moveResultList);
        Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
        // å¦‚果有必须为零件指定批号报错需要重新提交移库信息去指定批号
        if (result1.getCode() != 200) {
            String message = result1.getMessage();
            if (message.contains("必须为零件") && message.contains("指定批号")) {
                updaeBatch(one, toLocation);
            } else {
                throw new ErrorException("IFS检验后移库失败: " + result1.getMessage());
            }
        }
        return toLocation;
        return null;
    }
    /**
@@ -1045,67 +983,6 @@
     * @param toLocation
     */
    private void updaeBatch(IfsInventoryQuantity one, String toLocation) {
        if (one.getIsUpdateBatch().equals(0)) {
            // å…ˆä¿®æ”¹æ‰¹æ¬¡å·åŽè¿›è¡Œç§»åº“
            Map<String, Object> resultMap = new HashMap<>();
            List<Map<String, Object>> resultList = new ArrayList<>();
            Map<String, Object> map = new HashMap<>();
            map.put("ORDER_NO", one.getOrderNo()); // é‡‡è´­è®¢å•号
            map.put("LINE_NO", one.getLineNo()); // è¡Œå·
            map.put("RELEASE_NO", one.getReleaseNo()); // ä¸‹è¾¾å·
            map.put("RECEIPT_NO", one.getReceiptNo()); // æŽ¥æ”¶å·
            map.put("PART_NO", one.getPartNo()); //零件号
            map.put("CONFIGURATION_ID", one.getConfigurationId()); // é…ç½®æ ‡è¯†
            map.put("LOCATION_NO", one.getLocationNo()); // åº“位号
            map.put("LOT_BATCH_NO", one.getLotBatchNo());// æ‰¹æ¬¡å·
            map.put("NEW_LOT_BATCH_NO", one.getUpdateBatchNo()); // ç›®æ ‡æ‰¹æ¬¡å·
            map.put("SERIAL_NO", one.getSerialNo()); // åºåˆ—号
            map.put("ENG_CHG_LEVEL", one.getEngChgLevel()); // ç‰ˆæœ¬å·
            map.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo()); // wdr号
            map.put("ACTIVITY_SEQ", one.getActivitySeq()); // æ´»åŠ¨åºå·
            map.put("QTY_TO_CHANGE", one.getQtyArrived()); // å˜æ›´æ•°é‡
            resultList.add(map);
            resultMap.put("RECORD_ID", UUID.randomUUID().toString());
            resultMap.put("SYSCODE", "LIMS");
            resultMap.put("SYSMODEL", "修改采购订单批次号");
            resultMap.put("BATCH_INFO", resultList);
            Result result = ifsApiUtils.updateMoveReceiptLot(JSONUtil.toJsonStr(resultMap));
            if (result.getCode() != 200) {
                throw new ErrorException("IFS修改批次号失败: " + result.getMessage());
            }
            ifsInventoryQuantityMapper.update(null, Wrappers.<IfsInventoryQuantity>lambdaUpdate()
                    .set(IfsInventoryQuantity::getIsUpdateBatch, 1)
                    .eq(IfsInventoryQuantity::getId, one.getId()));
        }
        Map<String, Object> moveResultMap = new HashMap<>();
        List<Map<String, Object>> moveResultList = new ArrayList<>();
        Map<String, Object> moveMap = new HashMap<>();
        moveMap.put("ORDER_NO", one.getOrderNo()); // é‡‡è´­è®¢å•号
        moveMap.put("LINE_NO", one.getLineNo());
        moveMap.put("RELEASE_NO", one.getReleaseNo());
        moveMap.put("RECEIPT_NO", one.getReceiptNo());
        moveMap.put("PART_NO", one.getPartNo());
        moveMap.put("QTY", one.getQtyArrived());
        moveMap.put("LOCATION_NO", one.getLocationNo());
        moveMap.put("TO_LOCATION_NO", toLocation);
        moveMap.put("LOT_BATCH_NO", one.getUpdateBatchNo());
        moveMap.put("SERIAL_NO", one.getSerialNo());
        moveMap.put("WAIV_DEV_REJ_NO", one.getWaivDevRejNo());
        moveMap.put("ENG_CHG_LEVEL", one.getEngChgLevel());
        moveMap.put("ACTIVITY_SEQ", one.getActivitySeq());
        moveResultList.add(moveMap);
        moveResultMap.put("RECORD_ID", UUID.randomUUID().toString());
        moveResultMap.put("SYSCODE", "LIMS");
        moveResultMap.put("SYSMODEL", "检验后移库");
        moveResultMap.put("BATCH_INFO", moveResultList);
        Result result1 = ifsApiUtils.moveReceipt(JSONUtil.toJsonStr(moveResultMap));
        if (result1.getCode() != 200) {
            throw new ErrorException("IFS检验后移库失败: " + result1.getMessage());
        }
    }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -10,9 +10,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.oa.OAProcess;
import com.ruoyi.common.oa.OAProperty;
import com.ruoyi.common.oa.OAResult;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.exception.ErrorException;
@@ -54,8 +51,7 @@
    @Resource
    private CommonOaService commonOaService;
    @Resource
    private OAProperty oaProperty;
    @Resource
    private InsUnqualifiedHandlerFileService insUnqualifiedHandlerFileService;
    @Resource
@@ -69,68 +65,6 @@
    @Override
    public Result pushOA(PushOADto pushOADto) {
        //获取不合格处理记录
        UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
        if (vo.getRequestId() != null) {
            throw new ErrorException("该不合格处理已提交过OA");
        }
        //提交oa相关字段赋值
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        Map<String, String> mainFields = new HashMap<>();
        mainFields.put("bh", vo.getNo());//编号
        mainFields.put("gysmc", vo.getSupplierName());//供应商名称
        mainFields.put("wlmc", vo.getMaterialName());//物料名称
        mainFields.put("scpc", vo.getProductionBatch());//生产批次
        mainFields.put("dhsl", vo.getCargoQuantity());//到货数量
        mainFields.put("ggxh", vo.getSpecsModels());//规格型号
        mainFields.put("bjrq", vo.getInspectTime().format(formatter));//报检日期
        mainFields.put("fkr", SecurityUtils.getUsername());//反馈人
        mainFields.put("fkrq", vo.getFeedbackTime().format(formatter));//反馈日期
        mainFields.put("fl", vo.getClassification());//分类
        mainFields.put("bhggs", vo.getOffGradeAscription());//不合格归属
        mainFields.put("bhgqkms", vo.getUnqualifiedDesc());//不合格情况描述
        //查询附件
        List<InsUnqualifiedHandlerFile> handlerFiles = insUnqualifiedHandlerFileService.list(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
                .eq(InsUnqualifiedHandlerFile::getUnqualifiedId, vo.getHandlerId()));
        if (CollectionUtils.isNotEmpty(handlerFiles)) {
            StringBuilder fileUrl = new StringBuilder();
            for (int i = 0; i < handlerFiles.size(); i++) {
                String path = handlerFiles.get(i).getType().equals(1) ? "/lims/img/" : "/lims/word/";
                if (i == handlerFiles.size() - 1) {
                    fileUrl.append("<a href='" + oaProperty.getProdIp()).append(path + handlerFiles.get(i).getFileUrl()
                            + "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>");
                } else {
                    fileUrl.append("<a href='" + oaProperty.getProdIp()).append(path + handlerFiles.get(i).getFileUrl()
                            + "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>").append("<br/>");
                }
            }
            mainFields.put("xlimsfj", fileUrl.toString());
        }
        //流程标题
        String requestName = vo.getHeadline();
        //发起OA
        boolean oa = false;
        try {
            log.info("发起不合格处理OA审核流程");
            String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
            OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
            log.info("不合格处理OA审核流程结束,返回结果->{}" + oaResult);
            oa = oaResult.success();
            if (oa) {
                String addWorkflowResult = oaResult.getAddWorkflowResult();
                baseMapper.update(null, new LambdaUpdateWrapper<InsUnqualifiedHandler>()
                        .set(InsUnqualifiedHandler::getRequestId, addWorkflowResult)
                        .set(InsUnqualifiedHandler::getOaState, 2)
                        .eq(InsUnqualifiedHandler::getId, pushOADto.getHandlerId()));
            } else {
                return Result.fail("提交oa失败: " + oaResult.getErrorMsg());
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return Result.success();
    }
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/RawMaterialOrderServiceImpl.java
@@ -75,7 +75,7 @@
    private InsSampleMapper insSampleMapper;
    private final NumberGenerator<InsOrder> numberGenerator;
    private InsReportService insReportService;
    private WechatProperty wechatProperty;
//    private WechatProperty wechatProperty;
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
    private InsProductMapper insProductMapper;
    private AuxiliaryOutputWorkingHoursMapper auxiliaryOutputWorkingHoursMapper;
@@ -151,31 +151,31 @@
                .set(IfsInventoryQuantity::getIsInspect, 1)
                .set(IfsInventoryQuantity::getDeclareDate, LocalDateTime.now())
        );
        threadPoolTaskExecutor.execute(() -> {
            List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
                    .in(IfsInventoryQuantity::getId, ids));
            // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
            String message = "";
            message += "新增报检通知";
            for (IfsInventoryQuantity inventoryQuantity : quantityList) {
                message += "\n批次号: " + inventoryQuantity.getUpdateBatchNo();
                message += "\n零件描述: " + inventoryQuantity.getPartDesc();
                message += "\n抵达数量: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
                // åˆ¤æ–­æœ‰æ²¡æœ‰åˆ°20吨. æˆ–者能否免检
                int result = notificationRawOrder(inventoryQuantity.getId());
                switch (result) {
                    case 1:
                        message += "\n当前样品已检验过, å¯ä»¥å…æ£€";
                        break;
                    case 2:
                        message += "\n当前样品已超过20吨";
                        break;
                }
                message += "\n";
            }
            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
        });
//        threadPoolTaskExecutor.execute(() -> {
//            List<IfsInventoryQuantity> quantityList = ifsInventoryQuantityMapper.selectList(Wrappers.<IfsInventoryQuantity>lambdaQuery()
//                    .in(IfsInventoryQuantity::getId, ids));
//            // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
//            String message = "";
//            message += "新增报检通知";
//            for (IfsInventoryQuantity inventoryQuantity : quantityList) {
//                message += "\n批次号: " + inventoryQuantity.getUpdateBatchNo();
//                message += "\n零件描述: " + inventoryQuantity.getPartDesc();
//                message += "\n抵达数量: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
//
//                // åˆ¤æ–­æœ‰æ²¡æœ‰åˆ°20吨. æˆ–者能否免检
//                int result = notificationRawOrder(inventoryQuantity.getId());
//                switch (result) {
//                    case 1:
//                        message += "\n当前样品已检验过, å¯ä»¥å…æ£€";
//                        break;
//                    case 2:
//                        message += "\n当前样品已超过20吨";
//                        break;
//                }
//                message += "\n";
//            }
//            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
//        });
        return 1;
    }
@@ -219,16 +219,16 @@
                .set(IfsInventoryQuantity::getUpdateBatchNo, ifsInventoryQuantity.getUpdateBatchNo())
        );
        threadPoolTaskExecutor.execute(() -> {
            IfsInventoryQuantity inventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryQuantity.getId());
            // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
            String message = "";
            message += "新增报检通知";
            message += "\n批次号: " + inventoryQuantity.getUpdateBatchNo();
            message += "\n零件描述: " + inventoryQuantity.getPartDesc();
            message += "\n抵达数量: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
        });
//        threadPoolTaskExecutor.execute(() -> {
//            IfsInventoryQuantity inventoryQuantity = ifsInventoryQuantityMapper.selectById(ifsInventoryQuantity.getId());
//            // ä¼ä¸šå¾®ä¿¡é€šçŸ¥
//            String message = "";
//            message += "新增报检通知";
//            message += "\n批次号: " + inventoryQuantity.getUpdateBatchNo();
//            message += "\n零件描述: " + inventoryQuantity.getPartDesc();
//            message += "\n抵达数量: " + inventoryQuantity.getQtyArrived().stripTrailingZeros().toPlainString() + inventoryQuantity.getBuyUnitMeas();
//            WxCpUtils.informWebHook(wechatProperty.getExaminingUrl(), message);
//        });
        return 1;
    }
ruoyi-admin/src/main/java/com/ruoyi/web/MqttApplicationRunner.java
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/PersonnelHeaderApi.java
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/CompaniesController.java
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -4,7 +4,6 @@
import java.util.Set;
import java.util.UUID;
import com.ruoyi.common.config.SsoBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -41,9 +40,6 @@
    @Autowired
    private TokenService tokenService;
    @Autowired
    private SsoBean ssoBean;
    /**
     * ç™»å½•方法
@@ -110,7 +106,7 @@
    @GetMapping("/getSsoAuthUrl")
    public AjaxResult getSsoAuthUrl() {
        String uuid = UUID.randomUUID().toString();
        return AjaxResult.success("操作成功", ssoBean.getUrl() + "/oauth2/auth?response_type=code&scope=openid&client_id=" + ssoBean.getClientId() + "&redirect_uri=" + ssoBean.getCallbackUrl() + "&state=" + uuid);
        return AjaxResult.success("操作成功");
    }
    /**
ruoyi-admin/src/main/resources/application-druid.yml
@@ -8,7 +8,7 @@
    druid:
      # ä¸»åº“数据源
      master:
        url: jdbc:mysql://localhost:3306/center-lims?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        url: jdbc:mysql://114.132.189.42:9004/record-lims?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
      # ä»Žåº“数据源
@@ -71,7 +71,7 @@
    # æ•°æ®åº“索引
    database: 0
    #    # å¯†ç 
    #    password: root2022!
    password: 123456
    # è¿žæŽ¥è¶…æ—¶æ—¶é—´
    timeout: 10s
    lettuce:
@@ -96,7 +96,7 @@
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    log-impl: #org.apache.ibatis.logging.stdout.StdOutImpl
# Swagger配置
swagger:
@@ -127,47 +127,11 @@
wordUrl: D:\项目文件存储\word
#oa:
#    oaHost: http://192.168.0.49:8000/oa_workflowrequest.asmx?wsdl
#    prodIp: http://192.168.21.53:8081
#    unqualifiedProcessId: 41974
# äººäº‹ç³»ç»Ÿ
personnel:
  # æ­£å¼åœ°å€
  code: https://ztt-sso.ztt.cn/oauth2/token
  # è£…备人事正式库
  appId: 6f5f6a0c-2a01-4ef6-9e75-c8a6f0c2f044
  appSecret: 89b9c4735b1e5ee9d6a8544b9b38bb03
  companies: https://ztt-connector.ztt.cn/api/org/v1/companies
  simple: https://ztt-connector.ztt.cn/api/org/v1/employees/simple?companyId=
  # äººå‘˜å¯†ç èŽ·å–
  password: https://ztt-connector.ztt.cn/api/org/v1/employees/original_pwd/
  department: https://ztt-connector.ztt.cn/api/org/v1/companies/companyId/departments
  person: https://ztt-connector.ztt.cn/api/org/v1/employees/simple/
# ä¼ä¸šå¾®ä¿¡é€šçŸ¥
wechat:
  # è´¨é‡æŠ¥æ£€é€šçŸ¥
  examiningUrl: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=21993616-9966-4fe4-81b0-68e99a40c964
  examiningUrl:
ifs:
  contract: ZTZB
  contract-key-get: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=
  contract-key-post: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=
  custorder: http://192.168.20.47/PurchService.ashx?
  custorder-port: http://192.168.20.47:8008/PurchService.ashx?
  erp-services: http://192.168.20.47:8081
# å¤‡æ³¨ 18083密码:zttZTT123!@
mqtt:
  url: tcp://mqtt-ztt.zttiot.com:1883 # æœåС噍ip
  username: forwarder # MQTT-服务端-用户名,后期会修改为用户登录名
  password: ZTlink12345 # MQTT-服务端-密码,,后期会修改为用户登录密码
  timeout: 100 # è¶…æ—¶æ—¶é—´ ï¼ˆå•位:秒)
  keepalive: 60 # å¿ƒè·³ ï¼ˆå•位:秒)
  qos: 1 # å¿ƒè·³åŒ…级别
  completion-timeout: 3000 # è¿žæŽ¥è¶…时时间(单位:秒)
  clientId: javaPublish # clientId
  subscribe: /ztt/v3/2443521/publish # è®¢é˜…主题
  client: false # å¦‚果开发需要启动测试,需要改为false不然会一直报错
ruoyi-admin/src/main/resources/application-prod.yml
@@ -8,7 +8,7 @@
    druid:
      # ä¸»åº“数据源
      master:
        url: jdbc:mysql://114.132.189.42:9004/lims-ruoyi-test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        url: jdbc:mysql://114.132.189.42:9004/record-lims?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
      # ä»Žåº“数据源
@@ -127,32 +127,11 @@
wordUrl: /javaWork/lims-ruoyi/file/word
#oa:
#    oaHost: http://192.168.0.49:8000/oa_workflowrequest.asmx?wsdl
#    prodIp: http://192.168.21.53:8081
#    unqualifiedProcessId: 41974
wechat:
  # è´¨é‡æŠ¥æ£€é€šçŸ¥
  examiningUrl: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=21993616-9966-4fe4-81b0-68e99a40c964
  examiningUrl:
ifs:
  contract: ZTZB
  contract-key-get: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=
  contract-key-post: 4ttDeLKNsZuhstjtROMcRE1USNFXKdFYE7lQ2p1m5Bo=
  custorder: http://192.168.20.47/PurchService.ashx?
  custorder-port: http://192.168.20.47:8008/PurchService.ashx?
  erp-services: http://192.168.20.47:8081
# å¤‡æ³¨ 18083密码:zttZTT123!@
mqtt:
  url: tcp://mqtt-ztt.zttiot.com:1883 # æœåС噍ip
  username: forwarder # MQTT-服务端-用户名,后期会修改为用户登录名
  password: ZTlink12345 # MQTT-服务端-密码,,后期会修改为用户登录密码
  timeout: 100 # è¶…æ—¶æ—¶é—´ ï¼ˆå•位:秒)
  keepalive: 60 # å¿ƒè·³ ï¼ˆå•位:秒)
  qos: 1 # å¿ƒè·³åŒ…级别
  completion-timeout: 3000 # è¿žæŽ¥è¶…时时间(单位:秒)
  clientId: javaPublish # clientId
  subscribe: /ztt/v3/2443521/publish # è®¢é˜…主题
  client: false # å¦‚果开发需要启动测试,需要改为false不然会一直报错
ruoyi-admin/src/main/resources/application-test.yml
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/resources/application-ztzb.yml
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/resources/application.yml
@@ -16,7 +16,7 @@
# å¼€å‘环境配置
server:
  # æœåŠ¡å™¨çš„HTTP端口
  port: 8001
  port: 7012
  servlet:
    # åº”用的访问路径
    context-path:
@@ -88,11 +88,6 @@
  # åŒ¹é…é“¾æŽ¥
  urlPatterns: /system/*,/monitor/*,/tool/*
#集团统一登录
sso:
  url: https://ztt-sso.ztt.cn
  clientId: 6ca77685-e304-4c0e-9e63-3839e166742f
  clientSecret: 496e2809629ea5beb4118b10c95d702f
  callbackUrl: https://ztzb-lims.ztt.cn/thirdpartylogin
ruoyi-common/src/main/java/com/ruoyi/common/config/IfsProperties.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/config/PersonnelProperties.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/config/SsoBean.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflow.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/AddWorkflowResponse.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableField.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowRequestTableRecord.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ArrayOfOAWorkflowTable.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequest.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ForwardWorkflowRequestResponse.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAResult.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequest.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpGet.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestHttpPost.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkFlowRequestSoap.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestInfo.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableField.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowRequestTableRecord.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAWorkflowTable.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/ObjectFactory.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflow.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/UpdateAndSubmitWorkflowResponse.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/oa/package-info.java
ÎļþÒÑɾ³ý
ruoyi-common/src/main/java/com/ruoyi/common/utils/api/IfsApiUtils.java
ÎļþÒÑɾ³ý
ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
@@ -5,7 +5,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.config.SsoBean;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
@@ -35,8 +34,6 @@
    private TokenService tokenService;
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private SsoBean ssoBean;
    /**
     * é€€å‡ºå¤„理
@@ -58,7 +55,6 @@
            // æ¸…除单点登录信息
            Object idToken = redisTemplate.opsForValue().get("ssoOauthToken:idToken:" + userName);
            if (idToken != null) {
                loginOutUrl = ssoBean.getUrl() + "/oauth2/sessions/logout?id_token_hint=" + idToken;
                redisTemplate.delete("ssoOauthToken:idToken:" + userName);
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.sso.logout.success")));
            } else {
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -4,7 +4,6 @@
import javax.net.ssl.SSLContext;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.config.SsoBean;
import com.ruoyi.framework.model.SsoOauthTokenModel;
import com.ruoyi.framework.model.SsoUserInfoModel;
import com.ruoyi.framework.web.ssoAuth.SsoCodeAuthenticationToken;
@@ -85,9 +84,6 @@
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private SsoBean ssoBean;
    @Autowired
    private RedisTemplate redisTemplate;
@@ -296,21 +292,7 @@
     * @return
     */
    public SsoOauthTokenModel getSsoAccessToken(String code) {
        List<NameValuePair> list = new LinkedList<>();
        list.add(new BasicNameValuePair("grant_type", "authorization_code"));
        list.add(new BasicNameValuePair("code", code));
        list.add(new BasicNameValuePair("client_id", ssoBean.getClientId()));
        list.add(new BasicNameValuePair("client_secret", ssoBean.getClientSecret()));
        list.add(new BasicNameValuePair("redirect_uri", ssoBean.getCallbackUrl()));
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/x-www-form-urlencoded");
        headers.put("Accept", "application/json");
        String result = doPost(ssoBean.getUrl() + "/oauth2/token", headers, list);
        if (org.apache.commons.lang3.StringUtils.isBlank(result)) {
            return null;
        }
        return JSON.parseObject(result, SsoOauthTokenModel.class);
        return null;
    }
    /**
@@ -319,13 +301,7 @@
     * @return
     */
    public SsoUserInfoModel getSsoUserInfo(String accessToken) {
        Map<String, String> headers = new HashMap<>();
        headers.put("Authorization", "Bearer " + accessToken);
        String result = doPost(ssoBean.getUrl() + "/userinfo", headers, null);
        if (org.apache.commons.lang3.StringUtils.isBlank(result)) {
            return null;
        }
        return JSON.parseObject(result, SsoUserInfoModel.class);
        return null;
    }
    public static String doPost(String url, Map<String, String> headers, List<NameValuePair> params) {