diff --git a/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java b/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java index 94ec78f..0fe0215 100644 --- a/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java +++ b/aucma-api/src/main/java/com/aucma/api/controller/SAPPortController.java @@ -8,8 +8,11 @@ import com.aucma.base.domain.BaseDeviceLedger; import com.aucma.base.domain.BaseMaterialInfo; import com.aucma.base.domain.BaseOrderInfo; import com.aucma.base.domain.OrderBomInfo; +import com.aucma.common.annotation.Log; import com.aucma.common.core.controller.BaseController; import com.aucma.common.core.domain.AjaxResult; +import com.aucma.common.enums.BusinessType; +import com.aucma.production.domain.CalendarInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -103,5 +106,15 @@ public class SAPPortController extends BaseController { return AjaxResult.success(BaeeBomVoList); } + /** + * 手动同步生产工单 + * @param calendarInfo + * @return + */ + @Log(title = "生产工单" , businessType = BusinessType.INSERT) + @PostMapping("/addSAPCalendar") + public AjaxResult addSAPCalendar(@RequestBody CalendarInfo calendarInfo) { + return toAjax(sapPortService.addSAPCalendar(calendarInfo)); + } } diff --git a/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java b/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java index f957143..143a2c2 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java +++ b/aucma-api/src/main/java/com/aucma/api/service/ISAPPortService.java @@ -7,6 +7,7 @@ import com.aucma.base.domain.BaseMaterialInfo; import com.aucma.base.domain.BaseOrderInfo; import com.aucma.base.domain.OrderBomInfo; import com.aucma.production.domain.BaseBomInfo; +import com.aucma.production.domain.CalendarInfo; import org.springframework.stereotype.Service; import java.util.List; @@ -47,4 +48,11 @@ public interface ISAPPortService { */ List getSapOrderBomInfo(SAPBOMPortDto sapPortDto); + /** + * 新增SAP生产日历 + * + * @param calendarInfo 生产日历 + * @return 结果 + */ + public int addSAPCalendar(CalendarInfo calendarInfo); } diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java index e6a2b95..aa963cf 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPortServiceImpl.java @@ -16,7 +16,9 @@ import com.aucma.base.domain.BaseMaterialInfo; import com.aucma.base.domain.BaseOrderInfo; import com.aucma.base.domain.OrderBomInfo; import com.aucma.common.exception.base.BaseException; +import com.aucma.common.utils.DateUtils; import com.aucma.common.utils.StringUtils; +import com.aucma.production.domain.CalendarInfo; import com.aucma.system.utils.PortLogUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -24,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -212,5 +215,28 @@ public class SAPPortServiceImpl implements ISAPPortService { return orderBomInfosVos; } - + /** + * 新增SAP生产日历 + * @param calendarInfo 生产日历 + * @return + */ + @Override + public int addSAPCalendar(CalendarInfo calendarInfo) { + if (StringUtils.isNull(calendarInfo.getPlanStartDate()) + || StringUtils.isNull(calendarInfo.getPlanEndDate())){ + return 0; + } + SAPPortDto sapPortDto = new SAPPortDto(); + WERKSDto werksDto = new WERKSDto(); + List> factoryList = new ArrayList<>(); + HashMap hashMap = new HashMap<>(); + sapPortDto.setStartDate(DateUtils.dateTime(calendarInfo.getPlanStartDate())); + sapPortDto.setEndDate(DateUtils.dateTime(calendarInfo.getPlanEndDate())); + hashMap.put("WERKS", "1301"); + factoryList.add(hashMap); + werksDto.setItem(factoryList); + sapPortDto.setFactoryCodes(werksDto); + this.getSapBaseOrderInfo(sapPortDto); + return 1; + } } diff --git a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java index a045e55..7e72ef1 100644 --- a/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java +++ b/aucma-api/src/main/java/com/aucma/api/service/impl/SAPPutStorageServiceImpl.java @@ -17,7 +17,9 @@ import com.aucma.base.utils.MaterialConstants; import com.aucma.common.utils.DateUtils; import com.aucma.common.utils.StringUtils; import com.aucma.production.domain.CalendarInfo; +import com.aucma.production.domain.ProductPlanInfo; import com.aucma.production.service.ICalendarInfoService; +import com.aucma.production.service.IProductPlanInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,6 +54,9 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { @Autowired private ICalendarInfoService calendarInfoService; + @Autowired + private IProductPlanInfoService productPlanInfoService; + /** * 转物料实体类 保存数据 * @@ -202,15 +207,29 @@ public class SAPPutStorageServiceImpl implements ISAPPutStorageService { baseOrderInfoList.add(baseOrderInfo); } else { //更新SAP计划 - BaseOrderInfo baseOrderInfo = baseOrderInfos.get(0); - baseOrderInfo.setOrderStatus(map.get("STTXT")); + BaseOrderInfo baseOrderInfoOld = baseOrderInfos.get(0); + BaseOrderInfo baseOrderInfo = new BaseOrderInfo(); + baseOrderInfo.setObjId(baseOrderInfoOld.getObjId()); + baseOrderInfo.setMaterialCode(baseOrderInfoOld.getMaterialCode()); + baseOrderInfo.setOrderCode(baseOrderInfoOld.getOrderCode()); baseOrderInfo.setSaleOrderCode(map.get("KDAUF")); baseOrderInfo.setMaterialName(map.get("MAKTX")); + baseOrderInfo.setOrderStatus(map.get("STTXT")); baseOrderInfo.setOrderType(map.get("AUART")); - if (baseOrderInfo.getIsRelease() == 1) { - //SAP计划已下达到生产计划工位不更新数量 - if (!map.get("GAMNG").equals(null)) { - baseOrderInfo.setOrderAmount(new BigDecimal(map.get("GAMNG"))); + BigDecimal newOrderAmount = new BigDecimal(map.get("GAMNG")); + if (!newOrderAmount.equals(baseOrderInfo.getOrderAmount())){ + baseOrderInfo.setOrderAmount(new BigDecimal(map.get("GAMNG"))); + baseOrderInfo.setUpdatedBy("SAP"); + //同步生产计划数量 + ProductPlanInfo planInfo = new ProductPlanInfo(); + planInfo.setOrderCode(baseOrderInfo.getOrderCode()); + List productPlanInfos = productPlanInfoService.selectProductPlanInfoList(planInfo); + for (ProductPlanInfo info : productPlanInfos) { + ProductPlanInfo planInfoIn = new ProductPlanInfo(); + planInfoIn.setObjId(info.getObjId()); + planInfoIn.setUpdatedBy("SAP"); + planInfoIn.setPlanAmount(baseOrderInfo.getOrderAmount().longValue()); + productPlanInfoService.updateProductPlanInfo(planInfoIn); } } //产线变动 重新生成生成计划 diff --git a/aucma-base/src/main/resources/mapper/base/BaseOrderInfoMapper.xml b/aucma-base/src/main/resources/mapper/base/BaseOrderInfoMapper.xml index a5aeb4a..2c2f320 100644 --- a/aucma-base/src/main/resources/mapper/base/BaseOrderInfoMapper.xml +++ b/aucma-base/src/main/resources/mapper/base/BaseOrderInfoMapper.xml @@ -86,8 +86,12 @@ and oi.complete_date = #{completeDate} and oi.is_release = #{isRelease} and oi.work_center_code = #{workCenterCode} + + and oi.begin_date between to_date(#{params.beginEndTime}, 'yyyy-mm-dd') and + to_date(#{params.endEndTime}, 'yyyy-mm-dd') + - order by order_code desc + order by oi.material_name, order_code desc diff --git a/aucma-report/src/main/resources/mapper/report/ProductOffLineMapper.xml b/aucma-report/src/main/resources/mapper/report/ProductOffLineMapper.xml index 276623b..aafd431 100644 --- a/aucma-report/src/main/resources/mapper/report/ProductOffLineMapper.xml +++ b/aucma-report/src/main/resources/mapper/report/ProductOffLineMapper.xml @@ -35,7 +35,7 @@ po.product_factory_code, BF.FACTORY_NAME, po.product_sncode, - po.product_order_no, + substr(po.product_order_no,5) product_order_no, po.product_sale_no, po.product_sale_line_no, po.product_code,