Commit 3de93391 authored by chicheng's avatar chicheng

Merge remote-tracking branch 'origin/dev' into dev

parents 50606a71 3e703a3a
...@@ -10,6 +10,7 @@ import com.ximai.common.enums.BusinessType; ...@@ -10,6 +10,7 @@ import com.ximai.common.enums.BusinessType;
import com.ximai.common.utils.SecurityUtils; 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.mes.constant.TaskWorkunitStatusEnum; import com.ximai.mes.constant.TaskWorkunitStatusEnum;
import com.ximai.mes.md.domain.MdWorkunit; import com.ximai.mes.md.domain.MdWorkunit;
import com.ximai.mes.md.domain.MdWorkunitWorker; import com.ximai.mes.md.domain.MdWorkunitWorker;
...@@ -25,6 +26,9 @@ import com.ximai.mes.pro.mapper.ProFeedbackMapper; ...@@ -25,6 +26,9 @@ import com.ximai.mes.pro.mapper.ProFeedbackMapper;
import com.ximai.mes.pro.mapper.task.ProTaskAssistProcessMapper; import com.ximai.mes.pro.mapper.task.ProTaskAssistProcessMapper;
import com.ximai.mes.pro.service.IProFeedbackService; import com.ximai.mes.pro.service.IProFeedbackService;
import com.ximai.mes.pro.service.proWorkOrder.IProWorkOrderSoSizeItemService; import com.ximai.mes.pro.service.proWorkOrder.IProWorkOrderSoSizeItemService;
import com.ximai.mes.report.response.FeedbackResponseExportByList;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
...@@ -42,6 +46,7 @@ import java.util.stream.Collectors; ...@@ -42,6 +46,7 @@ import java.util.stream.Collectors;
* @date 2022-07-10 * @date 2022-07-10
*/ */
@RestController @RestController
@Api(tags = "生产报工记录")
@RequestMapping("/mes/pro/feedback") @RequestMapping("/mes/pro/feedback")
public class ProFeedbackController extends BaseController { public class ProFeedbackController extends BaseController {
@Autowired @Autowired
...@@ -114,7 +119,70 @@ public class ProFeedbackController extends BaseController { ...@@ -114,7 +119,70 @@ public class ProFeedbackController extends BaseController {
return getDataTable(proFeedbackVoList); return getDataTable(proFeedbackVoList);
} }
/**
* 查询生产报工记录列表
*/
@PostMapping("/list/export")
@ApiOperation("查询生产报工记录列表导出")
public void listExport(HttpServletResponse response,@RequestBody ProFeedbackCheckListDto proFeedbackCheckListDto) {
ProFeedback proFeedback = new ProFeedback();
BeanUtils.copyProperties(proFeedbackCheckListDto,proFeedback);
QueryWrapper<ProFeedback> query = new QueryWrapper<>();
query.eq(StringUtils.isNotEmpty(proFeedback.getFeedbackType()), "f.feedback_type", proFeedback.getFeedbackType());
query.eq(StringUtils.isNotEmpty(proFeedback.getStatus()), "f.status", proFeedback.getStatus());
query.eq(StringUtils.isNotEmpty(proFeedback.getAssistProcessCode()), "ap.assist_process_code", proFeedback.getAssistProcessCode());
query.eq(StringUtils.isNotEmpty(proFeedback.getWorkstationName()), "f.workstation_name", proFeedback.getWorkstationName());
query.eq(StringUtils.isNotEmpty(proFeedback.getItemName()), "it.item_name", proFeedback.getItemName());
query.eq(StringUtils.isNotEmpty(proFeedback.getWorkorderCode()), "f.workorder_code", proFeedback.getWorkorderCode());
query.eq(StringUtils.isNotEmpty(proFeedback.getSapItemCode()), "it.sap_item_code", proFeedback.getSapItemCode());
query.like(StringUtils.isNotEmpty(proFeedback.getOrderCode()), "workorder.order_code",
proFeedback.getOrderCode());
query.like(StringUtils.isNotEmpty(proFeedback.getOrderSerial()), "workorder.order_serial",
proFeedback.getOrderSerial());
query.like(StringUtils.isNotEmpty(proFeedback.getCustomerDrawingNo()), "workorder.Customer_Drawing_No",
proFeedback.getCustomerDrawingNo());
query.eq(proFeedback.getLastFeedback() != null , "f.Last_Feedback", proFeedback.getLastFeedback());
// query.eq(StringUtils.isNotEmpty(proFeedback.getUserId()), "pww.user_id", proFeedback.getUserId());
query.eq(StringUtils.isNotEmpty(proFeedback.getWorkunitId()), "tw.workunit_id", proFeedback.getWorkunitId());
if(proFeedbackCheckListDto.getIsCheckUser() && StringUtils.isEmpty(proFeedback.getWorkunitId())){
List<MdWorkunitVo> mdWorkunitVolist = mdWorkunitService.selectMdWorkunitListByUser(new QueryWrapper<MdWorkunit>().eq("user_name", SecurityUtils.getUsername()));
if(mdWorkunitVolist.size() < 1){
ExcelUtil<ProFeedbackVo> util = new ExcelUtil<>(ProFeedbackVo.class);
util.exportExcel(response, new ArrayList<>(), "生产报工记录列表","生产报工记录列表");
}
query.in(mdWorkunitVolist.size() > 0 , "tw.workunit_id", mdWorkunitVolist.stream().map(mdWorkunitVo -> mdWorkunitVo.getWorkunitId()).collect(Collectors.toList()));
}
query.eq(StringUtils.isNotEmpty(proFeedback.getTaskWorkunitId()), "tw.task_workunit_id", proFeedback.getTaskWorkunitId());
query.between(StringUtils.isNotEmpty(proFeedback.getCreateStartTime()) && StringUtils.isNotEmpty(proFeedback.getCreateEndTime()), "f.update_time", proFeedback.getCreateStartTime(), proFeedback.getCreateEndTime());
query.like(StringUtils.isNotEmpty(proFeedback.getNickName()), "f.nick_name", proFeedback.getNickName());
query.notIn("tw.status", TaskWorkunitStatusEnum.CLOSE.getStatus());
query.orderByAsc("f.feedback_time");
List<ProFeedbackVo> list = proFeedbackService.queryProFeedbackListJoinTaskWorkUnit(query);
List<ProFeedbackVo> proFeedbackVoList = new ArrayList<>();
if (proFeedback.getUserId() != null) {
List<MdWorkunitWorker> mdWorkunitWorkers = mdWorkunitWorkerMapper.selectListByQw(new QueryWrapper<MdWorkunitWorker>().eq("user_id", proFeedback.getUserId()));
Set<Long> collect = mdWorkunitWorkers.stream().map(MdWorkunitWorker::getWorkunitId).collect(Collectors.toSet());
// objects = list.stream().filter(x -> !collect.add(x.getWorkunitId())).sorted(Comparator.comparing(ProFeedbackVo::getFeedbackTime).reversed()).collect(Collectors.toList());
proFeedbackVoList = list.stream().filter(x -> !collect.add(x.getWorkunitId())).sorted(Comparator.comparing(ProFeedbackVo::getUpdateTime).reversed()).collect(Collectors.toList());
}
proFeedbackVoList = proFeedbackVoList.isEmpty() ? list : proFeedbackVoList;
proFeedbackVoList.forEach(s->{
if(IMdWorkstationService.OUTSOURCE_WORKSTATION_ID.equals(s.getWorkstationId())){
s.setAssistProcessCode(s.getTaskCode());
}
if(s.getFeedbackType().equals("SELF")){
s.setFeedbackType("自行报工");
}else{
s.setFeedbackType("外协报工");
}
});
ExcelUtil<ProFeedbackVo> util = new ExcelUtil<>(ProFeedbackVo.class);
util.exportExcel(response, list, "生产报工记录列表","生产报工记录列表");
}
/** /**
* 查询生产报工记录列表 * 查询生产报工记录列表
*/ */
......
...@@ -9,14 +9,17 @@ import com.ximai.common.enums.BusinessType; ...@@ -9,14 +9,17 @@ import com.ximai.common.enums.BusinessType;
import com.ximai.common.utils.SecurityUtils; 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.mes.pro.domain.proWorkOrder.ProWorkorder; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit; import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
import com.ximai.mes.pro.domain.vo.ProFeedbackVo;
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.service.task.IProTaskWorkunitService; import com.ximai.mes.pro.service.task.IProTaskWorkunitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -38,6 +41,7 @@ import java.util.Objects; ...@@ -38,6 +41,7 @@ import java.util.Objects;
*/ */
@RestController @RestController
@RequestMapping("/mes/pro/taskWorkunit") @RequestMapping("/mes/pro/taskWorkunit")
@Api(tags = "任务工作单元")
public class ProTaskWorkunitController extends BaseController { public class ProTaskWorkunitController extends BaseController {
@Autowired @Autowired
private IProTaskWorkunitService proTaskWorkunitService; private IProTaskWorkunitService proTaskWorkunitService;
...@@ -53,7 +57,25 @@ public class ProTaskWorkunitController extends BaseController { ...@@ -53,7 +57,25 @@ public class ProTaskWorkunitController extends BaseController {
List<ProTaskWorkunit> lists = proTaskWorkunitService.schedulingList(proTaskWorkunit); List<ProTaskWorkunit> lists = proTaskWorkunitService.schedulingList(proTaskWorkunit);
return getDataTable(lists); return getDataTable(lists);
} }
/**
* 任务工作单元列表
*/
@PreAuthorize("@ss.hasPermi('mes:pro:taskWorkunit:list')")
@PostMapping("/list/export")
@ApiOperation("任务工作单元列表导出")
public void listExport(HttpServletResponse response,@RequestBody ProTaskWorkunitQuery proTaskWorkunit) {
List<ProTaskWorkunit> lists = proTaskWorkunitService.schedulingList(proTaskWorkunit);
lists.stream().forEach(proTaskWorkunit1 -> {
if(StringUtils.isNotEmpty(proTaskWorkunit1.getTaskBatch())){
String[] spli = proTaskWorkunit1.getTaskBatch().split("-");
if(spli.length > 1){
proTaskWorkunit1.setTaskBatch(spli[1]);
}
}
});
ExcelUtil<ProTaskWorkunit> util = new ExcelUtil<>(ProTaskWorkunit.class);
util.exportExcel(response, lists, "任务工作单元列表","任务工作单元列表");
}
@ApiOperation("查询任务工作单元列表") @ApiOperation("查询任务工作单元列表")
@PostMapping("/workorderList") @PostMapping("/workorderList")
public List<ProWorkorder> listWorkorder(@RequestBody ProTaskWorkunitQuery proTaskWorkunit) { public List<ProWorkorder> listWorkorder(@RequestBody ProTaskWorkunitQuery proTaskWorkunit) {
......
...@@ -110,12 +110,16 @@ public class ProTaskWorkunit extends BaseEntity { ...@@ -110,12 +110,16 @@ public class ProTaskWorkunit extends BaseEntity {
*/ */
@ApiModelProperty("计划开始时间") @ApiModelProperty("计划开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "计划开始时间")
private Date scheduleStartDate; private Date scheduleStartDate;
/** /**
* 预计结束时间 * 预计结束时间
*/ */
@ApiModelProperty("计划结束时间") @ApiModelProperty("计划结束时间")
@Excel(name = "计划结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date scheduleEndDate; private Date scheduleEndDate;
...@@ -135,18 +139,24 @@ public class ProTaskWorkunit extends BaseEntity { ...@@ -135,18 +139,24 @@ public class ProTaskWorkunit extends BaseEntity {
@ApiModelProperty("工序名") @ApiModelProperty("工序名")
@TableField(exist = false) @TableField(exist = false)
@Excel(name = "工序名")
private String processName; private String processName;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("作业单元编码") @ApiModelProperty("作业单元编码")
@Excel(name = "作业单元编码")
private String workunitCode; private String workunitCode;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("作业单元名称") @ApiModelProperty("作业单元名称")
@Excel(name = "作业单元名称")
private String workunitName; private String workunitName;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("任务编码") @ApiModelProperty("任务编码")
@Excel(name = "任务编码")
private String taskCode; private String taskCode;
// //
// @TableField(exist = false) // @TableField(exist = false)
...@@ -198,23 +208,29 @@ public class ProTaskWorkunit extends BaseEntity { ...@@ -198,23 +208,29 @@ public class ProTaskWorkunit extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("工单编号") @ApiModelProperty("工单编号")
@Excel(name = "工单编号")
private String workorderCode; private String workorderCode;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("待生产数量") @ApiModelProperty("待生产数量")
@Excel(name = "可加工数量")
private BigDecimal quantityWait; private BigDecimal quantityWait;
private int percent; private int percent;
@ApiModelProperty("客户图号") @ApiModelProperty("客户图号")
@TableField(exist = false) @TableField(exist = false)
@Excel(name = "产品图号")
private String customerDrawingNo; private String customerDrawingNo;
@ApiModelProperty("订单单号") @ApiModelProperty("订单单号")
@Excel(name = "订单单号")
private String orderCode; private String orderCode;
@ApiModelProperty("项目号") @ApiModelProperty("项目号")
@Excel(name = "项目号")
private String customerProjectNo; private String customerProjectNo;
@ApiModelProperty("任务批号") @ApiModelProperty("任务批号")
@Excel(name = "排产次数")
private String taskBatch; private String taskBatch;
@ApiModelProperty("标准工时") @ApiModelProperty("标准工时")
......
...@@ -26,12 +26,14 @@ public class ProFeedbackVo { ...@@ -26,12 +26,14 @@ public class ProFeedbackVo {
/** /**
* 报工单编号 * 报工单编号
*/ */
private String feedbackCode; private String feedbackCode;
private String assistProcessCode; private String assistProcessCode;
/** /**
* 报工类型 * 报工类型
*/ */
@Excel(name = "报工类型")
private String feedbackType; private String feedbackType;
/** /**
...@@ -151,7 +153,7 @@ public class ProFeedbackVo { ...@@ -151,7 +153,7 @@ public class ProFeedbackVo {
/** /**
* 本次报工数量 * 本次报工数量
*/ */
@Excel(name = "本次报工数量") @Excel(name = "报工数量")
private BigDecimal quantityFeedback; private BigDecimal quantityFeedback;
/** /**
...@@ -266,6 +268,7 @@ public class ProFeedbackVo { ...@@ -266,6 +268,7 @@ public class ProFeedbackVo {
@ApiModelProperty("作业单元id") @ApiModelProperty("作业单元id")
private Long workunitId; private Long workunitId;
@ApiModelProperty("作业单元名称") @ApiModelProperty("作业单元名称")
@Excel(name = "作业单元名称")
private String workunitName; private String workunitName;
@ApiModelProperty("创建人") @ApiModelProperty("创建人")
...@@ -294,13 +297,16 @@ public class ProFeedbackVo { ...@@ -294,13 +297,16 @@ public class ProFeedbackVo {
@ApiModelProperty("产品图号") @ApiModelProperty("产品图号")
@TableField(exist = false) @TableField(exist = false)
@Excel(name = "产品图号")
private String customerDrawingNo; private String customerDrawingNo;
/** 异常类型 */ /** 销售订单号 */
@Excel(name = "销售订单号")
private String orderCode; private String orderCode;
/** 异常类型 */ /** 异常类型 */
@Excel(name = "销售序号")
private String orderSerial; private String orderSerial;
} }
...@@ -699,7 +699,8 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService { ...@@ -699,7 +699,8 @@ public class ProTaskWorkunitServiceImpl implements IProTaskWorkunitService {
} }
taskProWorkorderPrintData.setSize(i++); taskProWorkorderPrintData.setSize(i++);
taskProWorkorderPrintData.setDate(simpleDateFormat1.format(new Date())); taskProWorkorderPrintData.setDate(simpleDateFormat1.format(new Date()));
taskProWorkorderPrintData.setQuantity(taskBatchTasks.get(0).getQuantity()); BigDecimal quantity = taskBatchTasks.stream().filter(proTask -> proTask.getIdx().equals("0010")).map(proTask -> proTask.getQuantity()).reduce(BigDecimal.ZERO,BigDecimal::add);
taskProWorkorderPrintData.setQuantity(quantity);
//} //}
} }
return printData; return printData;
......
...@@ -112,11 +112,11 @@ public class FeedbackRequest { ...@@ -112,11 +112,11 @@ public class FeedbackRequest {
private String nickName; private String nickName;
@ApiModelProperty("报工开始") @ApiModelProperty("报工开始")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate; private Date startDate;
@ApiModelProperty("报工结束") @ApiModelProperty("报工结束")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate; private Date endDate;
@ApiModelProperty("是否筛查不良") @ApiModelProperty("是否筛查不良")
......
...@@ -48,5 +48,8 @@ public class WorkOrderProgressRequest { ...@@ -48,5 +48,8 @@ public class WorkOrderProgressRequest {
@ApiModelProperty( "产线") @ApiModelProperty( "产线")
private String lineName; private String lineName;
@ApiModelProperty("订单序号")
private String orderSerial;
@ApiModelProperty("排产次数")
private String taskBatch;
} }
...@@ -195,4 +195,10 @@ public class FeedbackResponse extends ProFeedback { ...@@ -195,4 +195,10 @@ public class FeedbackResponse extends ProFeedback {
@ApiModelProperty("车间名称") @ApiModelProperty("车间名称")
@Excel(name = "车间名称") @Excel(name = "车间名称")
private String workshopName; private String workshopName;
@ApiModelProperty("订单序号")
@Excel(name = "订单序号")
private String orderSerial;
@ApiModelProperty("排产次数")
@Excel(name = "排产次数")
private String taskBatch;
} }
...@@ -76,5 +76,12 @@ public class WorkOrderProgressListResponse { ...@@ -76,5 +76,12 @@ public class WorkOrderProgressListResponse {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "需求时间", dateFormat = "yyyy-MM-dd HH:mm:ss") @Excel(name = "需求时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date requestDate; private Date requestDate;
@ApiModelProperty("订单序号")
@Excel(name = "订单序号")
private String orderSerial;
@ApiModelProperty("排产次数")
@Excel(name = "排产次数")
private String taskBatch;
} }
...@@ -173,6 +173,7 @@ ...@@ -173,6 +173,7 @@
workorder.workorder_Type, workorder.workorder_Type,
workorder.customer_Project_No, workorder.customer_Project_No,
workorder.order_Code, workorder.order_Code,
workorder.order_serial,
workorder.workorder_Code, workorder.workorder_Code,
workorder.product_Code, workorder.product_Code,
workorder.product_Name, workorder.product_Name,
...@@ -193,7 +194,9 @@ ...@@ -193,7 +194,9 @@
f.machine_time, f.machine_time,
f.feedback_time, f.feedback_time,
workunit.std_working_time, workunit.std_working_time,
workunit.schedule_end_date workunit.schedule_end_date,
SUBSTRING_INDEX(pt.task_batch, '-', -1) task_batch
from pro_feedback f from pro_feedback f
left join pro_task_workunit workunit on workunit.task_id = f.task_id left join pro_task_workunit workunit on workunit.task_id = f.task_id
left join pro_task pt on f.task_id = pt.task_id left join pro_task pt on f.task_id = pt.task_id
...@@ -542,7 +545,7 @@ ...@@ -542,7 +545,7 @@
workunit.std_working_time , workunit.std_working_time ,
pro_task.task_batch pro_task.task_batch
order by order by
pro_task.idx pro_task.task_batch
</select> </select>
<select id="getListByDefect" resultType="com.ximai.mes.report.response.FeedbackResponse"> <select id="getListByDefect" resultType="com.ximai.mes.report.response.FeedbackResponse">
select select
......
...@@ -266,6 +266,7 @@ ...@@ -266,6 +266,7 @@
pw.erp_create_time, pw.erp_create_time,
pw.erp_update_time , pw.erp_update_time ,
item.line_name, item.line_name,
SUBSTRING_INDEX(task.task_batch, '-', -1) task_batch,
sum(case task.is_last_process when 0 THEN 0 ELSE fe.quantity_qualify + fe.quantity_unqualify END) as quantity_produced sum(case task.is_last_process when 0 THEN 0 ELSE fe.quantity_qualify + fe.quantity_unqualify END) as quantity_produced
FROM FROM
pro_workorder pw pro_workorder pw
...@@ -286,6 +287,8 @@ ...@@ -286,6 +287,8 @@
</if> </if>
<if test="lineName != null and lineName !=''">and item.line_name = #{lineName} </if> <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>
</where> </where>
GROUP BY GROUP BY
pw.workorder_id, pw.workorder_id,
...@@ -363,6 +366,7 @@ ...@@ -363,6 +366,7 @@
pw.in_drawing_no, pw.in_drawing_no,
pw.erp_create_time, pw.erp_create_time,
pw.erp_update_time, pw.erp_update_time,
SUBSTRING_INDEX(task.task_batch, '-', -1) ,
item.line_name item.line_name
</select> </select>
......
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