Merge remote-tracking branch 'origin/master'

master
赵嘉伟 4 years ago
commit fc3e956cae

@ -286,4 +286,34 @@ public class CallItemController {
return R.ok(result); return R.ok(result);
} }
@ResponseBody
@GetMapping("/findIssueItemListPda")
public R findIssueItemListPda(String workCenter, String resource, String requiredFromDate, String requiredToDate, Boolean matchResource) {
List<CallItem> result;
try {
String site = CommonMethods.getSite();
//参数拼装
IssueItemDto issueItemDto = new IssueItemDto();
issueItemDto.setSite(site);
issueItemDto.setResource(resource);
issueItemDto.setWorkCenter(workCenter);
issueItemDto.setMatchResource(matchResource);
if (StringUtil.notBlank(requiredFromDate)) {
issueItemDto.setRequiredFromDT(LocalDate.parse(requiredFromDate, DateTimeFormatter.ISO_DATE));
}
if (StringUtil.notBlank(requiredToDate)) {
issueItemDto.setRequiredToDT(LocalDate.parse(requiredToDate, DateTimeFormatter.ISO_DATE));
}
result = callItemService.findIssueItemListPda(issueItemDto);
} catch (Exception e) {
return R.failed(e.getMessage());
}
return R.ok(result);
}
} }

@ -62,4 +62,9 @@ public interface CallItemMapper extends BaseMapper<CallItem> {
//车间发料查询 //车间发料查询
List<CallItem> finsIssueItemListToResource(IssueItemDto issueItemDto); List<CallItem> finsIssueItemListToResource(IssueItemDto issueItemDto);
List<CallItem> finsIssueItemListNoResource(IssueItemDto issueItemDto); List<CallItem> finsIssueItemListNoResource(IssueItemDto issueItemDto);
//车间发料PDA界面查询
List<CallItem> finsIssueItemListNoResourcePda(IssueItemDto issueItemDto);
List<CallItem> finsIssueItemListToResourcePda(IssueItemDto issueItemDto);
} }

@ -154,4 +154,16 @@ public interface CallItemService extends IService<CallItem> {
* @return * @return
*/ */
List<CallItem> findIssueItemList(IssueItemDto issueItemDto); List<CallItem> findIssueItemList(IssueItemDto issueItemDto);
/**
*
*
* @param issueItemDto
* @return
*/
List<CallItem> findIssueItemListPda(IssueItemDto issueItemDto);
} }

@ -434,4 +434,80 @@ public class CallItemServiceImpl extends ServiceImpl<CallItemMapper, CallItem> i
} }
return list; return list;
} }
@Override
public List<CallItem> findIssueItemListPda(IssueItemDto issueItemDto) {
List<CallItem> list;
if (issueItemDto.getMatchResource()) {
list = callItemMapper.finsIssueItemListToResourcePda(issueItemDto);
} else {
list = callItemMapper.finsIssueItemListNoResourcePda(issueItemDto);
}
if (list == null || list.size() < 1) {
return list;
}
//计算合计(按下料尺寸)
//物料组为GB(钢板):合计=下料尺寸*号最后两位相乘*需求数量
//其他物料: 合计:下料尺寸*号最后一位*需求数量
Map<String, BigDecimal> compQtyMap = new HashMap<>();
for (CallItem callItem: list) {
String component = callItem.getItem();
String itemGroup = callItem.getItemGroup();
BigDecimal reqQty = callItem.getDispatchQty();
String blankingSize = callItem.getBlankingSize();
if (StringUtil.isBlank(blankingSize)) {
callItem.setSizeReqQty(reqQty);
compQtyMap.put(component, reqQty);
continue;
}
if (StringUtil.notBlank(itemGroup) && "GB".equals(itemGroup)) {
if (!blankingSize.contains("×") || blankingSize.split("×").length < 2) {
callItem.setSizeReqQty(reqQty);
compQtyMap.put(component, reqQty);
continue;
}
String []size = blankingSize.split("×");
if (size != null && size.length >= 2) {
int sizeLength = size.length;
BigDecimal length = new BigDecimal(size[sizeLength-1]);
BigDecimal width = new BigDecimal(size[sizeLength-2]);
BigDecimal sizeReqQty = length.multiply(width).multiply(reqQty);
callItem.setSizeReqQty(sizeReqQty);
//按物料汇总需求数量
compQtyMap.put(component, (compQtyMap.get(component) != null ? compQtyMap.get(component).add(sizeReqQty) : sizeReqQty));
}
} else {
String[] size = new String[1];
if (blankingSize.contains("×")) {
size = blankingSize.split("×");
} else {
size[0] = blankingSize;
}
if (size != null && size.length >= 1) {
int sizeLength = size.length;
BigDecimal length = new BigDecimal(size[sizeLength-1]);
BigDecimal sizeReqQty = length.multiply(reqQty);
callItem.setSizeReqQty(sizeReqQty);
//按物料汇总需求数量
compQtyMap.put(component, (compQtyMap.get(component) != null ? compQtyMap.get(component).add(sizeReqQty) : sizeReqQty));
}
}
}
//计算总数量(按数量汇总)
for (CallItem callItem : list) {
callItem.setCompReqQty(compQtyMap.get(callItem.getItem()));
}
return list;
}
} }

@ -115,10 +115,11 @@ public class ShopOrderReleaseServiceImpl implements ShopOrderReleaseService {
BigDecimal qtyToRelease = qtyToBuild.subtract(qtyReleased); BigDecimal qtyToRelease = qtyToBuild.subtract(qtyReleased);
//查询工艺路线 //查询工艺路线
Router routerModel = routerService.getById(routerBo); Router routerModel = routerService.getCurrentRouter(routerBo);
if (routerModel == null) { if (routerModel == null) {
throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]不存在"); throw new BaseException("工艺路线[" +StringUtils.trimHandle(routerBo)+ "]不存在");
} }
routerBo = routerModel.getHandle();
//查询工艺路线详细 //查询工艺路线详细
List<RouterDTO> routerList = shopOrderReleaseMapper.selectShopOrderRouter(routerBo); List<RouterDTO> routerList = shopOrderReleaseMapper.selectShopOrderRouter(routerBo);

@ -978,6 +978,72 @@
ORDER BY VIP.WORK_ORDER, VIP.ITEM ORDER BY VIP.WORK_ORDER, VIP.ITEM
</select> </select>
<select id="finsIssueItemListNoResourcePda" resultMap="FullResultMap">
SELECT ZSD.WORK_CENTER , WCT.DESCRIPTION WORK_CENTER_DESCRIPTION ,
I.ITEM , IT.DESCRIPTION ITEM_DESCRIPTION , ZCI.COMPONENT_BO , ZSD.BLANKING_SIZE ,SUM(ZSD.DISPATCH_QTY) DISPATCH_QTY,
SUM(ZCI.REQUIRED_QTY)-SUM(NVL(ZCI.ISSUE_QTY,0)) REQUIRED_QTY ,MIN(ZCI.REQUIRED_DATE_TIME ) REQUIRED_DATE_TIME ,IG.ITEM_GROUP
FROM Z_CALL_ITEM ZCI
LEFT JOIN Z_SFC_DISPATCH ZSD ON ZSD.HANDLE = ZCI.SFC_DISPATCH_BO
LEFT JOIN WORK_CENTER WC ON WC.WORK_CENTER = ZSD.WORK_CENTER AND WC.SITE = ZCI.SITE
LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = 'zh'
LEFT JOIN ITEM I ON I.HANDLE = ZCI.COMPONENT_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE = 'zh'
LEFT JOIN ITEM_GROUP_MEMBER IGM ON IGM.ITEM_BO = ZCI.COMPONENT_BO
LEFT JOIN ITEM_GROUP IG ON IG.HANDLE = IGM.ITEM_GROUP_BO
WHERE ZCI.CALL_TYPE = 'MATERIAL' AND ZCI.STATUS = '802' AND ZCI.SITE = #{site}
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
<if test="resource != null and resource != ''">
AND ZCI.RESRCE = #{resource}
</if>
<if test="item != null and item != ''">
AND I.ITEM = #{item}
</if>
<if test="requiredFromDT != null">
AND ZCI.REQUIRED_DATE_TIME >= #{requiredFromDT}
</if>
<if test="requiredToDT != null">
AND ZCI.REQUIRED_DATE_TIME &lt;= #{requiredToDT}
</if>
GROUP BY ZCI.COMPONENT_BO ,ZSD.WORK_CENTER ,WCT.DESCRIPTION ,I.ITEM ,IT.DESCRIPTION ,ZSD.BLANKING_SIZE ,IG.ITEM_GROUP
ORDER BY ZCI.COMPONENT_BO
</select>
<select id="finsIssueItemListToResourcePda" resultMap="FullResultMap">
SELECT ZSD.WORK_CENTER , WCT.DESCRIPTION WORK_CENTER_DESCRIPTION ,
I.ITEM , IT.DESCRIPTION ITEM_DESCRIPTION , ZCI.COMPONENT_BO , ZSD.BLANKING_SIZE ,SUM(ZSD.DISPATCH_QTY) DISPATCH_QTY,
SUM(ZCI.REQUIRED_QTY)-SUM(NVL(ZCI.ISSUE_QTY,0)) REQUIRED_QTY ,MIN(ZCI.REQUIRED_DATE_TIME ) REQUIRED_DATE_TIME ,
ZCI.RESRCE, R.DESCRIPTION RESOURCE_DESCRIPTION , IG.ITEM_GROUP
FROM Z_CALL_ITEM ZCI
LEFT JOIN Z_SFC_DISPATCH ZSD ON ZSD.HANDLE = ZCI.SFC_DISPATCH_BO
LEFT JOIN WORK_CENTER WC ON WC.WORK_CENTER = ZSD.WORK_CENTER AND WC.SITE = ZCI.SITE
LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = 'zh'
LEFT JOIN ITEM I ON I.HANDLE = ZCI.COMPONENT_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = I.HANDLE AND IT.LOCALE = 'zh'
LEFT JOIN ITEM_GROUP_MEMBER IGM ON IGM.ITEM_BO = ZCI.COMPONENT_BO
LEFT JOIN ITEM_GROUP IG ON IG.HANDLE = IGM.ITEM_GROUP_BO
LEFT JOIN RESRCE R ON R.RESRCE = ZCI.RESRCE AND R.SITE = ZCI.SITE
WHERE ZCI.CALL_TYPE = 'MATERIAL' AND ZCI.STATUS = '802' AND ZCI.SITE = #{site}
<if test="workCenter != null and workCenter != ''">
AND ZSD.WORK_CENTER = #{workCenter}
</if>
<if test="resource != null and resource != ''">
AND ZCI.RESRCE = #{resource}
</if>
<if test="item != null and item != ''">
AND I.ITEM = #{item}
</if>
<if test="requiredFromDT != null">
AND ZCI.REQUIRED_DATE_TIME >= #{requiredFromDT}
</if>
<if test="requiredToDT != null">
AND ZCI.REQUIRED_DATE_TIME &lt;= #{requiredToDT}
</if>
GROUP BY ZCI.COMPONENT_BO ,ZSD.WORK_CENTER ,WCT.DESCRIPTION ,I.ITEM ,IT.DESCRIPTION ,ZSD.BLANKING_SIZE ,IG.ITEM_GROUP , ZCI.RESRCE, R.DESCRIPTION
ORDER BY ZCI.COMPONENT_BO
</select>
<select id="findCallItemListPda" resultMap="FullResultMap"> <select id="findCallItemListPda" resultMap="FullResultMap">
SELECT MML.* , ZSD.PLANNED_START_DATE FROM SELECT MML.* , ZSD.PLANNED_START_DATE FROM
( SELECT ZCI.SITE, CF.VALUE WORK_ORDER, ZCI.STATUS ,WC.WORK_CENTER, WCT.DESCRIPTION WORK_CENTER_DESCRIPTION, ( SELECT ZCI.SITE, CF.VALUE WORK_ORDER, ZCI.STATUS ,WC.WORK_CENTER, WCT.DESCRIPTION WORK_CENTER_DESCRIPTION,

@ -20,5 +20,7 @@ public interface RouterMapper extends BaseMapper<Router> {
Router selectRouterBySfcBo(@Param("sfcBo") String sfcBo); Router selectRouterBySfcBo(@Param("sfcBo") String sfcBo);
Router selectCurrentRouter(@Param("routerBo") String routerBo);
List<Router> selectRouterList4RevisionDesc(@Param("site") String site, @Param("router") String router); List<Router> selectRouterList4RevisionDesc(@Param("site") String site, @Param("router") String router);
} }

@ -28,6 +28,8 @@ public interface RouterService extends IService<Router> {
Router getRouterBySfcBo(String sfcBo); Router getRouterBySfcBo(String sfcBo);
Router getCurrentRouter(String routerBo);
/** /**
* 线 * 线
* *

@ -47,6 +47,11 @@ public class RouterServiceImpl extends ServiceImpl<RouterMapper, Router> impleme
return routerMapper.selectRouterBySfcBo(sfcBo); return routerMapper.selectRouterBySfcBo(sfcBo);
} }
@Override
public Router getCurrentRouter(String routerBo) {
return routerMapper.selectCurrentRouter(routerBo);
}
@Override @Override
public Router getMaxRevisionRouter(String site, String router) { public Router getMaxRevisionRouter(String site, String router) {
List<Router> list = routerMapper.selectRouterList4RevisionDesc(site, router); List<Router> list = routerMapper.selectRouterList4RevisionDesc(site, router);

@ -636,7 +636,6 @@
</delete> </delete>
<!-- BaseMapper标准查询/修改/删除 --> <!-- BaseMapper标准查询/修改/删除 -->
<select id="selectRouterBySfcBo" resultType="com.foreverwin.mesnac.meapi.model.Router"> <select id="selectRouterBySfcBo" resultType="com.foreverwin.mesnac.meapi.model.Router">
SELECT R.HANDLE, R.SITE, R.ROUTER, R.ROUTER_TYPE, R.DESCRIPTION, R.TEMPORARY_ROUTER, R.STATUS_BO, R.ENTRY_ROUTER_STEP_BO, R.COPIED_FROM_ROUTER_BO, R.REVISION, R.CURRENT_REVISION, R.HAS_BEEN_RELEASED SELECT R.HANDLE, R.SITE, R.ROUTER, R.ROUTER_TYPE, R.DESCRIPTION, R.TEMPORARY_ROUTER, R.STATUS_BO, R.ENTRY_ROUTER_STEP_BO, R.COPIED_FROM_ROUTER_BO, R.REVISION, R.CURRENT_REVISION, R.HAS_BEEN_RELEASED
FROM SFC SC FROM SFC SC
@ -646,6 +645,13 @@
WHERE SFC_BO = #{sfcBo} WHERE SFC_BO = #{sfcBo}
</select> </select>
<select id="selectCurrentRouter" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"></include>
FROM ROUTER
WHERE (HANDLE = #{routerBo} OR #{routerBo} = 'RouterBO:'||SITE||','||ROUTER||',H,#')
AND CURRENT_REVISION = 'true'
</select>
<select id="selectRouterList4RevisionDesc" resultMap="BaseResultMap"> <select id="selectRouterList4RevisionDesc" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"></include> SELECT <include refid="Base_Column_List"></include>
FROM ROUTER FROM ROUTER

@ -20,4 +20,6 @@ import java.util.List;
public interface LoadInventoryMapper extends BaseMapper<LoadInventory> { public interface LoadInventoryMapper extends BaseMapper<LoadInventory> {
List<LoadInventoryDto> getLoadInventoryList(@Param("site") String site, @Param("resrce") String resrce, @Param("language") String language); List<LoadInventoryDto> getLoadInventoryList(@Param("site") String site, @Param("resrce") String resrce, @Param("language") String language);
Integer findBomComponent(@Param("site")String site, @Param("resrce")String resrce, @Param("itemBo")String itemBo);
} }

@ -119,6 +119,11 @@ public class LoadInventoryServiceImpl extends ServiceImpl<LoadInventoryMapper, L
if (inventory.getQtyOnHand().compareTo(loadQty)<0){ if (inventory.getQtyOnHand().compareTo(loadQty)<0){
throw new BaseException("上料数量不能大于剩余数量"+inventory.getQtyOnHand()); throw new BaseException("上料数量不能大于剩余数量"+inventory.getQtyOnHand());
} }
//设备派工单组件是否包含
Integer bomComponent = loadInventoryMapper.findBomComponent(site, resrce, inventory.getItemBo());
if (bomComponent<1){
throw new BaseException("不是设备上产品需要的物料");
}
BigDecimal remainQty = inventory.getQtyOnHand().subtract(loadQty); BigDecimal remainQty = inventory.getQtyOnHand().subtract(loadQty);
//扣减库存 //扣减库存
commonService.updateInventory(site,inventoryId,remainQty); commonService.updateInventory(site,inventoryId,remainQty);

@ -423,4 +423,13 @@
LEFT JOIN CUSTOM_FIELDS cf3 ON cf.HANDLE=IT.HANDLE AND CF."ATTRIBUTE"='MAT_SPEC' LEFT JOIN CUSTOM_FIELDS cf3 ON cf.HANDLE=IT.HANDLE AND CF."ATTRIBUTE"='MAT_SPEC'
WHERE ZLI.RESRCE=#{resrce} AND ZLI.SITE=#{site} ORDER BY ZLI.CREATED_DATE_TIME WHERE ZLI.RESRCE=#{resrce} AND ZLI.SITE=#{site} ORDER BY ZLI.CREATED_DATE_TIME
</select> </select>
<select id="findBomComponent" resultType="java.lang.Integer">
SELECT COUNT(BC.HANDLE) FROM Z_SFC_DISPATCH zsd
JOIN SFC S ON S.SFC = zsd.SFC AND zsd.SITE=S.SITE
JOIN SFC_BOM SB ON SB.SFC_BO = S.HANDLE
JOIN BOM_COMPONENT BC ON BC.BOM_BO = SB.BOM_BO
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = BC.COMPONENT_GBO AND CF."ATTRIBUTE" = 'ACCESSORY_TYPE' AND (CF.VALUE = '0' OR CF.VALUE = NULL)
WHERE zsd.SITE=#{site} AND zsd.DISPATCH_STATUS!='COMPLETE' AND zsd.DISPATCH_STATUS!='CANCEL' AND zsd.RESRCE=#{resrce} AND BC.COMPONENT_GBO=#{itemBo}
</select>
</mapper> </mapper>

Loading…
Cancel
Save