Browse Source

2026-06-05

工单数据汇总页面增加报工日期条件
master
fengyuan_yang 2 months ago
parent
commit
3110a85932
  1. 7
      src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderAllocMapper.java
  2. 31
      src/main/java/com/gaotao/modules/shopOrder/entity/SearchShopOrder.java
  3. 40
      src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java
  4. 145
      src/main/resources/mapper/shopOrder/WorkOrderAllocMapper.xml

7
src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderAllocMapper.java

@ -24,6 +24,13 @@ public interface WorkOrderAllocMapper {
* @return 生产订单列表
*/
List<SearchShopOrder> searchShopOrderForAlloc(@Param("query") SearchShopOrder query);
/**
* 根据报工日期查询工单号集合用于工单数据汇总查询
* @param query 查询条件
* @return 工单号列表
*/
List<String> selectOrderNosByReportDate(@Param("query") SearchShopOrder query);
/**
* 根据allocType查询工单汇总数据

31
src/main/java/com/gaotao/modules/shopOrder/entity/SearchShopOrder.java

@ -86,10 +86,17 @@ public class SearchShopOrder extends QueryPage {
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date date4;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date reportDate1;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date reportDate2;
private String user;
private String batchNo;
private String buNo;
private List<String> statusList;
private List<String> orderNoList;
private BigDecimal alreadyApplyTotal;
private Integer apsResourceTotal;
private Integer notYetStartedResourceTotal;
@ -518,6 +525,22 @@ public class SearchShopOrder extends QueryPage {
this.date4 = date4;
}
public Date getReportDate1() {
return reportDate1;
}
public void setReportDate1(Date reportDate1) {
this.reportDate1 = reportDate1;
}
public Date getReportDate2() {
return reportDate2;
}
public void setReportDate2(Date reportDate2) {
this.reportDate2 = reportDate2;
}
public String getUser() {
return user;
}
@ -550,6 +573,14 @@ public class SearchShopOrder extends QueryPage {
this.statusList = statusList;
}
public List<String> getOrderNoList() {
return orderNoList;
}
public void setOrderNoList(List<String> orderNoList) {
this.orderNoList = orderNoList;
}
public BigDecimal getAlreadyApplyTotal() {
return alreadyApplyTotal;
}

40
src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderAllocServiceImpl.java

@ -46,14 +46,37 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService {
@Override
public PageUtils searchShopOrderForAlloc(SearchShopOrder query) {
int pageSize = query.getLimit() > 0 ? query.getLimit() : 20;
int offset = query.getPage();
int currPage = offset / pageSize + 1;
// 生产订单号或录入日期优先按需求清空报工日期区间
if ((query.getOrderNo() != null && !query.getOrderNo().trim().isEmpty())
|| query.getDate1() != null
|| query.getDate2() != null) {
query.setReportDate1(null);
query.setReportDate2(null);
}
query.setOrderNoList(null);
if (query.getReportDate1() != null || query.getReportDate2() != null) {
// 选择报工日期时按需求忽略生产订单号和录入日期条件
query.setOrderNo(null);
query.setDate1(null);
query.setDate2(null);
List<String> orderNoList = workOrderAllocMapper.selectOrderNosByReportDate(query);
if (orderNoList == null || orderNoList.isEmpty()) {
return new PageUtils(new ArrayList<>(), 0, pageSize, currPage);
}
query.setOrderNoList(orderNoList);
}
// 查询数据
List<SearchShopOrder> list = workOrderAllocMapper.searchShopOrderForAlloc(query);
// 构建分页结果
int total = list.size();
int pageSize = query.getLimit() > 0 ? query.getLimit() : 20;
int offset = query.getPage();
int currPage = offset / pageSize + 1;
// 手动分页处理
int fromIndex = offset;
@ -95,11 +118,13 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService {
log.info("已插入{}条选中的工单到临时表", orderList.size());
}
// 2. 调用存储过程orderNo传*
// 2. 调用存储过程orderNo传*并传入报工日期区间字符串
List<Object> params = new ArrayList<>();
params.add(query.getSite() != null ? query.getSite() : "");
params.add("*"); // orderNo传"*"表示存储过程内不再过滤订单号直接使用临时表数据
params.add(currentUser);
params.add(formatDateParam(query.getReportDate1()));
params.add(formatDateParam(query.getReportDate2()));
List<Map<String, Object>> resultList = procedureDao.getProcedureData("UspInsertWorkOrderAlloc", params);
@ -320,4 +345,11 @@ public class WorkOrderAllocServiceImpl implements WorkOrderAllocService {
}
return responseData;
}
private String formatDateParam(Date date) {
if (date == null) {
return "";
}
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
}

145
src/main/resources/mapper/shopOrder/WorkOrderAllocMapper.xml

@ -2,6 +2,64 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gaotao.modules.shopOrder.dao.WorkOrderAllocMapper">
<sql id="searchShopOrderForAllocBaseConditions">
and T.site in (Select Site from AccessSite where upper(UserID)=#{query.user})
<if test="query.orderType != null and query.orderType != ''">
AND T.OrderType like '%' + #{query.orderType} + '%'
</if>
<if test="query.planner != null and query.planner != ''">
AND T.Planner like '%' + #{query.planner} + '%'
</if>
<if test="query.site != null and query.site != ''">
AND T.Site like '%' + #{query.site} + '%'
</if>
<if test="query.buNo != null and query.buNo != ''">
AND T.bu_no like '%' + #{query.buNo} + '%'
</if>
<if test="query.partType != null and query.partType != ''">
AND p.PartType like '%' + #{query.partType} + '%'
</if>
<if test="query.partNo != null and query.partNo != ''">
AND T.PartNo like '%' + #{query.partNo} + '%'
</if>
<if test="query.status != null and query.status != ''">
AND T.Status = #{query.status}
</if>
<if test="query.statusList != null and query.statusList.size > 0">
AND T.Status in
<foreach item="item" collection="query.statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="query.partDescription != null and query.partDescription != ''">
AND p.PartDescription like '%' + #{query.partDescription} + '%'
</if>
<if test="query.projectID != null and query.projectID != ''">
AND T.ProjectID like '%' + #{query.projectID} + '%'
</if>
<if test="query.remark != null and query.remark != ''">
AND T.Remark like '%' + #{query.remark} + '%'
</if>
<if test="query.orderRef1 != null and query.orderRef1 != ''">
AND T.OrderRef1 like '%' + #{query.orderRef1} + '%'
</if>
<if test="query.costRollUpFlag != null and query.costRollUpFlag != ''">
AND CostRollUpFlag like '%' + #{query.costRollUpFlag} + '%'
</if>
<if test="query.date1 != null">
AND T.EnterDate >= #{query.date1}
</if>
<if test="query.date2 != null">
AND dateadd(DAY, 1, #{query.date2}) > T.EnterDate
</if>
<if test="query.date3 != null">
AND T.NeedDate >= #{query.date3}
</if>
<if test="query.date4 != null">
AND dateadd(DAY, 1, #{query.date4}) > T.NeedDate
</if>
</sql>
<!-- 分页查询生产订单(工单数据汇总专用) -->
<select id="searchShopOrderForAlloc" parameterType="com.gaotao.modules.shopOrder.entity.SearchShopOrder" resultType="com.gaotao.modules.shopOrder.entity.SearchShopOrder">
Select
@ -60,66 +118,39 @@
left join Project as pr on pr.Site=T.Site and pr.Projectid=T.ProjectID
<where>
AND T.Site = p.Site and T.PartNo = p.PartNo
and T.site in (Select Site from AccessSite where upper(UserID)=#{query.user})
<if test="query.orderType != null and query.orderType != ''">
AND T.OrderType like '%' + #{query.orderType} + '%'
</if>
<if test="query.planner != null and query.planner != ''">
AND T.Planner like '%' + #{query.planner} + '%'
</if>
<if test="query.site != null and query.site != ''">
AND T.Site like '%' + #{query.site} + '%'
</if>
<if test="query.buNo != null and query.buNo != ''">
AND T.bu_no like '%' + #{query.buNo} + '%'
</if>
<if test="query.partType != null and query.partType != ''">
AND P.PartType like '%' + #{query.partType} + '%'
</if>
<if test="query.partNo != null and query.partNo != ''">
AND T.PartNo like '%' + #{query.partNo} + '%'
</if>
<if test="query.status != null and query.status != ''">
AND T.Status = #{query.status}
</if>
<if test="query.statusList != null and query.statusList.size > 0">
AND T.Status in
<foreach item="item" collection="query.statusList" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="query.partDescription != null and query.partDescription != ''">
AND p.PartDescription like '%' + #{query.partDescription} + '%'
</if>
<if test="query.projectID != null and query.projectID != ''">
AND T.ProjectID like '%' + #{query.projectID} + '%'
</if>
<if test="query.remark != null and query.remark != ''">
AND T.Remark like '%' + #{query.remark} + '%'
</if>
<if test="query.orderNo != null and query.orderNo != ''">
AND T.OrderNo like '%' + #{query.orderNo} + '%'
</if>
<if test="query.orderRef1 != null and query.orderRef1 != ''">
AND T.OrderRef1 like '%' + #{query.orderRef1} + '%'
</if>
<if test="query.costRollUpFlag != null and query.costRollUpFlag != ''">
AND CostRollUpFlag like '%' + #{query.costRollUpFlag} + '%'
</if>
<if test="query.date1 != null">
AND T.EnterDate >= #{query.date1}
</if>
<if test="query.date2 != null">
AND dateadd(DAY, 1, #{query.date2}) > T.EnterDate
</if>
<if test="query.date3 != null">
AND T.NeedDate >= #{query.date3}
<include refid="searchShopOrderForAllocBaseConditions"/>
<choose>
<when test="query.orderNoList != null and query.orderNoList.size > 0">
AND T.OrderNo in
<foreach item="item" collection="query.orderNoList" open="(" separator="," close=")">
#{item}
</foreach>
</when>
<otherwise>
<if test="query.orderNo != null and query.orderNo != ''">
AND T.OrderNo like '%' + #{query.orderNo} + '%'
</if>
</otherwise>
</choose>
</where>
ORDER BY T.EnterDate DESC
</select>
<!-- 根据报工日期查询工单号集合 -->
<select id="selectOrderNosByReportDate" parameterType="com.gaotao.modules.shopOrder.entity.SearchShopOrder" resultType="java.lang.String">
SELECT DISTINCT T.OrderNo
FROM ShopOrder T
INNER JOIN SFDC B ON T.Site = B.Site AND T.OrderNo = B.OrderNo
INNER JOIN Part p ON T.Site = p.Site AND T.PartNo = p.PartNo
<where>
<include refid="searchShopOrderForAllocBaseConditions"/>
<if test="query.reportDate1 != null">
AND B.ReportDate >= #{query.reportDate1}
</if>
<if test="query.date4 != null">
AND dateadd(DAY, 1, #{query.date4}) > T.NeedDate
<if test="query.reportDate2 != null">
AND dateadd(DAY, 1, #{query.reportDate2}) > B.ReportDate
</if>
</where>
ORDER BY T.EnterDate DESC
</select>
<!-- 根据allocType查询工单汇总数据 -->

Loading…
Cancel
Save