Browse Source

日历sql的修改

master
rui_li 4 years ago
parent
commit
a45d3fdde7
  1. 66
      src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java
  2. 19
      src/main/java/com/gaotao/modules/schedule/mapper/SchedulingMapper.java
  3. 41
      src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java
  4. 53
      src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java
  5. 88
      src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java
  6. 82
      src/main/resources/mapper/schedule/SchedulingMapper.xml

66
src/main/java/com/gaotao/modules/schedule/controller/SchedulingController.java

@ -176,7 +176,6 @@ public class SchedulingController {
**/
@RequestMapping(value = "getOrderScheduleListWithFqc")
public R getOrderScheduleListWithFqc(@RequestBody SearchScheduleData inData){
SchedulingController scheduleService;
List<ScheduleData> resultList = schedulingService.getOrderScheduleListWithFqc(inData);
return R.ok()
.put("code", 200)
@ -278,5 +277,70 @@ public class SchedulingController {
.put("row", resultMap);
}
/**
* TODO 刷新当前排产单的数据
* @author LR
* @date 2022/3/30 14:33
* @Param [inData]
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "getShopOrderByCon")
public R getShopOrderByCon(@RequestBody SearchScheduleData inData){
ShopOrderOutData resultRow = schedulingService.getShopOrderByCon(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!")
.put("row", resultRow);
}
/**
* TODO 获取待排产工单的列表
* @author LR
* @date 2022/3/31 18:12
* @Param [inData]
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "getShopOrderList")
public R getShopOrderList(@RequestBody SearchScheduleData inData){
List<ShopOrderOutData> resultList = schedulingService.getShopOrderList(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!")
.put("rows", resultList)
.put("total", resultList.size());
}
/**
* TODO 获取可用的机台数据
* @author LR
* @date 2022/4/1 11:53
* @Param [inData]
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "getOrderAvailableResource")
public R getOrderAvailableResource(@RequestBody SearchScheduleData inData){
List<ResourceOutData> resultList = schedulingService.getOrderAvailableResource(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!")
.put("rows", resultList)
.put("total", resultList.size());
}
/**
* TODO 执行扩展的排产操作
* @author LR
* @date 2022/4/1 15:52
* @Param [inData]
* @return com.gaotao.common.utils.R
**/
@RequestMapping(value = "scheduleOrderWithExpand")
public R scheduleOrderWithExpand(@RequestBody SearchScheduleData inData){
schedulingService.scheduleOrderWithExpand(inData);
return R.ok()
.put("code", 200)
.put("msg", "操作成功!");
}
}

19
src/main/java/com/gaotao/modules/schedule/mapper/SchedulingMapper.java

@ -74,5 +74,22 @@ public interface SchedulingMapper {
**/
List<Map<String, Object>> getOrderPartStockedQty(SearchScheduleData inData);
/**
* TODO 刷新当前排产单的数据
* @author LR
* @date 2022/3/30 14:34
* @Param [inData]
* @return com.gaotao.modules.schedule.data.ShopOrderOutData
**/
ShopOrderOutData getShopOrderByCon(SearchScheduleData inData);
/**
* TODO 获取待排产工单的列表
* @author LR
* @date 2022/3/31 18:17
* @Param [inData]
* @return java.util.List<com.gaotao.modules.schedule.data.ShopOrderOutData>
**/
List<ShopOrderOutData> getShopOrderList(SearchScheduleData inData);
}

41
src/main/java/com/gaotao/modules/schedule/service/SchedulingService.java

@ -1,10 +1,7 @@
package com.gaotao.modules.schedule.service;
import com.gaotao.common.exception.RRException;
import com.gaotao.modules.schedule.data.OperatorOutData;
import com.gaotao.modules.schedule.data.ScheduleData;
import com.gaotao.modules.schedule.data.SearchScheduleData;
import com.gaotao.modules.schedule.data.ShopOrderOutData;
import com.gaotao.modules.schedule.data.*;
import java.util.List;
import java.util.Map;
@ -169,4 +166,40 @@ public interface SchedulingService {
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
Map<String, Object> getCalendarMapByResourceId(SearchScheduleData inData);
/**
* TODO 刷新当前排产单的数据
* @author LR
* @date 2022/3/30 14:33
* @Param [inData]
* @return com.gaotao.modules.schedule.data.ShopOrderOutData
**/
ShopOrderOutData getShopOrderByCon(SearchScheduleData inData);
/**
* TODO 获取待排产工单的列表
* @author LR
* @date 2022/3/31 18:12
* @Param [inData]
* @return java.util.List<com.gaotao.modules.schedule.data.ShopOrderOutData>
**/
List<ShopOrderOutData> getShopOrderList(SearchScheduleData inData);
/**
* TODO 获取可用的机台数据
* @author LR
* @date 2022/4/1 11:54
* @Param [inData]
* @return java.util.List<com.gaotao.modules.schedule.data.ResourceOutData>
**/
List<ResourceOutData> getOrderAvailableResource(SearchScheduleData inData);
/**
* TODO 执行扩展的排产操作
* @author LR
* @date 2022/4/1 15:53
* @Param [inData]
* @return void
**/
void scheduleOrderWithExpand(SearchScheduleData inData);
}

53
src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java

@ -439,6 +439,9 @@ public class ScheduleServiceImpl implements ScheduleService {
public Map<String, Object> getScheduleShiftData(SearchScheduleData inData) throws ParseException {
String site = inData.getSite();
String username = inData.getUsername();
String resourceId = inData.getResourceId();
String currentTime = inData.getReportedTime();
Date currentDate = DateUtil.getDateByParten(currentTime, "yyyy-MM-dd HH:mm:ss");
//调用存储过程判断是否存在权限
Map<String, Object> shiftMap = this.getUserSpecialAuth(site, username, 249);
//获取结果
@ -450,38 +453,34 @@ public class ScheduleServiceImpl implements ScheduleService {
Map<String, Object> result = new HashMap<>();
//查询数据
List<Map<String, Object>> resultList = scheduleMapper.getScheduleShiftData(inData);
//判断是否查询到结果数据
if (resultList.size() > 0) {
//循环处理数据
for (int i = 0; i < resultList.size(); i++) {
Map<String, Object> tempMap = resultList.get(i);
Float curTime = Float.parseFloat(String.valueOf(tempMap.get("curTime")));
Float startTime = Float.parseFloat(String.valueOf(tempMap.get("startTime")));
Float endTime = Float.parseFloat(String.valueOf(tempMap.get("endTime")));
//区分各类情况
if (curTime < startTime) {
result.put("code", "500");
result.put("shiftDesc", "无班次");
result.put("shiftNo", "");
result.put("scheduledDate", "");
break;
} else if (curTime >= startTime && curTime <= endTime) {
result = resultList.get(i);
break;
} else {
result = resultList.get(i);
}
}
result.put("code", "200");
} else {
result.put("code", "500");
result.put("shiftDesc", "无班次");
}
Map<String, Object> resultMap = this.getScheduleDateShif(site, resourceId, currentDate);
Date scheduledDate = (Date) resultMap.get("scheduleddate");
String scheduleTime = DateUtil.getStringDate(scheduledDate, "yyyy-MM-dd");
String shiftNo = String.valueOf(resultMap.get("ShiftNo"));
result.put("shiftDesc", shiftNo);
result.put("shiftNo", shiftNo);
result.put("scheduledDate", scheduleTime);
//设置结果的参数
result.put("specialAuth", specialAuth);
return result;
}
/**
* TODO 获取班次信息
* @author LR
* @date 2022/4/1 16:58
* @Param [site, resourceId, currentDate]
* @return java.util.Map<java.lang.String, java.lang.Object>
**/
public Map<String, Object> getScheduleDateShif(String site, String resourceId, Date currentDate) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(resourceId);
params.add(currentDate);
return workbenchCreateslittingrollFqcCheck("get_ScheduleDate_Shift", params);
}
/**
* TODO 获取用户的特殊权限
* @author LR

88
src/main/java/com/gaotao/modules/schedule/service/impl/SchedulingServiceImpl.java

@ -666,5 +666,93 @@ public class SchedulingServiceImpl implements SchedulingService {
return scheduleMapper.getCalendarId(inData);
}
@Override
public ShopOrderOutData getShopOrderByCon(SearchScheduleData inData) {
return schedulingMapper.getShopOrderByCon(inData);
}
@Override
public List<ShopOrderOutData> getShopOrderList(SearchScheduleData inData) {
return schedulingMapper.getShopOrderList(inData);
}
@Override
public List<ResourceOutData> getOrderAvailableResource(SearchScheduleData inData) {
//公共参数
String site = inData.getSite();
String orderNo = inData.getOrderNo();
int itemNo = inData.getItemNo();
//调用存储过程 查询工单+工序的可用机台的数据
List<Map<String, Object>> resourceList = getOrderAvailableResource(site, orderNo, itemNo);
//处理结果的数据
List<ResourceOutData> resultList = new ArrayList<>();
//循环填充数据
for (Map<String, Object> tempData : resourceList){
String resourceId = String.valueOf(tempData.get("ResourceID"));
String resourceDesc = String.valueOf(tempData.get("ResouceDesc"));
//新增对象的数据
ResourceOutData tempRow = new ResourceOutData();
tempRow.setSite(site);
tempRow.setResourceId(resourceId);
tempRow.setResourceDesc(resourceDesc);
resultList.add(tempRow);
}
return resultList;
}
/**
* TODO 调用存储过程 查询工单+工序的可用机台的数据
* @author LR
* @date 2022/4/1 13:56
* @Param [site, orderNo, itemNo]
* @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
**/
public List<Map<String, Object>> getOrderAvailableResource(String site, String orderNo, int itemNo) {
List<Object> params = new ArrayList<>();
params.add(site);
params.add(orderNo);
params.add(itemNo);
//调用存储过程 返回的结果
return procedureMapper.getProcedureData("Get_SORouting_AvailResource_List", params);
}
@Override
@Transactional
public void scheduleOrderWithExpand(SearchScheduleData inData) {
//公共参数
String site = inData.getSite();
String orderNo = inData.getOrderNo();
int itemNo = inData.getItemNo();
String workCenterNo = inData.getWorkCenterNo();
String resourceId = inData.getResourceId();
String username = inData.getUsername();
Date scheduleDate = inData.getScheduleDate();
Date scheduleTime = inData.getScheduleTime();
String specifiedTime = inData.getSpecifiedTime();
boolean checkFlag = inData.isCheckFlag();
Float scheduledQty = inData.getScheduledQty();
String calendarId = inData.getCalendarId();
//判断是否校验总数量
if(checkFlag){
//调用存储过程 校验数量是否超过上限
Map<String, Object> checkMap = this.checkFQCScheduleWithScheduledQty(site, orderNo, itemNo, scheduledQty);
//判断是否检验成功
String resultCode = String.valueOf(checkMap.get("resultCode"));
if (!"200".equalsIgnoreCase(resultCode)) {
String msg = String.valueOf(checkMap.get("resultMsg"));
throw new RRException(msg, Integer.parseInt(resultCode));
}
}
//验证通过 继续执行排产操作
Map<String, Object> resultMap = this.scheduleWorkOrder(site, orderNo, itemNo, workCenterNo, resourceId, scheduledQty, specifiedTime, scheduleDate, scheduleTime, calendarId, username);
//判断是否检验成功
String resultCode = String.valueOf(resultMap.get("resultCode"));
if ("400".equalsIgnoreCase(resultCode)) {
String msg = String.valueOf(resultMap.get("resultMsg"));
throw new RRException(msg);
}
}
}

82
src/main/resources/mapper/schedule/SchedulingMapper.xml

@ -103,6 +103,88 @@
ORDER BY t.ItemNo,PX,T.whscode
</select>
<!--刷新FQC的排产工单数据-->
<select id="getShopOrderByCon" parameterType="SearchScheduleData" resultType="ShopOrderOutData">
SELECT T.Site site, T.OrderNo orderNo, T.ItemNo itemNo, T.OperationDesc itemDesc, D.NeedDate needDate, T.PartNo partNo, P.PartDescription partDesc,
P.Spec spec, T.WorkCenterNo workCenterNo, T.NextItemNo nextItemNo, S2.OperationDesc nextItemDesc, T.PreItemNo preItemNo,S1.OperationDesc preItemDesc,
S1.ScheduledFlag preScheduledFlag, T.QtyReported qtyReported, T.ScheduledFlag scheduledFlag, D.LotSize lotSize, D.EnterDate enterDate,
dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) as AvailResource, ROUND(T.TimeRequired, 2) timeRequired,
dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, T.Efficiency) scheduleToPlanTime,
D.CustomerID customerId, P.ConfigurationTemplateID customerName, T.MachRunFactor machRunFactor, T.MachSetupTime machSetupTime, T.FactorUnit factorUnit,
T.QtyScheduled qtyScheduled, (round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps,
P.Remark custPartNo, S1.QtyApprove qtyApprovedPreOps, S1.PlanStartTime prePlanStartTime, S1.PlanFinishTime prePlanFinishTime, S2.ScheduledFlag nextScheduledFlag,
D.RoutingRevNo routingRevNo, T.Efficiency efficiency
from SORouting as T
LEFT JOIN ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo
LEFT JOIN Part as P On T.Site=P.Site and T.PartNo=P.PartNo
LEFT JOIN SORouting as S1 On T.Site=S1.Site and T.OrderNo=S1.OrderNo and T.PreItemNo=S1.ItemNo
LEFT JOIN SORouting as S2 On T.Site=S2.Site and T.OrderNo=S2.OrderNo and T.NextItemNo=S2.ItemNo
<where>
AND T.ClosedFlag = 'N' and T.site = #{site}
AND T.OrderNo<![CDATA[<>]]>'9999'
AND isnull(D.Status,'')<![CDATA[<>]]>'已取消' and isnull(D.Status,'')<![CDATA[<>]]>'已计划' and isnull(D.Status,'')<![CDATA[<>]]>'已关闭'
AND T.OrderNo = #{orderNo} AND T.ItemNo = #{itemNo}
<if test='fulledItemFlag != null and fulledItemFlag == "N"'>
and Round(T.QtyScheduled,3) <![CDATA[<]]]> round(T.QtyRequired,3)
</if>
<if test='preScheduledFlag != null and preScheduledFlag == "Y"'>
and Isnull(S1.ScheduledFlag,'Y')='Y'
</if>
</where>
</select>
<!--按照条件查询工单的数据-->
<select id="getShopOrderList" parameterType="SearchScheduleData" resultType="ShopOrderOutData">
Select TOP 200 T.Site site, T.OrderNo orderNo, T.ItemNo itemNo, T.OperationDesc itemDesc, T.PartNo partNo, P.PartDescription partDesc, P.Spec spec,
D.LotSize lotSize, T.QtyReported qtyReported, D.NeedDate needDate, T.PreItemNo PreItemNo, S1.OperationDesc PreItemDesc, S1.ScheduledFlag preScheduledFlag,
T.NextItemNo nextItemNo, S2.OperationDesc nextItemDesc, S2.ScheduledFlag nextScheduledFlag, D.CustomerID customerId, P.ConfigurationTemplateID customerName,
D.EnterDate enterDate, dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) availResource, T.WorkCenterNo workCenterNo,
T.MachRunFactor machRunFactor, T.MachSetupTime machSetupTime, T.FactorUnit factorUnit, T.ScheduledFlag scheduledFlag, D.RoutingRevNo routingRevNo,
T.QtyScheduled qtyScheduled,(round(T.QtyRequired,3) - Round(T.QtyScheduled,3)) qtyToSchedule, Isnull(S1.QtyScheduled,0.0) qtyScheduledPreOps,
dbo.getScheduleToPlanTime(D.LotSize, T.MachSetupTime, T.MachRunFactor, T.FactorUnit, t.Efficiency) scheduleToPlanTime,
D.OriSOOrderNo oriSOOrderNo, P.Remark custPartNo, 1*t.Efficiency efficiency, D.CostRollUpFlag costRollUpFlag, isnull(S1.QtyApprove,0.0) qtyApprovedPreOps,
d.ManualFlag manualFlag, d.RepairSOFlag repairSOFlag
from SORouting as T
Left Join ShopOrder as D On T.Site=D.Site and T.OrderNo=D.OrderNo
Left Join Part as P On T.Site=P.Site and T.PartNo=P.PartNo
Left Join SORouting as S1 On T.Site=S1.Site and T.OrderNo=S1.OrderNo and T.PreItemNo=S1.ItemNo
Left Join SORouting as S2 On T.Site=S2.Site and T.OrderNo=S2.OrderNo and T.NextItemNo=S2.ItemNo
<where>
Round(T.QtyScheduled,3) <![CDATA[ < ]]> round(T.QtyRequired,3) and T.ClosedFlag = 'N'
<if test="username != null and username != ''">
and T.site in (Select Site from AccessSite where upper(UserID)=#{username})
</if>
and T.OrderNo<![CDATA[ <> ]]>'9999' and isnull(D.Status,'')<![CDATA[ <> ]]>'已取消' and isnull(D.Status,'')<![CDATA[ <> ]]>'已计划'
and isnull(D.Status,'')<![CDATA[ <> ]]>'已关闭'
<if test="enterTime1 != null">
and D.EnterDate<![CDATA[ >= ]]> #{enterTime1}
</if>
<if test="enterTime2 != null">
and D.EnterDate-1<![CDATA[<]]> #{enterTime2}
</if>
<if test="needTime1 != null">
and D.NeedDate<![CDATA[ >= ]]>#{needTime1}
</if>
<if test="needTime2 != null">
and D.NeedDate<![CDATA[ <= ]]>#{needTime2}
</if>
<if test="site != null and site != ''">
AND T.Site like '%' + #{site} + '%'
</if>
<if test="workCenterNo != null and workCenterNo != ''">
AND T.WorkCenterNo like '%' + #{workCenterNo} + '%'
</if>
<if test="scheduledFlag != null and scheduledFlag != ''">
AND Isnull(S1.ScheduledFlag, 'Y') = #{scheduledFlag}
</if>
<if test="resourceId != null and resourceId != ''">
AND dbo.Get_SOOpsScheduleAvailResource(T.Site,T.OrderNo,T.WorkCenterNo,T.ItemNo) like '%' + #{resourceId} + '(%'
</if>
AND T.WorkCenterNo <![CDATA[<>]]> 'FQC'
</where>
Order by D.NeedDate
</select>

Loading…
Cancel
Save