|
@@ -8,10 +8,7 @@ import com.dayou.common.BaseEntity;
|
|
import com.dayou.dto.HandlerPermissionDTO;
|
|
import com.dayou.dto.HandlerPermissionDTO;
|
|
import com.dayou.dto.WorkNodeCommit;
|
|
import com.dayou.dto.WorkNodeCommit;
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
-import com.dayou.entity.Department;
|
|
|
|
-import com.dayou.entity.Personal;
|
|
|
|
-import com.dayou.entity.PersonalTarget;
|
|
|
|
-import com.dayou.entity.WorkFlowNodeInstance;
|
|
|
|
|
|
+import com.dayou.entity.*;
|
|
import com.dayou.enums.MainBusinessEnum;
|
|
import com.dayou.enums.MainBusinessEnum;
|
|
import com.dayou.enums.ProductionEnum;
|
|
import com.dayou.enums.ProductionEnum;
|
|
import com.dayou.enums.workflow.CallbackEnum;
|
|
import com.dayou.enums.workflow.CallbackEnum;
|
|
@@ -21,6 +18,7 @@ import com.dayou.mapper.DepartmentMapper;
|
|
import com.dayou.mapper.PersonalMapper;
|
|
import com.dayou.mapper.PersonalMapper;
|
|
import com.dayou.mapper.WorkFlowNodeInstanceMapper;
|
|
import com.dayou.mapper.WorkFlowNodeInstanceMapper;
|
|
import com.dayou.service.ICustomerCompanyService;
|
|
import com.dayou.service.ICustomerCompanyService;
|
|
|
|
+import com.dayou.service.IPersonalProductionService;
|
|
import com.dayou.service.IPersonalTargetService;
|
|
import com.dayou.service.IPersonalTargetService;
|
|
import com.dayou.service.IUserPostService;
|
|
import com.dayou.service.IUserPostService;
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
@@ -31,11 +29,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Arrays;
|
|
|
|
+import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
import static com.dayou.common.Constants.PERSONAL_DEPARTMENT;
|
|
import static com.dayou.common.Constants.PERSONAL_DEPARTMENT;
|
|
|
|
+import static com.dayou.enums.FinanceInvoiceState.审核通过;
|
|
import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
|
|
import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
|
|
|
|
+import static com.dayou.enums.ProductionEnum.*;
|
|
import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
|
|
import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -69,6 +70,9 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
|
|
@Autowired
|
|
@Autowired
|
|
private IPersonalTargetService personalTargetService;
|
|
private IPersonalTargetService personalTargetService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IPersonalProductionService personalProductionService;
|
|
|
|
+
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean forward(WorkNodeCommit workNodeCommit) {
|
|
public boolean forward(WorkNodeCommit workNodeCommit) {
|
|
@@ -121,6 +125,7 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
|
|
addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
|
|
|
|
+ afterForward(currentInstanceNode);
|
|
return Boolean.TRUE;
|
|
return Boolean.TRUE;
|
|
}
|
|
}
|
|
return Boolean.FALSE;
|
|
return Boolean.FALSE;
|
|
@@ -192,6 +197,79 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 清除产品完成时间
|
|
|
|
+ cleanProductionTime(currentNode);
|
|
|
|
+
|
|
return super.goBack(commit);
|
|
return super.goBack(commit);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 节点完成后操作
|
|
|
|
+ * @param currentInstanceNode 实例信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void afterForward(WorkFlowNodeInstance currentInstanceNode) {
|
|
|
|
+ // 撰写节点完成后,更新产品完成时间
|
|
|
|
+ PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>()
|
|
|
|
+ .select(BaseEntity::getId)
|
|
|
|
+ .eq(PersonalTarget::getPersonalId, currentInstanceNode.getBusinessId())
|
|
|
|
+ .eq(PersonalTarget::getDeleted, false));
|
|
|
|
+ // 通用的更新wrapper
|
|
|
|
+ LambdaUpdateWrapper<PersonalProduction> productionTimeUpdateWrapper = new LambdaUpdateWrapper<PersonalProduction>()
|
|
|
|
+ .set(PersonalProduction::getProductionTime, new Date())
|
|
|
|
+ .eq(BaseEntity::getDeleted, false)
|
|
|
|
+ .eq(PersonalProduction::getTargetId, target.getId());
|
|
|
|
+ switch (WorkflowNodeEnum.valueOf(currentInstanceNode.getNodeCode())){
|
|
|
|
+ // 撰写意见书
|
|
|
|
+ case GENERATE_STATEMENT:
|
|
|
|
+ productionTimeUpdateWrapper.eq(PersonalProduction::getProduction, STATEMENT.getCode());
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ // 撰写报告报告(包含技术报告和结果报告)
|
|
|
|
+ case WRITE_REPORT:
|
|
|
|
+ productionTimeUpdateWrapper.and(temp->temp.eq(PersonalProduction::getProduction,TECHNIC.getCode()).or().eq(PersonalProduction::getProduction,FINAL.getCode()));
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ // 撰写复评函
|
|
|
|
+ case WRITE_LETTER:
|
|
|
|
+ productionTimeUpdateWrapper.eq(PersonalProduction::getProduction, LETTER.getCode());
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 根据节点判断是否清除产品完成时间
|
|
|
|
+ * @param currentInstanceNode 当前节点
|
|
|
|
+ */
|
|
|
|
+ public void cleanProductionTime(WorkFlowNodeInstance currentInstanceNode) {
|
|
|
|
+ // 判断是否是从审核节点退回到撰写节点,是的话需要清空产品的productionTime
|
|
|
|
+ PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>()
|
|
|
|
+ .select(BaseEntity::getId)
|
|
|
|
+ .eq(PersonalTarget::getPersonalId, currentInstanceNode.getBusinessId())
|
|
|
|
+ .eq(PersonalTarget::getDeleted, false));
|
|
|
|
+ // 通用的更新wrapper
|
|
|
|
+ LambdaUpdateWrapper<PersonalProduction> productionTimeUpdateWrapper = new LambdaUpdateWrapper<PersonalProduction>()
|
|
|
|
+ .set(PersonalProduction::getProductionTime, null)
|
|
|
|
+ .eq(BaseEntity::getDeleted, false)
|
|
|
|
+ .eq(PersonalProduction::getTargetId, target.getId());
|
|
|
|
+ switch (WorkflowNodeEnum.valueOf(currentInstanceNode.getNodeCode())){
|
|
|
|
+ // 审核意见书退回
|
|
|
|
+ case REVIEW_STATEMENT:
|
|
|
|
+ productionTimeUpdateWrapper.eq(PersonalProduction::getProduction, STATEMENT.getCode());
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ // 审核报告退回
|
|
|
|
+ case CHECK_REPORT:
|
|
|
|
+ productionTimeUpdateWrapper.and(temp->temp.eq(PersonalProduction::getProduction,TECHNIC.getCode()).or().eq(PersonalProduction::getProduction,FINAL.getCode()));
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ // 审核复评函退回
|
|
|
|
+ case CHECK_LETTER:
|
|
|
|
+ productionTimeUpdateWrapper.eq(PersonalProduction::getProduction, LETTER.getCode());
|
|
|
|
+ personalProductionService.update(productionTimeUpdateWrapper);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|