package com.qianwen.smartman.modules.coproduction.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import java.lang.invoke.SerializedLambda; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.core.mp.base.BaseServiceImpl; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.coproduction.dto.OrderProcessReportWorkDTO; import com.qianwen.smartman.modules.coproduction.dto.ResultByStartDTO; import com.qianwen.smartman.modules.coproduction.entity.OrderProcess; import com.qianwen.smartman.modules.coproduction.entity.OrderReportRecord; import com.qianwen.smartman.modules.coproduction.entity.OrderWorkstation; import com.qianwen.smartman.modules.coproduction.enums.CoProductionEnum; import com.qianwen.smartman.modules.coproduction.enums.WorkstationStatusEnum; import com.qianwen.smartman.modules.coproduction.mapper.OrderWorkstationMapper; import com.qianwen.smartman.modules.coproduction.service.IOrderWorkstationService; import com.qianwen.smartman.modules.coproduction.vo.OrderProcessStartWorkstationVO; import com.qianwen.smartman.modules.cps.vo.WorkstationSingleVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service public class OrderWorkstationServiceImpl extends BaseServiceImpl implements IOrderWorkstationService { @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public List getWorkstationInProcess(Set workstationIdList) { return this.baseMapper.getWorkstationInProcess(workstationIdList); } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public void updateOrderWorkstationForStart(Map orderReportRecordMap, ResultByStartDTO resultByStartDTO, Map workstationVoMap) { resultByStartDTO.getCanStartWorkstationIdList().forEach(i -> update( Wrappers .lambdaUpdate().eq(OrderWorkstation::getWorkstationId, i).eq(OrderWorkstation::getProcessId, resultByStartDTO.getWorkstationAndOrderProcessIdMap().get(i)) .set(OrderWorkstation::getProducerId, workstationVoMap.get(i).getProducerId()) .set(OrderWorkstation::getProducerCode, workstationVoMap.get(i).getProducerCode()) .set(OrderWorkstation::getProducerName, workstationVoMap.get(i).getProducerName()) .set(OrderWorkstation::getWorkstationStatus, WorkstationStatusEnum.started.getCode()) .set(OrderWorkstation::getCurrentRecordId, orderReportRecordMap.get(i).getId()))); /* resultByStartDTO.getCanStartWorkstationIdList().forEach(i -> { update((Wrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> { return v0.getWorkstationId(); }, i)).eq((v0) -> { return v0.getProcessId(); }, resultByStartDTO.getWorkstationAndOrderProcessIdMap().get(i))).set((v0) -> { return v0.getProducerId(); }, ((OrderProcessStartWorkstationVO) workstationVoMap.get(i)).getProducerId())).set((v0) -> { return v0.getProducerCode(); }, ((OrderProcessStartWorkstationVO) workstationVoMap.get(i)).getProducerCode())).set((v0) -> { return v0.getProducerName(); }, ((OrderProcessStartWorkstationVO) workstationVoMap.get(i)).getProducerName())).set((v0) -> { return v0.getWorkstationStatus(); }, WorkstationStatusEnum.started.getCode())).set((v0) -> { return v0.getCurrentRecordId(); }, ((OrderReportRecord) orderReportRecordMap.get(i)).getId())); }); */ } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public void generateOrderWorkstation(List orderProcessList) { List orderWorkstationList = new ArrayList<>(); orderProcessList.forEach(orderProcess -> { String workstationIds = orderProcess.getWorkstationId(); if (Func.isEmpty(workstationIds)) { OrderWorkstation orderWorkstation = new OrderWorkstation(); orderWorkstation.setPlanId(orderProcess.getPlanId()); orderWorkstation.setOrderId(orderProcess.getOrderId()); orderWorkstation.setProcessId(orderProcess.getId()); orderWorkstationList.add(orderWorkstation); return; } String[] workstationIdSplit = workstationIds.split(","); String[] workstationNameSplit = orderProcess.getWorkstationName().split(","); for (int i = 0; i < workstationIdSplit.length; i++) { OrderWorkstation orderWorkstation2 = new OrderWorkstation(); orderWorkstation2.setPlanId(orderProcess.getPlanId()); orderWorkstation2.setOrderId(orderProcess.getOrderId()); orderWorkstation2.setProcessId(orderProcess.getId()); Long workstationId = Long.valueOf(workstationIdSplit[i]); String workstationName = workstationNameSplit[i]; orderWorkstation2.setWorkstationId(workstationId); orderWorkstation2.setWorkstationName(workstationName); orderWorkstation2.setWorkstationStatus(WorkstationStatusEnum.UNDRESSED.getCode()); orderWorkstationList.add(orderWorkstation2); } }); saveBatch(orderWorkstationList); } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public void updateOrderWorkstationForStartMain(Long orderProcessId, Long recordId) { update(Wrappers.lambdaUpdate() .eq(OrderWorkstation::getProcessId, orderProcessId) .set(OrderWorkstation::getWorkstationStatus, WorkstationStatusEnum.started.getCode()) .set(OrderWorkstation::getCurrentRecordId, recordId)); /* * update((Wrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) * Wrappers.lambdaUpdate().eq((v0) -> { return v0.getProcessId(); }, * orderProcessId)).set((v0) -> { return v0.getWorkstationStatus(); }, * WorkstationStatusEnum.started.getCode())).set((v0) -> { return * v0.getCurrentRecordId(); }, recordId)); */ } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public Boolean checkProcessHaveAssign(Long orderProcessId) { Integer count = ((OrderWorkstationMapper) this.baseMapper).checkProcessHaveAssign(orderProcessId); if (count.intValue() > Integer.valueOf("0").intValue()) { return Boolean.TRUE; } return Boolean.FALSE; } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService @Transactional(rollbackFor = {Exception.class}) public void reportWorkstation(OrderProcessReportWorkDTO workDTO, OrderWorkstation orderWorkstation) { Integer qualifyNum = workDTO.getQualifyNum(); Integer scrappedNum = workDTO.getScrappedNum(); Integer oldQualifyNum = Integer.valueOf(orderWorkstation.getQualifyNum() == null ? 0 : orderWorkstation.getQualifyNum().intValue()); Integer oldScrappedNum = Integer.valueOf(orderWorkstation.getScrappedNum() == null ? 0 : orderWorkstation.getScrappedNum().intValue()); Integer newQualifyNum = Integer.valueOf(qualifyNum.intValue() + oldQualifyNum.intValue()); Integer newScrappedNum = Integer.valueOf(scrappedNum.intValue() + oldScrappedNum.intValue()); update(Wrappers.lambdaUpdate() .eq(OrderWorkstation::getId, orderWorkstation.getId()) .set(OrderWorkstation::getQualifyNum, newQualifyNum) .set(OrderWorkstation::getScrappedNum, newScrappedNum) .set(OrderWorkstation::getWorkstationStatus, CoProductionEnum.WorkstationStatus.NO.getCode())); /* update((Wrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> { return v0.getId(); }, orderWorkstation.getId())).set((v0) -> { return v0.getQualifyNum(); }, newQualifyNum)).set((v0) -> { return v0.getScrappedNum(); }, newScrappedNum)).set((v0) -> { return v0.getWorkstationStatus(); }, CoProductionEnum.WorkstationStatus.NO.getCode())); */ } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public List getWorkstationCanStart(Long orderProcessId) { List result = ((OrderWorkstationMapper) this.baseMapper).getWorkstationCanStart(orderProcessId); if (Func.isEmpty(result)) { return new ArrayList(); } return result; } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public OrderWorkstation buildWorkstation(OrderProcessReportWorkDTO reportWorkDTO, OrderWorkstation orderWorkstation) { orderWorkstation.setQualifyNum(Integer.valueOf(reportWorkDTO.getQualifyNum().intValue() + orderWorkstation.getQualifyNum().intValue())).setScrappedNum(Integer.valueOf(reportWorkDTO.getScrappedNum().intValue() + orderWorkstation.getScrappedNum().intValue())).setWorkstationStatus(CoProductionEnum.WorkstationStatus.NO.getCode()).setCurrentRecordId(null); return orderWorkstation; } @Override // org.springblade.modules.coproduction.service.IOrderWorkstationService public List getWorkstationByProcessList(List orderProcessIdList) { return list(Wrappers.lambdaQuery() .in(OrderWorkstation::getProcessId, orderProcessIdList)); /* return list((Wrapper) Wrappers.lambdaQuery().in((v0) -> { return v0.getProcessId(); }, orderProcessIdList));*/ } }