Commit 646666d8 authored by 李驰骋's avatar 李驰骋

报工调整

parent 27019d57
...@@ -7,8 +7,10 @@ import com.ximai.common.core.controller.BaseController; ...@@ -7,8 +7,10 @@ import com.ximai.common.core.controller.BaseController;
import com.ximai.common.core.domain.AjaxResult; import com.ximai.common.core.domain.AjaxResult;
import com.ximai.common.core.page.TableDataInfo; import com.ximai.common.core.page.TableDataInfo;
import com.ximai.common.enums.BusinessType; import com.ximai.common.enums.BusinessType;
import com.ximai.common.exception.ServiceException;
import com.ximai.common.utils.data.ExceptionUtil; import com.ximai.common.utils.data.ExceptionUtil;
import com.ximai.mes.pro.domain.ProFeedback; import com.ximai.mes.pro.domain.ProFeedback;
import com.ximai.mes.pro.domain.ProProductQrcodeRecord;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask; import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskIssue; import com.ximai.mes.pro.domain.task.ProTaskIssue;
...@@ -19,6 +21,7 @@ import com.ximai.mes.pro.domain.vo.proWorkOrder.WorkorderPackagePrint; ...@@ -19,6 +21,7 @@ import com.ximai.mes.pro.domain.vo.proWorkOrder.WorkorderPackagePrint;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageAddParams; import com.ximai.mes.pro.domain.vo.task.FeedbackPackageAddParams;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageInfo; import com.ximai.mes.pro.domain.vo.task.FeedbackPackageInfo;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageQueryParams; import com.ximai.mes.pro.domain.vo.task.FeedbackPackageQueryParams;
import com.ximai.mes.pro.domain.vo.task.FeedbackValidateSerialNoParams;
import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper; import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper;
import com.ximai.mes.pro.mapper.task.ProTaskAssistProcessMapper; import com.ximai.mes.pro.mapper.task.ProTaskAssistProcessMapper;
import com.ximai.mes.pro.mapper.task.ProTaskMapper; import com.ximai.mes.pro.mapper.task.ProTaskMapper;
...@@ -26,6 +29,7 @@ import com.ximai.mes.pro.mapper.task.ProTaskWorkorderMapper; ...@@ -26,6 +29,7 @@ import com.ximai.mes.pro.mapper.task.ProTaskWorkorderMapper;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper; import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.service.IProFeedbackService; import com.ximai.mes.pro.service.IProFeedbackService;
import com.ximai.mes.pro.service.IProMaterialRequestService; import com.ximai.mes.pro.service.IProMaterialRequestService;
import com.ximai.mes.pro.service.IProProductQrcodeRecordService;
import com.ximai.mes.pro.service.IProRecoilMaterialService; import com.ximai.mes.pro.service.IProRecoilMaterialService;
import com.ximai.mes.pro.service.proWorkOrder.IProWorkOrderProcessToolService; import com.ximai.mes.pro.service.proWorkOrder.IProWorkOrderProcessToolService;
import com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService; import com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService;
...@@ -69,14 +73,14 @@ public class ProTaskMobController extends BaseController { ...@@ -69,14 +73,14 @@ public class ProTaskMobController extends BaseController {
private ProTaskWorkunitMapper proTaskWorkunitMapper; private ProTaskWorkunitMapper proTaskWorkunitMapper;
@Autowired @Autowired
private ProWorkorderMapper proWorkorderMapper; private ProWorkorderMapper proWorkorderMapper;
@Autowired @Autowired
private ProTaskWorkorderMapper proTaskWorkorderMapper; private ProTaskWorkorderMapper proTaskWorkorderMapper;
@Autowired @Autowired
private ProTaskMapper proTaskMapper; private ProTaskMapper proTaskMapper;
@Autowired @Autowired
private IProFeedbackService proFeedbackService; private IProFeedbackService proFeedbackService;
@Autowired
private IProProductQrcodeRecordService productQrcodeRecordService;
@GetMapping("/getlist") @GetMapping("/getlist")
...@@ -239,5 +243,33 @@ public class ProTaskMobController extends BaseController { ...@@ -239,5 +243,33 @@ public class ProTaskMobController extends BaseController {
return AjaxResult.success(task1); return AjaxResult.success(task1);
} }
/**
* 验证序列号报工
*/
@ApiOperation("验证序列号报工")
@PostMapping("/validateSerialNo")
public AjaxResult<Boolean> validateSerialNo(@RequestBody FeedbackValidateSerialNoParams validateSerialNoParams) {
QueryWrapper<ProWorkorder> query = new QueryWrapper<>();
query.eq("t4.task_workunit_id", validateSerialNoParams.getTaskWorkunitId());
List<ProWorkorder> listOrder = proWorkorderMapper.selectJoinTaskWorkunitByQw(query);
ProWorkorder proWorkorder = listOrder.get(0);
QueryWrapper<ProProductQrcodeRecord> proProductQrcodeRecordQuery = new QueryWrapper<>();
proProductQrcodeRecordQuery.eq("qrcode", validateSerialNoParams.getQrcode());
proProductQrcodeRecordQuery.eq("work_order_id", proWorkorder.getWorkorderId());
//验证序列号是否属于该工单
List<ProProductQrcodeRecord> qrcodeList = productQrcodeRecordService.selectProProductQrcodeRecordList(proProductQrcodeRecordQuery);
if(qrcodeList.size()==0){
throw new ServiceException("序列号不属性该工单任务");
}
//验证是否报工
QueryWrapper<ProFeedback> feedbackQuery = new QueryWrapper<>();
feedbackQuery.eq("qrcode", validateSerialNoParams.getQrcode());
List<ProFeedback> feedbackList = proFeedbackService.selectProFeedbackList(feedbackQuery);
if(feedbackList.size()>0){
throw new ServiceException("该序列号任务已报工");
}
return AjaxResult.success(true);
}
} }
...@@ -3,8 +3,10 @@ package com.ximai.mes.pro.controller.task; ...@@ -3,8 +3,10 @@ package com.ximai.mes.pro.controller.task;
import com.ximai.common.annotation.Log; import com.ximai.common.annotation.Log;
import com.ximai.common.core.controller.BaseController; import com.ximai.common.core.controller.BaseController;
import com.ximai.common.core.domain.AjaxResult; import com.ximai.common.core.domain.AjaxResult;
import com.ximai.common.core.domain.model.LoginUser;
import com.ximai.common.core.page.TableDataInfo; import com.ximai.common.core.page.TableDataInfo;
import com.ximai.common.enums.BusinessType; import com.ximai.common.enums.BusinessType;
import com.ximai.common.utils.SecurityUtils;
import com.ximai.common.utils.data.ExceptionUtil; import com.ximai.common.utils.data.ExceptionUtil;
import com.ximai.common.utils.data.StringUtils; import com.ximai.common.utils.data.StringUtils;
import com.ximai.common.utils.poi.ExcelUtil; import com.ximai.common.utils.poi.ExcelUtil;
...@@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Objects; import java.util.Objects;
/** /**
...@@ -46,6 +49,8 @@ public class ProTaskWorkunitController extends BaseController { ...@@ -46,6 +49,8 @@ public class ProTaskWorkunitController extends BaseController {
@PreAuthorize("@ss.hasPermi('mes:pro:taskWorkunit:list')") @PreAuthorize("@ss.hasPermi('mes:pro:taskWorkunit:list')")
@PostMapping("/list") @PostMapping("/list")
public TableDataInfo<ProTaskWorkunit> list(@RequestBody ProTaskWorkunitQuery proTaskWorkunit) { public TableDataInfo<ProTaskWorkunit> list(@RequestBody ProTaskWorkunitQuery proTaskWorkunit) {
LoginUser loginUser = SecurityUtils.getLoginUser();
System.out.println(loginUser);
startPage(); startPage();
List<ProTaskWorkunit> lists = proTaskWorkunitService.schedulingList(proTaskWorkunit); List<ProTaskWorkunit> lists = proTaskWorkunitService.schedulingList(proTaskWorkunit);
return getDataTable(lists); return getDataTable(lists);
......
package com.ximai.mes.pro.domain.task;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import com.ximai.common.core.domain.BaseEntity;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecord extends BaseEntity {
private static final long serialVersionUID = 1L;
/** id */
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
private Long operateType;
}
...@@ -29,4 +29,9 @@ public class ProTaskQuery { ...@@ -29,4 +29,9 @@ public class ProTaskQuery {
@ApiModelProperty("当前可加工,1:是 0:否") @ApiModelProperty("当前可加工,1:是 0:否")
private Integer allowProduce; private Integer allowProduce;
@ApiModelProperty("是否外委确认,1:是 0:否")
private Integer outsourced;
} }
package com.ximai.mes.pro.domain.vo.task;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 包装工序报工记录查询
*
* @date 2024-05-13
*/
@Data
public class FeedbackValidateSerialNoParams {
@ApiModelProperty("派工表ID")
private Long taskWorkunitId;
@ApiModelProperty("工单序列号")
private String qrcode;
}
...@@ -83,4 +83,7 @@ public class ProTaskWorkunitQuery extends BaseEntity { ...@@ -83,4 +83,7 @@ public class ProTaskWorkunitQuery extends BaseEntity {
private String workorderCode; private String workorderCode;
@ApiModelProperty("是否委外,1:是,0:否")
private Integer outsourced;
} }
package com.ximai.mes.pro.dto.task;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.math.BigDecimal;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordCreate {
private static final long serialVersionUID = 1L;
/** id */
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
private BigDecimal quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
private Integer operateType;
}
package com.ximai.mes.pro.dto.task;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordDto {
private static final long serialVersionUID = 1L;
/** id */
@ApiModelProperty("id")
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
private Long operateType;
/** 创建者 */
@ApiModelProperty("创建者")
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
/** 备注 */
@ApiModelProperty("备注")
private String remark;
}
package com.ximai.mes.pro.dto.task;
import com.ximai.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import com.ximai.common.core.domain.BaseEntity;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordExcelExport {
private static final long serialVersionUID = 1L;
/** id */
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
@Excel(name = "原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
@Excel(name = "新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
@Excel(name = "工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
@Excel(name = "排产开始时间")
private Long operateType;
}
package com.ximai.mes.pro.dto.task;
import com.ximai.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import com.ximai.common.core.domain.BaseEntity;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordExcelImport {
private static final long serialVersionUID = 1L;
/** id */
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
@Excel(name = "原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
@Excel(name = "新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
@Excel(name = "工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
@Excel(name = "排产开始时间")
private Long operateType;
}
package com.ximai.mes.pro.dto.task;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordQuery {
private static final long serialVersionUID = 1L;
/** id */
@ApiModelProperty("id")
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
private Long operateType;
/** 创建者 */
@ApiModelProperty("创建者")
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
/** 备注 */
@ApiModelProperty("备注")
private String remark;
}
package com.ximai.mes.pro.dto.task;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* 任务派工转换记录对象 pro_task_workunit_convert_record
*
* @author generator
* @date 2024-09-20
*/
@Data
public class ProTaskWorkunitConvertRecordUpdate {
private static final long serialVersionUID = 1L;
/** id */
@TableId
private Long id;
/** 原派工单ID */
@ApiModelProperty("原派工单ID")
private Long taskWorkunitId;
/** 新派工单ID */
@ApiModelProperty("新派工单ID")
private Long newTaskWorkunitId;
/** 工作单元ID */
@ApiModelProperty("工作单元ID")
private Long quantity;
/** 排产开始时间 */
@ApiModelProperty("排产开始时间")
private Long operateType;
}
package com.ximai.mes.pro.mapper.task;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ximai.mes.pro.domain.task.ProTaskWorkunitConvertRecord;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* 任务派工转换记录Mapper接口
*
* @author generator
* @date 2024-09-20
*/
public interface ProTaskWorkunitConvertRecordMapper extends BaseMapper<ProTaskWorkunitConvertRecord>
{
/**
* 查询任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 任务派工转换记录
*/
public ProTaskWorkunitConvertRecordDto selectProTaskWorkunitConvertRecordById(Long id);
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 任务派工转换记录集合
*/
public List<ProTaskWorkunitConvertRecordDto> selectProTaskWorkunitConvertRecordList(ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord);
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecordQuery 任务派工转换记录
* @return 任务派工转换记录集合
*/
@Select("select m.* from pro_task_workunit_convert_record m ${ew.customSqlSegment}")
public List<ProTaskWorkunitConvertRecordDto> selectDtoListByQw(@Param("ew") QueryWrapper<ProTaskWorkunitConvertRecord> proTaskWorkunitConvertRecordQuery);
/**
* 新增任务派工转换记录
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 结果
*/
public int insertProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord);
/**
* 修改任务派工转换记录
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 结果
*/
public int updateProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord);
/**
* 删除任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 结果
*/
public int deleteProTaskWorkunitConvertRecordById(Long id);
/**
* 批量删除任务派工转换记录
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteProTaskWorkunitConvertRecordByIds(Long[] ids);
}
...@@ -141,13 +141,13 @@ public interface ProTaskWorkunitMapper { ...@@ -141,13 +141,13 @@ public interface ProTaskWorkunitMapper {
@Select(value = "select t.task_id, t.task_code, t.task_name\n" + @Select(value = "select t.task_id, t.task_code, t.task_name\n" +
"\t, t.workstation_id, t.workstation_code, ws.workstation_name\n" + "\t, t.workstation_id, t.workstation_code, ws.workstation_name\n" +
"\t, t.process_id, t.process_code, t.process_name\n" + "\t, t.process_id, t.process_code, t.process_name\n" +
"\t, t.item_id, t.item_code, t.item_name, t.specification, t.unit_of_measure\n" + "\t, t.item_id, wo.product_code as item_code, wo.product_name as item_name, t.specification, t.unit_of_measure\n" +
"\t, ptw.task_workunit_id, ptw.quantity, ptw.create_by, t.quantity_wait, ptw.quantity_produced, ptw.quantity_changed\n" + "\t, ptw.task_workunit_id, ptw.quantity, ptw.create_by, t.quantity_wait, ptw.quantity_produced, ptw.quantity_changed\n" +
"\t, t.client_id, t.client_code, t.client_name, t.client_nick, t.is_last_process, ptw.schedule_start_date\n" + "\t, t.client_id, t.client_code, t.client_name, t.client_nick, t.is_last_process, ptw.schedule_start_date\n" +
"\t, t.duration, ptw.schedule_end_date, t.color_code, t.request_date\n" + "\t, t.duration, ptw.schedule_end_date, t.color_code, t.request_date\n" +
"\t, t.attr1, t.attr2, t.attr3, t.attr4\n" + "\t, t.attr1, t.attr2, t.attr3, t.attr4\n" +
"\t, t.create_time, t.update_by, t.update_time, ptw.STATUS, ptw.quantity_qualify, ptw.remark\n" + "\t, t.create_time, t.update_by, t.update_time, ptw.STATUS, ptw.quantity_qualify, ptw.remark\n" +
"\t, ptw.quantity_unqualify, mw.workunit_id, mw.workunit_code, mw.workunit_name, wo.workorder_code\n" + "\t, ptw.quantity_unqualify, ptw.outsource_unit_price,ptw.outsourced, ptw.vendor_id,ptw.vendor_name, mw.workunit_id, mw.workunit_code, mw.workunit_name, wo.workorder_code\n" +
"\t, (case ptw.STATUS when 'BEGINNING' then 1 when 'PREPARE' then 2 when 'PAUSE' then 3 when 'ERROR_STOP' then 4 end) statusIndex\n" + "\t, (case ptw.STATUS when 'BEGINNING' then 1 when 'PREPARE' then 2 when 'PAUSE' then 3 when 'ERROR_STOP' then 4 end) statusIndex\n" +
"from pro_task_workunit ptw\n" + "from pro_task_workunit ptw\n" +
"\tleft join pro_task t on ptw.task_id = t.task_id\n" + "\tleft join pro_task t on ptw.task_id = t.task_id\n" +
......
...@@ -161,6 +161,7 @@ public class AlgorithmResultProcessImpl implements AlgorithmResultProcess { ...@@ -161,6 +161,7 @@ public class AlgorithmResultProcessImpl implements AlgorithmResultProcess {
taskWorkunit.setQuantityQualify(BigDecimal.ZERO); taskWorkunit.setQuantityQualify(BigDecimal.ZERO);
taskWorkunit.setQuantityUnqualify(BigDecimal.ZERO); taskWorkunit.setQuantityUnqualify(BigDecimal.ZERO);
taskWorkunit.setStatus(TaskStatusEnum.PREPARE.getStatus()); taskWorkunit.setStatus(TaskStatusEnum.PREPARE.getStatus());
taskWorkunit.setOutsourced(0);
LocalDateTime sdate = scheduleStartDate.plus(task.getScheduledStartedTime()); LocalDateTime sdate = scheduleStartDate.plus(task.getScheduledStartedTime());
LocalDateTime edate = scheduleStartDate.plus(task.getScheduledEndedTime()); LocalDateTime edate = scheduleStartDate.plus(task.getScheduledEndedTime());
Date sdate1 = Date.from(sdate.atZone(ZoneId.systemDefault()).toInstant()); Date sdate1 = Date.from(sdate.atZone(ZoneId.systemDefault()).toInstant());
......
...@@ -536,7 +536,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService { ...@@ -536,7 +536,6 @@ public class ProWorkorderServiceImpl implements IProWorkorderService {
} }
return ret; return ret;
} }
} }
@Override @Override
......
...@@ -1401,9 +1401,6 @@ public class ProTaskServiceImpl implements IProTaskService { ...@@ -1401,9 +1401,6 @@ public class ProTaskServiceImpl implements IProTaskService {
proTaskWorkunit.setStatus(proTask.getStatus()); proTaskWorkunit.setStatus(proTask.getStatus());
proTaskWorkunitService.updateProTaskWorkunit(proTaskWorkunit); proTaskWorkunitService.updateProTaskWorkunit(proTaskWorkunit);
// 排产任务结束,下机刀模版具
tmToolMachinesService.taskComplateToolDismount(proTaskWorkunit);
if (proTask.getStatus().equals(TaskStatusEnum.BEGINNING.getStatus())) { if (proTask.getStatus().equals(TaskStatusEnum.BEGINNING.getStatus())) {
//设置工单状态为生产中 //设置工单状态为生产中
...@@ -1415,12 +1412,6 @@ public class ProTaskServiceImpl implements IProTaskService { ...@@ -1415,12 +1412,6 @@ public class ProTaskServiceImpl implements IProTaskService {
proWorkorderService.updateProWorkorderStatus(Collections.singletonList(workorderId), WorkorderStatusEnum.PRODUCING); proWorkorderService.updateProWorkorderStatus(Collections.singletonList(workorderId), WorkorderStatusEnum.PRODUCING);
} }
} }
proRecoilMaterialService.checkRecoilMaterial(task);
proMaterialRequestService.checkMaterialRequest(task);
TmToolMachineCheckEnum tmToolMachineCheckEnum = tmToolMachinesService.checkWhetherTheToolTemplateIsSatisfied(taskWorkunitId);
ExceptionUtil.checkTrueThrowException(!Arrays.asList(TmToolMachineCheckEnum.ERROR_06.getStatus(), TmToolMachineCheckEnum.NOMAL_00.getStatus()).contains(tmToolMachineCheckEnum.getStatus()), tmToolMachineCheckEnum.getMsg());
} }
if (proTask.getStatus().equals(TaskStatusEnum.FINISHED.getStatus())) { if (proTask.getStatus().equals(TaskStatusEnum.FINISHED.getStatus())) {
...@@ -1838,6 +1829,7 @@ public class ProTaskServiceImpl implements IProTaskService { ...@@ -1838,6 +1829,7 @@ public class ProTaskServiceImpl implements IProTaskService {
TaskStatusEnum.PAUSE.getStatus(), TaskStatusEnum.ERROR_STOP.getStatus()); TaskStatusEnum.PAUSE.getStatus(), TaskStatusEnum.ERROR_STOP.getStatus());
query.in("ptw.status", statusList); query.in("ptw.status", statusList);
query.eq(proTask.getWorkunitId() != null, "mw.workunit_id", proTask.getWorkunitId()); query.eq(proTask.getWorkunitId() != null, "mw.workunit_id", proTask.getWorkunitId());
query.eq(proTask.getOutsourced() != null, "ptw.outsourced", proTask.getOutsourced());
query.eq(StringUtils.isNotEmpty(proTask.getArrangeCode()), "t.arrange_code", proTask.getArrangeCode()); query.eq(StringUtils.isNotEmpty(proTask.getArrangeCode()), "t.arrange_code", proTask.getArrangeCode());
query.gt(proTask.getAllowProduce() != null && proTask.getAllowProduce() == 1, "t.quantity_wait", 0); query.gt(proTask.getAllowProduce() != null && proTask.getAllowProduce() == 1, "t.quantity_wait", 0);
query.orderByAsc("statusIndex").orderByAsc("ptw.schedule_start_date"); query.orderByAsc("statusIndex").orderByAsc("ptw.schedule_start_date");
......
package com.ximai.mes.pro.service.impl.task;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.common.utils.data.DateUtils;
import com.ximai.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.bean.BeanUtil;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitConvertRecordMapper;
import com.ximai.mes.pro.domain.task.ProTaskWorkunitConvertRecord;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordCreate;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordUpdate;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordDto;
import com.ximai.mes.pro.service.task.IProTaskWorkunitConvertRecordService;
/**
* 任务派工转换记录Service业务层处理
*
* @author generator
* @date 2024-09-20
*/
@Service
public class ProTaskWorkunitConvertRecordServiceImpl implements IProTaskWorkunitConvertRecordService
{
@Autowired
private ProTaskWorkunitConvertRecordMapper proTaskWorkunitConvertRecordMapper;
/**
* 查询任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 任务派工转换记录
*/
@Override
public ProTaskWorkunitConvertRecordDto selectProTaskWorkunitConvertRecordDtoById(Long id) {
return proTaskWorkunitConvertRecordMapper.selectProTaskWorkunitConvertRecordById(id);
}
/**
* 查询任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 任务派工转换记录
*/
@Override
public ProTaskWorkunitConvertRecord selectProTaskWorkunitConvertRecordById(Long id) {
return proTaskWorkunitConvertRecordMapper.selectById(id);
}
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 任务派工转换记录
*/
@Override
public List<ProTaskWorkunitConvertRecordDto> selectProTaskWorkunitConvertRecordList(ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord) {
return proTaskWorkunitConvertRecordMapper.selectProTaskWorkunitConvertRecordList(proTaskWorkunitConvertRecord);
}
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecordQuery 任务派工转换记录
* @return 任务派工转换记录
*/
@Override
public List<ProTaskWorkunitConvertRecord> selectProTaskWorkunitConvertRecordList(QueryWrapper<ProTaskWorkunitConvertRecord> proTaskWorkunitConvertRecordQuery) {
return proTaskWorkunitConvertRecordMapper.selectList(proTaskWorkunitConvertRecordQuery);
}
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecordQuery 任务派工转换记录
* @return 任务派工转换记录
*/
@Override
public List<ProTaskWorkunitConvertRecordDto> selectProTaskWorkunitConvertRecordDtoList(QueryWrapper<ProTaskWorkunitConvertRecord> proTaskWorkunitConvertRecordQuery) {
return proTaskWorkunitConvertRecordMapper.selectDtoListByQw(proTaskWorkunitConvertRecordQuery);
}
/**
* 新增任务派工转换记录
*
* @param proTaskWorkunitConvertRecordCreate 任务派工转换记录
* @return 结果
*/
@Override
public int insertProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecordCreate proTaskWorkunitConvertRecordCreate) {
ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord = new ProTaskWorkunitConvertRecord();
BeanUtil.copyProperties(proTaskWorkunitConvertRecordCreate, proTaskWorkunitConvertRecord);
proTaskWorkunitConvertRecord.setCreateBy(SecurityUtils.getUsername());
proTaskWorkunitConvertRecord.setCreateTime(DateUtils.getNowDate());
return proTaskWorkunitConvertRecordMapper.insertProTaskWorkunitConvertRecord(proTaskWorkunitConvertRecord);
}
/**
* 修改任务派工转换记录
*
* @param proTaskWorkunitConvertRecordUpdate 任务派工转换记录
* @return 结果
*/
@Override
public int updateProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecordUpdate proTaskWorkunitConvertRecordUpdate) {
ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord = new ProTaskWorkunitConvertRecord();
BeanUtil.copyProperties(proTaskWorkunitConvertRecordUpdate, proTaskWorkunitConvertRecord);
return proTaskWorkunitConvertRecordMapper.updateProTaskWorkunitConvertRecord(proTaskWorkunitConvertRecord);
}
/**
* 批量删除任务派工转换记录
*
* @param ids 需要删除的任务派工转换记录主键
* @return 结果
*/
@Override
public int deleteProTaskWorkunitConvertRecordByIds(Long[] ids) {
return proTaskWorkunitConvertRecordMapper.deleteProTaskWorkunitConvertRecordByIds(ids);
}
/**
* 删除任务派工转换记录信息
*
* @param id 任务派工转换记录主键
* @return 结果
*/
@Override
public int deleteProTaskWorkunitConvertRecordById(Long id) {
return proTaskWorkunitConvertRecordMapper.deleteProTaskWorkunitConvertRecordById(id);
}
}
...@@ -7,6 +7,7 @@ import cn.hutool.core.util.NumberUtil; ...@@ -7,6 +7,7 @@ import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.common.core.domain.BaseEntity; import com.ximai.common.core.domain.BaseEntity;
import com.ximai.common.core.domain.entity.SysUser; import com.ximai.common.core.domain.entity.SysUser;
import com.ximai.common.exception.ServiceException;
import com.ximai.common.utils.data.DataUtil; import com.ximai.common.utils.data.DataUtil;
import com.ximai.common.utils.data.ExceptionUtil; import com.ximai.common.utils.data.ExceptionUtil;
import com.ximai.common.utils.data.StringUtils; import com.ximai.common.utils.data.StringUtils;
...@@ -17,25 +18,20 @@ import com.ximai.mes.md.service.IMdWorkunitService; ...@@ -17,25 +18,20 @@ import com.ximai.mes.md.service.IMdWorkunitService;
import com.ximai.mes.pro.domain.ProArrange; import com.ximai.mes.pro.domain.ProArrange;
import com.ximai.mes.pro.domain.ProFeedback; import com.ximai.mes.pro.domain.ProFeedback;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask; import com.ximai.mes.pro.domain.task.*;
import com.ximai.mes.pro.domain.task.ProTaskWorkorder;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
import com.ximai.mes.pro.domain.task.ProTaskWorkunitOpRecord;
import com.ximai.mes.pro.domain.vo.ProTaskVo; import com.ximai.mes.pro.domain.vo.ProTaskVo;
import com.ximai.mes.pro.domain.vo.task.ProTaskWorkunitQuery; import com.ximai.mes.pro.domain.vo.task.ProTaskWorkunitQuery;
import com.ximai.mes.pro.domain.vo.task.TaskWorkunitOutsourceSplitParam; import com.ximai.mes.pro.domain.vo.task.TaskWorkunitOutsourceSplitParam;
import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToOutsourceParam; import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToOutsourceParam;
import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToSelfMadeParam; import com.ximai.mes.pro.domain.vo.task.TaskWorkunitToSelfMadeParam;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordCreate;
import com.ximai.mes.pro.mapper.ProArrangeMapper; import com.ximai.mes.pro.mapper.ProArrangeMapper;
import com.ximai.mes.pro.mapper.ProFeedbackMapper; import com.ximai.mes.pro.mapper.ProFeedbackMapper;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper; import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.service.IProAllocationMaterialService; import com.ximai.mes.pro.service.IProAllocationMaterialService;
import com.ximai.mes.pro.service.IProMaterialRequestService; import com.ximai.mes.pro.service.IProMaterialRequestService;
import com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService; import com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService;
import com.ximai.mes.pro.service.task.IProTaskService; import com.ximai.mes.pro.service.task.*;
import com.ximai.mes.pro.service.task.IProTaskWorkorderService;
import com.ximai.mes.pro.service.task.IProTaskWorkunitOpRecordService;
import com.ximai.mes.pro.service.task.IProTaskWorkunitService;
import com.ximai.mes.tm.domain.TmTool; import com.ximai.mes.tm.domain.TmTool;
import com.ximai.mes.tm.domain.TmToolMachines; import com.ximai.mes.tm.domain.TmToolMachines;
import com.ximai.mes.tm.domain.TmToolRequestUseItem; import com.ximai.mes.tm.domain.TmToolRequestUseItem;
...@@ -91,7 +87,8 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -91,7 +87,8 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
private TmToolMapper tmToolMapper; private TmToolMapper tmToolMapper;
@Autowired @Autowired
private IProTaskWorkunitOpRecordService taskWorkunitOpRecordService; private IProTaskWorkunitOpRecordService taskWorkunitOpRecordService;
@Autowired
private IProTaskWorkunitConvertRecordService taskWorkunitConvertRecordService;
@Autowired @Autowired
private ITmToolRequestService tmToolRequestService; private ITmToolRequestService tmToolRequestService;
@Autowired @Autowired
...@@ -406,13 +403,15 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -406,13 +403,15 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getWorkorderCode()), "wo.workorder_code", proTaskWorkunit.getWorkorderCode()); query.like(StringUtils.isNotEmpty(proTaskWorkunit.getWorkorderCode()), "wo.workorder_code", proTaskWorkunit.getWorkorderCode());
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getTaskCode()), "t.task_code", proTaskWorkunit.getTaskCode()); query.like(StringUtils.isNotEmpty(proTaskWorkunit.getTaskCode()), "t.task_code", proTaskWorkunit.getTaskCode());
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getWorkunitName()), "mw.workunit_name", proTaskWorkunit.getWorkunitName()); query.like(StringUtils.isNotEmpty(proTaskWorkunit.getWorkunitName()), "mw.workunit_name", proTaskWorkunit.getWorkunitName());
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getItemName()), "t.item_name", proTaskWorkunit.getItemName()); query.like(StringUtils.isNotEmpty(proTaskWorkunit.getItemName()), "wo.product_name", proTaskWorkunit.getItemName());
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getItemCode()), "wo.product_code", proTaskWorkunit.getItemCode());
query.like(StringUtils.isNotEmpty(proTaskWorkunit.getProcessName()), "t.process_name", proTaskWorkunit.getProcessName()); query.like(StringUtils.isNotEmpty(proTaskWorkunit.getProcessName()), "t.process_name", proTaskWorkunit.getProcessName());
query.gt(proTaskWorkunit.getScheduleStartDateFrom() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleStartDateFrom()); query.gt(proTaskWorkunit.getScheduleStartDateFrom() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleStartDateFrom());
query.le(proTaskWorkunit.getScheduleStartDateTo() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleStartDateTo()); query.le(proTaskWorkunit.getScheduleStartDateTo() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleStartDateTo());
query.gt(proTaskWorkunit.getScheduleEndDateFrom() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleEndDateFrom()); query.gt(proTaskWorkunit.getScheduleEndDateFrom() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleEndDateFrom());
query.le(proTaskWorkunit.getScheduleEndDateTo() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleEndDateTo()); query.le(proTaskWorkunit.getScheduleEndDateTo() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleEndDateTo());
query.eq(StringUtils.isNotEmpty(proTaskWorkunit.getArrangeCode()), "t.arrange_code", proTaskWorkunit.getArrangeCode()); query.eq(StringUtils.isNotEmpty(proTaskWorkunit.getArrangeCode()), "t.arrange_code", proTaskWorkunit.getArrangeCode());
query.eq(proTaskWorkunit.getOutsourced()!=null, "ptw.outsourced", proTaskWorkunit.getOutsourced());
query.orderByAsc("schedule_start_date"); query.orderByAsc("schedule_start_date");
List<ProTaskWorkunit> list = proTaskWorkunitService.selectTaskWorkUnitJoinTask(query); List<ProTaskWorkunit> list = proTaskWorkunitService.selectTaskWorkUnitJoinTask(query);
return list; return list;
...@@ -422,15 +421,28 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -422,15 +421,28 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
@Transactional @Transactional
public void toSelfMade(List<TaskWorkunitToSelfMadeParam> toSelfMadeParamList) { public void toSelfMade(List<TaskWorkunitToSelfMadeParam> toSelfMadeParamList) {
toSelfMadeParamList.forEach(toSelfMadeParam->{ toSelfMadeParamList.forEach(toSelfMadeParam->{
if(toSelfMadeParam.getToSelfMadeQuantity().compareTo(BigDecimal.ZERO)==0){
throw new ServiceException("转自制数量必需大于0");
}
ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(toSelfMadeParam.getTaskWorkunitId()); ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(toSelfMadeParam.getTaskWorkunitId());
if(taskWorkunit.getQuantity().compareTo(toSelfMadeParam.getToSelfMadeQuantity())<0){
throw new ServiceException("转自制失败,转自制数量不足");
}
ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class); ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class);
newTaskWorkunit.setQuantity(toSelfMadeParam.getToSelfMadeQuantity()); newTaskWorkunit.setQuantity(toSelfMadeParam.getToSelfMadeQuantity());
BeanUtil.copyProperties(toSelfMadeParam, newTaskWorkunit); BeanUtil.copyProperties(toSelfMadeParam, newTaskWorkunit);
newTaskWorkunit.setStatus(TaskStatusEnum.PREPARE.getStatus());
this.insertProTaskWorkunit(newTaskWorkunit); this.insertProTaskWorkunit(newTaskWorkunit);
//原数量扣减 //原数量扣减
taskWorkunit.setQuantity(taskWorkunit.getQuantity().subtract(toSelfMadeParam.getToSelfMadeQuantity())); taskWorkunit.setQuantity(taskWorkunit.getQuantity().subtract(toSelfMadeParam.getToSelfMadeQuantity()));
this.updateProTaskWorkunit(taskWorkunit); this.updateProTaskWorkunit(taskWorkunit);
//添加记录
ProTaskWorkunitConvertRecordCreate record = new ProTaskWorkunitConvertRecordCreate();
record.setTaskWorkunitId(taskWorkunit.getTaskWorkunitId());
record.setNewTaskWorkunitId(newTaskWorkunit.getTaskWorkunitId());
record.setQuantity(toSelfMadeParam.getToSelfMadeQuantity());
record.setOperateType(IProTaskWorkunitConvertRecordService.TaskWorkunitConvertType.TO_SELF_MADE.getValue());
taskWorkunitConvertRecordService.insertProTaskWorkunitConvertRecord(record);
}); });
} }
...@@ -438,7 +450,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -438,7 +450,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
@Transactional @Transactional
public void outsourceSplit(List<TaskWorkunitOutsourceSplitParam> outsourceSplitParamList) { public void outsourceSplit(List<TaskWorkunitOutsourceSplitParam> outsourceSplitParamList) {
outsourceSplitParamList.forEach(outsourceSplitParam->{ outsourceSplitParamList.forEach(outsourceSplitParam->{
if(outsourceSplitParam.getSplitQuantity().compareTo(BigDecimal.ZERO)==0){
throw new ServiceException("拆分数量必需大于0");
}
ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(outsourceSplitParam.getTaskWorkunitId()); ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(outsourceSplitParam.getTaskWorkunitId());
if(taskWorkunit.getQuantity().compareTo(outsourceSplitParam.getSplitQuantity())<=0){
throw new ServiceException("拆分失败,拆分数量必需小于委外数量");
}
ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class); ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class);
newTaskWorkunit.setQuantity(outsourceSplitParam.getSplitQuantity()); newTaskWorkunit.setQuantity(outsourceSplitParam.getSplitQuantity());
newTaskWorkunit.setQuantityQualify(BigDecimal.ZERO); newTaskWorkunit.setQuantityQualify(BigDecimal.ZERO);
...@@ -450,6 +468,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -450,6 +468,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
//原数量扣减 //原数量扣减
taskWorkunit.setQuantity(taskWorkunit.getQuantity().subtract(outsourceSplitParam.getSplitQuantity())); taskWorkunit.setQuantity(taskWorkunit.getQuantity().subtract(outsourceSplitParam.getSplitQuantity()));
this.updateProTaskWorkunit(taskWorkunit); this.updateProTaskWorkunit(taskWorkunit);
//添加记录
ProTaskWorkunitConvertRecordCreate record = new ProTaskWorkunitConvertRecordCreate();
record.setTaskWorkunitId(taskWorkunit.getTaskWorkunitId());
record.setNewTaskWorkunitId(newTaskWorkunit.getTaskWorkunitId());
record.setQuantity(outsourceSplitParam.getSplitQuantity());
record.setOperateType(IProTaskWorkunitConvertRecordService.TaskWorkunitConvertType.SPLIT.getValue());
taskWorkunitConvertRecordService.insertProTaskWorkunitConvertRecord(record);
}); });
} }
...@@ -457,7 +482,14 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -457,7 +482,14 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
@Transactional @Transactional
public void toOutsource(List<TaskWorkunitToOutsourceParam> toOutsourceParamList) { public void toOutsource(List<TaskWorkunitToOutsourceParam> toOutsourceParamList) {
toOutsourceParamList.forEach(toOutsourceParam->{ toOutsourceParamList.forEach(toOutsourceParam->{
if(toOutsourceParam.getToOutsourceQuantity().compareTo(BigDecimal.ZERO)==0){
throw new ServiceException("转委外数量必需大于0");
}
ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(toOutsourceParam.getTaskWorkunitId()); ProTaskWorkunit taskWorkunit = this.selectProTaskWorkunitByTaskWorkunitId(toOutsourceParam.getTaskWorkunitId());
//不可超过未报工数量
if(taskWorkunit.getQuantity().subtract(taskWorkunit.getQuantityQualify()).compareTo(toOutsourceParam.getToOutsourceQuantity())<0){
throw new ServiceException("转委外失败,待产数量不足");
}
ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class); ProTaskWorkunit newTaskWorkunit = BeanUtil.copyProperties(taskWorkunit, ProTaskWorkunit.class);
newTaskWorkunit.setWorkunitId(IMdWorkunitService.OUTSOURCE_WORKUNIT_ID); newTaskWorkunit.setWorkunitId(IMdWorkunitService.OUTSOURCE_WORKUNIT_ID);
newTaskWorkunit.setQuantity(toOutsourceParam.getToOutsourceQuantity()); newTaskWorkunit.setQuantity(toOutsourceParam.getToOutsourceQuantity());
...@@ -465,6 +497,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -465,6 +497,7 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
newTaskWorkunit.setQuantityUnqualify(BigDecimal.ZERO); newTaskWorkunit.setQuantityUnqualify(BigDecimal.ZERO);
newTaskWorkunit.setQuantityProduced(BigDecimal.ZERO); newTaskWorkunit.setQuantityProduced(BigDecimal.ZERO);
newTaskWorkunit.setQuantityChanged(BigDecimal.ZERO); newTaskWorkunit.setQuantityChanged(BigDecimal.ZERO);
newTaskWorkunit.setStatus(TaskStatusEnum.PREPARE.getStatus());
BeanUtil.copyProperties(toOutsourceParam, newTaskWorkunit); BeanUtil.copyProperties(toOutsourceParam, newTaskWorkunit);
this.insertProTaskWorkunit(newTaskWorkunit); this.insertProTaskWorkunit(newTaskWorkunit);
//原数量扣减 //原数量扣减
...@@ -474,6 +507,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -474,6 +507,13 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
ProTask proTask = proTaskService.selectProTaskByTaskId(taskWorkunit.getTaskId()); ProTask proTask = proTaskService.selectProTaskByTaskId(taskWorkunit.getTaskId());
proTask.setQuantityWait(NumberUtil.max(proTask.getQuantityWait().subtract(toOutsourceParam.getToOutsourceQuantity()),BigDecimal.ZERO)); proTask.setQuantityWait(NumberUtil.max(proTask.getQuantityWait().subtract(toOutsourceParam.getToOutsourceQuantity()),BigDecimal.ZERO));
proTaskService.updateProTask(proTask); proTaskService.updateProTask(proTask);
//添加记录
ProTaskWorkunitConvertRecordCreate record = new ProTaskWorkunitConvertRecordCreate();
record.setTaskWorkunitId(taskWorkunit.getTaskWorkunitId());
record.setNewTaskWorkunitId(newTaskWorkunit.getTaskWorkunitId());
record.setQuantity(toOutsourceParam.getToOutsourceQuantity());
record.setOperateType(IProTaskWorkunitConvertRecordService.TaskWorkunitConvertType.TO_OUTSOURCE.getValue());
taskWorkunitConvertRecordService.insertProTaskWorkunitConvertRecord(record);
}); });
} }
......
package com.ximai.mes.pro.service.task;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.mes.constant.WorkorderStatusEnum;
import com.ximai.mes.pro.domain.task.ProTaskWorkunitConvertRecord;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordCreate;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordUpdate;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordDto;
/**
* 任务派工转换记录Service接口
*
* @author generator
* @date 2024-09-20
*/
public interface IProTaskWorkunitConvertRecordService
{
/**
* 查询任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 任务派工转换记录
*/
public ProTaskWorkunitConvertRecordDto selectProTaskWorkunitConvertRecordDtoById(Long id);
/**
* 查询任务派工转换记录
*
* @param id 任务派工转换记录主键
* @return 任务派工转换记录
*/
public ProTaskWorkunitConvertRecord selectProTaskWorkunitConvertRecordById(Long id);
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 任务派工转换记录集合
*/
public List<ProTaskWorkunitConvertRecordDto> selectProTaskWorkunitConvertRecordList(ProTaskWorkunitConvertRecord proTaskWorkunitConvertRecord);
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecordQuery 任务派工转换记录
* @return 任务派工转换记录集合
*/
public List<ProTaskWorkunitConvertRecord> selectProTaskWorkunitConvertRecordList(QueryWrapper<ProTaskWorkunitConvertRecord> proTaskWorkunitConvertRecordQuery);
/**
* 查询任务派工转换记录列表
*
* @param proTaskWorkunitConvertRecordQuery 任务派工转换记录
* @return 任务派工转换记录集合
*/
public List<ProTaskWorkunitConvertRecordDto> selectProTaskWorkunitConvertRecordDtoList(QueryWrapper<ProTaskWorkunitConvertRecord> proTaskWorkunitConvertRecordQuery);
/**
* 新增任务派工转换记录
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 结果
*/
public int insertProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecordCreate proTaskWorkunitConvertRecord);
/**
* 修改任务派工转换记录
*
* @param proTaskWorkunitConvertRecord 任务派工转换记录
* @return 结果
*/
public int updateProTaskWorkunitConvertRecord(ProTaskWorkunitConvertRecordUpdate proTaskWorkunitConvertRecord);
/**
* 批量删除任务派工转换记录
*
* @param ids 需要删除的任务派工转换记录主键集合
* @return 结果
*/
public int deleteProTaskWorkunitConvertRecordByIds(Long[] ids);
/**
* 删除任务派工转换记录信息
*
* @param id 任务派工转换记录主键
* @return 结果
*/
public int deleteProTaskWorkunitConvertRecordById(Long id);
public static enum TaskWorkunitConvertType{
/**
* 拆分
*/
SPLIT(3),
/**
* 转自制
*/
TO_SELF_MADE(2),
/**
* 转外协
*/
TO_OUTSOURCE(1);
/**
* Lock type
*/
private final int type;
/**
* Constructor with field of type
*/
private TaskWorkunitConvertType(int type) {
this.type = type;
}
public int getValue() {
return type;
}
public static TaskWorkunitConvertType get(int value) {
for (TaskWorkunitConvertType temp : TaskWorkunitConvertType.values()) {
if (temp.getValue()==value) {
return temp;
}
}
return null;
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ximai.mes.pro.mapper.task.ProTaskWorkunitConvertRecordMapper">
<resultMap type="ProTaskWorkunitConvertRecord" id="ProTaskWorkunitConvertRecordResult">
<result property="id" column="id" />
<result property="taskWorkunitId" column="task_workunit_id" />
<result property="newTaskWorkunitId" column="new_task_workunit_id" />
<result property="quantity" column="quantity" />
<result property="operateType" column="operate_type" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="remark" column="remark" />
</resultMap>
<resultMap type="com.ximai.mes.pro.dto.task.ProTaskWorkunitConvertRecordDto" id="ProTaskWorkunitConvertRecordResult2">
<result property="id" column="id" />
<result property="taskWorkunitId" column="task_workunit_id" />
<result property="newTaskWorkunitId" column="new_task_workunit_id" />
<result property="quantity" column="quantity" />
<result property="operateType" column="operate_type" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectProTaskWorkunitConvertRecordVo">
select id, task_workunit_id, new_task_workunit_id, quantity, operate_type, create_by, create_time, remark from pro_task_workunit_convert_record
</sql>
<select id="selectProTaskWorkunitConvertRecordList" parameterType="ProTaskWorkunitConvertRecord" resultMap="ProTaskWorkunitConvertRecordResult2">
<include refid="selectProTaskWorkunitConvertRecordVo"/>
<where>
<if test="taskWorkunitId != null "> and task_workunit_id = #{taskWorkunitId}</if>
<if test="newTaskWorkunitId != null "> and new_task_workunit_id = #{newTaskWorkunitId}</if>
<if test="quantity != null "> and quantity = #{quantity}</if>
<if test="operateType != null "> and operate_type = #{operateType}</if>
</where>
</select>
<select id="selectProTaskWorkunitConvertRecordById" parameterType="Long" resultMap="ProTaskWorkunitConvertRecordResult2">
<include refid="selectProTaskWorkunitConvertRecordVo"/>
where id = #{id}
</select>
<insert id="insertProTaskWorkunitConvertRecord" parameterType="ProTaskWorkunitConvertRecord" useGeneratedKeys="true" keyProperty="id">
insert into pro_task_workunit_convert_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="taskWorkunitId != null">task_workunit_id,</if>
<if test="newTaskWorkunitId != null">new_task_workunit_id,</if>
<if test="quantity != null">quantity,</if>
<if test="operateType != null">operate_type,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskWorkunitId != null">#{taskWorkunitId},</if>
<if test="newTaskWorkunitId != null">#{newTaskWorkunitId},</if>
<if test="quantity != null">#{quantity},</if>
<if test="operateType != null">#{operateType},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateProTaskWorkunitConvertRecord" parameterType="ProTaskWorkunitConvertRecord">
update pro_task_workunit_convert_record
<trim prefix="SET" suffixOverrides=",">
<if test="taskWorkunitId != null">task_workunit_id = #{taskWorkunitId},</if>
<if test="newTaskWorkunitId != null">new_task_workunit_id = #{newTaskWorkunitId},</if>
<if test="quantity != null">quantity = #{quantity},</if>
<if test="operateType != null">operate_type = #{operateType},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteProTaskWorkunitConvertRecordById" parameterType="Long">
delete from pro_task_workunit_convert_record where id = #{id}
</delete>
<delete id="deleteProTaskWorkunitConvertRecordByIds" parameterType="String">
delete from pro_task_workunit_convert_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment