|
|
|
@ -4,13 +4,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import com.xujie.sys.common.utils.PageUtils; |
|
|
|
import com.xujie.sys.common.utils.R; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProjectInfoTrackingData; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProjectPartTrackingData; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProofTrackingBatchUpdateData; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProofTrackingData; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessLogData; |
|
|
|
import com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessUpdateData; |
|
|
|
import com.xujie.sys.modules.sampletracking.mapper.SampleProofTrackingMapper; |
|
|
|
import com.xujie.sys.modules.sampletracking.service.SampleProofTrackingService; |
|
|
|
import com.xujie.sys.modules.sampletracking.service.SampleTrackingService; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.BeanUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
@ -30,6 +34,9 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
@Autowired |
|
|
|
private SampleProofTrackingMapper sampleProofTrackingMapper; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private SampleTrackingService sampleTrackingService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageUtils searchProofTracking(ProofTrackingData data) { |
|
|
|
long page = data.getPage() <= 0 ? 1 : data.getPage(); |
|
|
|
@ -286,6 +293,85 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
|
sampleProofTrackingMapper.updateTrackingComments(data); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void oneKeyUpdateProjectPartAndTracking(ProofTrackingData data) { |
|
|
|
if (data == null) { |
|
|
|
throw new RuntimeException("修改参数不能为空"); |
|
|
|
} |
|
|
|
if (data.getProjectId() == null || data.getProjectPartId() == null || data.getTrackingId() == null) { |
|
|
|
throw new RuntimeException("项目/物料/打样记录ID缺失,无法修改"); |
|
|
|
} |
|
|
|
// 单次提交时将项目、物料、打样更新放在同一事务内,任一失败即整体回滚。 |
|
|
|
String operateUser = resolveOperateUser(data.getUpdateBy(), data.getCreateBy()); |
|
|
|
ProofTrackingData oldData = sampleProofTrackingMapper.selectTrackingForProofing(data.getTrackingId()); |
|
|
|
if (oldData == null) { |
|
|
|
throw new RuntimeException("打样记录不存在"); |
|
|
|
} |
|
|
|
|
|
|
|
ProjectInfoTrackingData projectInfoData = new ProjectInfoTrackingData(); |
|
|
|
BeanUtils.copyProperties(data, projectInfoData); |
|
|
|
if (isBlank(projectInfoData.getProjectName()) && !isBlank(projectInfoData.getProjectDesc())) { |
|
|
|
projectInfoData.setProjectName(projectInfoData.getProjectDesc().trim()); |
|
|
|
} |
|
|
|
if (isBlank(projectInfoData.getProjectDesc()) && !isBlank(projectInfoData.getProjectName())) { |
|
|
|
projectInfoData.setProjectDesc(projectInfoData.getProjectName().trim()); |
|
|
|
} |
|
|
|
projectInfoData.setStatus(isBlank(data.getProjectStatus()) ? "草稿" : data.getProjectStatus().trim()); |
|
|
|
projectInfoData.setPriority(data.getPriorityLevel()); |
|
|
|
projectInfoData.setUpdateBy(operateUser); |
|
|
|
sampleTrackingService.updateProjectInfoTracking(projectInfoData); |
|
|
|
|
|
|
|
ProjectPartTrackingData projectPartData = new ProjectPartTrackingData(); |
|
|
|
BeanUtils.copyProperties(data, projectPartData); |
|
|
|
projectPartData.setStatus(isBlank(data.getPartStatus()) ? "草稿" : data.getPartStatus().trim()); |
|
|
|
projectPartData.setPriority(data.getPriorityLevel()); |
|
|
|
projectPartData.setUpdateBy(operateUser); |
|
|
|
sampleTrackingService.updateProjectPartTracking(projectPartData); |
|
|
|
|
|
|
|
updateTrackingBaseInfo(data, oldData, operateUser); |
|
|
|
} |
|
|
|
|
|
|
|
private void updateTrackingBaseInfo(ProofTrackingData data, ProofTrackingData oldData, String operateUser) { |
|
|
|
String site = isBlank(data.getSite()) ? oldData.getSite() : data.getSite(); |
|
|
|
String proofingNo = isBlank(data.getProofingNo()) ? oldData.getProofingNo() : data.getProofingNo().trim(); |
|
|
|
if (data.getProofingNumber() != null && data.getProofingNumber() <= 0) { |
|
|
|
throw new RuntimeException("数量必须是正整数"); |
|
|
|
} |
|
|
|
if (!isBlank(proofingNo)) { |
|
|
|
ProofTrackingData exists = sampleProofTrackingMapper.selectProofingByNo(proofingNo, site); |
|
|
|
if (exists != null && !Objects.equals(exists.getProofingId(), data.getTrackingId())) { |
|
|
|
throw new RuntimeException("打样单号已存在: " + proofingNo); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
ProofTrackingData updateData = new ProofTrackingData(); |
|
|
|
updateData.setTrackingId(data.getTrackingId()); |
|
|
|
updateData.setProjectPhase(isBlank(data.getProjectPhase()) ? oldData.getProjectPhase() : data.getProjectPhase().trim()); |
|
|
|
updateData.setProjectCategory(isBlank(data.getProjectCategory()) ? oldData.getProjectCategory() : data.getProjectCategory().trim()); |
|
|
|
updateData.setProofingNo(proofingNo); |
|
|
|
updateData.setProofingStatus(isBlank(data.getProofingStatus()) ? oldData.getProofingStatus() : data.getProofingStatus().trim()); |
|
|
|
updateData.setProofingNumber(data.getProofingNumber() == null ? oldData.getProofingNumber() : data.getProofingNumber()); |
|
|
|
updateData.setPlanStartDate(data.getPlanStartDate() == null ? oldData.getPlanStartDate() : data.getPlanStartDate()); |
|
|
|
updateData.setRequiredDeliveryDate(data.getRequiredDeliveryDate() == null ? oldData.getRequiredDeliveryDate() : data.getRequiredDeliveryDate()); |
|
|
|
updateData.setTracker(isBlank(data.getTracker()) ? oldData.getTracker() : data.getTracker().trim()); |
|
|
|
updateData.setEngineer(isBlank(data.getEngineer()) ? oldData.getEngineer() : data.getEngineer().trim()); |
|
|
|
updateData.setPriorityLevel(isBlank(data.getPriorityLevel()) ? oldData.getPriorityLevel() : data.getPriorityLevel().trim()); |
|
|
|
updateData.setRemark(data.getRemark()); |
|
|
|
updateData.setUpdateBy(operateUser); |
|
|
|
|
|
|
|
if (isBlank(updateData.getProjectPhase())) { |
|
|
|
updateData.setProjectPhase("Sample"); |
|
|
|
} |
|
|
|
if (isBlank(updateData.getProofingStatus())) { |
|
|
|
updateData.setProofingStatus("草稿"); |
|
|
|
} |
|
|
|
if (updateData.getProofingNumber() == null || updateData.getProofingNumber() <= 0) { |
|
|
|
updateData.setProofingNumber(1); |
|
|
|
} |
|
|
|
sampleProofTrackingMapper.updateTrackingBaseInfo(updateData); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void finishProofing(ProofTrackingData data) { |
|
|
|
|