工时计算

master
philip 4 years ago
parent b1a2864b68
commit 6c96fe99cc

@ -2,6 +2,8 @@ package com.foreverwin.mesnac.common.service;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import java.math.BigDecimal;
/**
*
*
@ -34,7 +36,7 @@ public interface SfcDispatchCommonService {
* @param dispatchNo
* @param dispatchStatus
*/
void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus);
void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus, BigDecimal workHour);
/**
* sfc

@ -6,6 +6,7 @@ import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@ -33,18 +34,18 @@ public interface SfcDispatchMapper extends BaseMapper<SfcDispatch> {
/**
*
*
* @param site
* @param site
* @param dispatchNo
* @param dispatchStatus
* @param modifyUser
* @param modifiedDateTime
* @param workHour
*/
void updateSfcDispatchStatus(@Param("site") String site,
@Param("dispatchNo") String dispatchNo,
@Param("dispatchStatus") String dispatchStatus,
@Param("modifyUser") String modifyUser,
@Param("modifiedDateTime") LocalDateTime modifiedDateTime);
@Param("modifiedDateTime") LocalDateTime modifiedDateTime, @Param("workHour")BigDecimal workHour);
SfcDispatchDto findResrceBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site, @Param("array") String[] array);

@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -684,9 +685,9 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
}
@Override
public void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus) {
public void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus, BigDecimal workHour) {
LocalDateTime nowDateTime = LocalDateTime.now();
sfcDispatchMapper.updateSfcDispatchStatus(site, dispatchNo, dispatchStatus, user, nowDateTime);
sfcDispatchMapper.updateSfcDispatchStatus(site, dispatchNo, dispatchStatus, user, nowDateTime,workHour);
}
@Override

@ -770,7 +770,7 @@
<update id="updateSfcDispatchStatus" >
UPDATE Z_SFC_DISPATCH SET DISPATCH_STATUS = #{dispatchStatus}, MODIFY_USER = #{modifyUser}, MODIFIED_DATE_TIME = #{modifiedDateTime}
<if test="dispatchStatus== 'COMPLETE'">
, ACTUAL_COMPLETE_DATE = #{modifiedDateTime}
, ACTUAL_COMPLETE_DATE = #{modifiedDateTime} , ACTUAL_PROD_HOURS = #{workHour}
</if>
<if test="dispatchStatus== 'START'">
, ACTUAL_START_DATE = #{modifiedDateTime}

@ -30,9 +30,11 @@ import com.foreverwin.mesnac.meapi.service.*;
import com.foreverwin.mesnac.production.mapper.SfcCrossMapper;
import com.foreverwin.mesnac.production.mapper.SfcDataAssembleMapper;
import com.foreverwin.mesnac.production.model.LoadInventory;
import com.foreverwin.mesnac.production.model.SfcHoldLog;
import com.foreverwin.mesnac.production.service.LoadInventoryService;
import com.foreverwin.mesnac.production.service.PodTemplateService;
import com.foreverwin.mesnac.production.service.SfcCrossService;
import com.foreverwin.mesnac.production.service.SfcHoldLogService;
import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.meext.MEServices;
import com.foreverwin.modular.core.util.CommonMethods;
@ -88,6 +90,8 @@ public class PodTemplateServiceImpl implements PodTemplateService {
private SfcDispatchCommonService sfcDispatchCommonService;
@Autowired
private LoadInventoryService loadInventoryService;
@Autowired
private SfcHoldLogService sfcHoldLogService;
@Override
public Map<String, Object> resrceEnter(WorkCenterDto workCenterDto) {
@ -235,7 +239,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
ExceptionUtil.throwException(e);
}
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode(),null);
});
}
@ -309,9 +313,18 @@ public class PodTemplateServiceImpl implements PodTemplateService {
LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc));
long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds();
BigDecimal workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP);
//减去暂停时间
QueryWrapper<SfcHoldLog> queryWrapper=new QueryWrapper<>();
queryWrapper.eq(SfcHoldLog.SFC,sfc);
queryWrapper.eq(SfcHoldLog.STEP_ID,stepId);
List<SfcHoldLog> list = sfcHoldLogService.list(queryWrapper);
if (!list.isEmpty()){
BigDecimal holdTime = list.stream().map(SfcHoldLog::getHoldDuration).reduce(BigDecimal.ZERO, BigDecimal::add);
workHour=workHour.subtract(holdTime);
}
sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty);
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode(),workHour);
//报工
//sendErp(sfc, stepId, qty, BigDecimal.ZERO, workHour);
} catch (Exception e) {

@ -28,6 +28,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -152,7 +153,7 @@ public class WorkShopTransferServiceImpl extends ServiceImpl<WorkShopTransferMap
Operation currentRevisionRef = operationService.getCurrentRevisionRef(site, dto.getOperation());
sfcCrossService.startAction(site, currentRevisionRef.getHandle(), dto.getResrce(), sfcBO, dto.getQty());
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.START.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.START.getCode(),null);
} catch (Exception e) {
ExceptionUtil.throwException(e);
@ -221,7 +222,7 @@ public class WorkShopTransferServiceImpl extends ServiceImpl<WorkShopTransferMap
//转入完成
sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), dto.getResrce(), sfcBO, dto.getQty());
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.COMPLETE.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.COMPLETE.getCode(), BigDecimal.ZERO);
} catch (Exception e) {
ExceptionUtil.throwException(e);

Loading…
Cancel
Save