2021/11/9工作日志

Controller

 @ApiOperation("获取任务单信息")
    @PostMapping("/queryWorkOrder/{batchNo}")
    public BaseResponse<Map<String,ProduceBatchCraftstepInfo>> queryWorkOrder(@PathVariable String batchNo) throws ServiceException {
        Map<String, ProduceBatchCraftstepInfo> map = taskService.queryWorkOrder(batchNo);
        if (CollectionUtils.isEmpty(map))
            throw new ServiceException(ErrorEnum.NULL_TASK);
        return ResultResponseUtil.success(map);
    }

Service

public interface TaskService {
    Map<String, ProduceBatchCraftstepInfo> queryWorkOrder(String batchNo);
    }

Constant

public class TaskWorkOrderConstant {
    public static final String ZHUANG_LU = "装炉";
    public static final String KAI_LU = "开炉";
    public static final String Z_MATERIAL = "装料";
    public static final String CHOU_ZHENKONG = "抽真空(Pad)";
    public static final String YIN_JING = "引晶";
    public static final String CHAI_QING = "拆清";
}

ServiceImpl

@Override
    public Map<String, ProduceBatchCraftstepInfo> queryWorkOrder(String batchNo) {
        Example example = new Example(ProduceBatchCraftstepInfo.class);
        List<String> list = new ArrayList<>();
        //装炉 装料 抽真空 引晶 开炉 拆清
        list.add(TaskWorkOrderConstant.ZHUANG_LU);
        list.add(TaskWorkOrderConstant.KAI_LU);
        list.add(TaskWorkOrderConstant.Z_MATERIAL);
        list.add(TaskWorkOrderConstant.CHOU_ZHENKONG);
        list.add(TaskWorkOrderConstant.YIN_JING);
        list.add(TaskWorkOrderConstant.CHAI_QING);
        example.selectProperties("batchNo", "stepName", "operateData", "startTime", "operatorName")
                .createCriteria().andEqualTo("batchNo", batchNo).andIn("stepName", list);
        List<ProduceBatchCraftstepInfo> infos = produceBatchCraftstepInfoMapper.selectByExample(example);
        if (CollectionUtils.isEmpty(infos)) {
            return null;
        }
        // 质量类型
/*        JSONObject jsonObject = JSONObject.parseObject(taskInfo.getData());
        List<QualityInfoDTO> qualityTypeList =
                JSONArray.parseArray(jsonObject.getString("qualityInfo"), QualityInfoDTO.class);*/
        //List转Map toMap()    遍历取StepName为key   Function.identity()类似于v->v,选原来对象作为value     有重复取前者
        Map<String, ProduceBatchCraftstepInfo> infomap =
                infos.stream().collect(Collectors.toMap(ProduceBatchCraftstepInfo::getStepName, Function.identity(), (p1, p2) -> p1));
        //取出装料的OperateData转换为json
        ProduceBatchCraftstepInfo info = infomap.get(TaskWorkOrderConstant.Z_MATERIAL);
        if (info != null) {
            String data = info.getOperateData();
            JSONObject dataJson = JSONObject.parseObject(data);
            //将以scanList为key的数据转换为JSONArray
            JSONArray scanList = dataJson.getJSONArray("scanList");
            if (scanList != null) {
                Map<String, List<MaterialItem>> map = new HashMap<>();
                for (int i = 0; i < scanList.size(); i++) {
                    //遍历scanList  分为块,面
                    JSONObject jsonScanList = scanList.getJSONObject(i);
                    List<MaterialItem> materialItems = new ArrayList<>();
                    //取块、面所有对象
                    JSONArray scanItemList = jsonScanList.getJSONArray("scanItemList");
                    //遍历组装插入一条新数据
                    for (int k = 0; k < scanItemList.size(); k++) {
                        JSONObject JSONScanItemList = scanItemList.getJSONObject(k);
                        MaterialItem materialItem = new MaterialItem();
                        materialItem.setMatSpecs(JSONScanItemList.getString("matSpecs"));
                        materialItem.setWeight(JSONScanItemList.getString("relWeight"));
                        materialItem.setManName(JSONScanItemList.getString("manName"));
                        materialItem.setCode(JSONScanItemList.getString("materialCode"));
                        materialItem.setName(JSONScanItemList.getString("materialName"));
                        materialItems.add(materialItem);
                    }
                    map.put(jsonScanList.getString("name"), materialItems);
                }
                //氧化铝块List
                List<MaterialItem> blocks = map.get(ProduceConstant.BLOCK);
                //氧化铝面List
                List<MaterialItem> faces = map.get(ProduceConstant.FACE);

                //返回块面相加好的List
                blocks = getSum(blocks);
                faces = getSum(faces);

                //新建List集合以新key存入json
                List<MaterialItem> sumList = new ArrayList<>();
                sumList.addAll(blocks);
                sumList.addAll(faces);
                dataJson.put("sum", sumList);
            }
            //json转String
            info.setOperateData(dataJson.toJSONString());
            infomap.put(TaskWorkOrderConstant.Z_MATERIAL, info);
        }

        return infomap;
    }

    private List<MaterialItem> getSum(List<MaterialItem> blocks) {
        //list转map。key为manName与matSpecs拼接,value为原来对象,有相同的两者weight相加赋值给m1,并返回
        Map<String, MaterialItem> collect = blocks.stream()
                .collect(Collectors.toMap(m -> m.getManName() + "_" + m.getMatSpecs(), Function.identity(), (m1, m2) -> {
                    m1.setWeight((Integer.valueOf(m1.getWeight()) + Integer.valueOf(m2.getWeight())) + "");
                    return m1;
                }));
        List<MaterialItem> result = Lists.newArrayList();
        //entrySet是java中 键-值对的集合,Set里面的类型是Map.Entry,一般可以通过map.entrySet()得到。
        //entrySet实现Set接口,里面存放的是键值对。一个K对应一个V。
        //遍历collect转list
        for (Map.Entry<String, MaterialItem> entry : collect.entrySet()) {
            result.add(entry.getValue());
        }
        return Lists.newArrayList(collect.values());
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值