Commit 094fedd8 authored by chicheng's avatar chicheng

生产进度、生产排产排产日期改为工单计划开始时间

parent 5ba5684a
......@@ -226,6 +226,12 @@ public class ProTaskWorkunit extends BaseEntity {
@ApiModelProperty("订单单号")
@Excel(name = "订单单号")
private String orderCode;
@TableField(exist = false)
@ApiModelProperty("订单序号")
@Excel(name = "订单序号")
private String orderSerial;
@ApiModelProperty("项目号")
@Excel(name = "项目号")
private String customerProjectNo;
......@@ -236,9 +242,14 @@ public class ProTaskWorkunit extends BaseEntity {
@TableField(exist = false)
@ApiModelProperty("排产日期")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "排产日期", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date scheduleDocCreateTime;
@TableField(exist = false)
@ApiModelProperty("预计开工")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "排产日期", width = 20, dateFormat = "yyyy-MM-dd")
private Date expectStartDate;
@ApiModelProperty("标准工时")
private BigDecimal stdWorkingTime;
......
......@@ -147,12 +147,12 @@ public interface ProTaskWorkunitMapper extends BaseMapper<ProTaskWorkunit> {
@Select(value = "select t.task_id, t.task_code, t.task_name, t.task_batch\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.item_id, wo.product_code as item_code, wo.product_name as item_name,wo.customer_project_no,wo.customer_drawing_no,wo.order_code, t.specification, t.unit_of_measure\n" +
"\t, t.item_id, wo.product_code as item_code, wo.product_name as item_name,wo.customer_project_no,wo.customer_drawing_no,wo.order_code,wo.order_serial, 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, 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.attr1, t.attr2, t.attr3, t.attr4\n" +
"\t, t.create_time as schedule_doc_create_time, t.update_by, t.update_time, ptw.STATUS, ptw.quantity_qualify, ptw.remark\n" +
"\t, t.create_time as schedule_doc_create_time, wo.expect_start_date, t.update_by, t.update_time, ptw.STATUS, ptw.quantity_qualify, ptw.remark\n" +
"\t,ptw.source_task_workunit_id, ptw.quantity_unqualify, ptw.outsource_unit_price,ptw.outsourced, ptw.vendor_id,ptw.vendor_name, mw.workunit_id, mw.workunit_code, mw.workunit_name, ptw.std_working_time,ptw.std_working_time_uom, 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" +
"from pro_task_workunit ptw\n" +
......
......@@ -446,8 +446,8 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
query.le(proTaskWorkunit.getScheduleStartDateTo() != null, "ptw.schedule_start_date", proTaskWorkunit.getScheduleStartDateTo());
query.gt(proTaskWorkunit.getScheduleEndDateFrom() != null, "ptw.schedule_end_date", proTaskWorkunit.getScheduleEndDateFrom());
query.le(proTaskWorkunit.getScheduleEndDateTo() != null, "ptw.schedule_end_date", proTaskWorkunit.getScheduleEndDateTo());
query.ge(proTaskWorkunit.getScheduleDocCreateTimeFrom() != null, "t.create_time", proTaskWorkunit.getScheduleDocCreateTimeFrom());
query.le(proTaskWorkunit.getScheduleDocCreateTimeTo() != null, "t.create_time", proTaskWorkunit.getScheduleDocCreateTimeTo());
query.ge(proTaskWorkunit.getScheduleDocCreateTimeFrom() != null, "wo.expect_start_date", proTaskWorkunit.getScheduleDocCreateTimeFrom());
query.le(proTaskWorkunit.getScheduleDocCreateTimeTo() != null, "wo.expect_start_date", proTaskWorkunit.getScheduleDocCreateTimeTo());
query.eq(StringUtils.isNotEmpty(proTaskWorkunit.getArrangeCode()), "t.arrange_code", proTaskWorkunit.getArrangeCode());
query.eq(proTaskWorkunit.getOutsourced()!=null, "ptw.outsourced", proTaskWorkunit.getOutsourced());
query.eq(StringUtils.isNotEmpty(proTaskWorkunit.getCustomerProjectNo()), "wo.customer_project_no", proTaskWorkunit.getCustomerProjectNo());
......
......@@ -25,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -45,6 +46,7 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService {
public List<WorkOrderProgressListResponse> getList(WorkOrderProgressRequest workOrderProgressRequest) {
List<WorkOrderProgressListResponse> workOrderProgressListResponses = proWorkorderMapper.getWorkOrderProgressServiceList(workOrderProgressRequest);
for (WorkOrderProgressListResponse workOrderProgressListResponse : workOrderProgressListResponses){
applyExpectStartScheduleTime(workOrderProgressListResponse);
if(workOrderProgressListResponse.getQuantity() != null && workOrderProgressListResponse.getQuantity().compareTo(BigDecimal.ZERO) >0){
workOrderProgressListResponse.setQuantityProduced(workOrderProgressListResponse.getQuantityProduced() != null ? workOrderProgressListResponse.getQuantityProduced() : BigDecimal.ZERO);
if(workOrderProgressListResponse.getQuantity().compareTo(workOrderProgressListResponse.getQuantityProduced()) > 0){
......@@ -62,6 +64,20 @@ public class WorkOrderProgressServiceImp implements WorkOrderProgressService {
return workOrderProgressListResponses;
}
/** 排产日期展示:预计开工日期 + 08:00 */
private void applyExpectStartScheduleTime(WorkOrderProgressListResponse row) {
if (row.getScheduleDate() == null) {
return;
}
Calendar cal = Calendar.getInstance();
cal.setTime(row.getScheduleDate());
cal.set(Calendar.HOUR_OF_DAY, 8);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
row.setScheduleDate(cal.getTime());
}
/**
* 生产中工单填充首道未完成工序名(与工序明细状态判定一致)
*/
......
......@@ -267,7 +267,7 @@
pw.erp_update_time ,
item.line_name,
SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch,
MIN(task.create_time) schedule_date,
pw.expect_start_date schedule_date,
IFNULL(SUM(CASE WHEN task.is_last_process = 1 THEN IFNULL(fe.quantity_qualify, 0) + IFNULL(fe.quantity_unqualify, 0) ELSE 0 END), 0) AS quantity_produced
FROM pro_workorder pw
INNER JOIN pro_task_workorder tw ON tw.workorder_id = pw.workorder_id
......@@ -290,6 +290,9 @@
<if test="lineName != null and lineName !=''">and item.line_name = #{lineName} </if>
<if test="orderSerial != null and orderSerial !=''">and pw.order_serial = #{orderSerial} </if>
<if test="taskBatch != null and taskBatch !=''">and SUBSTRING_INDEX(task.task_batch, '-', -1) = #{taskBatch} </if>
<if test="scheduleDateFrom != null">
and pw.expect_start_date &gt;= #{scheduleDateFrom} and pw.expect_start_date &lt;= #{scheduleDateTo}
</if>
</where>
GROUP BY
pw.workorder_id,
......@@ -369,9 +372,6 @@
pw.erp_update_time,
SUBSTRING_INDEX(task.task_batch, '-', -1) ,
item.line_name
<if test="scheduleDateFrom != null">
HAVING MIN(task.create_time) &gt;= #{scheduleDateFrom} AND MIN(task.create_time) &lt;= #{scheduleDateTo}
</if>
</select>
<!-- 进度报表:主表列表,按工单排产时间降序。工序数/报工和用 JOIN 聚合表一次算出,避免每行相关子查询 -->
......
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