diff --git a/src/main/java/com/huaheng/common/constant/QuantityConstant.java b/src/main/java/com/huaheng/common/constant/QuantityConstant.java index b4313ed..abf36bc 100644 --- a/src/main/java/com/huaheng/common/constant/QuantityConstant.java +++ b/src/main/java/com/huaheng/common/constant/QuantityConstant.java @@ -493,6 +493,7 @@ public class QuantityConstant { * 其他出库类型 */ public static String SHIPMENT_QTCKLX= "QTCKLX"; + public static String RECEIPT_QTCKLX= "QTRKLX"; public static final String LOCAL_SERVER_IP = "localServerIP"; @@ -517,6 +518,12 @@ public class QuantityConstant { public static final String SP_InStock = "SP_InStock"; /*其他入库单回传*/ public static final String STK_MISCELLANEOUS = "STK_MISCELLANEOUS"; + /** + * 平库容器组盘自动生成任务 + */ + public static final String FLOOR_AUTO_CREATE_TASK = "FLOOR_AUTO_CREATE_TASK"; + + public static final String ZONE_FLOOR = "A"; diff --git a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java index 7a18320..744391a 100644 --- a/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java +++ b/src/main/java/com/huaheng/pc/monitor/job/task/RyTask.java @@ -162,7 +162,11 @@ public class RyTask extends BaseController { @Override public AjaxResult doProcess() { for(TaskHeader taskHeader : taskHeaderList) { - taskHeaderService.sendTaskToWcs(Convert.toIntArray(String.valueOf(taskHeader.getId()))); + try{ + taskHeaderService.sendTaskToWcs(Convert.toIntArray(String.valueOf(taskHeader.getId()))); + }catch (Exception e){ + + } } return null; } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java index b19689a..bd2a54b 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptContainerHeader/service/ReceiptContainerHeaderServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huaheng.common.constant.QuantityConstant; import com.huaheng.common.exception.service.ServiceException; +import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.web.domain.AjaxResult; @@ -33,6 +34,7 @@ import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; import com.huaheng.pc.task.taskHeader.domain.TaskHeader; +import com.huaheng.pc.task.taskHeader.service.ReceiptTaskService; import com.huaheng.pc.task.taskHeader.service.TaskHeaderService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.MessageFormat; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -70,6 +73,9 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai private ConfigService configService; @Resource private ShipmentContainerHeaderService shipmentContainerHeaderService; + @Resource + private ReceiptTaskService receiptTaskService; + /** * 保存入库组盘 * @param receiptCode 入库单编码 @@ -189,6 +195,30 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai } } receiptDetailService.updateReceiptHeaderLastStatus(receiptDetail.getReceiptId()); + + String floorAutoCreateTask = configService.getKey(QuantityConstant.FLOOR_AUTO_CREATE_TASK); + if(StringUtils.isNotEmpty(floorAutoCreateTask)){ + String[] floorType = floorAutoCreateTask.split(","); + List<String> floorTypes = Arrays.asList(floorType); + Container container = containerService.getContainerByCode(containerCode); + if(floorTypes.contains(container.getContainerType())){ + //自动生成任务 + LambdaQueryWrapper<ReceiptContainerHeader> lambdaQueryWrapper= Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode,containerCode); + lambdaQueryWrapper.le(ReceiptContainerHeader::getStatus,10); + List<ReceiptContainerHeader> receiptContainerHeaders1=this.list(lambdaQueryWrapper); + for(ReceiptContainerHeader item:receiptContainerHeaders1) { + String ids = item.getId().toString(); + Integer[] idArray = Convert.toIntArray(ids); + List<Integer> islist= Arrays.asList(idArray); + try { + AjaxResult ajaxResult1=receiptTaskService.createReceiptTask(islist); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } return AjaxResult.success("success"); } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java index 735ce25..4a672ed 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/controller/ReceiptDetailController.java @@ -24,6 +24,7 @@ import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.system.user.domain.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -32,6 +33,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.math.BigDecimal; @@ -326,4 +328,28 @@ public class ReceiptDetailController extends BaseController { return error("导出Excel失败,请联系网站管理员!"); } } + @PostMapping("/importData") + @ResponseBody + public AjaxResult importData (MultipartFile file) throws Exception { + ExcelUtil<ReceiptDetail> util = new ExcelUtil<>(ReceiptDetail.class); + List<ReceiptDetail> list = util.importExcel(file.getInputStream()); + String operName = ShiroUtils.getLoginName(); + String message = receiptDetailService.insertExcelData(list, false, operName); + return AjaxResult.success(message); + } + + /** + * 导出模板 + * + * @return + * @throws Exception + */ + @GetMapping("/importTemplate") + @ResponseBody + public AjaxResult importTemplate () { + ExcelUtil<ReceiptDetail> util = new ExcelUtil<>(ReceiptDetail.class); + return util.importTemplateExcel("入库详情"); + } + + } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java index 5128b74..2bd1340 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/domain/ReceiptDetail.java @@ -31,7 +31,7 @@ public class ReceiptDetail implements Serializable { /** * 入库单 */ - @Excel(name = "入库单号") + @Excel(name = "入库单号",type = Excel.Type.EXPORT) @TableField(value = "receiptCode") @ApiModelProperty(value = "入库单") private String receiptCode; @@ -211,7 +211,7 @@ public class ReceiptDetail implements Serializable { /** * 未收数量 */ - @Excel(name = "实收数量") + @Excel(name = "实收数量",type = Excel.Type.EXPORT) @TableField(value = "taskQty") @ApiModelProperty(value = "已收数量") private BigDecimal taskQty; @@ -275,7 +275,7 @@ public class ReceiptDetail implements Serializable { /** * 创建时间 */ - @Excel(name = "创建时间",dateFormat="yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间",dateFormat="yyyy-MM-dd HH:mm:ss",type = Excel.Type.EXPORT) @TableField(value = "created", fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间") private Date created; @@ -290,7 +290,7 @@ public class ReceiptDetail implements Serializable { /** * 创建时间 */ - @Excel(name = "最后修改时间",dateFormat="yyyy-MM-dd HH:mm:ss") + @Excel(name = "最后修改时间",dateFormat="yyyy-MM-dd HH:mm:ss",type = Excel.Type.EXPORT) @TableField(value = "lastUpdated", fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "创建时间") private Date lastUpdated; diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java index 2f1b84d..935ecf2 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailService.java @@ -6,6 +6,7 @@ import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.baomidou.mybatisplus.extension.service.IService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; import java.util.List; @@ -65,4 +66,6 @@ public interface ReceiptDetailService extends IService<ReceiptDetail>{ List<ReceiptDetail> findByReceiptId(Integer id); boolean isNoCompletedQty(List<ReceiptDetail> receiptDetails,Integer receiptHeaderId); + + String insertExcelData(List<ReceiptDetail> list, boolean updateSupport, String operName); } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java index ef5b2f0..884d868 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java @@ -3,6 +3,7 @@ package com.huaheng.pc.receipt.receiptDetail.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.common.constant.QuantityConstant; +import com.huaheng.common.exception.BusinessException; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.support.Convert; import com.huaheng.common.utils.StringUtils; @@ -27,6 +28,8 @@ import com.huaheng.pc.config.statusFlow.domain.StatusFlowDetail; import com.huaheng.pc.config.statusFlow.service.StatusFlowDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; +import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; +import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; import com.huaheng.pc.system.dict.service.IDictDataService; import com.huaheng.pc.task.taskDetail.domain.TaskDetail; import org.springframework.stereotype.Service; @@ -222,6 +225,95 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R return false; } + @Override + public String insertExcelData(List<ReceiptDetail> list, boolean updateSupport, String operName) { + if (StringUtils.isNull(list) || list.size() == 0) { + throw new BusinessException("导入数据不能为空!"); + } + ReceiptHeader receiptHeader=createHeader(list); + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (ReceiptDetail importData : list) { + /*if(StringUtils.isEmpty(importData.getWarehouseCode())){ + failureNum++; + String msg = "<br/>" + failureNum + "、仓库编码为空 导入失败:"; + failureMsg.append(msg ); + continue; + } + if(StringUtils.isEmpty(importData.getCompanyCode())){ + failureNum++; + String msg = "<br/>" + failureNum + "、货主编码为空 导入失败:"; + failureMsg.append(msg ); + continue; + }*/ + if(StringUtils.isNull(importData.getQty())){ + failureNum++; + String msg = "<br/>" + failureNum + "、数量为空 导入失败:"; + failureMsg.append(msg ); + continue; + } + try { + importData.setReceiptId(receiptHeader.getId()); + importData.setReceiptCode(receiptHeader.getCode()); + Material material = materialService.findAllByCode(importData.getMaterialCode()); + if(material==null){ + String msgs = "<br/>" + failureNum + "、物料编码 " + importData.getMaterialCode() + " 未找到 导入失败:"; + failureNum++; + failureMsg.append(msgs); + continue; + } + importData.setMaterialName(material.getName()); + importData.setMaterialSpec(material.getSpec()); + importData.setMaterialUnit(material.getUnit()); + importData.setWarehouseCode(ShiroUtils.getWarehouseCode()); + importData.setCompanyCode(QuantityConstant.DEFAULT_COMPANY); + importData.setInventorySts(QuantityConstant.GOOD); + this.save(importData); + receiptHeader.setTotalQty(receiptHeader.getTotalQty().add(importData.getQty())); + receiptHeader.setTotalLines(receiptHeader.getTotalLines()+1); + receiptHeaderService.updateById(receiptHeader); + successNum++; + successMsg.append("<br/>" + successNum + "、数据 " + importData.getMaterialCode() + " 导入成功"); + + } catch (Exception e) { + failureNum++; + String msg = "<br/>" + failureNum + "、物料编码 " + importData.getMaterialCode() + " 导入失败:"; + failureMsg.append(msg + e.getMessage()); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new BusinessException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString()+"\n"+failureMsg.toString(); + } + + private ReceiptHeader createHeader(List<ReceiptDetail> list){ + ReceiptHeader receiptHeader=new ReceiptHeader(); + String code =receiptHeaderService.createCode(QuantityConstant.RECEIPT_QTCKLX); + receiptHeader.setId(null); + receiptHeader.setLastUpdated(null); + receiptHeader.setLastUpdatedBy((ShiroUtils.getLoginName())); + receiptHeader.setCreated(null); + receiptHeader.setCreatedBy((ShiroUtils.getLoginName())); + receiptHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); + receiptHeader.setCompanyCode(QuantityConstant.DEFAULT_COMPANY); + receiptHeader.setCode(code); + receiptHeader.setReceiptType(QuantityConstant.RECEIPT_QTCKLX); + receiptHeader.setTotalLines(BigDecimal.ZERO.intValue()); + receiptHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); + receiptHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); + receiptHeader.setTotalQty(BigDecimal.ZERO); + if (!receiptHeaderService.save(receiptHeader)) { + throw new ServiceException("导入失败,添加出库单头表失败"); + } + return receiptHeader; + } + /** * 根据流程配置更新入库明细下一流程 * @param receiptDetail diff --git a/src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java b/src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java index 982c3b8..d5c0e0b 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java +++ b/src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java @@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -154,7 +155,7 @@ public class ReceivingController extends BaseController { //找到主单的账套和仓库 LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptHeader::getCode,code) - .eq(ReceiptHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) + .in(ReceiptHeader::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(ReceiptHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()); ReceiptHeader receiptHeader=receiptHeaderService.getOne(lambdaQueryWrapper); if(receiptHeader == null) { @@ -164,7 +165,7 @@ public class ReceivingController extends BaseController { //找到子单物料 LambdaQueryWrapper<ReceiptDetail> lambdaQuery=Wrappers.lambdaQuery(); lambdaQuery.eq(ReceiptDetail::getReceiptCode,code) - .eq(ReceiptDetail::getCompanyCode, ShiroUtils.getCompanyCodeList()) + .in(ReceiptDetail::getCompanyCode, ShiroUtils.getCompanyCodeList()) .eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(ReceiptDetail::getId,id); ReceiptDetail receiptDetail=receiptDetailService.getOne(lambdaQuery); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java index 682189c..c387c68 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentContainerHeader/controller/ShipmentContainerHeaderController.java @@ -15,6 +15,9 @@ import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.framework.web.page.PageDomain; import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; +import com.huaheng.framework.web.service.ConfigService; +import com.huaheng.pc.config.container.domain.Container; +import com.huaheng.pc.config.container.service.ContainerService; import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader; import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader; import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService; @@ -25,8 +28,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; -import java.util.Arrays; -import java.util.List; +import javax.annotation.Resource; +import java.util.*; /** * 出库组盘头 信息操作处理 @@ -40,6 +43,10 @@ public class ShipmentContainerHeaderController extends BaseController { @Autowired private ShipmentContainerHeaderService shipmentContainerHeaderService; + @Resource + private ContainerService containerService; + @Resource + private ConfigService configService; private String prefix = "shipment/shipmentContainerHeader"; @@ -176,5 +183,44 @@ public class ShipmentContainerHeaderController extends BaseController ajaxResult=shipmentContainerHeaderService.createTask(idList); return ajaxResult; } + /** + * 生成任务 + */ + @RequiresPermissions("shipment:container:add") + @Log(title ="出库-任务生成", operating = "批量生成任务", action = BusinessType.UPDATE) + @PostMapping( "/floorCombination") + @ResponseBody + public AjaxResult floorCombination(String ids) + { + AjaxResult ajaxResult=new AjaxResult(); + if (StringUtils.isEmpty(ids)) { + return AjaxResult.error("id不能为空"); + } + Set<Integer> floorIds = new HashSet<>(); + List<Integer> idList = Arrays.asList(Convert.toIntArray(ids)); + String floorAutoCreateTask = configService.getKey(QuantityConstant.FLOOR_AUTO_CREATE_TASK); + for (Integer id : idList) { + //获取表头 + ShipmentContainerHeader shipmentContainerHeader = shipmentContainerHeaderService.getById(id); + if(shipmentContainerHeader == null) { + return AjaxResult.error("出库货箱id:" + id + "未找到,操作中止"); + } + if(shipmentContainerHeader.getStatus() >= QuantityConstant.TASK_STATUS_RELEASE){ + return AjaxResult.error("出库货箱编码(" + shipmentContainerHeader.getContainerCode() + ")已经生成任务,请不要重复生成,操作中止"); + } + String containerCode = shipmentContainerHeader.getContainerCode(); + if(StringUtils.isNotEmpty(floorAutoCreateTask)) { + String[] floorType = floorAutoCreateTask.split(","); + List<String> floorTypes = Arrays.asList(floorType); + Container container = containerService.getContainerByCode(containerCode); + if (floorTypes.contains(container.getContainerType())) { + floorIds.add(id); + } + } + } + + ajaxResult=shipmentContainerHeaderService.createTask(new ArrayList<>(floorIds)); + return ajaxResult; + } } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/controller/ShipmentDetailController.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/controller/ShipmentDetailController.java index 42b4b9d..d2a0808 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/controller/ShipmentDetailController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/controller/ShipmentDetailController.java @@ -297,7 +297,7 @@ public class ShipmentDetailController extends BaseController @ResponseBody public AjaxResult importTemplate () { ExcelUtil<ShipmentDetail> util = new ExcelUtil<>(ShipmentDetail.class); - return util.importTemplateExcel("入库详情"); + return util.importTemplateExcel("出库详情"); } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java index 7e5dd78..718b516 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/domain/ShipmentDetail.java @@ -54,7 +54,7 @@ public class ShipmentDetail implements Serializable { /** * 出库单号 */ - @Excel(name = "出库单号") + @Excel(name = "出库单号",type = Excel.Type.EXPORT) @TableField(value = "shipmentCode") @ApiModelProperty(value="出库单号") private String shipmentCode; @@ -146,7 +146,7 @@ public class ShipmentDetail implements Serializable { /** * 已出数量 */ - @Excel(name = "已出数量") + @Excel(name = "已出数量",type = Excel.Type.EXPORT) @TableField(value = "taskQty") @ApiModelProperty(value="已出数量") private BigDecimal taskQty; @@ -288,7 +288,7 @@ public class ShipmentDetail implements Serializable { /** * 创建时间 */ - @Excel(name = "创建时间",dateFormat="yyyy-MM-dd HH:mm:ss") + @Excel(name = "创建时间",dateFormat="yyyy-MM-dd HH:mm:ss",type = Excel.Type.EXPORT) @TableField(value = "created") @ApiModelProperty(value="创建时间") private Date created; @@ -304,7 +304,7 @@ public class ShipmentDetail implements Serializable { /** * 创建时间 */ - @Excel(name = "最后修改时间",dateFormat="yyyy-MM-dd HH:mm:ss") + @Excel(name = "最后修改时间",dateFormat="yyyy-MM-dd HH:mm:ss",type = Excel.Type.EXPORT) @TableField(value = "lastUpdated") @ApiModelProperty(value="创建时间") private Date lastUpdated; diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java index 8d8dc2b..3705b29 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentDetail/service/ShipmentDetailServiceImpl.java @@ -407,7 +407,7 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, importData.setShipmentCode(shipmentHeader.getCode()); Material material = materialService.findAllByCode(importData.getMaterialCode()); if(material==null){ - String msgs = "<br/>" + failureNum + "、物料编码 " + importData.getMaterialCode() + " 导入失败:"; + String msgs = "<br/>" + failureNum + "、物料编码 " + importData.getMaterialCode() + " 未找到 导入失败:"; failureNum++; failureMsg.append(msgs); continue; @@ -419,6 +419,9 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, importData.setCompanyCode(QuantityConstant.DEFAULT_COMPANY); importData.setInventorySts(QuantityConstant.GOOD); this.save(importData); + shipmentHeader.setTotalQty(shipmentHeader.getTotalQty().add(importData.getQty())); + shipmentHeader.setTotalLines(shipmentHeader.getTotalLines()+1); + shipmentHeaderService.updateById(shipmentHeader); successNum++; successMsg.append("<br/>" + successNum + "、数据 " + importData.getMaterialCode() + " 导入成功"); @@ -449,11 +452,10 @@ public class ShipmentDetailServiceImpl extends ServiceImpl<ShipmentDetailMapper, shipmentHeader.setCompanyCode(QuantityConstant.DEFAULT_COMPANY); shipmentHeader.setCode(code); shipmentHeader.setShipmentType(QuantityConstant.SHIPMENT_QTCKLX); - shipmentHeader.setTotalLines(list.size()); + shipmentHeader.setTotalLines(BigDecimal.ZERO.intValue()); shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); - BigDecimal bigDecimal = list.stream().map(ShipmentDetail::getQty).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - shipmentHeader.setTotalQty(bigDecimal); + shipmentHeader.setTotalQty(BigDecimal.ZERO); if (!shipmentHeaderService.save(shipmentHeader)) { throw new ServiceException("导入失败,添加出库单头表失败"); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java index 02bd9a5..a689f2d 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java @@ -216,6 +216,13 @@ public class ReceiptTaskService { } String taskId = String.valueOf(task.getId()); taskIds.add(taskId); + if(QuantityConstant.ZONE_FLOOR.equals(task.getZoneCode())){ + try{ + AjaxResult ajaxResult = taskHeaderService.completeTask(task.getToLocation()); + }catch (Exception e){ + e.printStackTrace(); + } + } } else { throw new ServiceException("任务生成失败"); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java index 14fbdec..ac658be 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java @@ -76,6 +76,8 @@ public class ShipmentTaskService { private ShipmentPreferenceService shipmentPreferenceService; @Resource private ConfigService configService; + @Resource + private ShipmentTaskService shipmentTaskService; /** * 创建出库任务 * @param shipmentTaskCreateModel @@ -231,6 +233,13 @@ public class ShipmentTaskService { if (!containerHeaderService.updateById(shipmentContainerHeader)) { throw new ServiceException("修改组盘头状态失败,sql报错"); } + if(QuantityConstant.ZONE_FLOOR.equals(task.getZoneCode())){ + try{ + AjaxResult ajaxResult = shipmentTaskService.completeShipmentTask(task); + }catch (Exception e){ + e.printStackTrace(); + } + } return AjaxResult.success(taskId); } diff --git a/src/main/resources/application-druid.properties b/src/main/resources/application-druid.properties index 63dbebd..3908517 100644 --- a/src/main/resources/application-druid.properties +++ b/src/main/resources/application-druid.properties @@ -2,20 +2,19 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver # ���� -spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 -#spring.datasource.druid.master.url=jdbc:mysql://localhost:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 +#spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 +spring.datasource.druid.master.url=jdbc:mysql://localhost:3306/wms_sushouqingyuan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 +#spring.datasource.druid.master.url=jdbc:mysql://localhost:3306/wms_suzhouqingyuan?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 #spring.datasource.druid.master.url=jdbc:mysql://172.16.29.45:3306/huahengExample?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false #spring.datasource.druid.master.url=jdbc:mysql://117.62.222.186:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2b8 #spring.datasource.druid.master.username=softhuaheng #spring.datasource.druid.master.password=HHrobot123. +#?? +spring.datasource.druid.master.username=huaheng +spring.datasource.druid.master.password=HHrobot123. #spring.datasource.druid.master.username=root #spring.datasource.druid.master.password=hhsoftware -#?? -#spring.datasource.druid.master.username=huaheng -#spring.datasource.druid.master.password=HHrobot123. -spring.datasource.druid.master.username=root -spring.datasource.druid.master.password=hhsoftware # �ӿ� spring.datasource.druid.slave.open = false spring.datasource.druid.slave.url=jdbc:mysql://117.62.222.186:3306/wms_v2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false diff --git a/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html b/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html index e9bca98..c65b3f4 100644 --- a/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html +++ b/src/main/resources/templates/receipt/receiptHeader/receiptHeader.html @@ -90,6 +90,9 @@ <a class="btn btn-outline btn-primary btn-rounded" onclick="approval()" shiro:hasPermission="receipt:receiptHeader:review"> <i class="fa fa-level-up"></i> 审核通过 </a> + <a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="receipt:receiptHeader:add"> + <i class="fa fa-upload"></i>导入 + </a> <!-- <a class="btn btn-outline btn-primary btn-rounded" onclick="addPool()" shiro:hasPermission="receipt:receiptHeader:addPool">--> <!-- <i class="fa fa-check-circle"></i> 加入订单池--> <!-- </a>--> @@ -201,6 +204,20 @@ </div> </div> </div> +<script id="importTpl" type="text/template"> + <form enctype="multipart/form-data" class="mt20 mb10"> + <div class="col-xs-offset-1"> + <input type="file" id="file" name="file"/> + <div class="mt10 pt5"> + <input type="checkbox" id="updateSupport" name="updateSupport" title="如果数据已经存在,更新这条数据。"> 是否更新已经存在的数据 + <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a> + </div> + <font color="red" class="pull-left mt10"> + 提示:仅允许导入“xls”或“xlsx”格式文件! + </font> + </div> + </form> +</script> <div th:include="include :: footer"></div> <script th:inline="javascript"> var printFlag = [[${@permission.hasPermi('receipt:receiptHeader:report')}]]; @@ -234,6 +251,8 @@ updateUrl: prefix + "/edit/{id}", removeUrl: prefix + "/remove", exportUrl: detailPrefix + "/export", + importUrl: detailPrefix+"/importData",//导入 + importTemplateUrl: detailPrefix + "/importTemplate",//导入模板 modalName: "入库单", sidePagination:"server", showExport: true, //导出 diff --git a/src/main/resources/templates/receipt/receiving/receiving.html b/src/main/resources/templates/receipt/receiving/receiving.html index 8a75e08..3946c4c 100644 --- a/src/main/resources/templates/receipt/receiving/receiving.html +++ b/src/main/resources/templates/receipt/receiving/receiving.html @@ -152,8 +152,8 @@ if(value.data){ $("#bootstrap-table").bootstrapTable('load',value.data); for (var i = 0; i < value.data.length; i++) { - qty_show=value.data[i].totalQty + qty_show; - qtyCompleted_show=value.data[i].openQty + qtyCompleted_show; + qty_show=value.data[i].qty + qty_show; + qtyCompleted_show=value.data[i].taskQty + qtyCompleted_show; } $("#material_length").text(value.data.length); $("#qty_length").text(qty_show); diff --git a/src/main/resources/templates/shipment/shippingCombination/shippingCombination.html b/src/main/resources/templates/shipment/shippingCombination/shippingCombination.html index 8f8549f..7582a6f 100644 --- a/src/main/resources/templates/shipment/shippingCombination/shippingCombination.html +++ b/src/main/resources/templates/shipment/shippingCombination/shippingCombination.html @@ -67,6 +67,9 @@ <a class="btn btn-outline btn-warning btn-rounded" onclick="batchCreateTask()"> <i class="fa fa-edit"></i> 生成任务 </a> + <a class="btn btn-outline btn-primary btn-rounded" onclick="floorCombination()"> + <i class="fa fa-edit"></i> 平库生成任务 + </a> <a class="menuItem btn btn-outline btn-warning btn-rounded" onclick="jumpReceiptTask()"> <i class="fa fa-edit"></i> 跳转任务页面 </a> @@ -411,6 +414,39 @@ chooseStation(ids); } + function floorCombination() { + let rows=$("#bootstrap-table2").bootstrapTable('getSelections'); + if (rows.length == 0) { + $.modal.alertWarning("请至少选择一条记录"); + return; + } + var ids = ""; + for(var i=0; i<rows.length; i++) { + if(ids == "") { + ids = rows[i].shippingContainerId; + } else { + ids = ids + "," + rows[i].shippingContainerId + } + } + var url = ctx + "shipment/shipmentContainerHeader/floorCombination"; + var data = { "ids": ids }; + $.ajax({ + url: url, + type:'post', + data: data, + success:function (response) { + if (response.code == web_status.SUCCESS) { + $("#bootstrap-table2").bootstrapTable('refresh',{function (){ + + }}); + } else { + $.modal.alertError(response.msg); + } + $.modal.closeLoading(); + } + }) + } + /* 批量取消组盘 */ function batchRemoveHead() {