|
@@ -26,9 +26,7 @@ import com.platform.dao.entity.upms.SysUser;
|
|
|
import com.platform.dao.entity.upms.SysUserDept;
|
|
|
import com.platform.dao.enums.*;
|
|
|
import com.platform.dao.mapper.firm.FirmProducerMapper;
|
|
|
-import com.platform.dao.mapper.sb.SbInfoMapper;
|
|
|
-import com.platform.dao.mapper.sb.SbModelMapper;
|
|
|
-import com.platform.dao.mapper.sb.SbPositionMapper;
|
|
|
+import com.platform.dao.mapper.sb.*;
|
|
|
import com.platform.dao.mapper.upms.SysDeptMapper;
|
|
|
import com.platform.dao.mapper.upms.SysFileMapper;
|
|
|
import com.platform.dao.mapper.upms.SysUserDeptMapper;
|
|
@@ -81,6 +79,10 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
|
|
|
|
|
|
private final SysDeptMapper deptMapper;
|
|
|
|
|
|
+ private final SbStatusLogMapper sbStatusLogMapper;
|
|
|
+
|
|
|
+ private final SbStopLogMapper sbStopLogMapper;
|
|
|
+
|
|
|
private final SysUserMapper sysUserMapper;
|
|
|
|
|
|
private final SbPositionMapper sbPositionMapper;
|
|
@@ -194,9 +196,70 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
|
|
|
// 保存文件
|
|
|
this.saveFile(model);
|
|
|
setSaveDept(model);
|
|
|
+ saveSbStatusLogAndStopLog(model);
|
|
|
return super.saveModelHaveCreateInfo(model);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 如果是变更了状态,需要记录状态变更表,
|
|
|
+ * 如果是启用,则要更新停机记录表数据
|
|
|
+ *
|
|
|
+ * @param model
|
|
|
+ */
|
|
|
+ private void saveSbStatusLogAndStopLog(SbInfoDTO model) {
|
|
|
+
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ SbStatusLog log = new SbStatusLog();
|
|
|
+ log.setSbId(model.getId());
|
|
|
+ log.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ log.setChangeReason("");
|
|
|
+ log.setAfterStatus(model.getStatus());
|
|
|
+ log.setPreStatus(SbInfoStatusEnum.IN_STORE.getValue());// 默认新增之前状态是在库
|
|
|
+ log.setChangeTime(now);
|
|
|
+ log.setChangeUserId(userInfo.getUserId());
|
|
|
+ log.setCreatedTime(now);
|
|
|
+ log.setCreatedUserId(userInfo.getUserId());
|
|
|
+ log.setUpdateTime(now);
|
|
|
+ log.setUpdateUserId(userInfo.getUserId());
|
|
|
+ log.setRemark("");
|
|
|
+ sbStatusLogMapper.insert(log);
|
|
|
+
|
|
|
+ // 新增停机记录
|
|
|
+ if(model.getStatus().equals(SbInfoStatusEnum.IN_STOP.getValue())){
|
|
|
+ SbStopLog stopLog = new SbStopLog();
|
|
|
+ stopLog.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ stopLog.setSbId(model.getId());
|
|
|
+ stopLog.setStopTime(now);
|
|
|
+ stopLog.setStopUserId(userInfo.getUserId());
|
|
|
+ stopLog.setStopReason("");
|
|
|
+ stopLog.setStartReason("");
|
|
|
+ stopLog.setCreatedTime(now);
|
|
|
+ stopLog.setCreatedUserId(userInfo.getUserId());
|
|
|
+ stopLog.setUpdateTime(now);
|
|
|
+ stopLog.setUpdateUserId(userInfo.getUserId());
|
|
|
+ sbStopLogMapper.insert(stopLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新开机记录,并记录时长
|
|
|
+ if(model.getStatus().equals(SbInfoStatusEnum.IN_USE.getValue())) {
|
|
|
+ Weekend<SbStopLog> weekend = new Weekend<>(SbStopLog.class);
|
|
|
+ weekend.weekendCriteria().andEqualTo(SbStopLog::getSbId, model.getId()).andEqualTo(SbStopLog::getStatus, 0);
|
|
|
+ SbStopLog stopLog = sbStopLogMapper.selectOneByExample(weekend);
|
|
|
+ // 创建新的记录,直接跳过,不记录了
|
|
|
+ if(stopLog == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ stopLog.setStartUserId(userInfo.getUserId());
|
|
|
+ stopLog.setStartTime(now);
|
|
|
+ stopLog.setStatus(1);
|
|
|
+ stopLog.setStopDuration(new BigDecimal(DateUtils.getDurationMinutes(stopLog.getStopTime(), stopLog.getStartTime())));
|
|
|
+ stopLog.setUpdateTime(now);
|
|
|
+ stopLog.setUpdateUserId(userInfo.getUserId());
|
|
|
+ sbStopLogMapper.updateByPrimaryKey(stopLog);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void modModelByDTO(SbInfoDTO model) {
|
|
|
|
|
@@ -219,7 +282,72 @@ public class SbInfoServiceImpl extends BaseServiceImpl<SbInfoMapper, SbInfo, SbI
|
|
|
}
|
|
|
this.saveFile(model);
|
|
|
setSaveDept(model);
|
|
|
+ setSbStatusLogAndStopLog(model);
|
|
|
super.modModelByDTO(model);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 如果是变更了状态,需要记录状态变更表,
|
|
|
+ * 如果是启用,则要更新停机记录表数据
|
|
|
+ *
|
|
|
+ * @param model
|
|
|
+ */
|
|
|
+ private void setSbStatusLogAndStopLog(SbInfoDTO model) {
|
|
|
+ SbInfo old = mapper.selectByPrimaryKey(model.getId());
|
|
|
+ if(old.getStatus() != null && old.getStatus().equals(model.getStatus())){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ UserInfo userInfo = SecurityUtils.getUserInfo();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ SbStatusLog log = new SbStatusLog();
|
|
|
+ log.setSbId(model.getId());
|
|
|
+ log.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ log.setChangeReason("");
|
|
|
+ log.setAfterStatus(model.getStatus());
|
|
|
+ log.setPreStatus(old.getStatus());
|
|
|
+ log.setChangeTime(now);
|
|
|
+ log.setChangeUserId(userInfo.getUserId());
|
|
|
+ log.setCreatedTime(now);
|
|
|
+ log.setCreatedUserId(userInfo.getUserId());
|
|
|
+ log.setUpdateTime(now);
|
|
|
+ log.setUpdateUserId(userInfo.getUserId());
|
|
|
+ log.setRemark("");
|
|
|
+ sbStatusLogMapper.insert(log);
|
|
|
+
|
|
|
+ // 新增停机记录
|
|
|
+ if(model.getStatus().equals(SbInfoStatusEnum.IN_STOP.getValue())){
|
|
|
+ SbStopLog stopLog = new SbStopLog();
|
|
|
+ stopLog.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ stopLog.setSbId(model.getId());
|
|
|
+ stopLog.setStopTime(now);
|
|
|
+ stopLog.setStopUserId(userInfo.getUserId());
|
|
|
+ stopLog.setStopReason("");
|
|
|
+ stopLog.setCreatedTime(now);
|
|
|
+ stopLog.setCreatedUserId(userInfo.getUserId());
|
|
|
+ stopLog.setUpdateTime(now);
|
|
|
+ stopLog.setStatus(0);
|
|
|
+ stopLog.setUpdateUserId(userInfo.getUserId());
|
|
|
+ sbStopLogMapper.insert(stopLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新开机记录,并记录时长
|
|
|
+ if(model.getStatus().equals(SbInfoStatusEnum.IN_USE.getValue())) {
|
|
|
+ Weekend<SbStopLog> weekend = new Weekend<>(SbStopLog.class);
|
|
|
+ weekend.weekendCriteria().andEqualTo(SbStopLog::getSbId, model.getId()).andEqualTo(SbStopLog::getStatus, 0);
|
|
|
+ SbStopLog stopLog = sbStopLogMapper.selectOneByExample(weekend);
|
|
|
+ // 创建新的记录,直接跳过,不记录了
|
|
|
+ if(stopLog == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ stopLog.setStartUserId(userInfo.getUserId());
|
|
|
+ stopLog.setStartTime(now);
|
|
|
+ stopLog.setStatus(1);
|
|
|
+ stopLog.setStopDuration(new BigDecimal(DateUtils.getDurationMinutes(stopLog.getStopTime(), stopLog.getStartTime())));
|
|
|
+ stopLog.setUpdateTime(now);
|
|
|
+ stopLog.setUpdateUserId(userInfo.getUserId());
|
|
|
+ sbStopLogMapper.updateByPrimaryKey(stopLog);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|