diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 6ff098e29..2705e0957 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -78,6 +78,11 @@ public class Constant { */ public static final String INV_PLACE_ORDER = "PO"; + /** + * 三方出入库单据前缀 + */ + public static final String TRIPARTITE_INV_ORDER = "SFIO"; + public static final String dlThrProducts = "THR_DOWNLOAD_PRODUCTS"; public static final String dlThrInvProducts = "THR_DOWNLOAD_INV_PRODUCTS"; diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index 305c0b26c..98dfd6aee 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -327,5 +327,7 @@ public class ConstantStatus { public static final int SPACE_OUT_SET = 1; //按指定货位出库 public static final int SPACE_OUT_CODE = 2; //按条码默认货位出库 - + //三方出入库单据 + public static final int SFIO_DRAFT = 0; //草稿 + public static final int SFIO_CFMD = 1; //已确认 } diff --git a/src/main/java/com/glxp/api/constant/ConstantType.java b/src/main/java/com/glxp/api/constant/ConstantType.java index 77235d6ae..2387fa948 100644 --- a/src/main/java/com/glxp/api/constant/ConstantType.java +++ b/src/main/java/com/glxp/api/constant/ConstantType.java @@ -3,6 +3,6 @@ package com.glxp.api.constant; public interface ConstantType { String TYPE_STOCK_CHECK = "StockCheck"; //盘点 - String TYPE_PUT = "WareHouseIn"; //出库 - String TYPE_OUT = "WareHouseOut"; //入库 + String TYPE_PUT = "WareHouseIn"; //入库 + String TYPE_OUT = "WareHouseOut"; //出库 } diff --git a/src/main/java/com/glxp/api/controller/TestController.java b/src/main/java/com/glxp/api/controller/TestController.java index 3a9cacd71..ff5f2d7c0 100644 --- a/src/main/java/com/glxp/api/controller/TestController.java +++ b/src/main/java/com/glxp/api/controller/TestController.java @@ -6,7 +6,9 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.req.sync.BasicExportStatusRequest; +import com.glxp.api.task.SyncThirdSysTask; import com.glxp.api.task.TestStatOrderService; +import com.glxp.api.task.ThrInvOrderTask; import com.glxp.api.util.MsDateUtil; import com.glxp.api.util.RedisUtil; import lombok.extern.slf4j.Slf4j; @@ -22,6 +24,8 @@ import java.util.Date; public class TestController { @Resource TestStatOrderService statOrderService; + @Resource + ThrInvOrderTask thrInvOrderTask; @GetMapping("/test/stat/order") @@ -68,4 +72,9 @@ public class TestController { return ResultVOUtils.success("hello"); } + @GetMapping("/test/thrInvOrderTask") + public BaseResponse thrInvOrderTask() { + thrInvOrderTask.process(); + return ResultVOUtils.success(); + } } diff --git a/src/main/java/com/glxp/api/dao/basic/BasicDestinyRelMapper.java b/src/main/java/com/glxp/api/dao/basic/BasicDestinyRelMapper.java index 509cd686b..b19169e7a 100644 --- a/src/main/java/com/glxp/api/dao/basic/BasicDestinyRelMapper.java +++ b/src/main/java/com/glxp/api/dao/basic/BasicDestinyRelMapper.java @@ -5,6 +5,7 @@ import com.glxp.api.entity.basic.BasicSkProjectDetailEntity; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,4 +17,5 @@ public interface BasicDestinyRelMapper extends BaseMapperPlus filterDestinyProducts(FilterUdiRelRequest filterUdiRelRequest); + List filterDestinyRelListByPId(@Param("thrCode") String thrCode); } diff --git a/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderDetailMapper.java b/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderDetailMapper.java new file mode 100644 index 000000000..5c0d32c5f --- /dev/null +++ b/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderDetailMapper.java @@ -0,0 +1,24 @@ +package com.glxp.api.dao.thrsys; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.dao.inout.IoOrderDetailBizDao; +import com.glxp.api.entity.inout.IoOrderDetailBizEntity; +import com.glxp.api.entity.thrsys.ThrInvOrderDetail; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ThrInvOrderDetailMapper extends BaseMapperPlus { + int deleteByPrimaryKey(Integer id); + + int insert(ThrInvOrderDetail record); + + int insertSelective(ThrInvOrderDetail record); + + ThrInvOrderDetail selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(ThrInvOrderDetail record); + + int updateByPrimaryKey(ThrInvOrderDetail record); +} diff --git a/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderMapper.java b/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderMapper.java new file mode 100644 index 000000000..5e8c5b632 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/thrsys/ThrInvOrderMapper.java @@ -0,0 +1,19 @@ +package com.glxp.api.dao.thrsys; + +import com.glxp.api.entity.thrsys.ThrInvOrder; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ThrInvOrderMapper { + int deleteByPrimaryKey(Integer id); + + int insert(ThrInvOrder record); + + int insertSelective(ThrInvOrder record); + + ThrInvOrder selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(ThrInvOrder record); + + int updateByPrimaryKey(ThrInvOrder record); +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/entity/basic/BasicSkProjectDetailEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicSkProjectDetailEntity.java index 5b9c08915..dc7615544 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicSkProjectDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicSkProjectDetailEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrder.java b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrder.java new file mode 100644 index 000000000..26494cde1 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrder.java @@ -0,0 +1,103 @@ +package com.glxp.api.entity.thrsys; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 库存出入库明细 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "thr_inv_order") +public class ThrInvOrder implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 单据号 + */ + private String billNo; + + /** + * 单据时间 + */ + private Date billDate; + + /** + * 库存开始时间 + */ + private Date startDate; + + /** + * 库存结束时间 + */ + private Date endDate; + + /** + * 出入库类型 + */ + private String mainAction; + + /** + * 第三方单据类型 + */ + private String billType; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String spaceCode; + + /** + * 单据状态 + */ + private Integer status; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createUser; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 更新人 + */ + private String updateUser; + + /** + * 备注 + */ + private String remark; + + private static final long serialVersionUID = 1L; + +} diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java new file mode 100644 index 000000000..b853e88bc --- /dev/null +++ b/src/main/java/com/glxp/api/entity/thrsys/ThrInvOrderDetail.java @@ -0,0 +1,156 @@ +package com.glxp.api.entity.thrsys; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "thr_inv_order_detail") +public class ThrInvOrderDetail implements Serializable { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 单据号 + */ + private String orderIdFk; + + /** + * 产品通用名称 + */ + private String cpmctymc; + + /** + * 物资字典主键 + */ + private Long relId; + + /** + * 第三方项目编码/耗材字典 + */ + private String thrCode; + + /** + * DI + */ + private String nameCode; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private Long batchNo; + + /** + * 计量单位 + */ + private String measname; + + /** + * 价格 + */ + private BigDecimal price; + + /** + * 生产日期 + */ + private Date productionDate; + + /** + * 失效日期 + */ + private Date expireDate; + + /** + * 医疗器械注册备案人 + */ + private String ylqxzcrbarmc; + + /** + * 注册/备案号 + */ + private String zczbhhzbapzbh; + + /** + * 入库数量 + */ + private String inCount; + + /** + * 出库数量 + */ + private String outCount; + + /** + * 供应商 + */ + private String supName; + + /** + * 部门 + */ + private String deptName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库 + */ + private String invName; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位 + */ + private String spaceCode; + + /** + * 货位编码 + */ + private String spaceName; + + /** + * 实际数量 + */ + private String reCount; + + /** + * 出入库类型 + */ + private String mainAction; + + /** + * 生产企业 + */ + private String manufacturer; + + /** + * 备注 + */ + private String remark; + + private static final long serialVersionUID = 1L; + + +} diff --git a/src/main/java/com/glxp/api/http/ErpInvClient.java b/src/main/java/com/glxp/api/http/ErpInvClient.java index 7dce05235..85b252cae 100644 --- a/src/main/java/com/glxp/api/http/ErpInvClient.java +++ b/src/main/java/com/glxp/api/http/ErpInvClient.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.req.thrsys.ThrOnhandRequest; @@ -18,6 +19,7 @@ import okhttp3.OkHttpClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -77,15 +79,27 @@ public class ErpInvClient { } public BaseResponse> getInvResult(FilterInvProductRequest invProductRequest) { - ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(invProductRequest.getThirdSys()); - String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/inv/getInvResult"; +// ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(invProductRequest.getThirdSys()); +// String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/inv/getInvResult"; try { - String response = httpOkClient.uCloudPost(url, invProductRequest); - BaseResponse> listBaseResponse = - JSONObject.parseObject(response, new TypeReference>>() { - }); - - return listBaseResponse; +// String response = httpOkClient.uCloudPost(url, invProductRequest); + ThrInvResultResponse thrInvResultResponse = new ThrInvResultResponse(); + thrInvResultResponse.setThrCode("11"); + thrInvResultResponse.setOutCount("2"); + thrInvResultResponse.setBillType(ConstantType.TYPE_OUT); + ArrayList objects = new ArrayList<>(); + objects.add(thrInvResultResponse); + PageSimpleResponse thrInvResultResponsePageSimpleResponse = new PageSimpleResponse<>(); + thrInvResultResponsePageSimpleResponse.setList(objects); + BaseResponse> pageSimpleResponseBaseResponse = new BaseResponse<>(); + pageSimpleResponseBaseResponse.setCode(20000); + pageSimpleResponseBaseResponse.setData(thrInvResultResponsePageSimpleResponse); + return pageSimpleResponseBaseResponse; +// BaseResponse> listBaseResponse = +// JSONObject.parseObject(response, new TypeReference>>() { +// }); +// +// return listBaseResponse; } catch (Exception e) { log.error("获取第三方库存明细异常", e); return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); diff --git a/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java b/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java index dd84bdc62..639488e66 100644 --- a/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java +++ b/src/main/java/com/glxp/api/res/inv/ThrInvResultResponse.java @@ -2,31 +2,145 @@ package com.glxp.api.res.inv; import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; + @Data public class ThrInvResultResponse { - private Integer id; +// private Long id; +// /** +// * 单据号 +// */ +// private String orderIdFk; + + /** + * 产品通用名称 + */ private String cpmctymc; + +// /** +// * 物资字典主键 +// */ +// private Long relId; + + /** + * 第三方项目编码/耗材字典 + */ private String thrCode; + + /** + * DI + */ private String nameCode; + + /** + * 规格型号 + */ private String ggxh; - private String batchNo; + + /** + * 批次号 + */ + private Integer batchNo; + + /** + * 计量单位 + */ private String measname; - private String price; - private String productionDate; - private String expireDate; + + /** + * 价格 + */ + private BigDecimal price; + + /** + * 生产日期 + */ + private Date productionDate; + + /** + * 失效日期 + */ + private Date expireDate; + + /** + * 医疗器械注册备案人 + */ private String ylqxzcrbarmc; + + /** + * 注册/备案号 + */ private String zczbhhzbapzbh; - private Integer inCount; - private Integer outCount; + + /** + * 入库数量 + */ + private String inCount; + + /** + * 出库数量 + */ + private String outCount; + + /** + * 供应商 + */ private String supName; + + /** + * 部门 + */ private String deptName; + + /** + * 部门编码 + */ private String deptCode; + + /** + * 仓库 + */ private String invName; + + /** + * 仓库编码 + */ private String invCode; + + /** + * 货位 + */ private String spaceCode; + + /** + * 货位编码 + */ private String spaceName; - private Integer reCount; + +// /** +// * 实际数量 +// */ +// private String reCount; + + /** + * 出入库类型 + */ private String mainAction; + + /** + * 生产企业 + */ + private String manufacturer; + + /** + * 备注 + */ private String remark; + + /** + * 第三方单据类型 + */ + private String billType; } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicDestinyRelService.java b/src/main/java/com/glxp/api/service/basic/impl/BasicDestinyRelService.java index 9000764ea..d1e67551a 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicDestinyRelService.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicDestinyRelService.java @@ -150,4 +150,8 @@ public class BasicDestinyRelService extends ServiceImpl filterDestinyRelListByPId(String thrCode) { + return basicDestinyRelMapper.filterDestinyRelListByPId(thrCode); + } } diff --git a/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java index f0feb3dbb..207c50849 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/StockCompareServiceImpl.java @@ -148,7 +148,7 @@ public class StockCompareServiceImpl extends CustomServiceImpl> baseResponse = erpInvClient.getInvResult(filterInvProductRequest); + if (baseResponse.getCode() == 20000) { + List list = baseResponse.getData().getList(); + if (CollectionUtil.isNotEmpty(list)){ + String billNo = generateBillNo(filterInvProductRequest);//单据号 + //处理 返回实体 转换成 单据 和 单据明细 + List thrInvOrderDetails = new ArrayList<>(); + handleExternalConvertThrInvOrderDetail(list,thrInvOrderDetails,billNo); + + if (CollectionUtil.isNotEmpty(thrInvOrderDetails)){ + ThrInvOrder thrInvOrder = new ThrInvOrder(); + handleExternalConvertThrInvOrder(billNo,filterInvProductRequest,thrInvOrder,list.get(0)); + + //保存数据 + thrInvOrderMapper.insert(thrInvOrder); + thrInvOrderDetailMapper.insertBatch(thrInvOrderDetails); + } + } + } + } + + /** + * 生成单号 SFIO + 6位起始日期 + 6位结束日期 + 6位随机 + * @param filterInvProductRequest + * @return + */ + private String generateBillNo(FilterInvProductRequest filterInvProductRequest) { + String startDate = sdf.format(filterInvProductRequest.getStartDate()).substring(2); + String endDate = sdf.format(filterInvProductRequest.getEndDate()).substring(2); + Integer random = new Random().nextInt(900000) + 100000; + return Constant.TRIPARTITE_INV_ORDER + startDate+endDate + random; + } + + /** + * 将三方的出入库明细列表 转换为 系统的出入库单据 + * @param filterInvProductRequest + * @param thrInvOrder + * @param thrInvResultResponse + */ + private void handleExternalConvertThrInvOrder(String billNo,FilterInvProductRequest filterInvProductRequest,ThrInvOrder thrInvOrder,ThrInvResultResponse thrInvResultResponse) { + + Date newDate = new Date(); + thrInvOrder.setBillNo(billNo);//单据号 + thrInvOrder.setBillDate(newDate);//单据时间 + thrInvOrder.setStartDate(filterInvProductRequest.getStartDate());//库存开始时间 + thrInvOrder.setEndDate(filterInvProductRequest.getEndDate());//库存结束时间 + thrInvOrder.setMainAction(thrInvResultResponse.getMainAction());//出入库类型 + thrInvOrder.setBillType(thrInvResultResponse.getMainAction());//第三方单据类型 + thrInvOrder.setDeptCode(thrInvResultResponse.getDeptCode());//部门编号 + thrInvOrder.setInvCode(thrInvResultResponse.getInvCode());//仓库代码 + thrInvOrder.setSpaceCode(thrInvResultResponse.getSpaceCode());//货位编码 + thrInvOrder.setStatus(ConstantStatus.SFIO_DRAFT);//单据状态 草稿 + thrInvOrder.setCreateTime(newDate); + thrInvOrder.setCreateUser("系统自动"); + + } + + /** + * 将三方的出入库明细列表 转换为 系统的出入库单据明细 + * @param list + * @param thrInvOrderDetails + * @param billNo + */ + private void handleExternalConvertThrInvOrderDetail(List list, List thrInvOrderDetails,String billNo) { + list.forEach( item -> { + String thrCode = item.getThrCode(); + String mainAction = item.getMainAction(); + Integer count = 0; + if (ConstantType.TYPE_PUT.equals(mainAction)) { + count = Integer.valueOf(item.getInCount()); + }else { + count = Integer.valueOf(item.getOutCount()); + } + //通过thrCode获取到项目组套 + List skProjectDetailEntityList= basicDestinyRelService.filterDestinyRelListByPId(thrCode); + if (CollectionUtil.isNotEmpty(skProjectDetailEntityList) && count > 0 ){ + Integer finalCount = count; + skProjectDetailEntityList.forEach(sk -> { + ThrInvOrderDetail thrInvOrderDetail = new ThrInvOrderDetail(); + BeanUtils.copyProperties(item,thrInvOrderDetail); + thrInvOrderDetail.setOrderIdFk(billNo); + thrInvOrderDetail.setRelId(sk.getRelId()); + Integer skCount = sk.getCount(); + if (skCount != null && skCount > 0){ + thrInvOrderDetail.setReCount(String.valueOf(skCount * finalCount)); + thrInvOrderDetails.add(thrInvOrderDetail); + } + }); + } + }); + } +} diff --git a/src/main/java/com/glxp/api/task/ThrInvOrderTask.java b/src/main/java/com/glxp/api/task/ThrInvOrderTask.java new file mode 100644 index 000000000..891672731 --- /dev/null +++ b/src/main/java/com/glxp/api/task/ThrInvOrderTask.java @@ -0,0 +1,88 @@ +package com.glxp.api.task; + +import cn.hutool.core.date.DateRange; +import com.glxp.api.dao.schedule.ScheduledDao; +import com.glxp.api.entity.system.ScheduledEntity; +import com.glxp.api.req.inv.FilterInvProductRequest; +import com.glxp.api.req.system.ScheduledRequest; +import com.glxp.api.service.thrsys.ThrInvOrderService; +import lombok.extern.slf4j.Slf4j; +import org.apache.regexp.RE; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +/** + * 自动抓取第三方出入库明细生成单据 + */ +@Slf4j +@Component +public class ThrInvOrderTask implements SchedulingConfigurer { + + @Resource + ScheduledDao scheduledDao; + @Resource + ThrInvOrderService thrInvOrderService; + + @Override + public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { + scheduledTaskRegistrar.addTriggerTask(this::process, triggerContext -> { + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("thrInvOrderTask"); + ScheduledEntity scheduled = scheduledDao.findScheduled(scheduledRequest); + if (null == scheduled) { + log.error("自动抓取第三方出入库明细生成单据定时任务未配置,请注意!"); + return null; + } + String cron = scheduled.getCron(); + return new CronTrigger(cron).nextExecutionTime(triggerContext); + }); + } + + public void process() { + log.info("自动抓取第三方出入库明细生成单据定时任务开始"); + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + String days = getBeginAndEndDateByDays(1); + + filterInvProductRequest.setStartDate(stringToDate(days +" 00:00:00")); + filterInvProductRequest.setEndDate(stringToDate(days +" 23:59:59")); + thrInvOrderService.handleExternalThrInvOrder(filterInvProductRequest); + log.info("自动抓取第三方出入库明细生成单据定时任务结束"); + } + + /** + * 获取距离当前时间日期(n天)的开始时间和结束时间 + * @param n + * @return + */ + public static String getBeginAndEndDateByDays(int n) { + Date date=new Date();//取时间 + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.add(calendar.DATE,-1);//把日期往前减少一天,若想把日期向后推一天则将负数改为正数 + date=calendar.getTime(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + return formatter.format(date); + } + + public static Date stringToDate(String time) { + SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = null; + try { + date = dateformat.parse(time); + } catch (ParseException e) { + e.printStackTrace(); + } + return date; + } + +} diff --git a/src/main/resources/mybatis/mapper/basic/BasicDestinyRelMapper.xml b/src/main/resources/mybatis/mapper/basic/BasicDestinyRelMapper.xml index b74fdad65..0a49b862b 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicDestinyRelMapper.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicDestinyRelMapper.xml @@ -284,4 +284,12 @@ group by basic_products.uuid + + + diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml new file mode 100644 index 000000000..9efe866e9 --- /dev/null +++ b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderDetailMapper.xml @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id, orderIdFk, cpmctymc, relId, thrCode, nameCode, ggxh, batchNo, measname, price, + productionDate, expireDate, ylqxzcrbarmc, zczbhhzbapzbh, inCount, outCount, supName, + deptName, deptCode, invName, invCode, spaceCode, spaceName, reCount, mainAction, + manufacturer, remark + + + + + delete from thr_inv_order_detail + where id = #{id,jdbcType=INTEGER} + + + + insert into thr_inv_order_detail (orderIdFk, cpmctymc, relId, + thrCode, nameCode, ggxh, + batchNo, measname, price, + productionDate, expireDate, ylqxzcrbarmc, + zczbhhzbapzbh, inCount, outCount, + supName, deptName, deptCode, + invName, invCode, spaceCode, + spaceName, reCount, mainAction, + manufacturer, remark) + values (#{orderIdFk,jdbcType=VARCHAR}, #{cpmctymc,jdbcType=VARCHAR}, #{relId,jdbcType=INTEGER}, + #{thrCode,jdbcType=VARCHAR}, #{nameCode,jdbcType=VARCHAR}, #{ggxh,jdbcType=VARCHAR}, + #{batchNo,jdbcType=INTEGER}, #{measname,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, + #{productionDate,jdbcType=TIMESTAMP}, #{expireDate,jdbcType=TIMESTAMP}, #{ylqxzcrbarmc,jdbcType=VARCHAR}, + #{zczbhhzbapzbh,jdbcType=VARCHAR}, #{inCount,jdbcType=VARCHAR}, #{outCount,jdbcType=VARCHAR}, + #{supName,jdbcType=VARCHAR}, #{deptName,jdbcType=VARCHAR}, #{deptCode,jdbcType=VARCHAR}, + #{invName,jdbcType=VARCHAR}, #{invCode,jdbcType=VARCHAR}, #{spaceCode,jdbcType=VARCHAR}, + #{spaceName,jdbcType=VARCHAR}, #{reCount,jdbcType=VARCHAR}, #{mainAction,jdbcType=VARCHAR}, + #{manufacturer,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}) + + + + insert into thr_inv_order_detail + + + orderIdFk, + + + cpmctymc, + + + relId, + + + thrCode, + + + nameCode, + + + ggxh, + + + batchNo, + + + measname, + + + price, + + + productionDate, + + + expireDate, + + + ylqxzcrbarmc, + + + zczbhhzbapzbh, + + + inCount, + + + outCount, + + + supName, + + + deptName, + + + deptCode, + + + invName, + + + invCode, + + + spaceCode, + + + spaceName, + + + reCount, + + + mainAction, + + + manufacturer, + + + remark, + + + + + #{orderIdFk,jdbcType=VARCHAR}, + + + #{cpmctymc,jdbcType=VARCHAR}, + + + #{relId,jdbcType=INTEGER}, + + + #{thrCode,jdbcType=VARCHAR}, + + + #{nameCode,jdbcType=VARCHAR}, + + + #{ggxh,jdbcType=VARCHAR}, + + + #{batchNo,jdbcType=INTEGER}, + + + #{measname,jdbcType=VARCHAR}, + + + #{price,jdbcType=DECIMAL}, + + + #{productionDate,jdbcType=TIMESTAMP}, + + + #{expireDate,jdbcType=TIMESTAMP}, + + + #{ylqxzcrbarmc,jdbcType=VARCHAR}, + + + #{zczbhhzbapzbh,jdbcType=VARCHAR}, + + + #{inCount,jdbcType=VARCHAR}, + + + #{outCount,jdbcType=VARCHAR}, + + + #{supName,jdbcType=VARCHAR}, + + + #{deptName,jdbcType=VARCHAR}, + + + #{deptCode,jdbcType=VARCHAR}, + + + #{invName,jdbcType=VARCHAR}, + + + #{invCode,jdbcType=VARCHAR}, + + + #{spaceCode,jdbcType=VARCHAR}, + + + #{spaceName,jdbcType=VARCHAR}, + + + #{reCount,jdbcType=VARCHAR}, + + + #{mainAction,jdbcType=VARCHAR}, + + + #{manufacturer,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + update thr_inv_order_detail + + + orderIdFk = #{orderIdFk,jdbcType=VARCHAR}, + + + cpmctymc = #{cpmctymc,jdbcType=VARCHAR}, + + + relId = #{relId,jdbcType=INTEGER}, + + + thrCode = #{thrCode,jdbcType=VARCHAR}, + + + nameCode = #{nameCode,jdbcType=VARCHAR}, + + + ggxh = #{ggxh,jdbcType=VARCHAR}, + + + batchNo = #{batchNo,jdbcType=INTEGER}, + + + measname = #{measname,jdbcType=VARCHAR}, + + + price = #{price,jdbcType=DECIMAL}, + + + productionDate = #{productionDate,jdbcType=TIMESTAMP}, + + + expireDate = #{expireDate,jdbcType=TIMESTAMP}, + + + ylqxzcrbarmc = #{ylqxzcrbarmc,jdbcType=VARCHAR}, + + + zczbhhzbapzbh = #{zczbhhzbapzbh,jdbcType=VARCHAR}, + + + inCount = #{inCount,jdbcType=VARCHAR}, + + + outCount = #{outCount,jdbcType=VARCHAR}, + + + supName = #{supName,jdbcType=VARCHAR}, + + + deptName = #{deptName,jdbcType=VARCHAR}, + + + deptCode = #{deptCode,jdbcType=VARCHAR}, + + + invName = #{invName,jdbcType=VARCHAR}, + + + invCode = #{invCode,jdbcType=VARCHAR}, + + + spaceCode = #{spaceCode,jdbcType=VARCHAR}, + + + spaceName = #{spaceName,jdbcType=VARCHAR}, + + + reCount = #{reCount,jdbcType=VARCHAR}, + + + mainAction = #{mainAction,jdbcType=VARCHAR}, + + + manufacturer = #{manufacturer,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=INTEGER} + + + + update thr_inv_order_detail + set orderIdFk = #{orderIdFk,jdbcType=VARCHAR}, + cpmctymc = #{cpmctymc,jdbcType=VARCHAR}, + relId = #{relId,jdbcType=INTEGER}, + thrCode = #{thrCode,jdbcType=VARCHAR}, + nameCode = #{nameCode,jdbcType=VARCHAR}, + ggxh = #{ggxh,jdbcType=VARCHAR}, + batchNo = #{batchNo,jdbcType=INTEGER}, + measname = #{measname,jdbcType=VARCHAR}, + price = #{price,jdbcType=DECIMAL}, + productionDate = #{productionDate,jdbcType=TIMESTAMP}, + expireDate = #{expireDate,jdbcType=TIMESTAMP}, + ylqxzcrbarmc = #{ylqxzcrbarmc,jdbcType=VARCHAR}, + zczbhhzbapzbh = #{zczbhhzbapzbh,jdbcType=VARCHAR}, + inCount = #{inCount,jdbcType=VARCHAR}, + outCount = #{outCount,jdbcType=VARCHAR}, + supName = #{supName,jdbcType=VARCHAR}, + deptName = #{deptName,jdbcType=VARCHAR}, + deptCode = #{deptCode,jdbcType=VARCHAR}, + invName = #{invName,jdbcType=VARCHAR}, + invCode = #{invCode,jdbcType=VARCHAR}, + spaceCode = #{spaceCode,jdbcType=VARCHAR}, + spaceName = #{spaceName,jdbcType=VARCHAR}, + reCount = #{reCount,jdbcType=VARCHAR}, + mainAction = #{mainAction,jdbcType=VARCHAR}, + manufacturer = #{manufacturer,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR} + where id = #{id,jdbcType=INTEGER} + + + diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderMapper.xml b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderMapper.xml new file mode 100644 index 000000000..85aa52871 --- /dev/null +++ b/src/main/resources/mybatis/mapper/thrsys/ThrInvOrderMapper.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id, billNo, billDate, startDate, endDate, mainAction, billType, deptCode, invCode, + spaceCode, `status`, createTime, `createUser`, updateTime, updateUser, remark + + + + + delete from thr_inv_order + where id = #{id,jdbcType=INTEGER} + + + + insert into thr_inv_order (billNo, billDate, startDate, + endDate, mainAction, billType, + deptCode, invCode, spaceCode, + `status`, createTime, `createUser`, + updateTime, updateUser, remark + ) + values (#{billNo,jdbcType=VARCHAR}, #{billDate,jdbcType=TIMESTAMP}, #{startDate,jdbcType=TIMESTAMP}, + #{endDate,jdbcType=TIMESTAMP}, #{mainAction,jdbcType=VARCHAR}, #{billType,jdbcType=VARCHAR}, + #{deptCode,jdbcType=VARCHAR}, #{invCode,jdbcType=VARCHAR}, #{spaceCode,jdbcType=VARCHAR}, + #{status,jdbcType=TINYINT}, #{createTime,jdbcType=TIMESTAMP}, #{createUser,jdbcType=VARCHAR}, + #{updateTime,jdbcType=TIMESTAMP}, #{updateUser,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR} + ) + + + + insert into thr_inv_order + + + billNo, + + + billDate, + + + startDate, + + + endDate, + + + mainAction, + + + billType, + + + deptCode, + + + invCode, + + + spaceCode, + + + `status`, + + + createTime, + + + `createUser`, + + + updateTime, + + + updateUser, + + + remark, + + + + + #{billNo,jdbcType=VARCHAR}, + + + #{billDate,jdbcType=TIMESTAMP}, + + + #{startDate,jdbcType=TIMESTAMP}, + + + #{endDate,jdbcType=TIMESTAMP}, + + + #{mainAction,jdbcType=VARCHAR}, + + + #{billType,jdbcType=VARCHAR}, + + + #{deptCode,jdbcType=VARCHAR}, + + + #{invCode,jdbcType=VARCHAR}, + + + #{spaceCode,jdbcType=VARCHAR}, + + + #{status,jdbcType=TINYINT}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{createUser,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{updateUser,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + + + + update thr_inv_order + + + billNo = #{billNo,jdbcType=VARCHAR}, + + + billDate = #{billDate,jdbcType=TIMESTAMP}, + + + startDate = #{startDate,jdbcType=TIMESTAMP}, + + + endDate = #{endDate,jdbcType=TIMESTAMP}, + + + mainAction = #{mainAction,jdbcType=VARCHAR}, + + + billType = #{billType,jdbcType=VARCHAR}, + + + deptCode = #{deptCode,jdbcType=VARCHAR}, + + + invCode = #{invCode,jdbcType=VARCHAR}, + + + spaceCode = #{spaceCode,jdbcType=VARCHAR}, + + + `status` = #{status,jdbcType=TINYINT}, + + + createTime = #{createTime,jdbcType=TIMESTAMP}, + + + `createUser` = #{createUser,jdbcType=VARCHAR}, + + + updateTime = #{updateTime,jdbcType=TIMESTAMP}, + + + updateUser = #{updateUser,jdbcType=VARCHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=INTEGER} + + + + update thr_inv_order + set billNo = #{billNo,jdbcType=VARCHAR}, + billDate = #{billDate,jdbcType=TIMESTAMP}, + startDate = #{startDate,jdbcType=TIMESTAMP}, + endDate = #{endDate,jdbcType=TIMESTAMP}, + mainAction = #{mainAction,jdbcType=VARCHAR}, + billType = #{billType,jdbcType=VARCHAR}, + deptCode = #{deptCode,jdbcType=VARCHAR}, + invCode = #{invCode,jdbcType=VARCHAR}, + spaceCode = #{spaceCode,jdbcType=VARCHAR}, + `status` = #{status,jdbcType=TINYINT}, + createTime = #{createTime,jdbcType=TIMESTAMP}, + `createUser` = #{createUser,jdbcType=VARCHAR}, + updateTime = #{updateTime,jdbcType=TIMESTAMP}, + updateUser = #{updateUser,jdbcType=VARCHAR}, + remark = #{remark,jdbcType=VARCHAR} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file