Browse Source

一键修改

master
han\hanst 10 hours ago
parent
commit
fbbc4df2f0
  1. 11
      src/main/java/com/xujie/sys/modules/sampletracking/controller/SampleProofTrackingController.java
  2. 2
      src/main/java/com/xujie/sys/modules/sampletracking/mapper/SampleProofTrackingMapper.java
  3. 2
      src/main/java/com/xujie/sys/modules/sampletracking/service/SampleProofTrackingService.java
  4. 86
      src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java
  5. 33
      src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml

11
src/main/java/com/xujie/sys/modules/sampletracking/controller/SampleProofTrackingController.java

@ -91,6 +91,17 @@ public class SampleProofTrackingController {
}
}
@PostMapping("/oneKeyUpdate")
public R oneKeyUpdate(@RequestBody ProofTrackingData data) {
try {
sampleProofTrackingService.oneKeyUpdateProjectPartAndTracking(data);
return R.ok("项目/物料/打样修改成功");
} catch (Exception e) {
log.error("一键修改项目/物料/打样失败: {}", e.getMessage(), e);
return R.error("一键修改项目/物料/打样失败: " + e.getMessage());
}
}
@PostMapping("/finishProofing")
public R finishProofing(@RequestBody ProofTrackingData data) {
try {

2
src/main/java/com/xujie/sys/modules/sampletracking/mapper/SampleProofTrackingMapper.java

@ -35,6 +35,8 @@ public interface SampleProofTrackingMapper {
void updateTrackingComments(ProofTrackingData data);
void updateTrackingBaseInfo(ProofTrackingData data);
Integer countUnfinishedProcess(@Param("trackingId") Integer trackingId);
void finishProofing(@Param("trackingId") Integer trackingId,

2
src/main/java/com/xujie/sys/modules/sampletracking/service/SampleProofTrackingService.java

@ -18,6 +18,8 @@ public interface SampleProofTrackingService {
R oneKeyCreateProjectPartAndTracking(ProofTrackingData data);
void oneKeyUpdateProjectPartAndTracking(ProofTrackingData data);
R createProofRecord(ProofTrackingData data);
void batchUpdatePlanDates(ProofTrackingBatchUpdateData data);

86
src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java

@ -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) {

33
src/main/resources/mapper/sampletracking/SampleProofTrackingMapper.xml

@ -12,7 +12,9 @@
t.proofing_no,
t.proofing_status,
t.project_phase,
t.project_category,
COALESCE(NULLIF(LTRIM(RTRIM(t.project_category)), ''),
NULLIF(LTRIM(RTRIM(pp.project_category)), ''),
NULLIF(LTRIM(RTRIM(p.project_category)), '')) AS project_category,
t.tracker,
t.engineer,
t.priority_level,
@ -70,7 +72,6 @@
p.project_desc,
p.customer_no,
p.bu_no,
p.project_category,
p.c_project_region,
p.project_manager,
p.project_owner,
@ -463,6 +464,24 @@
WHERE id = #{trackingId}
</update>
<update id="updateTrackingBaseInfo">
UPDATE plm_proofing_information_tracking
SET project_phase = #{projectPhase},
project_category = #{projectCategory},
proofing_no = #{proofingNo},
proofing_status = #{proofingStatus},
proofing_number = #{proofingNumber},
plan_start_date = #{planStartDate,jdbcType=DATE},
required_delivery_date = #{requiredDeliveryDate,jdbcType=DATE},
tracker = #{tracker},
engineer = #{engineer},
priority_level = #{priorityLevel},
remark = #{remark,jdbcType=NVARCHAR},
update_date = GETDATE(),
update_by = #{updateBy}
WHERE id = #{trackingId}
</update>
<update id="updateTrackingComments">
UPDATE plm_proofing_information_tracking
SET comments = #{comments,jdbcType=NVARCHAR},
@ -481,7 +500,9 @@
t.proofing_no,
t.proofing_status,
t.project_phase,
t.project_category,
COALESCE(NULLIF(LTRIM(RTRIM(t.project_category)), ''),
NULLIF(LTRIM(RTRIM(pp.project_category)), ''),
NULLIF(LTRIM(RTRIM(p.project_category)), '')) AS project_category,
t.tracker,
t.engineer,
t.priority_level,
@ -539,7 +560,6 @@
p.project_desc,
p.customer_no,
p.bu_no,
p.project_category,
pp.test_part_no,
pp.part_desc,
pp.final_part_no
@ -559,7 +579,9 @@
t.proofing_no,
t.proofing_status,
t.project_phase,
t.project_category,
COALESCE(NULLIF(LTRIM(RTRIM(t.project_category)), ''),
NULLIF(LTRIM(RTRIM(pp.project_category)), ''),
NULLIF(LTRIM(RTRIM(p.project_category)), '')) AS project_category,
t.tracker,
t.engineer,
t.priority_level,
@ -617,7 +639,6 @@
p.project_desc,
p.customer_no,
p.bu_no,
p.project_category,
pp.test_part_no,
pp.part_desc,
pp.final_part_no

Loading…
Cancel
Save